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

Theorem eulerpathpr 30176
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 2730 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
3 simpl 482 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → 𝐺 ∈ UPGraph)
4 upgruhgr 29036 . . . . . 6 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
52uhgrfun 29000 . . . . . 6 (𝐺 ∈ UHGraph → Fun (iEdg‘𝐺))
64, 5syl 17 . . . . 5 (𝐺 ∈ UPGraph → Fun (iEdg‘𝐺))
76adantr 480 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → Fun (iEdg‘𝐺))
8 simpr 484 . . . 4 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → 𝐹(EulerPaths‘𝐺)𝑃)
91, 2, 3, 7, 8eupth2 30175 . . 3 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → {𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}))
109fveq2d 6869 . 2 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
11 fveq2 6865 . . . 4 (∅ = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → (♯‘∅) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
1211eleq1d 2814 . . 3 (∅ = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → ((♯‘∅) ∈ {0, 2} ↔ (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2}))
13 fveq2 6865 . . . 4 ({(𝑃‘0), (𝑃‘(♯‘𝐹))} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})))
1413eleq1d 2814 . . 3 ({(𝑃‘0), (𝑃‘(♯‘𝐹))} = if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))}) → ((♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) ∈ {0, 2} ↔ (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2}))
15 hash0 14342 . . . . 5 (♯‘∅) = 0
16 c0ex 11186 . . . . . 6 0 ∈ V
1716prid1 4734 . . . . 5 0 ∈ {0, 2}
1815, 17eqeltri 2825 . . . 4 (♯‘∅) ∈ {0, 2}
1918a1i 11 . . 3 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘∅) ∈ {0, 2})
20 simpr 484 . . . . . 6 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹)))
2120neqned 2934 . . . . 5 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (𝑃‘0) ≠ (𝑃‘(♯‘𝐹)))
22 fvex 6878 . . . . . 6 (𝑃‘0) ∈ V
23 fvex 6878 . . . . . 6 (𝑃‘(♯‘𝐹)) ∈ V
24 hashprg 14370 . . . . . 6 (((𝑃‘0) ∈ V ∧ (𝑃‘(♯‘𝐹)) ∈ V) → ((𝑃‘0) ≠ (𝑃‘(♯‘𝐹)) ↔ (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2))
2522, 23, 24mp2an 692 . . . . 5 ((𝑃‘0) ≠ (𝑃‘(♯‘𝐹)) ↔ (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2)
2621, 25sylib 218 . . . 4 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) = 2)
27 2ex 12274 . . . . 5 2 ∈ V
2827prid2 4735 . . . 4 2 ∈ {0, 2}
2926, 28eqeltrdi 2837 . . 3 (((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) ∧ ¬ (𝑃‘0) = (𝑃‘(♯‘𝐹))) → (♯‘{(𝑃‘0), (𝑃‘(♯‘𝐹))}) ∈ {0, 2})
3012, 14, 19, 29ifbothda 4535 . 2 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘if((𝑃‘0) = (𝑃‘(♯‘𝐹)), ∅, {(𝑃‘0), (𝑃‘(♯‘𝐹))})) ∈ {0, 2})
3110, 30eqeltrd 2829 1 ((𝐺 ∈ UPGraph ∧ 𝐹(EulerPaths‘𝐺)𝑃) → (♯‘{𝑥𝑉 ∣ ¬ 2 ∥ ((VtxDeg‘𝐺)‘𝑥)}) ∈ {0, 2})
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 206  wa 395   = wceq 1540  wcel 2109  wne 2927  {crab 3411  Vcvv 3455  c0 4304  ifcif 4496  {cpr 4599   class class class wbr 5115  Fun wfun 6513  cfv 6519  0cc0 11086  2c2 12252  chash 14305  cdvds 16229  Vtxcvtx 28930  iEdgciedg 28931  UHGraphcuhgr 28990  UPGraphcupgr 29014  VtxDegcvtxdg 29400  EulerPathsceupth 30133
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1795  ax-4 1809  ax-5 1910  ax-6 1967  ax-7 2008  ax-8 2111  ax-9 2119  ax-10 2142  ax-11 2158  ax-12 2178  ax-ext 2702  ax-rep 5242  ax-sep 5259  ax-nul 5269  ax-pow 5328  ax-pr 5395  ax-un 7718  ax-cnex 11142  ax-resscn 11143  ax-1cn 11144  ax-icn 11145  ax-addcl 11146  ax-addrcl 11147  ax-mulcl 11148  ax-mulrcl 11149  ax-mulcom 11150  ax-addass 11151  ax-mulass 11152  ax-distr 11153  ax-i2m1 11154  ax-1ne0 11155  ax-1rid 11156  ax-rnegex 11157  ax-rrecex 11158  ax-cnre 11159  ax-pre-lttri 11160  ax-pre-lttrn 11161  ax-pre-ltadd 11162  ax-pre-mulgt0 11163  ax-pre-sup 11164
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-ifp 1063  df-3or 1087  df-3an 1088  df-tru 1543  df-fal 1553  df-ex 1780  df-nf 1784  df-sb 2066  df-mo 2534  df-eu 2563  df-clab 2709  df-cleq 2722  df-clel 2804  df-nfc 2880  df-ne 2928  df-nel 3032  df-ral 3047  df-rex 3056  df-rmo 3357  df-reu 3358  df-rab 3412  df-v 3457  df-sbc 3762  df-csb 3871  df-dif 3925  df-un 3927  df-in 3929  df-ss 3939  df-pss 3942  df-nul 4305  df-if 4497  df-pw 4573  df-sn 4598  df-pr 4600  df-op 4604  df-uni 4880  df-int 4919  df-iun 4965  df-br 5116  df-opab 5178  df-mpt 5197  df-tr 5223  df-id 5541  df-eprel 5546  df-po 5554  df-so 5555  df-fr 5599  df-we 5601  df-xp 5652  df-rel 5653  df-cnv 5654  df-co 5655  df-dm 5656  df-rn 5657  df-res 5658  df-ima 5659  df-pred 6282  df-ord 6343  df-on 6344  df-lim 6345  df-suc 6346  df-iota 6472  df-fun 6521  df-fn 6522  df-f 6523  df-f1 6524  df-fo 6525  df-f1o 6526  df-fv 6527  df-riota 7351  df-ov 7397  df-oprab 7398  df-mpo 7399  df-om 7851  df-1st 7977  df-2nd 7978  df-frecs 8269  df-wrecs 8300  df-recs 8349  df-rdg 8387  df-1o 8443  df-2o 8444  df-oadd 8447  df-er 8682  df-map 8805  df-pm 8806  df-en 8923  df-dom 8924  df-sdom 8925  df-fin 8926  df-sup 9411  df-inf 9412  df-dju 9872  df-card 9910  df-pnf 11228  df-mnf 11229  df-xr 11230  df-ltxr 11231  df-le 11232  df-sub 11425  df-neg 11426  df-div 11852  df-nn 12198  df-2 12260  df-3 12261  df-n0 12459  df-xnn0 12532  df-z 12546  df-uz 12810  df-rp 12966  df-xadd 13086  df-fz 13482  df-fzo 13629  df-seq 13977  df-exp 14037  df-hash 14306  df-word 14489  df-cj 15075  df-re 15076  df-im 15077  df-sqrt 15211  df-abs 15212  df-dvds 16230  df-vtx 28932  df-iedg 28933  df-edg 28982  df-uhgr 28992  df-ushgr 28993  df-upgr 29016  df-uspgr 29084  df-vtxdg 29401  df-wlks 29534  df-trls 29627  df-eupth 30134
This theorem is referenced by:  eulerpath  30177
  Copyright terms: Public domain W3C validator