MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  eulerpathpr Structured version   Visualization version   GIF version

Theorem eulerpathpr 28031
Description: A graph with an Eulerian path has either zero or two vertices of odd degree. (Contributed by Mario Carneiro, 7-Apr-2015.) (Revised by AV, 26-Feb-2021.)
Hypothesis
Ref Expression
eulerpathpr.v 𝑉 = (Vtx‘𝐺)
Assertion
Ref Expression
eulerpathpr ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) ∈ {0, 2})
Distinct variable groups:   𝑥,𝐹   𝑥,𝐺   𝑥,𝑃   𝑥,𝑉

Proof of Theorem eulerpathpr
StepHypRef Expression
1 eulerpathpr.v . . . 4 𝑉 = (Vtx‘𝐺)
2 eqid 2824 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
3 simpl 486 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → 𝐺 ∈ UPGraph)
4 upgruhgr 26901 . . . . . 6 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
52uhgrfun 26865 . . . . . 6 (𝐺 ∈ UHGraph → Fun (iEdg‘𝐺))
64, 5syl 17 . . . . 5 (𝐺 ∈ UPGraph → Fun (iEdg‘𝐺))
76adantr 484 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → Fun (iEdg‘𝐺))
8 simpr 488 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → 𝐹(EulerPaths‘𝐺)𝑃)
91, 2, 3, 7, 8eupth2 28030 . . 3 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → {𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}))
109fveq2d 6665 . 2 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
11 fveq2 6661 . . . 4 (∅ = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → (♯‘∅) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
1211eleq1d 2900 . . 3 (∅ = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → ((♯‘∅) ∈ {0, 2} ↔ (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2}))
13 fveq2 6661 . . . 4 ({(𝑃‘0), (𝑃‘(♯‘𝐹))} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
1413eleq1d 2900 . . 3 ({(𝑃‘0), (𝑃‘(♯‘𝐹))} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → ((♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) ∈ {0, 2} ↔ (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2}))
15 hash0 13733 . . . . 5 (♯‘∅) = 0
16 c0ex 10633 . . . . . 6 0 ∈ V
1716prid1 4683 . . . . 5 0 ∈ {0, 2}
1815, 17eqeltri 2912 . . . 4 (♯‘∅) ∈ {0, 2}
1918a1i 11 . . 3 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘∅) ∈ {0, 2})
20 simpr 488 . . . . . 6 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹)))
2120neqned 3021 . . . . 5 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (𝑃‘0) ≠ (𝑃‘(♯‘𝐹)))
22 fvex 6674 . . . . . 6 (𝑃‘0) ∈ V
23 fvex 6674 . . . . . 6 (𝑃‘(♯‘𝐹)) ∈ V
24 hashprg 13761 . . . . . 6 (((𝑃‘0) ∈ V ∧ (𝑃‘(♯‘𝐹)) ∈ V) → ((𝑃‘0) ≠ (𝑃‘(♯‘𝐹)) ↔ (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2))
2522, 23, 24mp2an 691 . . . . 5 ((𝑃‘0) ≠ (𝑃‘(♯‘𝐹)) ↔ (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2)
2621, 25sylib 221 . . . 4 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2)
27 2ex 11711 . . . . 5 2 ∈ V
2827prid2 4684 . . . 4 2 ∈ {0, 2}
2926, 28eqeltrdi 2924 . . 3 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) ∈ {0, 2})
3012, 14, 19, 29ifbothda 4487 . 2 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2})
3110, 30eqeltrd 2916 1 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) ∈ {0, 2})
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 209  wa 399   = wceq 1538  wcel 2115  wne 3014  {crab 3137  Vcvv 3480  c0 4276  ifcif 4450  {cpr 4552   class class class wbr 5052  Fun wfun 6337  cfv 6343  0cc0 10535  2c2 11689  chash 13695  cdvds 15607  Vtxcvtx 26795  iEdgciedg 26796  UHGraphcuhgr 26855  UPGraphcupgr 26879  VtxDegcvtxdg 27261  EulerPathsceupth 27988
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1912  ax-6 1971  ax-7 2016  ax-8 2117  ax-9 2125  ax-10 2146  ax-11 2162  ax-12 2179  ax-ext 2796  ax-rep 5176  ax-sep 5189  ax-nul 5196  ax-pow 5253  ax-pr 5317  ax-un 7455  ax-cnex 10591  ax-resscn 10592  ax-1cn 10593  ax-icn 10594  ax-addcl 10595  ax-addrcl 10596  ax-mulcl 10597  ax-mulrcl 10598  ax-mulcom 10599  ax-addass 10600  ax-mulass 10601  ax-distr 10602  ax-i2m1 10603  ax-1ne0 10604  ax-1rid 10605  ax-rnegex 10606  ax-rrecex 10607  ax-cnre 10608  ax-pre-lttri 10609  ax-pre-lttrn 10610  ax-pre-ltadd 10611  ax-pre-mulgt0 10612  ax-pre-sup 10613
This theorem depends on definitions:  df-bi 210  df-an 400  df-or 845  df-ifp 1059  df-3or 1085  df-3an 1086  df-tru 1541  df-ex 1782  df-nf 1786  df-sb 2071  df-mo 2624  df-eu 2655  df-clab 2803  df-cleq 2817  df-clel 2896  df-nfc 2964  df-ne 3015  df-nel 3119  df-ral 3138  df-rex 3139  df-reu 3140  df-rmo 3141  df-rab 3142  df-v 3482  df-sbc 3759  df-csb 3867  df-dif 3922  df-un 3924  df-in 3926  df-ss 3936  df-pss 3938  df-nul 4277  df-if 4451  df-pw 4524  df-sn 4551  df-pr 4553  df-tp 4555  df-op 4557  df-uni 4825  df-int 4863  df-iun 4907  df-br 5053  df-opab 5115  df-mpt 5133  df-tr 5159  df-id 5447  df-eprel 5452  df-po 5461  df-so 5462  df-fr 5501  df-we 5503  df-xp 5548  df-rel 5549  df-cnv 5550  df-co 5551  df-dm 5552  df-rn 5553  df-res 5554  df-ima 5555  df-pred 6135  df-ord 6181  df-on 6182  df-lim 6183  df-suc 6184  df-iota 6302  df-fun 6345  df-fn 6346  df-f 6347  df-f1 6348  df-fo 6349  df-f1o 6350  df-fv 6351  df-riota 7107  df-ov 7152  df-oprab 7153  df-mpo 7154  df-om 7575  df-1st 7684  df-2nd 7685  df-wrecs 7943  df-recs 8004  df-rdg 8042  df-1o 8098  df-2o 8099  df-oadd 8102  df-er 8285  df-map 8404  df-pm 8405  df-en 8506  df-dom 8507  df-sdom 8508  df-fin 8509  df-sup 8903  df-inf 8904  df-dju 9327  df-card 9365  df-pnf 10675  df-mnf 10676  df-xr 10677  df-ltxr 10678  df-le 10679  df-sub 10870  df-neg 10871  df-div 11296  df-nn 11635  df-2 11697  df-3 11698  df-n0 11895  df-xnn0 11965  df-z 11979  df-uz 12241  df-rp 12387  df-xadd 12505  df-fz 12895  df-fzo 13038  df-seq 13374  df-exp 13435  df-hash 13696  df-word 13867  df-cj 14458  df-re 14459  df-im 14460  df-sqrt 14594  df-abs 14595  df-dvds 15608  df-vtx 26797  df-iedg 26798  df-edg 26847  df-uhgr 26857  df-ushgr 26858  df-upgr 26881  df-uspgr 26949  df-vtxdg 27262  df-wlks 27395  df-trls 27488  df-eupth 27989
This theorem is referenced by:  eulerpath  28032
  Copyright terms: Public domain W3C validator