Metamath Proof Explorer


Theorem clwwlkel

Description: Obtaining a closed walk (as word) by appending the first symbol to the word representing a walk. (Contributed by AV, 28-Sep-2018) (Revised by AV, 25-Apr-2021)

Ref Expression
Hypothesis clwwlkf1o.d D=wNWWalksNG|lastSw=w0
Assertion clwwlkel NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩D

Proof

Step Hyp Ref Expression
1 clwwlkf1o.d D=wNWWalksNG|lastSw=w0
2 ccatws1n0 PWordVtxGP++⟨“P0”⟩
3 2 adantr PWordVtxGP=NP++⟨“P0”⟩
4 3 3ad2ant2 NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩
5 simprl NPWordVtxGP=NPWordVtxG
6 fstwrdne0 NPWordVtxGP=NP0VtxG
7 6 s1cld NPWordVtxGP=N⟨“P0”⟩WordVtxG
8 ccatcl PWordVtxG⟨“P0”⟩WordVtxGP++⟨“P0”⟩WordVtxG
9 5 7 8 syl2anc NPWordVtxGP=NP++⟨“P0”⟩WordVtxG
10 9 3adant3 NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩WordVtxG
11 5 adantr NPWordVtxGP=Ni0..^N1PWordVtxG
12 7 adantr NPWordVtxGP=Ni0..^N1⟨“P0”⟩WordVtxG
13 elfzonn0 i0..^N1i0
14 13 adantl Ni0..^N1i0
15 nnz NN
16 15 adantr Ni0..^N1N
17 elfzo0 i0..^N1i0N1i<N1
18 nn0re i0i
19 18 adantr i0Ni
20 nnre NN
21 peano2rem NN1
22 20 21 syl NN1
23 22 adantl i0NN1
24 20 adantl i0NN
25 19 23 24 3jca i0NiN1N
26 25 adantr i0Ni<N1iN1N
27 20 ltm1d NN1<N
28 27 adantl i0NN1<N
29 28 anim1ci i0Ni<N1i<N1N1<N
30 lttr iN1Ni<N1N1<Ni<N
31 26 29 30 sylc i0Ni<N1i<N
32 31 ex i0Ni<N1i<N
33 32 impancom i0i<N1Ni<N
34 33 3adant2 i0N1i<N1Ni<N
35 17 34 sylbi i0..^N1Ni<N
36 35 impcom Ni0..^N1i<N
37 elfzo0z i0..^Ni0Ni<N
38 14 16 36 37 syl3anbrc Ni0..^N1i0..^N
39 38 adantlr NPWordVtxGP=Ni0..^N1i0..^N
40 oveq2 P=N0..^P=0..^N
41 40 eleq2d P=Ni0..^Pi0..^N
42 41 ad2antll NPWordVtxGP=Ni0..^Pi0..^N
43 42 adantr NPWordVtxGP=Ni0..^N1i0..^Pi0..^N
44 39 43 mpbird NPWordVtxGP=Ni0..^N1i0..^P
45 ccatval1 PWordVtxG⟨“P0”⟩WordVtxGi0..^PP++⟨“P0”⟩i=Pi
46 11 12 44 45 syl3anc NPWordVtxGP=Ni0..^N1P++⟨“P0”⟩i=Pi
47 elfzom1p1elfzo Ni0..^N1i+10..^N
48 47 adantlr NPWordVtxGP=Ni0..^N1i+10..^N
49 40 ad2antll NPWordVtxGP=N0..^P=0..^N
50 49 adantr NPWordVtxGP=Ni0..^N10..^P=0..^N
51 48 50 eleqtrrd NPWordVtxGP=Ni0..^N1i+10..^P
52 ccatval1 PWordVtxG⟨“P0”⟩WordVtxGi+10..^PP++⟨“P0”⟩i+1=Pi+1
53 11 12 51 52 syl3anc NPWordVtxGP=Ni0..^N1P++⟨“P0”⟩i+1=Pi+1
54 46 53 preq12d NPWordVtxGP=Ni0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1=PiPi+1
55 54 eleq1d NPWordVtxGP=Ni0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGPiPi+1EdgG
56 55 ralbidva NPWordVtxGP=Ni0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGi0..^N1PiPi+1EdgG
57 56 biimprcd i0..^N1PiPi+1EdgGNPWordVtxGP=Ni0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
58 57 adantr i0..^N1PiPi+1EdgGlastSPP0EdgGNPWordVtxGP=Ni0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
59 58 expdcom NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGi0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
60 59 3imp NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGi0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
61 fzo0end NN10..^N
62 40 eleq2d P=NN10..^PN10..^N
63 62 adantl PWordVtxGP=NN10..^PN10..^N
64 61 63 syl5ibrcom NPWordVtxGP=NN10..^P
65 64 imp NPWordVtxGP=NN10..^P
66 ccatval1 PWordVtxG⟨“P0”⟩WordVtxGN10..^PP++⟨“P0”⟩N1=PN1
67 5 7 65 66 syl3anc NPWordVtxGP=NP++⟨“P0”⟩N1=PN1
68 lsw PWordVtxGlastSP=PP1
69 68 adantr PWordVtxGP=NlastSP=PP1
70 fvoveq1 P=NPP1=PN1
71 70 adantl PWordVtxGP=NPP1=PN1
72 69 71 eqtr2d PWordVtxGP=NPN1=lastSP
73 72 adantl NPWordVtxGP=NPN1=lastSP
74 67 73 eqtr2d NPWordVtxGP=NlastSP=P++⟨“P0”⟩N1
75 nncn NN
76 1cnd N1
77 75 76 npcand NN-1+1=N
78 77 fveq2d NP++⟨“P0”⟩N-1+1=P++⟨“P0”⟩N
79 78 adantr NPWordVtxGP=NP++⟨“P0”⟩N-1+1=P++⟨“P0”⟩N
80 fveq2 P=NP++⟨“P0”⟩P=P++⟨“P0”⟩N
81 80 ad2antll NPWordVtxGP=NP++⟨“P0”⟩P=P++⟨“P0”⟩N
82 ccatws1ls PWordVtxGP0VtxGP++⟨“P0”⟩P=P0
83 5 6 82 syl2anc NPWordVtxGP=NP++⟨“P0”⟩P=P0
84 79 81 83 3eqtr2rd NPWordVtxGP=NP0=P++⟨“P0”⟩N-1+1
85 74 84 preq12d NPWordVtxGP=NlastSPP0=P++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1
86 85 eleq1d NPWordVtxGP=NlastSPP0EdgGP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
87 86 biimpcd lastSPP0EdgGNPWordVtxGP=NP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
88 87 adantl i0..^N1PiPi+1EdgGlastSPP0EdgGNPWordVtxGP=NP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
89 88 expdcom NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
90 89 3imp NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
91 ovex N1V
92 fveq2 i=N1P++⟨“P0”⟩i=P++⟨“P0”⟩N1
93 fvoveq1 i=N1P++⟨“P0”⟩i+1=P++⟨“P0”⟩N-1+1
94 92 93 preq12d i=N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1=P++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1
95 94 eleq1d i=N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
96 91 95 ralsn iN1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGP++⟨“P0”⟩N1P++⟨“P0”⟩N-1+1EdgG
97 90 96 sylibr NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGiN1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
98 75 76 76 addsubd NN+1-1=N-1+1
99 98 oveq2d N0..^N+1-1=0..^N-1+1
100 nnm1nn0 NN10
101 elnn0uz N10N10
102 100 101 sylib NN10
103 fzosplitsn N100..^N-1+1=0..^N1N1
104 102 103 syl N0..^N-1+1=0..^N1N1
105 99 104 eqtrd N0..^N+1-1=0..^N1N1
106 105 raleqdv Ni0..^N+1-1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGi0..^N1N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
107 ralunb i0..^N1N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGi0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGiN1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
108 106 107 bitrdi Ni0..^N+1-1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGi0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGiN1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
109 108 3ad2ant1 NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGi0..^N+1-1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGi0..^N1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGiN1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
110 60 97 109 mpbir2and NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGi0..^N+1-1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
111 ccatlen PWordVtxG⟨“P0”⟩WordVtxGP++⟨“P0”⟩=P+⟨“P0”⟩
112 5 7 111 syl2anc NPWordVtxGP=NP++⟨“P0”⟩=P+⟨“P0”⟩
113 id P=NP=N
114 s1len ⟨“P0”⟩=1
115 114 a1i P=N⟨“P0”⟩=1
116 113 115 oveq12d P=NP+⟨“P0”⟩=N+1
117 116 ad2antll NPWordVtxGP=NP+⟨“P0”⟩=N+1
118 112 117 eqtrd NPWordVtxGP=NP++⟨“P0”⟩=N+1
119 118 3adant3 NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩=N+1
120 119 oveq1d NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩1=N+1-1
121 120 oveq2d NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgG0..^P++⟨“P0”⟩1=0..^N+1-1
122 121 raleqdv NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGi0..^N+1-1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
123 110 122 mpbird NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
124 4 10 123 3jca NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩P++⟨“P0”⟩WordVtxGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
125 nnnn0 NN0
126 iswwlksn N0P++⟨“P0”⟩NWWalksNGP++⟨“P0”⟩WWalksGP++⟨“P0”⟩=N+1
127 125 126 syl NP++⟨“P0”⟩NWWalksNGP++⟨“P0”⟩WWalksGP++⟨“P0”⟩=N+1
128 eqid VtxG=VtxG
129 eqid EdgG=EdgG
130 128 129 iswwlks P++⟨“P0”⟩WWalksGP++⟨“P0”⟩P++⟨“P0”⟩WordVtxGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgG
131 130 anbi1i P++⟨“P0”⟩WWalksGP++⟨“P0”⟩=N+1P++⟨“P0”⟩P++⟨“P0”⟩WordVtxGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGP++⟨“P0”⟩=N+1
132 127 131 bitrdi NP++⟨“P0”⟩NWWalksNGP++⟨“P0”⟩P++⟨“P0”⟩WordVtxGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGP++⟨“P0”⟩=N+1
133 132 3ad2ant1 NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩NWWalksNGP++⟨“P0”⟩P++⟨“P0”⟩WordVtxGi0..^P++⟨“P0”⟩1P++⟨“P0”⟩iP++⟨“P0”⟩i+1EdgGP++⟨“P0”⟩=N+1
134 124 119 133 mpbir2and NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩NWWalksNG
135 lswccats1 PWordVtxGP0VtxGlastSP++⟨“P0”⟩=P0
136 5 6 135 syl2anc NPWordVtxGP=NlastSP++⟨“P0”⟩=P0
137 lbfzo0 00..^NN
138 137 biimpri N00..^N
139 40 eleq2d P=N00..^P00..^N
140 139 adantl PWordVtxGP=N00..^P00..^N
141 138 140 syl5ibrcom NPWordVtxGP=N00..^P
142 141 imp NPWordVtxGP=N00..^P
143 ccatval1 PWordVtxG⟨“P0”⟩WordVtxG00..^PP++⟨“P0”⟩0=P0
144 5 7 142 143 syl3anc NPWordVtxGP=NP++⟨“P0”⟩0=P0
145 136 144 eqtr4d NPWordVtxGP=NlastSP++⟨“P0”⟩=P++⟨“P0”⟩0
146 145 3adant3 NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGlastSP++⟨“P0”⟩=P++⟨“P0”⟩0
147 fveq2 w=P++⟨“P0”⟩lastSw=lastSP++⟨“P0”⟩
148 fveq1 w=P++⟨“P0”⟩w0=P++⟨“P0”⟩0
149 147 148 eqeq12d w=P++⟨“P0”⟩lastSw=w0lastSP++⟨“P0”⟩=P++⟨“P0”⟩0
150 149 1 elrab2 P++⟨“P0”⟩DP++⟨“P0”⟩NWWalksNGlastSP++⟨“P0”⟩=P++⟨“P0”⟩0
151 134 146 150 sylanbrc NPWordVtxGP=Ni0..^N1PiPi+1EdgGlastSPP0EdgGP++⟨“P0”⟩D