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

Theorem fin23lem28 10262
Description: Lemma for fin23 10311. The residual is also one-to-one. This preserves the induction invariant. (Contributed by Stefan O'Rear, 2-Nov-2014.)
Hypotheses
Ref Expression
fin23lem.a 𝑈 = seqω((𝑖 ∈ ω, 𝑢 ∈ V ↦ if(((𝑡𝑖) ∩ 𝑢) = ∅, 𝑢, ((𝑡𝑖) ∩ 𝑢))), ran 𝑡)
fin23lem17.f 𝐹 = {𝑔 ∣ ∀𝑎 ∈ (𝒫 𝑔m ω)(∀𝑥 ∈ ω (𝑎‘suc 𝑥) ⊆ (𝑎𝑥) → ran 𝑎 ∈ ran 𝑎)}
fin23lem.b 𝑃 = {𝑣 ∈ ω ∣ ran 𝑈 ⊆ (𝑡𝑣)}
fin23lem.c 𝑄 = (𝑤 ∈ ω ↦ (𝑥𝑃 (𝑥𝑃) ≈ 𝑤))
fin23lem.d 𝑅 = (𝑤 ∈ ω ↦ (𝑥 ∈ (ω ∖ 𝑃)(𝑥 ∩ (ω ∖ 𝑃)) ≈ 𝑤))
fin23lem.e 𝑍 = if(𝑃 ∈ Fin, (𝑡𝑅), ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))
Assertion
Ref Expression
fin23lem28 (𝑡:ω–1-1→V → 𝑍:ω–1-1→V)
Distinct variable groups:   𝑔,𝑖,𝑡,𝑢,𝑣,𝑥,𝑧,𝑎   𝐹,𝑎,𝑡   𝑤,𝑎,𝑥,𝑧,𝑃   𝑣,𝑎,𝑅,𝑖,𝑢   𝑈,𝑎,𝑖,𝑢,𝑣,𝑧   𝑍,𝑎   𝑔,𝑎
Allowed substitution hints:   𝑃(𝑣,𝑢,𝑡,𝑔,𝑖)   𝑄(𝑥,𝑧,𝑤,𝑣,𝑢,𝑡,𝑔,𝑖,𝑎)   𝑅(𝑥,𝑧,𝑤,𝑡,𝑔)   𝑈(𝑥,𝑤,𝑡,𝑔)   𝐹(𝑥,𝑧,𝑤,𝑣,𝑢,𝑔,𝑖)   𝑍(𝑥,𝑧,𝑤,𝑣,𝑢,𝑡,𝑔,𝑖)

