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

Theorem wlkiswwlks1 30283
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 30028 . 2 (𝐹(Walks‘𝐺)𝑃𝑃 ≠ ∅)
2 eqid 2765 . . . 4 (Vtx‘𝐺) = (Vtx‘𝐺)
3 eqid 2765 . . . 4 (iEdg‘𝐺) = (iEdg‘𝐺)
42, 3upgriswlk 30048 . . 3 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 ↔ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})))
5 simpr 490 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ≠ ∅)
6 ffz0iswrd 14596 . . . . . . . 8 (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → 𝑃 ∈ Word (Vtx‘𝐺))
763ad2ant2 1152 . . . . . . 7 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → 𝑃 ∈ Word (Vtx‘𝐺))
87ad2antlr 740 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ Word (Vtx‘𝐺))
9 upgruhgr 29507 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UPGraph → 𝐺 ∈ UHGraph)
103uhgrfun 29471 . . . . . . . . . . . . . . . . . 18 (𝐺 ∈ UHGraph → Fun (iEdg‘𝐺))
11 funfn 6570 . . . . . . . . . . . . . . . . . . 19 (Fun (iEdg‘𝐺) ↔ (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1211biimpi 219 . . . . . . . . . . . . . . . . . 18 (Fun (iEdg‘𝐺) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
139, 10, 123syl 19 . . . . . . . . . . . . . . . . 17 (𝐺 ∈ UPGraph → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
1413ad2antlr 740 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (iEdg‘𝐺) Fn dom (iEdg‘𝐺))
15 wrdsymbcl 14582 . . . . . . . . . . . . . . . . 17 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
1615ad4ant14 765 . . . . . . . . . . . . . . . 16 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (𝐹𝑖) ∈ dom (iEdg‘𝐺))
17 fnfvelrn 7079 . . . . . . . . . . . . . . . 16 (((iEdg‘𝐺) Fn dom (iEdg‘𝐺) ∧ (𝐹𝑖) ∈ dom (iEdg‘𝐺)) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
1814, 16, 17syl2anc 596 . . . . . . . . . . . . . . 15 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ ran (iEdg‘𝐺))
19 edgval 29454 . . . . . . . . . . . . . . 15 (Edg‘𝐺) = ran (iEdg‘𝐺)
2018, 19eleqtrrdi 2876 . . . . . . . . . . . . . 14 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺))
21 eleq1 2853 . . . . . . . . . . . . . . 15 ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} = ((iEdg‘𝐺)‘(𝐹𝑖)) → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2221eqcoms 2773 . . . . . . . . . . . . . 14 (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ({(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ((iEdg‘𝐺)‘(𝐹𝑖)) ∈ (Edg‘𝐺)))
2320, 22syl5ibrcom 250 . . . . . . . . . . . . 13 ((((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) ∧ 𝑖 ∈ (0..^(♯‘𝐹))) → (((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → {(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2423ralimdva 3179 . . . . . . . . . . . 12 (((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) ∧ 𝐺 ∈ UPGraph) → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2524ex 418 . . . . . . . . . . 11 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (𝐺 ∈ UPGraph → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))))
2625com23 87 . . . . . . . . . 10 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))} → (𝐺 ∈ UPGraph → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))))
27263impia 1135 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝐺 ∈ UPGraph → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
2827impcom 413 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
29 lencl 14588 . . . . . . . . . . . . . 14 (𝐹 ∈ Word dom (iEdg‘𝐺) → (♯‘𝐹) ∈ ℕ0)
30 ffz0hash 14502 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (♯‘𝑃) = ((♯‘𝐹) + 1))
3130ex 418 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → (♯‘𝑃) = ((♯‘𝐹) + 1)))
32 oveq1 7426 . . . . . . . . . . . . . . . . 17 ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (((♯‘𝐹) + 1) − 1))
33 nn0cn 12529 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℕ0 → (♯‘𝐹) ∈ ℂ)
34 pncan1 11653 . . . . . . . . . . . . . . . . . 18 ((♯‘𝐹) ∈ ℂ → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3533, 34syl 18 . . . . . . . . . . . . . . . . 17 ((♯‘𝐹) ∈ ℕ0 → (((♯‘𝐹) + 1) − 1) = (♯‘𝐹))
3632, 35sylan9eqr 2822 . . . . . . . . . . . . . . . 16 (((♯‘𝐹) ∈ ℕ0 ∧ (♯‘𝑃) = ((♯‘𝐹) + 1)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
3736ex 418 . . . . . . . . . . . . . . 15 ((♯‘𝐹) ∈ ℕ0 → ((♯‘𝑃) = ((♯‘𝐹) + 1) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3831, 37syld 48 . . . . . . . . . . . . . 14 ((♯‘𝐹) ∈ ℕ0 → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
3929, 38syl 18 . . . . . . . . . . . . 13 (𝐹 ∈ Word dom (iEdg‘𝐺) → (𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) → ((♯‘𝑃) − 1) = (♯‘𝐹)))
4039imp 412 . . . . . . . . . . . 12 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → ((♯‘𝑃) − 1) = (♯‘𝐹))
4140oveq2d 7435 . . . . . . . . . . 11 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (0..^((♯‘𝑃) − 1)) = (0..^(♯‘𝐹)))
4241raleqdv 3325 . . . . . . . . . 10 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺)) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
43423adant3 1150 . . . . . . . . 9 ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
4443adantl 487 . . . . . . . 8 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺) ↔ ∀𝑖 ∈ (0..^(♯‘𝐹)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
4528, 44mpbird 260 . . . . . . 7 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
4645adantr 486 . . . . . 6 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺))
47 eqid 2765 . . . . . . 7 (Edg‘𝐺) = (Edg‘𝐺)
482, 47iswwlks 30252 . . . . . 6 (𝑃 ∈ (WWalks‘𝐺) ↔ (𝑃 ≠ ∅ ∧ 𝑃 ∈ Word (Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^((♯‘𝑃) − 1)){(𝑃𝑖), (𝑃‘(𝑖 + 1))} ∈ (Edg‘𝐺)))
495, 8, 46, 48syl3anbrc 1362 . . . . 5 (((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) ∧ 𝑃 ≠ ∅) → 𝑃 ∈ (WWalks‘𝐺))
5049ex 418 . . . 4 ((𝐺 ∈ UPGraph ∧ (𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))})) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺)))
5150ex 418 . . 3 (𝐺 ∈ UPGraph → ((𝐹 ∈ Word dom (iEdg‘𝐺) ∧ 𝑃:(0...(♯‘𝐹))⟶(Vtx‘𝐺) ∧ ∀𝑖 ∈ (0..^(♯‘𝐹))((iEdg‘𝐺)‘(𝐹𝑖)) = {(𝑃𝑖), (𝑃‘(𝑖 + 1))}) → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
524, 51sylbid 243 . 2 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃 → (𝑃 ≠ ∅ → 𝑃 ∈ (WWalks‘𝐺))))
531, 52mpdi 46 1 (𝐺 ∈ UPGraph → (𝐹(Walks‘𝐺)𝑃𝑃 ∈ (WWalks‘𝐺)))
Colors of variables:    wff setvar class
This proof depends on syntax axioms:  wi 4  wb 209  wa 401  w3a 1103   = wceq 1570  wcel 2146  wne 2960  wral 3081  c0 4286  {cpr 4593   class class class wbr 5111  dom cdm 5663  ran crn 5664  Fun wfun 6534   Fn wfn 6535  wf 6536  cfv 6540  (class class class)co 7419  cc 11113  0cc0 11115  1c1 11116   + caddc 11118  cmin 11456  0cn0 12519  ...cfz 13551  ..^cfzo 13699  chash 14384  Word cword 14568  Vtxcvtx 29401  iEdgciedg 29402  Edgcedg 29452  UHGraphcuhgr 29461  UPGraphcupgr 29485  Walkscwlks 30004  WWalkscwwlks 30241
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1828  ax-4 1842  ax-5 1943  ax-6 2000  ax-7 2041  ax-8 2148  ax-9 2156  ax-10 2179  ax-11 2195  ax-12 2216  ax-ext 2737  ax-rep 5240  ax-sep 5259  ax-nul 5271  ax-pow 5338  ax-pr 5406  ax-un 7742  ax-cnex 11171  ax-resscn 11172  ax-1cn 11173  ax-icn 11174  ax-addcl 11175  ax-addrcl 11176  ax-mulcl 11177  ax-mulrcl 11178  ax-mulcom 11179  ax-addass 11180  ax-mulass 11181  ax-distr 11182  ax-i2m1 11183  ax-1ne0 11184  ax-1rid 11185  ax-rnegex 11186  ax-rrecex 11187  ax-cnre 11188  ax-pre-lttri 11189  ax-pre-lttrn 11190  ax-pre-ltadd 11191  ax-pre-mulgt0 11192
This proof depends on definitions:  df-bi 210  df-an 402  df-or 862  df-ifp 1079  df-3or 1104  df-3an 1105  df-tru 1573  df-fal 1583  df-ex 1813  df-nf 1817  df-sb 2100  df-mo 2569  df-eu 2599  df-clab 2744  df-cleq 2757  df-clel 2840  df-nfc 2914  df-ne 2961  df-nel 3067  df-ral 3082  df-rex 3092  df-reu 3372  df-rab 3419  df-v 3459  df-sbc 3747  df-csb 3855  df-dif 3909  df-un 3911  df-in 3913  df-ss 3923  df-pss 3926  df-nul 4287  df-if 4490  df-pw 4566  df-sn 4592  df-pr 4594  df-op 4598  df-uni 4875  df-int 4915  df-iun 4960  df-br 5112  df-opab 5176  df-mpt 5195  df-tr 5221  df-id 5558  df-eprel 5563  df-po 5571  df-so 5572  df-fr 5616  df-we 5618  df-xp 5669  df-rel 5670  df-cnv 5671  df-co 5672  df-dm 5673  df-rn 5674  df-res 5675  df-ima 5676  df-pred 6306  df-ord 6367  df-on 6368  df-lim 6369  df-suc 6370  df-iota 6496  df-fun 6542  df-fn 6543  df-f 6544  df-f1 6545  df-fo 6546  df-f1o 6547  df-fv 6548  df-riota 7376  df-ov 7422  df-oprab 7423  df-mpo 7424  df-om 7869  df-1st 7992  df-2nd 7993  df-frecs 8284  df-wrecs 8315  df-recs 8364  df-rdg 8403  df-1o 8459  df-2o 8460  df-oadd 8463  df-er 8700  df-map 8832  df-pm 8833  df-en 8950  df-dom 8951  df-sdom 8952  df-fin 8953  df-dju 9903  df-card 9941  df-pnf 11260  df-mnf 11261  df-xr 11262  df-ltxr 11263  df-le 11264  df-sub 11458  df-neg 11459  df-nn 12249  df-2 12318  df-n0 12520  df-xnn0 12593  df-z 12607  df-uz 12879  df-fz 13552  df-fzo 13700  df-hash 14385  df-word 14569  df-edg 29453  df-uhgr 29463  df-upgr 29487  df-wlks 30007  df-wwlks 30246
This theorem is used by:  wlklnwwlkln1  30284  wlkiswwlks  30292  wlkiswwlkupgr  30294  elwspths2spth  30386
  Copyright terms: Public domain W3C validator