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

Theorem wlkiswwlks1 29896
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 29653 . 2 (𝐹(Walks‘𝐺)𝑃𝑃 ≠ ∅)
2 eqid 2734 . . . 4 (Vtx‘𝐺) = (Vtx‘𝐺)
3 eqid 2734 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
42, 3upgriswlk 29673 . . 3 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 ↔ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})))
5 simpr 484 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ≠ ∅)
6 ffz0iswrd 14575 . . . . . . . 8 (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → 𝑃 ∈ Word (Vtx‘𝐺))
763ad2ant2 1133 . . . . . . 7 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → 𝑃 ∈ Word (Vtx‘𝐺))
87ad2antlr 727 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ Word (Vtx‘𝐺))
9 upgruhgr 29133 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
103uhgrfun 29097 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UHGraph → Fun (iEdg‘𝐺))
11 funfn 6597 . . . . . . . . . . . . . . . . . . 19 (Fun (iEdg‘𝐺) ↔ (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1211biimpi 216 . . . . . . . . . . . . . . . . . 18 (Fun (iEdg‘𝐺) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
139, 10, 123syl 18 . . . . . . . . . . . . . . . . 17 (𝐺 ∈ UPGraph → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1413ad2antlr 727 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
15 wrdsymbcl 14561 . . . . . . . . . . . . . . . . 17 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
1615ad4ant14 752 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
17 fnfvelrn 7099 . . . . . . . . . . . . . . . 16 (((iEdg‘𝐺) Fn dom (iEdg‘𝐺) ∧ (𝐹𝑖) ∈ dom (iEdg‘𝐺)) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
1814, 16, 17syl2anc 584 . . . . . . . . . . . . . . 15 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
19 edgval 29080 . . . . . . . . . . . . . . 15 (Edg‘𝐺) = ran (iEdg‘𝐺)
2018, 19eleqtrrdi 2849 . . . . . . . . . . . . . 14 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺))
21 eleq1 2826 . . . . . . . . . . . . . . 15 ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} = ((iEdg‘𝐺)‘(𝐹𝑖)) → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2221eqcoms 2742 . . . . . . . . . . . . . 14 (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2320, 22syl5ibrcom 247 . . . . . . . . . . . . 13 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → {(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2423ralimdva 3164 . . . . . . . . . . . 12 (((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2524ex 412 . . . . . . . . . . 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 1116 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝐺 ∈ UPGraph → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2827impcom 407 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
29 lencl 14567 . . . . . . . . . . . . . 14 (𝐹 ∈ Word dom (iEdg‘𝐺) → (♯‘𝐹) ∈ ℕ0)
30 ffz0hash 14482 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (♯‘𝑃) = ((♯‘𝐹) + 1))
3130ex 412 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → (♯‘𝑃) = ((♯‘𝐹) + 1)))
32 oveq1 7437 . . . . . . . . . . . . . . . . 17 ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (((♯‘𝐹) + 1) − 1))
33 nn0cn 12533 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℕ0 → (♯‘𝐹) ∈ ℂ)
34 pncan1 11684 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℂ → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3533, 34syl 17 . . . . . . . . . . . . . . . . 17 ((♯‘𝐹) ∈ ℕ0 → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3632, 35sylan9eqr 2796 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0 ∧ (♯‘𝑃) = ((♯‘𝐹) + 1)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
3736ex 412 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3831, 37syld 47 . . . . . . . . . . . . . 14 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3929, 38syl 17 . . . . . . . . . . . . 13 (𝐹 ∈ Word dom (iEdg‘𝐺) → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
4039imp 406 . . . . . . . . . . . 12 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
4140oveq2d 7446 . . . . . . . . . . 11 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (0..^((♯‘𝑃) − 1)) = (0..^(♯‘𝐹)))
4241raleqdv 3323 . . . . . . . . . 10 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
43423adant3 1131 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
4443adantl 481 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
4528, 44mpbird 257 . . . . . . 7 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
4645adantr 480 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
47 eqid 2734 . . . . . . 7 (Edg‘𝐺) = (Edg‘𝐺)
482, 47iswwlks 29865 . . . . . 6 (𝑃 ∈ (WWalks‘𝐺) ↔ (𝑃 ≠ ∅ ∧ 𝑃 ∈ Word (Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
495, 8, 46, 48syl3anbrc 1342 . . . . 5 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ (WWalks‘𝐺))
5049ex 412 . . . 4 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺)))
5150ex 412 . . 3 (𝐺 ∈ UPGraph → ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
524, 51sylbid 240 . 2 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
531, 52mpdi 45 1 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃𝑃 ∈ (WWalks‘𝐺)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 206  wa 395  w3a 1086   = wceq 1536  wcel 2105  wne 2937  wral 3058  c0 4338  {cpr 4632   class class class wbr 5147  dom cdm 5688  ran crn 5689  Fun wfun 6556   Fn wfn 6557  wf 6558  cfv 6562  (class class class)co 7430  cc 11150  0cc0 11152  1c1 11153   + caddc 11155  cmin 11489  0cn0 12523  ...cfz 13543  ..^cfzo 13690  chash 14365  Word cword 14548  Vtxcvtx 29027  iEdgciedg 29028  Edgcedg 29078  UHGraphcuhgr 29087  UPGraphcupgr 29111  Walkscwlks 29628  WWalkscwwlks 29854
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1791  ax-4 1805  ax-5 1907  ax-6 1964  ax-7 2004  ax-8 2107  ax-9 2115  ax-10 2138  ax-11 2154  ax-12 2174  ax-ext 2705  ax-rep 5284  ax-sep 5301  ax-nul 5311  ax-pow 5370  ax-pr 5437  ax-un 7753  ax-cnex 11208  ax-resscn 11209  ax-1cn 11210  ax-icn 11211  ax-addcl 11212  ax-addrcl 11213  ax-mulcl 11214  ax-mulrcl 11215  ax-mulcom 11216  ax-addass 11217  ax-mulass 11218  ax-distr 11219  ax-i2m1 11220  ax-1ne0 11221  ax-1rid 11222  ax-rnegex 11223  ax-rrecex 11224  ax-cnre 11225  ax-pre-lttri 11226  ax-pre-lttrn 11227  ax-pre-ltadd 11228  ax-pre-mulgt0 11229
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 1539  df-fal 1549  df-ex 1776  df-nf 1780  df-sb 2062  df-mo 2537  df-eu 2566  df-clab 2712  df-cleq 2726  df-clel 2813  df-nfc 2889  df-ne 2938  df-nel 3044  df-ral 3059  df-rex 3068  df-reu 3378  df-rab 3433  df-v 3479  df-sbc 3791  df-csb 3908  df-dif 3965  df-un 3967  df-in 3969  df-ss 3979  df-pss 3982  df-nul 4339  df-if 4531  df-pw 4606  df-sn 4631  df-pr 4633  df-op 4637  df-uni 4912  df-int 4951  df-iun 4997  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5582  df-eprel 5588  df-po 5596  df-so 5597  df-fr 5640  df-we 5642  df-xp 5694  df-rel 5695  df-cnv 5696  df-co 5697  df-dm 5698  df-rn 5699  df-res 5700  df-ima 5701  df-pred 6322  df-ord 6388  df-on 6389  df-lim 6390  df-suc 6391  df-iota 6515  df-fun 6564  df-fn 6565  df-f 6566  df-f1 6567  df-fo 6568  df-f1o 6569  df-fv 6570  df-riota 7387  df-ov 7433  df-oprab 7434  df-mpo 7435  df-om 7887  df-1st 8012  df-2nd 8013  df-frecs 8304  df-wrecs 8335  df-recs 8409  df-rdg 8448  df-1o 8504  df-2o 8505  df-oadd 8508  df-er 8743  df-map 8866  df-pm 8867  df-en 8984  df-dom 8985  df-sdom 8986  df-fin 8987  df-dju 9938  df-card 9976  df-pnf 11294  df-mnf 11295  df-xr 11296  df-ltxr 11297  df-le 11298  df-sub 11491  df-neg 11492  df-nn 12264  df-2 12326  df-n0 12524  df-xnn0 12597  df-z 12611  df-uz 12876  df-fz 13544  df-fzo 13691  df-hash 14366  df-word 14549  df-edg 29079  df-uhgr 29089  df-upgr 29113  df-wlks 29631  df-wwlks 29859
This theorem is referenced by:  wlklnwwlkln1  29897  wlkiswwlks  29905  wlkiswwlkupgr  29907  elwspths2spth  29996
  Copyright terms: Public domain W3C validator