Proof of Theorem fin23lem28
Dummy variable 𝑏 is distinct from all other variables.
StepHypRef Expression
1 fin23lem.e . . 3 𝑍 = if(𝑃 ∈ Fin, (𝑡𝑅), ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))
2 eqif 4523 . . 3 (𝑍 = if(𝑃 ∈ Fin, (𝑡𝑅), ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)) ↔ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))))
31, 2mpbi 230 . 2 ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))
4 difss 4090 . . . . . . . . 9 (ω ∖ 𝑃) ⊆ ω
5 ominf 9176 . . . . . . . . . 10 ¬ ω ∈ Fin
6 fin23lem.b . . . . . . . . . . . . . 14 𝑃 = {𝑣 ∈ ω ∣ ran 𝑈 ⊆ (𝑡𝑣)}
76ssrab3 4036 . . . . . . . . . . . . 13 𝑃 ⊆ ω
8 undif 4436 . . . . . . . . . . . . 13 (𝑃 ⊆ ω ↔ (𝑃 ∪ (ω ∖ 𝑃)) = ω)
97, 8mpbi 230 . . . . . . . . . . . 12 (𝑃 ∪ (ω ∖ 𝑃)) = ω
10 unfi 9107 . . . . . . . . . . . 12 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → (𝑃 ∪ (ω ∖ 𝑃)) ∈ Fin)
119, 10eqeltrrid 2842 . . . . . . . . . . 11 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → ω ∈ Fin)
1211ex 412 . . . . . . . . . 10 (𝑃 ∈ Fin → ((ω ∖ 𝑃) ∈ Fin → ω ∈ Fin))
135, 12mtoi 199 . . . . . . . . 9 (𝑃 ∈ Fin → ¬ (ω ∖ 𝑃) ∈ Fin)
14 fin23lem.d . . . . . . . . . 10 𝑅 = (𝑤 ∈ ω ↦ (𝑥 ∈ (ω ∖ 𝑃)(𝑥 ∩ (ω ∖ 𝑃)) ≈ 𝑤))
1514fin23lem22 10249 . . . . . . . . 9 (((ω ∖ 𝑃) ⊆ ω ∧ ¬ (ω ∖ 𝑃) ∈ Fin) → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
164, 13, 15sylancr 588 . . . . . . . 8 (𝑃 ∈ Fin → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
1716adantl 481 . . . . . . 7 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
18 f1of1 6781 . . . . . . 7 (𝑅:ω–1-1-onto→(ω ∖ 𝑃) → 𝑅:ω–1-1→(ω ∖ 𝑃))
19 f1ss 6743 . . . . . . . 8 ((𝑅:ω–1-1→(ω ∖ 𝑃) ∧ (ω ∖ 𝑃) ⊆ ω) → 𝑅:ω–1-1→ω)
204, 19mpan2 692 . . . . . . 7 (𝑅:ω–1-1→(ω ∖ 𝑃) → 𝑅:ω–1-1→ω)
2117, 18, 203syl 18 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → 𝑅:ω–1-1→ω)
22 f1co 6749 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑅:ω–1-1→ω) → (𝑡𝑅):ω–1-1→V)
2321, 22syldan 592 . . . . 5 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → (𝑡𝑅):ω–1-1→V)
24 f1eq1 6733 . . . . 5 (𝑍 = (𝑡𝑅) → (𝑍:ω–1-1→V ↔ (𝑡𝑅):ω–1-1→V))
2523, 24syl5ibrcom 247 . . . 4 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → (𝑍 = (𝑡𝑅) → 𝑍:ω–1-1→V))
2625impr 454 . . 3 ((𝑡:ω–1-1→V ∧ (𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅))) → 𝑍:ω–1-1→V)
27 fvex 6855 . . . . . . . . . . 11 (𝑡𝑧) ∈ V
2827difexi 5277 . . . . . . . . . 10 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
2928rgenw 3056 . . . . . . . . 9 𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
30 eqid 2737 . . . . . . . . . 10 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) = (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))
3130fmpt 7064 . . . . . . . . 9 (∀𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V ↔ (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
3229, 31mpbi 230 . . . . . . . 8 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V
3332a1i 11 . . . . . . 7 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
34 fveq2 6842 . . . . . . . . . . . . 13 (𝑧 = 𝑎 → (𝑡𝑧) = (𝑡𝑎))
3534difeq1d 4079 . . . . . . . . . . . 12 (𝑧 = 𝑎 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑎) ∖ ran 𝑈))
36 fvex 6855 . . . . . . . . . . . . 13 (𝑡𝑎) ∈ V
3736difexi 5277 . . . . . . . . . . . 12 ((𝑡𝑎) ∖ ran 𝑈) ∈ V
3835, 30, 37fvmpt 6949 . . . . . . . . . . 11 (𝑎𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
3938ad2antrl 729 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
40 fveq2 6842 . . . . . . . . . . . . 13 (𝑧 = 𝑏 → (𝑡𝑧) = (𝑡𝑏))
4140difeq1d 4079 . . . . . . . . . . . 12 (𝑧 = 𝑏 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈))
42 fvex 6855 . . . . . . . . . . . . 13 (𝑡𝑏) ∈ V
4342difexi 5277 . . . . . . . . . . . 12 ((𝑡𝑏) ∖ ran 𝑈) ∈ V
4441, 30, 43fvmpt 6949 . . . . . . . . . . 11 (𝑏𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4544ad2antll 730 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4639, 45eqeq12d 2753 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) ↔ ((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈)))
47 uneq2 4116 . . . . . . . . . . 11 (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)))
48 fveq2 6842 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑎 → (𝑡𝑣) = (𝑡𝑎))
4948sseq2d 3968 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑎 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑎)))
5049, 6elrab2 3651 . . . . . . . . . . . . . . 15 (𝑎𝑃 ↔ (𝑎 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑎)))
5150simprbi 497 . . . . . . . . . . . . . 14 (𝑎𝑃 ran 𝑈 ⊆ (𝑡𝑎))
5251ad2antrl 729 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑎))
53 undif 4436 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑎) ↔ ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
5452, 53sylib 218 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
55 fveq2 6842 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑏 → (𝑡𝑣) = (𝑡𝑏))
5655sseq2d 3968 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑏 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑏)))
5756, 6elrab2 3651 . . . . . . . . . . . . . . 15 (𝑏𝑃 ↔ (𝑏 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑏)))
5857simprbi 497 . . . . . . . . . . . . . 14 (𝑏𝑃 ran 𝑈 ⊆ (𝑡𝑏))
5958ad2antll 730 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑏))
60 undif 4436 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑏) ↔ ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6159, 60sylib 218 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6254, 61eqeq12d 2753 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) ↔ (𝑡𝑎) = (𝑡𝑏)))
6347, 62imbitrid 244 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → (𝑡𝑎) = (𝑡𝑏)))
647sseli 3931 . . . . . . . . . . . 12 (𝑎𝑃𝑎 ∈ ω)
657sseli 3931 . . . . . . . . . . . 12 (𝑏𝑃𝑏 ∈ ω)
6664, 65anim12i 614 . . . . . . . . . . 11 ((𝑎𝑃𝑏𝑃) → (𝑎 ∈ ω ∧ 𝑏 ∈ ω))
67 f1fveq 7218 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎 ∈ ω ∧ 𝑏 ∈ ω)) → ((𝑡𝑎) = (𝑡𝑏) ↔ 𝑎 = 𝑏))
6866, 67sylan2 594 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑡𝑎) = (𝑡𝑏) ↔ 𝑎 = 𝑏))
6963, 68sylibd 239 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → 𝑎 = 𝑏))
7046, 69sylbid 240 . . . . . . . 8 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
7170ralrimivva 3181 . . . . . . 7 (𝑡:ω–1-1→V → ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
72 dff13 7210 . . . . . . 7 ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V ↔ ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V ∧ ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏)))
7333, 71, 72sylanbrc 584 . . . . . 6 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V)
74 fin23lem.c . . . . . . . . 9 𝑄 = (𝑤 ∈ ω ↦ (𝑥𝑃 (𝑥𝑃) ≈ 𝑤))
7574fin23lem22 10249 . . . . . . . 8 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1-onto𝑃)
76 f1of1 6781 . . . . . . . 8 (𝑄:ω–1-1-onto𝑃𝑄:ω–1-1𝑃)
7775, 76syl 17 . . . . . . 7 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1𝑃)
787, 77mpan 691 . . . . . 6 𝑃 ∈ Fin → 𝑄:ω–1-1𝑃)
79 f1co 6749 . . . . . 6 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V ∧ 𝑄:ω–1-1𝑃) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V)
8073, 78, 79syl2an 597 . . . . 5 ((𝑡:ω–1-1→V ∧ ¬ 𝑃 ∈ Fin) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V)
81 f1eq1 6733 . . . . 5 (𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄) → (𝑍:ω–1-1→V ↔ ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V))
8280, 81syl5ibrcom 247 . . . 4 ((𝑡:ω–1-1→V ∧ ¬ 𝑃 ∈ Fin) → (𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄) → 𝑍:ω–1-1→V))
8382impr 454 . . 3 ((𝑡:ω–1-1→V ∧ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))) → 𝑍:ω–1-1→V)
8426, 83jaodan 960 . 2 ((𝑡:ω–1-1→V ∧ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))) → 𝑍:ω–1-1→V)
853, 84mpan2 692 1 (𝑡:ω–1-1→V → 𝑍:ω–1-1→V)
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 206  wa 395  wo 848   = wceq 1542  wcel 2114  {cab 2715  wral 3052  {crab 3401  Vcvv 3442  cdif 3900  cun 3901  cin 3902  wss 3903  c0 4287  ifcif 4481  𝒫 cpw 4556   cuni 4865   cint 4904   class class class wbr 5100  cmpt 5181  ran crn 5633  ccom 5636  suc csuc 6327  wf 6496  1-1wf1 6497  1-1-ontowf1o 6499  cfv 6500  crio 7324  (class class class)co 7368  cmpo 7370  ωcom 7818  seqωcseqom 8388  m cmap 8775  cen 8892  Fincfn 8895
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 1969  ax-7 2010  ax-8 2116  ax-9 2124  ax-10 2147  ax-11 2163  ax-12 2185  ax-ext 2709  ax-rep 5226  ax-sep 5243  ax-nul 5253  ax-pow 5312  ax-pr 5379  ax-un 7690
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 849  df-3or 1088  df-3an 1089  df-tru 1545  df-fal 1555  df-ex 1782  df-nf 1786  df-sb 2069  df-mo 2540  df-eu 2570  df-clab 2716  df-cleq 2729  df-clel 2812  df-nfc 2886  df-ne 2934  df-ral 3053  df-rex 3063  df-rmo 3352  df-reu 3353  df-rab 3402  df-v 3444  df-sbc 3743  df-csb 3852  df-dif 3906  df-un 3908  df-in 3910  df-ss 3920  df-pss 3923  df-nul 4288  df-if 4482  df-pw 4558  df-sn 4583  df-pr 4585  df-op 4589  df-uni 4866  df-int 4905  df-iun 4950  df-br 5101  df-opab 5163  df-mpt 5182  df-tr 5208  df-id 5527  df-eprel 5532  df-po 5540  df-so 5541  df-fr 5585  df-se 5586  df-we 5587  df-xp 5638  df-rel 5639  df-cnv 5640  df-co 5641  df-dm 5642  df-rn 5643  df-res 5644  df-ima 5645  df-pred 6267  df-ord 6328  df-on 6329  df-lim 6330  df-suc 6331  df-iota 6456  df-fun 6502  df-fn 6503  df-f 6504  df-f1 6505  df-fo 6506  df-f1o 6507  df-fv 6508  df-isom 6509  df-riota 7325  df-ov 7371  df-om 7819  df-2nd 7944  df-frecs 8233  df-wrecs 8264  df-recs 8313  df-1o 8407  df-er 8645  df-en 8896  df-dom 8897  df-sdom 8898  df-fin 8899  df-card 9863
This theorem is referenced by:  fin23lem32  10266
  Copyright terms: Public domain W3C validator