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

Theorem fin23lem28 10027
Description: Lemma for fin23 10076. 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 4497 . . 3 (𝑍 = if(𝑃 ∈ Fin, (𝑡𝑅), ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)) ↔ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))))
31, 2mpbi 229 . 2 ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))
4 difss 4062 . . . . . . . . 9 (ω ∖ 𝑃) ⊆ ω
5 ominf 8964 . . . . . . . . . 10 ¬ ω ∈ Fin
6 fin23lem.b . . . . . . . . . . . . . 14 𝑃 = {𝑣 ∈ ω ∣ ran 𝑈 ⊆ (𝑡𝑣)}
76ssrab3 4011 . . . . . . . . . . . . 13 𝑃 ⊆ ω
8 undif 4412 . . . . . . . . . . . . 13 (𝑃 ⊆ ω ↔ (𝑃 ∪ (ω ∖ 𝑃)) = ω)
97, 8mpbi 229 . . . . . . . . . . . 12 (𝑃 ∪ (ω ∖ 𝑃)) = ω
10 unfi 8917 . . . . . . . . . . . 12 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → (𝑃 ∪ (ω ∖ 𝑃)) ∈ Fin)
119, 10eqeltrrid 2844 . . . . . . . . . . 11 ((𝑃 ∈ Fin ∧ (ω ∖ 𝑃) ∈ Fin) → ω ∈ Fin)
1211ex 412 . . . . . . . . . 10 (𝑃 ∈ Fin → ((ω ∖ 𝑃) ∈ Fin → ω ∈ Fin))
135, 12mtoi 198 . . . . . . . . 9 (𝑃 ∈ Fin → ¬ (ω ∖ 𝑃) ∈ Fin)
14 fin23lem.d . . . . . . . . . 10 𝑅 = (𝑤 ∈ ω ↦ (𝑥 ∈ (ω ∖ 𝑃)(𝑥 ∩ (ω ∖ 𝑃)) ≈ 𝑤))
1514fin23lem22 10014 . . . . . . . . 9 (((ω ∖ 𝑃) ⊆ ω ∧ ¬ (ω ∖ 𝑃) ∈ Fin) → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
164, 13, 15sylancr 586 . . . . . . . 8 (𝑃 ∈ Fin → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
1716adantl 481 . . . . . . 7 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → 𝑅:ω–1-1-onto→(ω ∖ 𝑃))
18 f1of1 6699 . . . . . . 7 (𝑅:ω–1-1-onto→(ω ∖ 𝑃) → 𝑅:ω–1-1→(ω ∖ 𝑃))
19 f1ss 6660 . . . . . . . 8 ((𝑅:ω–1-1→(ω ∖ 𝑃) ∧ (ω ∖ 𝑃) ⊆ ω) → 𝑅:ω–1-1→ω)
204, 19mpan2 687 . . . . . . 7 (𝑅:ω–1-1→(ω ∖ 𝑃) → 𝑅:ω–1-1→ω)
2117, 18, 203syl 18 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → 𝑅:ω–1-1→ω)
22 f1co 6666 . . . . . 6 ((𝑡:ω–1-1→V ∧ 𝑅:ω–1-1→ω) → (𝑡𝑅):ω–1-1→V)
2321, 22syldan 590 . . . . 5 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → (𝑡𝑅):ω–1-1→V)
24 f1eq1 6649 . . . . 5 (𝑍 = (𝑡𝑅) → (𝑍:ω–1-1→V ↔ (𝑡𝑅):ω–1-1→V))
2523, 24syl5ibrcom 246 . . . 4 ((𝑡:ω–1-1→V ∧ 𝑃 ∈ Fin) → (𝑍 = (𝑡𝑅) → 𝑍:ω–1-1→V))
2625impr 454 . . 3 ((𝑡:ω–1-1→V ∧ (𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅))) → 𝑍:ω–1-1→V)
27 fvex 6769 . . . . . . . . . . 11 (𝑡𝑧) ∈ V
2827difexi 5247 . . . . . . . . . 10 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
2928rgenw 3075 . . . . . . . . 9 𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V
30 eqid 2738 . . . . . . . . . 10 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) = (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))
3130fmpt 6966 . . . . . . . . 9 (∀𝑧𝑃 ((𝑡𝑧) ∖ ran 𝑈) ∈ V ↔ (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
3229, 31mpbi 229 . . . . . . . 8 (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V
3332a1i 11 . . . . . . 7 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V)
34 fveq2 6756 . . . . . . . . . . . . 13 (𝑧 = 𝑎 → (𝑡𝑧) = (𝑡𝑎))
3534difeq1d 4052 . . . . . . . . . . . 12 (𝑧 = 𝑎 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑎) ∖ ran 𝑈))
36 fvex 6769 . . . . . . . . . . . . 13 (𝑡𝑎) ∈ V
3736difexi 5247 . . . . . . . . . . . 12 ((𝑡𝑎) ∖ ran 𝑈) ∈ V
3835, 30, 37fvmpt 6857 . . . . . . . . . . 11 (𝑎𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
3938ad2antrl 724 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑡𝑎) ∖ ran 𝑈))
40 fveq2 6756 . . . . . . . . . . . . 13 (𝑧 = 𝑏 → (𝑡𝑧) = (𝑡𝑏))
4140difeq1d 4052 . . . . . . . . . . . 12 (𝑧 = 𝑏 → ((𝑡𝑧) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈))
42 fvex 6769 . . . . . . . . . . . . 13 (𝑡𝑏) ∈ V
4342difexi 5247 . . . . . . . . . . . 12 ((𝑡𝑏) ∖ ran 𝑈) ∈ V
4441, 30, 43fvmpt 6857 . . . . . . . . . . 11 (𝑏𝑃 → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4544ad2antll 725 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) = ((𝑡𝑏) ∖ ran 𝑈))
4639, 45eqeq12d 2754 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) ↔ ((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈)))
47 uneq2 4087 . . . . . . . . . . 11 (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)))
48 fveq2 6756 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑎 → (𝑡𝑣) = (𝑡𝑎))
4948sseq2d 3949 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑎 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑎)))
5049, 6elrab2 3620 . . . . . . . . . . . . . . 15 (𝑎𝑃 ↔ (𝑎 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑎)))
5150simprbi 496 . . . . . . . . . . . . . 14 (𝑎𝑃 ran 𝑈 ⊆ (𝑡𝑎))
5251ad2antrl 724 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑎))
53 undif 4412 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑎) ↔ ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
5452, 53sylib 217 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = (𝑡𝑎))
55 fveq2 6756 . . . . . . . . . . . . . . . . 17 (𝑣 = 𝑏 → (𝑡𝑣) = (𝑡𝑏))
5655sseq2d 3949 . . . . . . . . . . . . . . . 16 (𝑣 = 𝑏 → ( ran 𝑈 ⊆ (𝑡𝑣) ↔ ran 𝑈 ⊆ (𝑡𝑏)))
5756, 6elrab2 3620 . . . . . . . . . . . . . . 15 (𝑏𝑃 ↔ (𝑏 ∈ ω ∧ ran 𝑈 ⊆ (𝑡𝑏)))
5857simprbi 496 . . . . . . . . . . . . . 14 (𝑏𝑃 ran 𝑈 ⊆ (𝑡𝑏))
5958ad2antll 725 . . . . . . . . . . . . 13 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ran 𝑈 ⊆ (𝑡𝑏))
60 undif 4412 . . . . . . . . . . . . 13 ( ran 𝑈 ⊆ (𝑡𝑏) ↔ ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6159, 60sylib 217 . . . . . . . . . . . 12 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) = (𝑡𝑏))
6254, 61eqeq12d 2754 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (( ran 𝑈 ∪ ((𝑡𝑎) ∖ ran 𝑈)) = ( ran 𝑈 ∪ ((𝑡𝑏) ∖ ran 𝑈)) ↔ (𝑡𝑎) = (𝑡𝑏)))
6347, 62syl5ib 243 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → (𝑡𝑎) = (𝑡𝑏)))
647sseli 3913 . . . . . . . . . . . 12 (𝑎𝑃𝑎 ∈ ω)
657sseli 3913 . . . . . . . . . . . 12 (𝑏𝑃𝑏 ∈ ω)
6664, 65anim12i 612 . . . . . . . . . . 11 ((𝑎𝑃𝑏𝑃) → (𝑎 ∈ ω ∧ 𝑏 ∈ ω))
67 f1fveq 7116 . . . . . . . . . . 11 ((𝑡:ω–1-1→V ∧ (𝑎 ∈ ω ∧ 𝑏 ∈ ω)) → ((𝑡𝑎) = (𝑡𝑏) ↔ 𝑎 = 𝑏))
6866, 67sylan2 592 . . . . . . . . . 10 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → ((𝑡𝑎) = (𝑡𝑏) ↔ 𝑎 = 𝑏))
6963, 68sylibd 238 . . . . . . . . 9 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑡𝑎) ∖ ran 𝑈) = ((𝑡𝑏) ∖ ran 𝑈) → 𝑎 = 𝑏))
7046, 69sylbid 239 . . . . . . . 8 ((𝑡:ω–1-1→V ∧ (𝑎𝑃𝑏𝑃)) → (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
7170ralrimivva 3114 . . . . . . 7 (𝑡:ω–1-1→V → ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏))
72 dff13 7109 . . . . . . 7 ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V ↔ ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃⟶V ∧ ∀𝑎𝑃𝑏𝑃 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑎) = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈))‘𝑏) → 𝑎 = 𝑏)))
7333, 71, 72sylanbrc 582 . . . . . 6 (𝑡:ω–1-1→V → (𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V)
74 fin23lem.c . . . . . . . . 9 𝑄 = (𝑤 ∈ ω ↦ (𝑥𝑃 (𝑥𝑃) ≈ 𝑤))
7574fin23lem22 10014 . . . . . . . 8 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1-onto𝑃)
76 f1of1 6699 . . . . . . . 8 (𝑄:ω–1-1-onto𝑃𝑄:ω–1-1𝑃)
7775, 76syl 17 . . . . . . 7 ((𝑃 ⊆ ω ∧ ¬ 𝑃 ∈ Fin) → 𝑄:ω–1-1𝑃)
787, 77mpan 686 . . . . . 6 𝑃 ∈ Fin → 𝑄:ω–1-1𝑃)
79 f1co 6666 . . . . . 6 (((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)):𝑃1-1→V ∧ 𝑄:ω–1-1𝑃) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V)
8073, 78, 79syl2an 595 . . . . 5 ((𝑡:ω–1-1→V ∧ ¬ 𝑃 ∈ Fin) → ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V)
81 f1eq1 6649 . . . . 5 (𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄) → (𝑍:ω–1-1→V ↔ ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄):ω–1-1→V))
8280, 81syl5ibrcom 246 . . . 4 ((𝑡:ω–1-1→V ∧ ¬ 𝑃 ∈ Fin) → (𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄) → 𝑍:ω–1-1→V))
8382impr 454 . . 3 ((𝑡:ω–1-1→V ∧ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄))) → 𝑍:ω–1-1→V)
8426, 83jaodan 954 . 2 ((𝑡:ω–1-1→V ∧ ((𝑃 ∈ Fin ∧ 𝑍 = (𝑡𝑅)) ∨ (¬ 𝑃 ∈ Fin ∧ 𝑍 = ((𝑧𝑃 ↦ ((𝑡𝑧) ∖ ran 𝑈)) ∘ 𝑄)))) → 𝑍:ω–1-1→V)
853, 84mpan2 687 1 (𝑡:ω–1-1→V → 𝑍:ω–1-1→V)
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 205  wa 395  wo 843   = wceq 1539  wcel 2108  {cab 2715  wral 3063  {crab 3067  Vcvv 3422  cdif 3880  cun 3881  cin 3882  wss 3883  c0 4253  ifcif 4456  𝒫 cpw 4530   cuni 4836   cint 4876   class class class wbr 5070  cmpt 5153  ran crn 5581  ccom 5584  suc csuc 6253  wf 6414  1-1wf1 6415  1-1-ontowf1o 6417  cfv 6418  crio 7211  (class class class)co 7255  cmpo 7257  ωcom 7687  seqωcseqom 8248  m cmap 8573  cen 8688  Fincfn 8691
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1799  ax-4 1813  ax-5 1914  ax-6 1972  ax-7 2012  ax-8 2110  ax-9 2118  ax-10 2139  ax-11 2156  ax-12 2173  ax-ext 2709  ax-rep 5205  ax-sep 5218  ax-nul 5225  ax-pow 5283  ax-pr 5347  ax-un 7566
This theorem depends on definitions:  df-bi 206  df-an 396  df-or 844  df-3or 1086  df-3an 1087  df-tru 1542  df-fal 1552  df-ex 1784  df-nf 1788  df-sb 2069  df-mo 2540  df-eu 2569  df-clab 2716  df-cleq 2730  df-clel 2817  df-nfc 2888  df-ne 2943  df-ral 3068  df-rex 3069  df-reu 3070  df-rmo 3071  df-rab 3072  df-v 3424  df-sbc 3712  df-csb 3829  df-dif 3886  df-un 3888  df-in 3890  df-ss 3900  df-pss 3902  df-nul 4254  df-if 4457  df-pw 4532  df-sn 4559  df-pr 4561  df-tp 4563  df-op 4565  df-uni 4837  df-int 4877  df-iun 4923  df-br 5071  df-opab 5133  df-mpt 5154  df-tr 5188  df-id 5480  df-eprel 5486  df-po 5494  df-so 5495  df-fr 5535  df-se 5536  df-we 5537  df-xp 5586  df-rel 5587  df-cnv 5588  df-co 5589  df-dm 5590  df-rn 5591  df-res 5592  df-ima 5593  df-pred 6191  df-ord 6254  df-on 6255  df-lim 6256  df-suc 6257  df-iota 6376  df-fun 6420  df-fn 6421  df-f 6422  df-f1 6423  df-fo 6424  df-f1o 6425  df-fv 6426  df-isom 6427  df-riota 7212  df-ov 7258  df-om 7688  df-2nd 7805  df-frecs 8068  df-wrecs 8099  df-recs 8173  df-1o 8267  df-er 8456  df-en 8692  df-dom 8693  df-sdom 8694  df-fin 8695  df-card 9628
This theorem is referenced by:  fin23lem32  10031
  Copyright terms: Public domain W3C validator