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

Theorem wlkiswwlks1 27058
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 26807 . 2 (𝐹(Walks‘𝐺)𝑃𝑃 ≠ ∅)
2 eqid 2765 . . . 4 (Vtx‘𝐺) = (Vtx‘𝐺)
3 eqid 2765 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
42, 3upgriswlk 26828 . . 3 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 ↔ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})))
5 simpr 477 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ≠ ∅)
6 ffz0iswrd 13513 . . . . . . . 8 (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → 𝑃 ∈ Word (Vtx‘𝐺))
763ad2ant2 1164 . . . . . . 7 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → 𝑃 ∈ Word (Vtx‘𝐺))
87ad2antlr 718 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ Word (Vtx‘𝐺))
9 upgruhgr 26274 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
103uhgrfun 26238 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UHGraph → Fun (iEdg‘𝐺))
11 funfn 6098 . . . . . . . . . . . . . . . . . . 19 (Fun (iEdg‘𝐺) ↔ (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1211biimpi 207 . . . . . . . . . . . . . . . . . 18 (Fun (iEdg‘𝐺) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
139, 10, 123syl 18 . . . . . . . . . . . . . . . . 17 (𝐺 ∈ UPGraph → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1413ad2antlr 718 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
15 wrdsymbcl 13499 . . . . . . . . . . . . . . . . 17 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
1615ad4ant14 759 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
17 fnfvelrn 6546 . . . . . . . . . . . . . . . 16 (((iEdg‘𝐺) Fn dom (iEdg‘𝐺) ∧ (𝐹𝑖) ∈ dom (iEdg‘𝐺)) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
1814, 16, 17syl2anc 579 . . . . . . . . . . . . . . 15 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
19 edgval 26218 . . . . . . . . . . . . . . 15 (Edg‘𝐺) = ran (iEdg‘𝐺)
2018, 19syl6eleqr 2855 . . . . . . . . . . . . . 14 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺))
21 eleq1 2832 . . . . . . . . . . . . . . 15 ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} = ((iEdg‘𝐺)‘(𝐹𝑖)) → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2221eqcoms 2773 . . . . . . . . . . . . . 14 (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2320, 22syl5ibrcom 238 . . . . . . . . . . . . 13 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → {(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2423ralimdva 3109 . . . . . . . . . . . 12 (((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2524ex 401 . . . . . . . . . . 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 1145 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝐺 ∈ UPGraph → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2827impcom 396 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
29 lencl 13505 . . . . . . . . . . . . . 14 (𝐹 ∈ Word dom (iEdg‘𝐺) → (♯‘𝐹) ∈ ℕ0)
30 ffz0hash 13432 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (♯‘𝑃) = ((♯‘𝐹) + 1))
3130ex 401 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → (♯‘𝑃) = ((♯‘𝐹) + 1)))
32 oveq1 6849 . . . . . . . . . . . . . . . . 17 ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (((♯‘𝐹) + 1) − 1))
33 nn0cn 11549 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℕ0 → (♯‘𝐹) ∈ ℂ)
34 pncan1 10708 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℂ → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3533, 34syl 17 . . . . . . . . . . . . . . . . 17 ((♯‘𝐹) ∈ ℕ0 → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3632, 35sylan9eqr 2821 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0 ∧ (♯‘𝑃) = ((♯‘𝐹) + 1)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
3736ex 401 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3831, 37syld 47 . . . . . . . . . . . . . 14 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3929, 38syl 17 . . . . . . . . . . . . 13 (𝐹 ∈ Word dom (iEdg‘𝐺) → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
4039imp 395 . . . . . . . . . . . 12 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
4140oveq2d 6858 . . . . . . . . . . 11 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (0..^((♯‘𝑃) − 1)) = (0..^(♯‘𝐹)))
4241raleqdv 3292 . . . . . . . . . 10 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
43423adant3 1162 . . . . . . . . 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 248 . . . . . . 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 2765 . . . . . . 7 (Edg‘𝐺) = (Edg‘𝐺)
482, 47iswwlks 27021 . . . . . 6 (𝑃 ∈ (WWalks‘𝐺) ↔ (𝑃 ≠ ∅ ∧ 𝑃 ∈ Word (Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
495, 8, 46, 48syl3anbrc 1443 . . . . 5 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ (WWalks‘𝐺))
5049ex 401 . . . 4 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺)))
5150ex 401 . . 3 (𝐺 ∈ UPGraph → ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
524, 51sylbid 231 . 2 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
531, 52mpdi 45 1 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃𝑃 ∈ (WWalks‘𝐺)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 197  wa 384  w3a 1107   = wceq 1652  wcel 2155  wne 2937  wral 3055  c0 4079  {cpr 4336   class class class wbr 4809  dom cdm 5277  ran crn 5278  Fun wfun 6062   Fn wfn 6063  wf 6064  cfv 6068  (class class class)co 6842  cc 10187  0cc0 10189  1c1 10190   + caddc 10192  cmin 10520  0cn0 11538  ...cfz 12533  ..^cfzo 12673  chash 13321  Word cword 13486  Vtxcvtx 26165  iEdgciedg 26166  Edgcedg 26216  UHGraphcuhgr 26228  UPGraphcupgr 26252  Walkscwlks 26783  WWalkscwwlks 27010
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1890  ax-4 1904  ax-5 2005  ax-6 2070  ax-7 2105  ax-8 2157  ax-9 2164  ax-10 2183  ax-11 2198  ax-12 2211  ax-13 2352  ax-ext 2743  ax-rep 4930  ax-sep 4941  ax-nul 4949  ax-pow 5001  ax-pr 5062  ax-un 7147  ax-cnex 10245  ax-resscn 10246  ax-1cn 10247  ax-icn 10248  ax-addcl 10249  ax-addrcl 10250  ax-mulcl 10251  ax-mulrcl 10252  ax-mulcom 10253  ax-addass 10254  ax-mulass 10255  ax-distr 10256  ax-i2m1 10257  ax-1ne0 10258  ax-1rid 10259  ax-rnegex 10260  ax-rrecex 10261  ax-cnre 10262  ax-pre-lttri 10263  ax-pre-lttrn 10264  ax-pre-ltadd 10265  ax-pre-mulgt0 10266
This theorem depends on definitions:  df-bi 198  df-an 385  df-or 874  df-ifp 1086  df-3or 1108  df-3an 1109  df-tru 1656  df-ex 1875  df-nf 1879  df-sb 2063  df-mo 2565  df-eu 2582  df-clab 2752  df-cleq 2758  df-clel 2761  df-nfc 2896  df-ne 2938  df-nel 3041  df-ral 3060  df-rex 3061  df-reu 3062  df-rmo 3063  df-rab 3064  df-v 3352  df-sbc 3597  df-csb 3692  df-dif 3735  df-un 3737  df-in 3739  df-ss 3746  df-pss 3748  df-nul 4080  df-if 4244  df-pw 4317  df-sn 4335  df-pr 4337  df-tp 4339  df-op 4341  df-uni 4595  df-int 4634  df-iun 4678  df-br 4810  df-opab 4872  df-mpt 4889  df-tr 4912  df-id 5185  df-eprel 5190  df-po 5198  df-so 5199  df-fr 5236  df-we 5238  df-xp 5283  df-rel 5284  df-cnv 5285  df-co 5286  df-dm 5287  df-rn 5288  df-res 5289  df-ima 5290  df-pred 5865  df-ord 5911  df-on 5912  df-lim 5913  df-suc 5914  df-iota 6031  df-fun 6070  df-fn 6071  df-f 6072  df-f1 6073  df-fo 6074  df-f1o 6075  df-fv 6076  df-riota 6803  df-ov 6845  df-oprab 6846  df-mpt2 6847  df-om 7264  df-1st 7366  df-2nd 7367  df-wrecs 7610  df-recs 7672  df-rdg 7710  df-1o 7764  df-2o 7765  df-oadd 7768  df-er 7947  df-map 8062  df-pm 8063  df-en 8161  df-dom 8162  df-sdom 8163  df-fin 8164  df-card 9016  df-cda 9243  df-pnf 10330  df-mnf 10331  df-xr 10332  df-ltxr 10333  df-le 10334  df-sub 10522  df-neg 10523  df-nn 11275  df-2 11335  df-n0 11539  df-xnn0 11611  df-z 11625  df-uz 11887  df-fz 12534  df-fzo 12674  df-hash 13322  df-word 13487  df-edg 26217  df-uhgr 26230  df-upgr 26254  df-wlks 26786  df-wwlks 27015
This theorem is referenced by:  wlklnwwlkln1  27059  wlkiswwlks  27067  wlkiswwlkupgr  27069  elwspths2spth  27192
  Copyright terms: Public domain W3C validator