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

Theorem fin23lem28 10377
Description: Lemma for fin23 10426. 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 4571 . . 3 (𝑍 = if(𝑃 ∈ Fin, (𝑡𝑅), ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)) ↔ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))))
31, 2mpbi 230 . 2 ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))
4 difss 4145 . . . . . . . . 9 (ω ∖ 𝑃) ⊆ ω
5 ominf 9291 . . . . . . . . . 10 ¬ ω ∈ Fin
6 fin23lem.b . . . . . . . . . . . . . 14 𝑃 = {𝑣 ∈ ω ∣ ran 𝑈 ⊆ (𝑡𝑣)}
76ssrab3 4091 . . . . . . . . . . . . 13 𝑃 ⊆ ω
8 undif 4487 . . . . . . . . . . . . 13 (𝑃 ⊆ ω ↔ (𝑃 ∪ (ω ∖ 𝑃)) = ω)
97, 8mpbi 230 . . . . . . . . . . . 12 (𝑃 ∪ (ω ∖ 𝑃)) = ω
10 unfi 9209 . . . . . . . . . . . 12 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → (𝑃 ∪ (ω ∖ 𝑃)) ∈ Fin)
119, 10eqeltrrid 2843 . . . . . . . . . . 11 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → ω ∈ Fin)
1211ex 412 . . . . . . . . . 10 (𝑃 ∈ Fin → ((ω ∖ 𝑃) ∈ Fin → ω ∈ Fin))
135, 12mtoi 199 . . . . . . . . 9 (𝑃 ∈ Fin → ¬ (ω ∖ 𝑃) ∈ Fin)
14 fin23lem.d . . . . . . . . . 10 𝑅 = (𝑤 ∈ ω ↦ (𝑥 ∈ (ω ∖ 𝑃)(𝑥 ∩ (ω ∖ 𝑃)) ≈ 𝑤))
1514fin23lem22 10364 . . . . . . . . 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 6847 . . . . . . 7 (𝑅:ω–1-1-onto→(ω ∖ 𝑃) → 𝑅:ω–1-1→(ω ∖ 𝑃))
19 f1ss 6809 . . . . . . . 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 6815 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑅:ω–1-1→ω) → (𝑡𝑅):ω–1-1→V)
2321, 22syldan 591 . . . . 5 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → (𝑡𝑅):ω–1-1→V)
24 f1eq1 6799 . . . . 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 6919 . . . . . . . . . . 11 (𝑡𝑧) ∈ V
2827difexi 5335 . . . . . . . . . 10 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
2928rgenw 3062 . . . . . . . . 9 𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
30 eqid 2734 . . . . . . . . . 10 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) = (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))
3130fmpt 7129 . . . . . . . . 9 (∀𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V ↔ (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
3229, 31mpbi 230 . . . . . . . 8 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V
3332a1i 11 . . . . . . 7 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
34 fveq2 6906 . . . . . . . . . . . . 13 (𝑧 = 𝑎 → (𝑡𝑧) = (𝑡𝑎))
3534difeq1d 4134 . . . . . . . . . . . 12 (𝑧 = 𝑎 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑎) ∖ ran 𝑈))
36 fvex 6919 . . . . . . . . . . . . 13 (𝑡𝑎) ∈ V
3736difexi 5335 . . . . . . . . . . . 12 ((𝑡𝑎) ∖ ran 𝑈) ∈ V
3835, 30, 37fvmpt 7015 . . . . . . . . . . 11 (𝑎𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
3938ad2antrl 728 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
40 fveq2 6906 . . . . . . . . . . . . 13 (𝑧 = 𝑏 → (𝑡𝑧) = (𝑡𝑏))
4140difeq1d 4134 . . . . . . . . . . . 12 (𝑧 = 𝑏 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈))
42 fvex 6919 . . . . . . . . . . . . 13 (𝑡𝑏) ∈ V
4342difexi 5335 . . . . . . . . . . . 12 ((𝑡𝑏) ∖ ran 𝑈) ∈ V
4441, 30, 43fvmpt 7015 . . . . . . . . . . 11 (𝑏𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4544ad2antll 729 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4639, 45eqeq12d 2750 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) ↔ ((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈)))
47 uneq2 4171 . . . . . . . . . . 11 (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)))
48 fveq2 6906 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑎 → (𝑡𝑣) = (𝑡𝑎))
4948sseq2d 4027 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑎 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑎)))
5049, 6elrab2 3697 . . . . . . . . . . . . . . 15 (𝑎𝑃 ↔ (𝑎 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑎)))
5150simprbi 496 . . . . . . . . . . . . . 14 (𝑎𝑃 ran 𝑈 ⊆ (𝑡𝑎))
5251ad2antrl 728 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑎))
53 undif 4487 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑎) ↔ ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
5452, 53sylib 218 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
55 fveq2 6906 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑏 → (𝑡𝑣) = (𝑡𝑏))
5655sseq2d 4027 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑏 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑏)))
5756, 6elrab2 3697 . . . . . . . . . . . . . . 15 (𝑏𝑃 ↔ (𝑏 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑏)))
5857simprbi 496 . . . . . . . . . . . . . 14 (𝑏𝑃 ran 𝑈 ⊆ (𝑡𝑏))
5958ad2antll 729 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑏))
60 undif 4487 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑏) ↔ ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6159, 60sylib 218 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6254, 61eqeq12d 2750 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) ↔ (𝑡𝑎) = (𝑡𝑏)))
6347, 62imbitrid 244 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → (𝑡𝑎) = (𝑡𝑏)))
647sseli 3990 . . . . . . . . . . . 12 (𝑎𝑃𝑎 ∈ ω)
657sseli 3990 . . . . . . . . . . . 12 (𝑏𝑃𝑏 ∈ ω)
6664, 65anim12i 613 . . . . . . . . . . 11 ((𝑎𝑃𝑏𝑃) → (𝑎 ∈ ω ∧ 𝑏 ∈ ω))
67 f1fveq 7281 . . . . . . . . . . 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 3199 . . . . . . 7 (𝑡:ω–1-1→V → ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
72 dff13 7274 . . . . . . 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 10364 . . . . . . . 8 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1-onto𝑃)
76 f1of1 6847 . . . . . . . 8 (𝑄:ω–1-1-onto𝑃𝑄:ω–1-1𝑃)
7775, 76syl 17 . . . . . . 7 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1𝑃)
787, 77mpan 690 . . . . . 6 𝑃 ∈ Fin → 𝑄:ω–1-1𝑃)
79 f1co 6815 . . . . . 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 6799 . . . . 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 1536  wcel 2105  {cab 2711  wral 3058  {crab 3432  Vcvv 3477  cdif 3959  cun 3960  cin 3961  wss 3962  c0 4338  ifcif 4530  𝒫 cpw 4604   cuni 4911   cint 4950   class class class wbr 5147  cmpt 5230  ran crn 5689  ccom 5692  suc csuc 6387  wf 6558  1-1wf1 6559  1-1-ontowf1o 6561  cfv 6562  crio 7386  (class class class)co 7430  cmpo 7432  ωcom 7886  seqωcseqom 8485  m cmap 8864  cen 8980  Fincfn 8983
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1791  ax-4 1805  ax-5 1907  ax-6 1964  ax-7 2004  ax-8 2107  ax-9 2115  ax-10 2138  ax-11 2154  ax-12 2174  ax-ext 2705  ax-rep 5284  ax-sep 5301  ax-nul 5311  ax-pow 5370  ax-pr 5437  ax-un 7753
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1539  df-fal 1549  df-ex 1776  df-nf 1780  df-sb 2062  df-mo 2537  df-eu 2566  df-clab 2712  df-cleq 2726  df-clel 2813  df-nfc 2889  df-ne 2938  df-ral 3059  df-rex 3068  df-rmo 3377  df-reu 3378  df-rab 3433  df-v 3479  df-sbc 3791  df-csb 3908  df-dif 3965  df-un 3967  df-in 3969  df-ss 3979  df-pss 3982  df-nul 4339  df-if 4531  df-pw 4606  df-sn 4631  df-pr 4633  df-op 4637  df-uni 4912  df-int 4951  df-iun 4997  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5582  df-eprel 5588  df-po 5596  df-so 5597  df-fr 5640  df-se 5641  df-we 5642  df-xp 5694  df-rel 5695  df-cnv 5696  df-co 5697  df-dm 5698  df-rn 5699  df-res 5700  df-ima 5701  df-pred 6322  df-ord 6388  df-on 6389  df-lim 6390  df-suc 6391  df-iota 6515  df-fun 6564  df-fn 6565  df-f 6566  df-f1 6567  df-fo 6568  df-f1o 6569  df-fv 6570  df-isom 6571  df-riota 7387  df-ov 7433  df-om 7887  df-2nd 8013  df-frecs 8304  df-wrecs 8335  df-recs 8409  df-1o 8504  df-er 8743  df-en 8984  df-dom 8985  df-sdom 8986  df-fin 8987  df-card 9976
This theorem is referenced by:  fin23lem32  10381
  Copyright terms: Public domain W3C validator