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

Theorem leordtval2 21310
Description: The topology of the extended reals. (Contributed by Mario Carneiro, 3-Sep-2015.)
Hypotheses
Ref Expression
leordtval.1 𝐴 = ran (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞))
leordtval.2 𝐵 = ran (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥))
Assertion
Ref Expression
leordtval2 (ordTop‘ ≤ ) = (topGen‘(fi‘(𝐴𝐵)))

Proof of Theorem leordtval2
Dummy variables 𝑤 𝑦 𝑧 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 letsr 17507 . . 3 ≤ ∈ TosetRel
2 ledm 17504 . . . 4 * = dom ≤
3 leordtval.1 . . . . 5 𝐴 = ran (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞))
43leordtvallem1 21308 . . . 4 𝐴 = ran (𝑥 ∈ ℝ* ↦ {𝑦 ∈ ℝ* ∣ ¬ 𝑦𝑥})
5 leordtval.2 . . . . 5 𝐵 = ran (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥))
63, 5leordtvallem2 21309 . . . 4 𝐵 = ran (𝑥 ∈ ℝ* ↦ {𝑦 ∈ ℝ* ∣ ¬ 𝑥𝑦})
72, 4, 6ordtval 21287 . . 3 ( ≤ ∈ TosetRel → (ordTop‘ ≤ ) = (topGen‘(fi‘({ℝ*} ∪ (𝐴𝐵)))))
81, 7ax-mp 5 . 2 (ordTop‘ ≤ ) = (topGen‘(fi‘({ℝ*} ∪ (𝐴𝐵))))
9 snex 5066 . . . . 5 {ℝ*} ∈ V
10 xrex 12030 . . . . . . 7 * ∈ V
1110pwex 5018 . . . . . 6 𝒫 ℝ* ∈ V
12 eqid 2765 . . . . . . . . . 10 (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞)) = (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞))
13 iocssxr 12464 . . . . . . . . . . . 12 (𝑥(,]+∞) ⊆ ℝ*
1410elpw2 4988 . . . . . . . . . . . 12 ((𝑥(,]+∞) ∈ 𝒫 ℝ* ↔ (𝑥(,]+∞) ⊆ ℝ*)
1513, 14mpbir 222 . . . . . . . . . . 11 (𝑥(,]+∞) ∈ 𝒫 ℝ*
1615a1i 11 . . . . . . . . . 10 (𝑥 ∈ ℝ* → (𝑥(,]+∞) ∈ 𝒫 ℝ*)
1712, 16fmpti 6576 . . . . . . . . 9 (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞)):ℝ*⟶𝒫 ℝ*
18 frn 6231 . . . . . . . . 9 ((𝑥 ∈ ℝ* ↦ (𝑥(,]+∞)):ℝ*⟶𝒫 ℝ* → ran (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞)) ⊆ 𝒫 ℝ*)
1917, 18ax-mp 5 . . . . . . . 8 ran (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞)) ⊆ 𝒫 ℝ*
203, 19eqsstri 3797 . . . . . . 7 𝐴 ⊆ 𝒫 ℝ*
21 eqid 2765 . . . . . . . . . 10 (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥)) = (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥))
22 icossxr 12465 . . . . . . . . . . . 12 (-∞[,)𝑥) ⊆ ℝ*
2310elpw2 4988 . . . . . . . . . . . 12 ((-∞[,)𝑥) ∈ 𝒫 ℝ* ↔ (-∞[,)𝑥) ⊆ ℝ*)
2422, 23mpbir 222 . . . . . . . . . . 11 (-∞[,)𝑥) ∈ 𝒫 ℝ*
2524a1i 11 . . . . . . . . . 10 (𝑥 ∈ ℝ* → (-∞[,)𝑥) ∈ 𝒫 ℝ*)
2621, 25fmpti 6576 . . . . . . . . 9 (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥)):ℝ*⟶𝒫 ℝ*
27 frn 6231 . . . . . . . . 9 ((𝑥 ∈ ℝ* ↦ (-∞[,)𝑥)):ℝ*⟶𝒫 ℝ* → ran (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥)) ⊆ 𝒫 ℝ*)
2826, 27ax-mp 5 . . . . . . . 8 ran (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥)) ⊆ 𝒫 ℝ*
295, 28eqsstri 3797 . . . . . . 7 𝐵 ⊆ 𝒫 ℝ*
3020, 29unssi 3952 . . . . . 6 (𝐴𝐵) ⊆ 𝒫 ℝ*
3111, 30ssexi 4966 . . . . 5 (𝐴𝐵) ∈ V
329, 31unex 7158 . . . 4 ({ℝ*} ∪ (𝐴𝐵)) ∈ V
33 ssun2 3941 . . . 4 (𝐴𝐵) ⊆ ({ℝ*} ∪ (𝐴𝐵))
34 fiss 8541 . . . 4 ((({ℝ*} ∪ (𝐴𝐵)) ∈ V ∧ (𝐴𝐵) ⊆ ({ℝ*} ∪ (𝐴𝐵))) → (fi‘(𝐴𝐵)) ⊆ (fi‘({ℝ*} ∪ (𝐴𝐵))))
3532, 33, 34mp2an 683 . . 3 (fi‘(𝐴𝐵)) ⊆ (fi‘({ℝ*} ∪ (𝐴𝐵)))
36 fvex 6392 . . . . 5 (topGen‘(fi‘(𝐴𝐵))) ∈ V
37 ovex 6878 . . . . . . . . . 10 (0(,]+∞) ∈ V
38 ovex 6878 . . . . . . . . . 10 (-∞[,)1) ∈ V
3937, 38unipr 4609 . . . . . . . . 9 {(0(,]+∞), (-∞[,)1)} = ((0(,]+∞) ∪ (-∞[,)1))
40 iocssxr 12464 . . . . . . . . . . 11 (0(,]+∞) ⊆ ℝ*
41 icossxr 12465 . . . . . . . . . . 11 (-∞[,)1) ⊆ ℝ*
4240, 41unssi 3952 . . . . . . . . . 10 ((0(,]+∞) ∪ (-∞[,)1)) ⊆ ℝ*
43 mnfxr 10354 . . . . . . . . . . . . 13 -∞ ∈ ℝ*
44 0xr 10344 . . . . . . . . . . . . 13 0 ∈ ℝ*
45 pnfxr 10350 . . . . . . . . . . . . 13 +∞ ∈ ℝ*
46 mnflt0 12164 . . . . . . . . . . . . . 14 -∞ < 0
47 0lepnf 12171 . . . . . . . . . . . . . 14 0 ≤ +∞
48 df-icc 12389 . . . . . . . . . . . . . . 15 [,] = (𝑥 ∈ ℝ*, 𝑦 ∈ ℝ* ↦ {𝑧 ∈ ℝ* ∣ (𝑥𝑧𝑧𝑦)})
49 df-ioc 12387 . . . . . . . . . . . . . . 15 (,] = (𝑥 ∈ ℝ*, 𝑦 ∈ ℝ* ↦ {𝑧 ∈ ℝ* ∣ (𝑥 < 𝑧𝑧𝑦)})
50 xrltnle 10363 . . . . . . . . . . . . . . 15 ((0 ∈ ℝ*𝑤 ∈ ℝ*) → (0 < 𝑤 ↔ ¬ 𝑤 ≤ 0))
51 xrletr 12196 . . . . . . . . . . . . . . 15 ((𝑤 ∈ ℝ* ∧ 0 ∈ ℝ* ∧ +∞ ∈ ℝ*) → ((𝑤 ≤ 0 ∧ 0 ≤ +∞) → 𝑤 ≤ +∞))
52 xrlttr 12178 . . . . . . . . . . . . . . . 16 ((-∞ ∈ ℝ* ∧ 0 ∈ ℝ*𝑤 ∈ ℝ*) → ((-∞ < 0 ∧ 0 < 𝑤) → -∞ < 𝑤))
53 xrltle 12187 . . . . . . . . . . . . . . . . 17 ((-∞ ∈ ℝ*𝑤 ∈ ℝ*) → (-∞ < 𝑤 → -∞ ≤ 𝑤))
54533adant2 1161 . . . . . . . . . . . . . . . 16 ((-∞ ∈ ℝ* ∧ 0 ∈ ℝ*𝑤 ∈ ℝ*) → (-∞ < 𝑤 → -∞ ≤ 𝑤))
5552, 54syld 47 . . . . . . . . . . . . . . 15 ((-∞ ∈ ℝ* ∧ 0 ∈ ℝ*𝑤 ∈ ℝ*) → ((-∞ < 0 ∧ 0 < 𝑤) → -∞ ≤ 𝑤))
5648, 49, 50, 48, 51, 55ixxun 12398 . . . . . . . . . . . . . 14 (((-∞ ∈ ℝ* ∧ 0 ∈ ℝ* ∧ +∞ ∈ ℝ*) ∧ (-∞ < 0 ∧ 0 ≤ +∞)) → ((-∞[,]0) ∪ (0(,]+∞)) = (-∞[,]+∞))
5746, 47, 56mpanr12 696 . . . . . . . . . . . . 13 ((-∞ ∈ ℝ* ∧ 0 ∈ ℝ* ∧ +∞ ∈ ℝ*) → ((-∞[,]0) ∪ (0(,]+∞)) = (-∞[,]+∞))
5843, 44, 45, 57mp3an 1585 . . . . . . . . . . . 12 ((-∞[,]0) ∪ (0(,]+∞)) = (-∞[,]+∞)
59 1re 10297 . . . . . . . . . . . . . . 15 1 ∈ ℝ
6059rexri 10355 . . . . . . . . . . . . . 14 1 ∈ ℝ*
61 0lt1 10808 . . . . . . . . . . . . . 14 0 < 1
62 df-ico 12388 . . . . . . . . . . . . . . 15 [,) = (𝑥 ∈ ℝ*, 𝑦 ∈ ℝ* ↦ {𝑧 ∈ ℝ* ∣ (𝑥𝑧𝑧 < 𝑦)})
63 xrlelttr 12194 . . . . . . . . . . . . . . 15 ((𝑤 ∈ ℝ* ∧ 0 ∈ ℝ* ∧ 1 ∈ ℝ*) → ((𝑤 ≤ 0 ∧ 0 < 1) → 𝑤 < 1))
6462, 48, 63ixxss2 12401 . . . . . . . . . . . . . 14 ((1 ∈ ℝ* ∧ 0 < 1) → (-∞[,]0) ⊆ (-∞[,)1))
6560, 61, 64mp2an 683 . . . . . . . . . . . . 13 (-∞[,]0) ⊆ (-∞[,)1)
66 unss1 3946 . . . . . . . . . . . . 13 ((-∞[,]0) ⊆ (-∞[,)1) → ((-∞[,]0) ∪ (0(,]+∞)) ⊆ ((-∞[,)1) ∪ (0(,]+∞)))
6765, 66ax-mp 5 . . . . . . . . . . . 12 ((-∞[,]0) ∪ (0(,]+∞)) ⊆ ((-∞[,)1) ∪ (0(,]+∞))
6858, 67eqsstr3i 3798 . . . . . . . . . . 11 (-∞[,]+∞) ⊆ ((-∞[,)1) ∪ (0(,]+∞))
69 iccmax 12456 . . . . . . . . . . 11 (-∞[,]+∞) = ℝ*
70 uncom 3921 . . . . . . . . . . 11 ((-∞[,)1) ∪ (0(,]+∞)) = ((0(,]+∞) ∪ (-∞[,)1))
7168, 69, 703sstr3i 3805 . . . . . . . . . 10 * ⊆ ((0(,]+∞) ∪ (-∞[,)1))
7242, 71eqssi 3779 . . . . . . . . 9 ((0(,]+∞) ∪ (-∞[,)1)) = ℝ*
7339, 72eqtri 2787 . . . . . . . 8 {(0(,]+∞), (-∞[,)1)} = ℝ*
74 fvex 6392 . . . . . . . . 9 (fi‘(𝐴𝐵)) ∈ V
75 ssun1 3940 . . . . . . . . . . . 12 𝐴 ⊆ (𝐴𝐵)
76 eqid 2765 . . . . . . . . . . . . . . 15 (0(,]+∞) = (0(,]+∞)
77 oveq1 6853 . . . . . . . . . . . . . . . 16 (𝑥 = 0 → (𝑥(,]+∞) = (0(,]+∞))
7877rspceeqv 3480 . . . . . . . . . . . . . . 15 ((0 ∈ ℝ* ∧ (0(,]+∞) = (0(,]+∞)) → ∃𝑥 ∈ ℝ* (0(,]+∞) = (𝑥(,]+∞))
7944, 76, 78mp2an 683 . . . . . . . . . . . . . 14 𝑥 ∈ ℝ* (0(,]+∞) = (𝑥(,]+∞)
80 ovex 6878 . . . . . . . . . . . . . . 15 (𝑥(,]+∞) ∈ V
8112, 80elrnmpti 5547 . . . . . . . . . . . . . 14 ((0(,]+∞) ∈ ran (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞)) ↔ ∃𝑥 ∈ ℝ* (0(,]+∞) = (𝑥(,]+∞))
8279, 81mpbir 222 . . . . . . . . . . . . 13 (0(,]+∞) ∈ ran (𝑥 ∈ ℝ* ↦ (𝑥(,]+∞))
8382, 3eleqtrri 2843 . . . . . . . . . . . 12 (0(,]+∞) ∈ 𝐴
8475, 83sselii 3760 . . . . . . . . . . 11 (0(,]+∞) ∈ (𝐴𝐵)
85 ssun2 3941 . . . . . . . . . . . 12 𝐵 ⊆ (𝐴𝐵)
86 eqid 2765 . . . . . . . . . . . . . . 15 (-∞[,)1) = (-∞[,)1)
87 oveq2 6854 . . . . . . . . . . . . . . . 16 (𝑥 = 1 → (-∞[,)𝑥) = (-∞[,)1))
8887rspceeqv 3480 . . . . . . . . . . . . . . 15 ((1 ∈ ℝ* ∧ (-∞[,)1) = (-∞[,)1)) → ∃𝑥 ∈ ℝ* (-∞[,)1) = (-∞[,)𝑥))
8960, 86, 88mp2an 683 . . . . . . . . . . . . . 14 𝑥 ∈ ℝ* (-∞[,)1) = (-∞[,)𝑥)
90 ovex 6878 . . . . . . . . . . . . . . 15 (-∞[,)𝑥) ∈ V
9121, 90elrnmpti 5547 . . . . . . . . . . . . . 14 ((-∞[,)1) ∈ ran (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥)) ↔ ∃𝑥 ∈ ℝ* (-∞[,)1) = (-∞[,)𝑥))
9289, 91mpbir 222 . . . . . . . . . . . . 13 (-∞[,)1) ∈ ran (𝑥 ∈ ℝ* ↦ (-∞[,)𝑥))
9392, 5eleqtrri 2843 . . . . . . . . . . . 12 (-∞[,)1) ∈ 𝐵
9485, 93sselii 3760 . . . . . . . . . . 11 (-∞[,)1) ∈ (𝐴𝐵)
95 prssi 4508 . . . . . . . . . . 11 (((0(,]+∞) ∈ (𝐴𝐵) ∧ (-∞[,)1) ∈ (𝐴𝐵)) → {(0(,]+∞), (-∞[,)1)} ⊆ (𝐴𝐵))
9684, 94, 95mp2an 683 . . . . . . . . . 10 {(0(,]+∞), (-∞[,)1)} ⊆ (𝐴𝐵)
97 ssfii 8536 . . . . . . . . . . 11 ((𝐴𝐵) ∈ V → (𝐴𝐵) ⊆ (fi‘(𝐴𝐵)))
9831, 97ax-mp 5 . . . . . . . . . 10 (𝐴𝐵) ⊆ (fi‘(𝐴𝐵))
9996, 98sstri 3772 . . . . . . . . 9 {(0(,]+∞), (-∞[,)1)} ⊆ (fi‘(𝐴𝐵))
100 eltg3i 21059 . . . . . . . . 9 (((fi‘(𝐴𝐵)) ∈ V ∧ {(0(,]+∞), (-∞[,)1)} ⊆ (fi‘(𝐴𝐵))) → {(0(,]+∞), (-∞[,)1)} ∈ (topGen‘(fi‘(𝐴𝐵))))
10174, 99, 100mp2an 683 . . . . . . . 8 {(0(,]+∞), (-∞[,)1)} ∈ (topGen‘(fi‘(𝐴𝐵)))
10273, 101eqeltrri 2841 . . . . . . 7 * ∈ (topGen‘(fi‘(𝐴𝐵)))
103 snssi 4495 . . . . . . 7 (ℝ* ∈ (topGen‘(fi‘(𝐴𝐵))) → {ℝ*} ⊆ (topGen‘(fi‘(𝐴𝐵))))
104102, 103ax-mp 5 . . . . . 6 {ℝ*} ⊆ (topGen‘(fi‘(𝐴𝐵)))
105 bastg 21064 . . . . . . . 8 ((fi‘(𝐴𝐵)) ∈ V → (fi‘(𝐴𝐵)) ⊆ (topGen‘(fi‘(𝐴𝐵))))
10674, 105ax-mp 5 . . . . . . 7 (fi‘(𝐴𝐵)) ⊆ (topGen‘(fi‘(𝐴𝐵)))
10798, 106sstri 3772 . . . . . 6 (𝐴𝐵) ⊆ (topGen‘(fi‘(𝐴𝐵)))
108104, 107unssi 3952 . . . . 5 ({ℝ*} ∪ (𝐴𝐵)) ⊆ (topGen‘(fi‘(𝐴𝐵)))
109 fiss 8541 . . . . 5 (((topGen‘(fi‘(𝐴𝐵))) ∈ V ∧ ({ℝ*} ∪ (𝐴𝐵)) ⊆ (topGen‘(fi‘(𝐴𝐵)))) → (fi‘({ℝ*} ∪ (𝐴𝐵))) ⊆ (fi‘(topGen‘(fi‘(𝐴𝐵)))))
11036, 108, 109mp2an 683 . . . 4 (fi‘({ℝ*} ∪ (𝐴𝐵))) ⊆ (fi‘(topGen‘(fi‘(𝐴𝐵))))
111 fibas 21075 . . . . 5 (fi‘(𝐴𝐵)) ∈ TopBases
112 tgcl 21067 . . . . 5 ((fi‘(𝐴𝐵)) ∈ TopBases → (topGen‘(fi‘(𝐴𝐵))) ∈ Top)
113 fitop 20998 . . . . 5 ((topGen‘(fi‘(𝐴𝐵))) ∈ Top → (fi‘(topGen‘(fi‘(𝐴𝐵)))) = (topGen‘(fi‘(𝐴𝐵))))
114111, 112, 113mp2b 10 . . . 4 (fi‘(topGen‘(fi‘(𝐴𝐵)))) = (topGen‘(fi‘(𝐴𝐵)))
115110, 114sseqtri 3799 . . 3 (fi‘({ℝ*} ∪ (𝐴𝐵))) ⊆ (topGen‘(fi‘(𝐴𝐵)))
116 2basgen 21088 . . 3 (((fi‘(𝐴𝐵)) ⊆ (fi‘({ℝ*} ∪ (𝐴𝐵))) ∧ (fi‘({ℝ*} ∪ (𝐴𝐵))) ⊆ (topGen‘(fi‘(𝐴𝐵)))) → (topGen‘(fi‘(𝐴𝐵))) = (topGen‘(fi‘({ℝ*} ∪ (𝐴𝐵)))))
11735, 115, 116mp2an 683 . 2 (topGen‘(fi‘(𝐴𝐵))) = (topGen‘(fi‘({ℝ*} ∪ (𝐴𝐵))))
1188, 117eqtr4i 2790 1 (ordTop‘ ≤ ) = (topGen‘(fi‘(𝐴𝐵)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 384  w3a 1107   = wceq 1652  wcel 2155  wrex 3056  Vcvv 3350  cun 3732  wss 3734  𝒫 cpw 4317  {csn 4336  {cpr 4338   cuni 4596   class class class wbr 4811  cmpt 4890  ran crn 5280  wf 6066  cfv 6070  (class class class)co 6846  ficfi 8527  0cc0 10193  1c1 10194  +∞cpnf 10329  -∞cmnf 10330  *cxr 10331   < clt 10332  cle 10333  (,]cioc 12383  [,)cico 12384  [,]cicc 12385  topGenctg 16378  ordTopcordt 16439   TosetRel ctsr 17479  Topctop 20991  TopBasesctb 21043
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-sep 4943  ax-nul 4951  ax-pow 5003  ax-pr 5064  ax-un 7151  ax-cnex 10249  ax-resscn 10250  ax-1cn 10251  ax-icn 10252  ax-addcl 10253  ax-addrcl 10254  ax-mulcl 10255  ax-mulrcl 10256  ax-mulcom 10257  ax-addass 10258  ax-mulass 10259  ax-distr 10260  ax-i2m1 10261  ax-1ne0 10262  ax-1rid 10263  ax-rnegex 10264  ax-rrecex 10265  ax-cnre 10266  ax-pre-lttri 10267  ax-pre-lttrn 10268  ax-pre-ltadd 10269  ax-pre-mulgt0 10270
This theorem depends on definitions:  df-bi 198  df-an 385  df-or 874  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-rab 3064  df-v 3352  df-sbc 3599  df-csb 3694  df-dif 3737  df-un 3739  df-in 3741  df-ss 3748  df-pss 3750  df-nul 4082  df-if 4246  df-pw 4319  df-sn 4337  df-pr 4339  df-tp 4341  df-op 4343  df-uni 4597  df-int 4636  df-iun 4680  df-br 4812  df-opab 4874  df-mpt 4891  df-tr 4914  df-id 5187  df-eprel 5192  df-po 5200  df-so 5201  df-fr 5238  df-we 5240  df-xp 5285  df-rel 5286  df-cnv 5287  df-co 5288  df-dm 5289  df-rn 5290  df-res 5291  df-ima 5292  df-pred 5867  df-ord 5913  df-on 5914  df-lim 5915  df-suc 5916  df-iota 6033  df-fun 6072  df-fn 6073  df-f 6074  df-f1 6075  df-fo 6076  df-f1o 6077  df-fv 6078  df-riota 6807  df-ov 6849  df-oprab 6850  df-mpt2 6851  df-om 7268  df-1st 7370  df-2nd 7371  df-wrecs 7614  df-recs 7676  df-rdg 7714  df-1o 7768  df-oadd 7772  df-er 7951  df-en 8165  df-dom 8166  df-sdom 8167  df-fin 8168  df-fi 8528  df-pnf 10334  df-mnf 10335  df-xr 10336  df-ltxr 10337  df-le 10338  df-sub 10526  df-neg 10527  df-ioc 12387  df-ico 12388  df-icc 12389  df-topgen 16384  df-ordt 16441  df-ps 17480  df-tsr 17481  df-top 20992  df-bases 21044
This theorem is referenced by:  leordtval  21311  lecldbas  21317
  Copyright terms: Public domain W3C validator