Mathbox for Alan Sare < Previous   Next > Nearby theorems Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  csbrngVD Structured version   Visualization version   GIF version

Theorem csbrngVD 41550
Description: Virtual deduction proof of csbrn 6049. The following User's Proof is a Virtual Deduction proof completed automatically by the tools program completeusersproof.cmd, which invokes Mel L. O'Cat's mmj2 and Norm Megill's Metamath Proof Assistant. csbrn 6049 is csbrngVD 41550 without virtual deductions and was automatically derived from csbrngVD 41550.
 1:: ⊢ (   𝐴 ∈ 𝑉   ▶   𝐴 ∈ 𝑉   ) 2:1: ⊢ (   𝐴 ∈ 𝑉   ▶   ([𝐴 / 𝑥]⟨𝑤   ,   𝑦⟩ ∈ 𝐵 ↔ ⦋𝐴 / 𝑥⦌⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 3:1: ⊢ (   𝐴 ∈ 𝑉   ▶   ⦋𝐴 / 𝑥⦌⟨𝑤   ,   𝑦⟩ = ⟨𝑤, 𝑦⟩   ) 4:3: ⊢ (   𝐴 ∈ 𝑉   ▶   (⦋𝐴 / 𝑥⦌⟨𝑤   ,   𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 5:2,4: ⊢ (   𝐴 ∈ 𝑉   ▶   ([𝐴 / 𝑥]⟨𝑤   ,   𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 6:5: ⊢ (   𝐴 ∈ 𝑉   ▶   ∀𝑤([𝐴 / 𝑥]⟨𝑤   ,    𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 7:6: ⊢ (   𝐴 ∈ 𝑉   ▶   (∃𝑤[𝐴 / 𝑥]⟨𝑤   ,    𝑦⟩ ∈ 𝐵 ↔ ∃𝑤⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 8:1: ⊢ (   𝐴 ∈ 𝑉   ▶   (∃𝑤[𝐴 / 𝑥]⟨𝑤   ,    𝑦⟩ ∈ 𝐵 ↔ [𝐴 / 𝑥]∃𝑤⟨𝑤, 𝑦⟩ ∈ 𝐵)   ) 9:7,8: ⊢ (   𝐴 ∈ 𝑉   ▶   ([𝐴 / 𝑥]∃𝑤⟨𝑤    ,   𝑦⟩ ∈ 𝐵 ↔ ∃𝑤⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 10:9: ⊢ (   𝐴 ∈ 𝑉   ▶   ∀𝑦([𝐴 / 𝑥]∃𝑤 ⟨𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵)   ) 11:10: ⊢ (   𝐴 ∈ 𝑉   ▶   {𝑦 ∣ [𝐴 / 𝑥]∃𝑤⟨ 𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵}   ) 12:1: ⊢ (   𝐴 ∈ 𝑉   ▶   ⦋𝐴 / 𝑥⦌{𝑦 ∣ ∃𝑤 ⟨𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ [𝐴 / 𝑥]∃𝑤⟨𝑤, 𝑦⟩ ∈ 𝐵}   ) 13:11,12: ⊢ (   𝐴 ∈ 𝑉   ▶   ⦋𝐴 / 𝑥⦌{𝑦 ∣ ∃𝑤 ⟨𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵}   ) 14:: ⊢ ran 𝐵 = {𝑦 ∣ ∃𝑤⟨𝑤   ,   𝑦⟩ ∈ 𝐵} 15:14: ⊢ ∀𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤⟨𝑤   ,   𝑦⟩ ∈ 𝐵} 16:1,15: ⊢ (   𝐴 ∈ 𝑉   ▶   ⦋𝐴 / 𝑥⦌ran 𝐵 = ⦋𝐴 / 𝑥⦌{𝑦 ∣ ∃𝑤⟨𝑤, 𝑦⟩ ∈ 𝐵}   ) 17:13,16: ⊢ (   𝐴 ∈ 𝑉   ▶   ⦋𝐴 / 𝑥⦌ran 𝐵 = {𝑦 ∣ ∃𝑤⟨𝑤, 𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵}   ) 18:: ⊢ ran ⦋𝐴 / 𝑥⦌𝐵 = {𝑦 ∣ ∃𝑤⟨𝑤    ,   𝑦⟩ ∈ ⦋𝐴 / 𝑥⦌𝐵} 19:17,18: ⊢ (   𝐴 ∈ 𝑉   ▶   ⦋𝐴 / 𝑥⦌ran 𝐵 = ran ⦋ 𝐴 / 𝑥⦌𝐵   ) qed:19: ⊢ (𝐴 ∈ 𝑉 → ⦋𝐴 / 𝑥⦌ran 𝐵 = ran ⦋𝐴 / 𝑥⦌𝐵)
(Contributed by Alan Sare, 10-Nov-2012.) (Proof modification is discouraged.) (New usage is discouraged.)
Assertion
Ref Expression
csbrngVD (𝐴𝑉𝐴 / 𝑥ran 𝐵 = ran 𝐴 / 𝑥𝐵)

Proof of Theorem csbrngVD
Dummy variables 𝑤 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 idn1 41228 . . . . . . . . . . . 12 (   𝐴𝑉   ▶   𝐴𝑉   )
2 sbcel12 4343 . . . . . . . . . . . . 13 ([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)
32a1i 11 . . . . . . . . . . . 12 (𝐴𝑉 → ([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵))
41, 3e1a 41281 . . . . . . . . . . 11 (   𝐴𝑉   ▶   ([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
5 csbconstg 3885 . . . . . . . . . . . . 13 (𝐴𝑉𝐴 / 𝑥𝑤, 𝑦⟩ = ⟨𝑤, 𝑦⟩)
61, 5e1a 41281 . . . . . . . . . . . 12 (   𝐴𝑉   ▶   𝐴 / 𝑥𝑤, 𝑦⟩ = ⟨𝑤, 𝑦   )
7 eleq1 2903 . . . . . . . . . . . 12 (𝐴 / 𝑥𝑤, 𝑦⟩ = ⟨𝑤, 𝑦⟩ → (𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵))
86, 7e1a 41281 . . . . . . . . . . 11 (   𝐴𝑉   ▶   (𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
9 bibi1 355 . . . . . . . . . . . 12 (([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → (([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) ↔ (𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)))
109biimprd 251 . . . . . . . . . . 11 (([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → ((𝐴 / 𝑥𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → ([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)))
114, 8, 10e11 41342 . . . . . . . . . 10 (   𝐴𝑉   ▶   ([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
1211gen11 41270 . . . . . . . . 9 (   𝐴𝑉   ▶   𝑤([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
13 exbi 1848 . . . . . . . . 9 (∀𝑤([𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ⟨𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → (∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵))
1412, 13e1a 41281 . . . . . . . 8 (   𝐴𝑉   ▶   (∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
15 sbcex2 3819 . . . . . . . . . . 11 ([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵)
1615a1i 11 . . . . . . . . . 10 (𝐴𝑉 → ([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵))
1716bicomd 226 . . . . . . . . 9 (𝐴𝑉 → (∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵))
181, 17e1a 41281 . . . . . . . 8 (   𝐴𝑉   ▶   (∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵)   )
19 bitr3 356 . . . . . . . . 9 ((∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵) → ((∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → ([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)))
2019com12 32 . . . . . . . 8 ((∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → ((∃𝑤[𝐴 / 𝑥]𝑤, 𝑦⟩ ∈ 𝐵[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵) → ([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)))
2114, 18, 20e11 41342 . . . . . . 7 (   𝐴𝑉   ▶   ([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
2221gen11 41270 . . . . . 6 (   𝐴𝑉   ▶   𝑦([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵)   )
23 abbi 2891 . . . . . . 7 (∀𝑦([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) ↔ {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵})
2423biimpi 219 . . . . . 6 (∀𝑦([𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵 ↔ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵) → {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵})
2522, 24e1a 41281 . . . . 5 (   𝐴𝑉   ▶   {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}   )
26 csbab 4372 . . . . . . 7 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵}
2726a1i 11 . . . . . 6 (𝐴𝑉𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵})
281, 27e1a 41281 . . . . 5 (   𝐴𝑉   ▶   𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵}   )
29 eqeq2 2836 . . . . . 6 ({𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → (𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} ↔ 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}))
3029biimpd 232 . . . . 5 ({𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → (𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦[𝐴 / 𝑥]𝑤𝑤, 𝑦⟩ ∈ 𝐵} → 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}))
3125, 28, 30e11 41342 . . . 4 (   𝐴𝑉   ▶   𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}   )
32 dfrn3 5748 . . . . . 6 ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵}
3332ax-gen 1797 . . . . 5 𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵}
34 csbeq2 3871 . . . . . 6 (∀𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} → 𝐴 / 𝑥ran 𝐵 = 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵})
3534a1i 11 . . . . 5 (𝐴𝑉 → (∀𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} → 𝐴 / 𝑥ran 𝐵 = 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵}))
361, 33, 35e10 41348 . . . 4 (   𝐴𝑉   ▶   𝐴 / 𝑥ran 𝐵 = 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵}   )
37 eqeq2 2836 . . . . 5 (𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → (𝐴 / 𝑥ran 𝐵 = 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} ↔ 𝐴 / 𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}))
3837biimpd 232 . . . 4 (𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → (𝐴 / 𝑥ran 𝐵 = 𝐴 / 𝑥{𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐵} → 𝐴 / 𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}))
3931, 36, 38e11 41342 . . 3 (   𝐴𝑉   ▶   𝐴 / 𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}   )
40 dfrn3 5748 . . 3 ran 𝐴 / 𝑥𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}
41 eqeq2 2836 . . . 4 (ran 𝐴 / 𝑥𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → (𝐴 / 𝑥ran 𝐵 = ran 𝐴 / 𝑥𝐵𝐴 / 𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵}))
4241biimprcd 253 . . 3 (𝐴 / 𝑥ran 𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → (ran 𝐴 / 𝑥𝐵 = {𝑦 ∣ ∃𝑤𝑤, 𝑦⟩ ∈ 𝐴 / 𝑥𝐵} → 𝐴 / 𝑥ran 𝐵 = ran 𝐴 / 𝑥𝐵))
4339, 40, 42e10 41348 . 2 (   𝐴𝑉   ▶   𝐴 / 𝑥ran 𝐵 = ran 𝐴 / 𝑥𝐵   )
4443in1 41225 1 (𝐴𝑉𝐴 / 𝑥ran 𝐵 = ran 𝐴 / 𝑥𝐵)
 Colors of variables: wff setvar class Syntax hints:   → wi 4   ↔ wb 209  ∀wal 1536   = wceq 1538  ∃wex 1781   ∈ wcel 2115  {cab 2802  [wsbc 3758  ⦋csb 3866  ⟨cop 4556  ran crn 5544 This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1912  ax-6 1971  ax-7 2016  ax-8 2117  ax-9 2125  ax-10 2146  ax-11 2162  ax-12 2179  ax-ext 2796  ax-sep 5190  ax-nul 5197  ax-pr 5318 This theorem depends on definitions:  df-bi 210  df-an 400  df-or 845  df-3an 1086  df-tru 1541  df-fal 1551  df-ex 1782  df-nf 1786  df-sb 2071  df-mo 2624  df-eu 2655  df-clab 2803  df-cleq 2817  df-clel 2896  df-nfc 2964  df-v 3482  df-sbc 3759  df-csb 3867  df-dif 3922  df-un 3924  df-in 3926  df-ss 3936  df-nul 4277  df-if 4451  df-sn 4551  df-pr 4553  df-op 4557  df-br 5054  df-opab 5116  df-cnv 5551  df-dm 5553  df-rn 5554  df-vd1 41224 This theorem is referenced by: (None)
 Copyright terms: Public domain W3C validator