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

Theorem fin23lem28 10252
Description: Lemma for fin23 10301. 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 4521 . . 3 (𝑍 = if(𝑃 ∈ Fin, (𝑡𝑅), ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)) ↔ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))))
31, 2mpbi 230 . 2 ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))
4 difss 4088 . . . . . . . . 9 (ω ∖ 𝑃) ⊆ ω
5 ominf 9166 . . . . . . . . . 10 ¬ ω ∈ Fin
6 fin23lem.b . . . . . . . . . . . . . 14 𝑃 = {𝑣 ∈ ω ∣ ran 𝑈 ⊆ (𝑡𝑣)}
76ssrab3 4034 . . . . . . . . . . . . 13 𝑃 ⊆ ω
8 undif 4434 . . . . . . . . . . . . 13 (𝑃 ⊆ ω ↔ (𝑃 ∪ (ω ∖ 𝑃)) = ω)
97, 8mpbi 230 . . . . . . . . . . . 12 (𝑃 ∪ (ω ∖ 𝑃)) = ω
10 unfi 9097 . . . . . . . . . . . 12 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → (𝑃 ∪ (ω ∖ 𝑃)) ∈ Fin)
119, 10eqeltrrid 2841 . . . . . . . . . . 11 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → ω ∈ Fin)
1211ex 412 . . . . . . . . . 10 (𝑃 ∈ Fin → ((ω ∖ 𝑃) ∈ Fin → ω ∈ Fin))
135, 12mtoi 199 . . . . . . . . 9 (𝑃 ∈ Fin → ¬ (ω ∖ 𝑃) ∈ Fin)
14 fin23lem.d . . . . . . . . . 10 𝑅 = (𝑤 ∈ ω ↦ (𝑥 ∈ (ω ∖ 𝑃)(𝑥 ∩ (ω ∖ 𝑃)) ≈ 𝑤))
1514fin23lem22 10239 . . . . . . . . 9 (((ω ∖ 𝑃) ⊆ ω ∧ ¬ (ω ∖ 𝑃) ∈ Fin) → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
164, 13, 15sylancr 587 . . . . . . . 8 (𝑃 ∈ Fin → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
1716adantl 481 . . . . . . 7 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
18 f1of1 6773 . . . . . . 7 (𝑅:ω–1-1-onto→(ω ∖ 𝑃) → 𝑅:ω–1-1→(ω ∖ 𝑃))
19 f1ss 6735 . . . . . . . 8 ((𝑅:ω–1-1→(ω ∖ 𝑃) ∧ (ω ∖ 𝑃) ⊆ ω) → 𝑅:ω–1-1→ω)
204, 19mpan2 691 . . . . . . 7 (𝑅:ω–1-1→(ω ∖ 𝑃) → 𝑅:ω–1-1→ω)
2117, 18, 203syl 18 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → 𝑅:ω–1-1→ω)
22 f1co 6741 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑅:ω–1-1→ω) → (𝑡𝑅):ω–1-1→V)
2321, 22syldan 591 . . . . 5 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → (𝑡𝑅):ω–1-1→V)
24 f1eq1 6725 . . . . 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 6847 . . . . . . . . . . 11 (𝑡𝑧) ∈ V
2827difexi 5275 . . . . . . . . . 10 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
2928rgenw 3055 . . . . . . . . 9 𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
30 eqid 2736 . . . . . . . . . 10 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) = (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))
3130fmpt 7055 . . . . . . . . 9 (∀𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V ↔ (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
3229, 31mpbi 230 . . . . . . . 8 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V
3332a1i 11 . . . . . . 7 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
34 fveq2 6834 . . . . . . . . . . . . 13 (𝑧 = 𝑎 → (𝑡𝑧) = (𝑡𝑎))
3534difeq1d 4077 . . . . . . . . . . . 12 (𝑧 = 𝑎 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑎) ∖ ran 𝑈))
36 fvex 6847 . . . . . . . . . . . . 13 (𝑡𝑎) ∈ V
3736difexi 5275 . . . . . . . . . . . 12 ((𝑡𝑎) ∖ ran 𝑈) ∈ V
3835, 30, 37fvmpt 6941 . . . . . . . . . . 11 (𝑎𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
3938ad2antrl 728 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
40 fveq2 6834 . . . . . . . . . . . . 13 (𝑧 = 𝑏 → (𝑡𝑧) = (𝑡𝑏))
4140difeq1d 4077 . . . . . . . . . . . 12 (𝑧 = 𝑏 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈))
42 fvex 6847 . . . . . . . . . . . . 13 (𝑡𝑏) ∈ V
4342difexi 5275 . . . . . . . . . . . 12 ((𝑡𝑏) ∖ ran 𝑈) ∈ V
4441, 30, 43fvmpt 6941 . . . . . . . . . . 11 (𝑏𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4544ad2antll 729 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4639, 45eqeq12d 2752 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) ↔ ((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈)))
47 uneq2 4114 . . . . . . . . . . 11 (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)))
48 fveq2 6834 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑎 → (𝑡𝑣) = (𝑡𝑎))
4948sseq2d 3966 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑎 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑎)))
5049, 6elrab2 3649 . . . . . . . . . . . . . . 15 (𝑎𝑃 ↔ (𝑎 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑎)))
5150simprbi 496 . . . . . . . . . . . . . 14 (𝑎𝑃 ran 𝑈 ⊆ (𝑡𝑎))
5251ad2antrl 728 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑎))
53 undif 4434 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑎) ↔ ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
5452, 53sylib 218 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
55 fveq2 6834 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑏 → (𝑡𝑣) = (𝑡𝑏))
5655sseq2d 3966 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑏 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑏)))
5756, 6elrab2 3649 . . . . . . . . . . . . . . 15 (𝑏𝑃 ↔ (𝑏 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑏)))
5857simprbi 496 . . . . . . . . . . . . . 14 (𝑏𝑃 ran 𝑈 ⊆ (𝑡𝑏))
5958ad2antll 729 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑏))
60 undif 4434 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑏) ↔ ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6159, 60sylib 218 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6254, 61eqeq12d 2752 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) ↔ (𝑡𝑎) = (𝑡𝑏)))
6347, 62imbitrid 244 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → (𝑡𝑎) = (𝑡𝑏)))
647sseli 3929 . . . . . . . . . . . 12 (𝑎𝑃𝑎 ∈ ω)
657sseli 3929 . . . . . . . . . . . 12 (𝑏𝑃𝑏 ∈ ω)
6664, 65anim12i 613 . . . . . . . . . . 11 ((𝑎𝑃𝑏𝑃) → (𝑎 ∈ ω ∧ 𝑏 ∈ ω))
67 f1fveq 7208 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎 ∈ ω ∧ 𝑏 ∈ ω)) → ((𝑡𝑎) = (𝑡𝑏) ↔ 𝑎 = 𝑏))
6866, 67sylan2 593 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑡𝑎) = (𝑡𝑏) ↔ 𝑎 = 𝑏))
6963, 68sylibd 239 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → 𝑎 = 𝑏))
7046, 69sylbid 240 . . . . . . . 8 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
7170ralrimivva 3179 . . . . . . 7 (𝑡:ω–1-1→V → ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
72 dff13 7200 . . . . . . 7 ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V ↔ ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V ∧ ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏)))
7333, 71, 72sylanbrc 583 . . . . . 6 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V)
74 fin23lem.c . . . . . . . . 9 𝑄 = (𝑤 ∈ ω ↦ (𝑥𝑃 (𝑥𝑃) ≈ 𝑤))
7574fin23lem22 10239 . . . . . . . 8 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1-onto𝑃)
76 f1of1 6773 . . . . . . . 8 (𝑄:ω–1-1-onto𝑃𝑄:ω–1-1𝑃)
7775, 76syl 17 . . . . . . 7 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1𝑃)
787, 77mpan 690 . . . . . 6 𝑃 ∈ Fin → 𝑄:ω–1-1𝑃)
79 f1co 6741 . . . . . 6 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V ∧ 𝑄:ω–1-1𝑃) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V)
8073, 78, 79syl2an 596 . . . . 5 ((𝑡:ω–1-1→V ∧ ¬ 𝑃 ∈ Fin) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V)
81 f1eq1 6725 . . . . 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 959 . 2 ((𝑡:ω–1-1→V ∧ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))) → 𝑍:ω–1-1→V)
853, 84mpan2 691 1 (𝑡:ω–1-1→V → 𝑍:ω–1-1→V)
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 206  wa 395  wo 847   = wceq 1541  wcel 2113  {cab 2714  wral 3051  {crab 3399  Vcvv 3440  cdif 3898  cun 3899  cin 3900  wss 3901  c0 4285  ifcif 4479  𝒫 cpw 4554   cuni 4863   cint 4902   class class class wbr 5098  cmpt 5179  ran crn 5625  ccom 5628  suc csuc 6319  wf 6488  1-1wf1 6489  1-1-ontowf1o 6491  cfv 6492  crio 7314  (class class class)co 7358  cmpo 7360  ωcom 7808  seqωcseqom 8378  m cmap 8765  cen 8882  Fincfn 8885
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1796  ax-4 1810  ax-5 1911  ax-6 1968  ax-7 2009  ax-8 2115  ax-9 2123  ax-10 2146  ax-11 2162  ax-12 2184  ax-ext 2708  ax-rep 5224  ax-sep 5241  ax-nul 5251  ax-pow 5310  ax-pr 5377  ax-un 7680
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1544  df-fal 1554  df-ex 1781  df-nf 1785  df-sb 2068  df-mo 2539  df-eu 2569  df-clab 2715  df-cleq 2728  df-clel 2811  df-nfc 2885  df-ne 2933  df-ral 3052  df-rex 3061  df-rmo 3350  df-reu 3351  df-rab 3400  df-v 3442  df-sbc 3741  df-csb 3850  df-dif 3904  df-un 3906  df-in 3908  df-ss 3918  df-pss 3921  df-nul 4286  df-if 4480  df-pw 4556  df-sn 4581  df-pr 4583  df-op 4587  df-uni 4864  df-int 4903  df-iun 4948  df-br 5099  df-opab 5161  df-mpt 5180  df-tr 5206  df-id 5519  df-eprel 5524  df-po 5532  df-so 5533  df-fr 5577  df-se 5578  df-we 5579  df-xp 5630  df-rel 5631  df-cnv 5632  df-co 5633  df-dm 5634  df-rn 5635  df-res 5636  df-ima 5637  df-pred 6259  df-ord 6320  df-on 6321  df-lim 6322  df-suc 6323  df-iota 6448  df-fun 6494  df-fn 6495  df-f 6496  df-f1 6497  df-fo 6498  df-f1o 6499  df-fv 6500  df-isom 6501  df-riota 7315  df-ov 7361  df-om 7809  df-2nd 7934  df-frecs 8223  df-wrecs 8254  df-recs 8303  df-1o 8397  df-er 8635  df-en 8886  df-dom 8887  df-sdom 8888  df-fin 8889  df-card 9853
This theorem is referenced by:  fin23lem32  10256
  Copyright terms: Public domain W3C validator