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

Theorem wlkiswwlks1 26947
Description: The sequence of vertices in a walk is a walk as word in a pseudograph. (Contributed by Alexander van der Vekens, 20-Jul-2018.) (Revised by AV, 9-Apr-2021.)
Assertion
Ref Expression
wlkiswwlks1 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃𝑃 ∈ (WWalks‘𝐺)))

Proof of Theorem wlkiswwlks1
Dummy variable 𝑖 is distinct from all other variables.
StepHypRef Expression
1 wlkn0 26697 . 2 (𝐹(Walks‘𝐺)𝑃𝑃 ≠ ∅)
2 eqid 2748 . . . 4 (Vtx‘𝐺) = (Vtx‘𝐺)
3 eqid 2748 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
42, 3upgriswlk 26718 . . 3 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 ↔ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})))
5 simpr 479 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ≠ ∅)
6 ffz0iswrd 13489 . . . . . . . 8 (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → 𝑃 ∈ Word (Vtx‘𝐺))
763ad2ant2 1126 . . . . . . 7 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → 𝑃 ∈ Word (Vtx‘𝐺))
87ad2antlr 765 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ Word (Vtx‘𝐺))
9 upgruhgr 26167 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
103uhgrfun 26131 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UHGraph → Fun (iEdg‘𝐺))
11 funfn 6067 . . . . . . . . . . . . . . . . . . 19 (Fun (iEdg‘𝐺) ↔ (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1211biimpi 206 . . . . . . . . . . . . . . . . . 18 (Fun (iEdg‘𝐺) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
139, 10, 123syl 18 . . . . . . . . . . . . . . . . 17 (𝐺 ∈ UPGraph → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1413ad2antlr 765 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
15 wrdsymbcl 13475 . . . . . . . . . . . . . . . . 17 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
1615ad4ant14 1185 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
17 fnfvelrn 6507 . . . . . . . . . . . . . . . 16 (((iEdg‘𝐺) Fn dom (iEdg‘𝐺) ∧ (𝐹𝑖) ∈ dom (iEdg‘𝐺)) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
1814, 16, 17syl2anc 696 . . . . . . . . . . . . . . 15 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
19 edgval 26111 . . . . . . . . . . . . . . 15 (Edg‘𝐺) = ran (iEdg‘𝐺)
2018, 19syl6eleqr 2838 . . . . . . . . . . . . . 14 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺))
21 eleq1 2815 . . . . . . . . . . . . . . 15 ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} = ((iEdg‘𝐺)‘(𝐹𝑖)) → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2221eqcoms 2756 . . . . . . . . . . . . . 14 (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2320, 22syl5ibrcom 237 . . . . . . . . . . . . 13 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → {(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2423ralimdva 3088 . . . . . . . . . . . 12 (((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2524ex 449 . . . . . . . . . . 11 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (𝐺 ∈ UPGraph → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))))
2625com23 86 . . . . . . . . . 10 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → (𝐺 ∈ UPGraph → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))))
27263impia 1109 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝐺 ∈ UPGraph → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2827impcom 445 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
29 lencl 13481 . . . . . . . . . . . . . 14 (𝐹 ∈ Word dom (iEdg‘𝐺) → (♯‘𝐹) ∈ ℕ0)
30 ffz0hash 13394 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (♯‘𝑃) = ((♯‘𝐹) + 1))
3130ex 449 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → (♯‘𝑃) = ((♯‘𝐹) + 1)))
32 oveq1 6808 . . . . . . . . . . . . . . . . 17 ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (((♯‘𝐹) + 1) − 1))
33 nn0cn 11465 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℕ0 → (♯‘𝐹) ∈ ℂ)
34 pncan1 10617 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℂ → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3533, 34syl 17 . . . . . . . . . . . . . . . . 17 ((♯‘𝐹) ∈ ℕ0 → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3632, 35sylan9eqr 2804 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0 ∧ (♯‘𝑃) = ((♯‘𝐹) + 1)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
3736ex 449 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3831, 37syld 47 . . . . . . . . . . . . . 14 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3929, 38syl 17 . . . . . . . . . . . . 13 (𝐹 ∈ Word dom (iEdg‘𝐺) → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
4039imp 444 . . . . . . . . . . . 12 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
4140oveq2d 6817 . . . . . . . . . . 11 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (0..^((♯‘𝑃) − 1)) = (0..^(♯‘𝐹)))
4241raleqdv 3271 . . . . . . . . . 10 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
43423adant3 1124 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
4443adantl 473 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
4528, 44mpbird 247 . . . . . . 7 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
4645adantr 472 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
47 eqid 2748 . . . . . . 7 (Edg‘𝐺) = (Edg‘𝐺)
482, 47iswwlks 26910 . . . . . 6 (𝑃 ∈ (WWalks‘𝐺) ↔ (𝑃 ≠ ∅ ∧ 𝑃 ∈ Word (Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
495, 8, 46, 48syl3anbrc 1407 . . . . 5 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ (WWalks‘𝐺))
5049ex 449 . . . 4 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺)))
5150ex 449 . . 3 (𝐺 ∈ UPGraph → ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
524, 51sylbid 230 . 2 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
531, 52mpdi 45 1 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃𝑃 ∈ (WWalks‘𝐺)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 383  w3a 1072   = wceq 1620  wcel 2127  wne 2920  wral 3038  c0 4046  {cpr 4311   class class class wbr 4792  dom cdm 5254  ran crn 5255  Fun wfun 6031   Fn wfn 6032  wf 6033  cfv 6037  (class class class)co 6801  cc 10097  0cc0 10099  1c1 10100   + caddc 10102  cmin 10429  0cn0 11455  ...cfz 12490  ..^cfzo 12630  chash 13282  Word cword 13448  Vtxcvtx 26044  iEdgciedg 26045  Edgcedg 26109  UHGraphcuhgr 26121  UPGraphcupgr 26145  Walkscwlks 26673  WWalkscwwlks 26899
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1859  ax-4 1874  ax-5 1976  ax-6 2042  ax-7 2078  ax-8 2129  ax-9 2136  ax-10 2156  ax-11 2171  ax-12 2184  ax-13 2379  ax-ext 2728  ax-rep 4911  ax-sep 4921  ax-nul 4929  ax-pow 4980  ax-pr 5043  ax-un 7102  ax-cnex 10155  ax-resscn 10156  ax-1cn 10157  ax-icn 10158  ax-addcl 10159  ax-addrcl 10160  ax-mulcl 10161  ax-mulrcl 10162  ax-mulcom 10163  ax-addass 10164  ax-mulass 10165  ax-distr 10166  ax-i2m1 10167  ax-1ne0 10168  ax-1rid 10169  ax-rnegex 10170  ax-rrecex 10171  ax-cnre 10172  ax-pre-lttri 10173  ax-pre-lttrn 10174  ax-pre-ltadd 10175  ax-pre-mulgt0 10176
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-ifp 1051  df-3or 1073  df-3an 1074  df-tru 1623  df-ex 1842  df-nf 1847  df-sb 2035  df-eu 2599  df-mo 2600  df-clab 2735  df-cleq 2741  df-clel 2744  df-nfc 2879  df-ne 2921  df-nel 3024  df-ral 3043  df-rex 3044  df-reu 3045  df-rmo 3046  df-rab 3047  df-v 3330  df-sbc 3565  df-csb 3663  df-dif 3706  df-un 3708  df-in 3710  df-ss 3717  df-pss 3719  df-nul 4047  df-if 4219  df-pw 4292  df-sn 4310  df-pr 4312  df-tp 4314  df-op 4316  df-uni 4577  df-int 4616  df-iun 4662  df-br 4793  df-opab 4853  df-mpt 4870  df-tr 4893  df-id 5162  df-eprel 5167  df-po 5175  df-so 5176  df-fr 5213  df-we 5215  df-xp 5260  df-rel 5261  df-cnv 5262  df-co 5263  df-dm 5264  df-rn 5265  df-res 5266  df-ima 5267  df-pred 5829  df-ord 5875  df-on 5876  df-lim 5877  df-suc 5878  df-iota 6000  df-fun 6039  df-fn 6040  df-f 6041  df-f1 6042  df-fo 6043  df-f1o 6044  df-fv 6045  df-riota 6762  df-ov 6804  df-oprab 6805  df-mpt2 6806  df-om 7219  df-1st 7321  df-2nd 7322  df-wrecs 7564  df-recs 7625  df-rdg 7663  df-1o 7717  df-2o 7718  df-oadd 7721  df-er 7899  df-map 8013  df-pm 8014  df-en 8110  df-dom 8111  df-sdom 8112  df-fin 8113  df-card 8926  df-cda 9153  df-pnf 10239  df-mnf 10240  df-xr 10241  df-ltxr 10242  df-le 10243  df-sub 10431  df-neg 10432  df-nn 11184  df-2 11242  df-n0 11456  df-xnn0 11527  df-z 11541  df-uz 11851  df-fz 12491  df-fzo 12631  df-hash 13283  df-word 13456  df-edg 26110  df-uhgr 26123  df-upgr 26147  df-wlks 26676  df-wwlks 26904
This theorem is referenced by:  wlklnwwlkln1  26948  wlkiswwlks  26956  wlkiswwlkupgr  26958  elwspths2spth  27060
  Copyright terms: Public domain W3C validator