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

Theorem eulerpathpr 30449
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 2763 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
3 simpl 486 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → 𝐺 ∈ UPGraph)
4 upgruhgr 29310 . . . . . 6 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
52uhgrfun 29274 . . . . . 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 30448 . . 3 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → {𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}))
109fveq2d 6871 . 2 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
11 fveq2 6867 . . . 4 (∅ = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → (♯‘∅) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
1211eleq1d 2848 . . 3 (∅ = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → ((♯‘∅) ∈ {0, 2} ↔ (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2}))
13 fveq2 6867 . . . 4 ({(𝑃‘0), (𝑃‘(♯‘𝐹))} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
1413eleq1d 2848 . . 3 ({(𝑃‘0), (𝑃‘(♯‘𝐹))} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → ((♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) ∈ {0, 2} ↔ (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2}))
15 hash0 14390 . . . . 5 (♯‘∅) = 0
16 c0ex 11184 . . . . . 6 0 ∈ V
1716prid1 4722 . . . . 5 0 ∈ {0, 2}
1815, 17eqeltri 2859 . . . 4 (♯‘∅) ∈ {0, 2}
1918a1i 11 . . 3 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘∅) ∈ {0, 2})
20 simpr 488 . . . . . 6 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹)))
2120neqned 2965 . . . . 5 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (𝑃‘0) ≠ (𝑃‘(♯‘𝐹)))
22 fvex 6880 . . . . . 6 (𝑃‘0) ∈ V
23 fvex 6880 . . . . . 6 (𝑃‘(♯‘𝐹)) ∈ V
24 hashprg 14418 . . . . . 6 (((𝑃‘0) ∈ V ∧ (𝑃‘(♯‘𝐹)) ∈ V) → ((𝑃‘0) ≠ (𝑃‘(♯‘𝐹)) ↔ (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2))
2522, 23, 24mp2an 702 . . . . 5 ((𝑃‘0) ≠ (𝑃‘(♯‘𝐹)) ↔ (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2)
2621, 25sylib 220 . . . 4 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2)
27 2ex 12305 . . . . 5 2 ∈ V
2827prid2 4723 . . . 4 2 ∈ {0, 2}
2926, 28eqeltrdi 2871 . . 3 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) ∈ {0, 2})
3012, 14, 19, 29ifbothda 4520 . 2 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2})
3110, 30eqeltrd 2863 1 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) ∈ {0, 2})
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 208  wa 399   = wceq 1561  wcel 2143  wne 2958  {crab 3415  Vcvv 3455  c0 4286  ifcif 4481  {cpr 4585   class class class wbr 5101  Fun wfun 6515  cfv 6521  0cc0 11084  2c2 12282  chash 14353  cdvds 16296  Vtxcvtx 29204  iEdgciedg 29205  UHGraphcuhgr 29264  UPGraphcupgr 29288  VtxDegcvtxdg 29673  EulerPathsceupth 30406
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1816  ax-4 1830  ax-5 1931  ax-6 1988  ax-7 2029  ax-8 2145  ax-9 2153  ax-10 2176  ax-11 2192  ax-12 2213  ax-ext 2735  ax-rep 5228  ax-sep 5247  ax-nul 5257  ax-pow 5323  ax-pr 5391  ax-un 7718  ax-cnex 11140  ax-resscn 11141  ax-1cn 11142  ax-icn 11143  ax-addcl 11144  ax-addrcl 11145  ax-mulcl 11146  ax-mulrcl 11147  ax-mulcom 11148  ax-addass 11149  ax-mulass 11150  ax-distr 11151  ax-i2m1 11152  ax-1ne0 11153  ax-1rid 11154  ax-rnegex 11155  ax-rrecex 11156  ax-cnre 11157  ax-pre-lttri 11158  ax-pre-lttrn 11159  ax-pre-ltadd 11160  ax-pre-mulgt0 11161  ax-pre-sup 11162
This theorem depends on definitions:  df-bi 209  df-an 400  df-or 859  df-ifp 1075  df-3or 1100  df-3an 1101  df-tru 1564  df-fal 1574  df-ex 1801  df-nf 1805  df-sb 2092  df-mo 2567  df-eu 2597  df-clab 2742  df-cleq 2755  df-clel 2838  df-nfc 2912  df-ne 2959  df-nel 3063  df-ral 3078  df-rex 3088  df-rmo 3368  df-reu 3369  df-rab 3416  df-v 3457  df-sbc 3746  df-csb 3854  df-dif 3908  df-un 3910  df-in 3912  df-ss 3922  df-pss 3925  df-nul 4287  df-if 4482  df-pw 4558  df-sn 4584  df-pr 4586  df-op 4590  df-uni 4867  df-int 4907  df-iun 4952  df-br 5102  df-opab 5164  df-mpt 5183  df-tr 5209  df-id 5543  df-eprel 5548  df-po 5556  df-so 5557  df-fr 5601  df-we 5603  df-xp 5654  df-rel 5655  df-cnv 5656  df-co 5657  df-dm 5658  df-rn 5659  df-res 5660  df-ima 5661  df-pred 6288  df-ord 6349  df-on 6350  df-lim 6351  df-suc 6352  df-iota 6477  df-fun 6523  df-fn 6524  df-f 6525  df-f1 6526  df-fo 6527  df-f1o 6528  df-fv 6529  df-riota 7353  df-ov 7399  df-oprab 7400  df-mpo 7401  df-om 7847  df-1st 7970  df-2nd 7971  df-frecs 8262  df-wrecs 8293  df-recs 8342  df-rdg 8381  df-1o 8437  df-2o 8438  df-oadd 8441  df-er 8678  df-map 8810  df-pm 8811  df-en 8928  df-dom 8929  df-sdom 8930  df-fin 8931  df-sup 9386  df-inf 9387  df-dju 9871  df-card 9909  df-pnf 11229  df-mnf 11230  df-xr 11231  df-ltxr 11232  df-le 11233  df-sub 11427  df-neg 11428  df-div 11856  df-nn 12221  df-2 12290  df-3 12291  df-n0 12492  df-xnn0 12565  df-z 12579  df-uz 12850  df-rp 13004  df-xadd 13125  df-fz 13523  df-fzo 13670  df-seq 14025  df-exp 14085  df-hash 14354  df-word 14537  df-cj 15136  df-re 15137  df-im 15138  df-sqrt 15272  df-abs 15273  df-dvds 16297  df-vtx 29206  df-iedg 29207  df-edg 29256  df-uhgr 29266  df-ushgr 29267  df-upgr 29290  df-uspgr 29358  df-vtxdg 29674  df-wlks 29807  df-trls 29898  df-eupth 30407
This theorem is referenced by:  eulerpath  30450
  Copyright terms: Public domain W3C validator