Metamath Proof Explorer


Theorem naddcnffo

Description: Addition of Cantor normal forms is a function onto Cantor normal forms. (Contributed by RP, 2-Jan-2025)

Ref Expression
Assertion naddcnffo ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) : ( 𝑆 × 𝑆 ) –onto𝑆 )

Proof

Step Hyp Ref Expression
1 naddcnff ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) : ( 𝑆 × 𝑆 ) ⟶ 𝑆 )
2 simpr ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ 𝑓𝑆 ) → 𝑓𝑆 )
3 peano1 ∅ ∈ ω
4 fconst6g ( ∅ ∈ ω → ( 𝑋 × { ∅ } ) : 𝑋 ⟶ ω )
5 3 4 mp1i ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑋 × { ∅ } ) : 𝑋 ⟶ ω )
6 simpl ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → 𝑋 ∈ On )
7 3 a1i ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ∅ ∈ ω )
8 6 7 fczfsuppd ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑋 × { ∅ } ) finSupp ∅ )
9 simpr ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → 𝑆 = dom ( ω CNF 𝑋 ) )
10 9 eleq2d ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ( 𝑋 × { ∅ } ) ∈ 𝑆 ↔ ( 𝑋 × { ∅ } ) ∈ dom ( ω CNF 𝑋 ) ) )
11 eqid dom ( ω CNF 𝑋 ) = dom ( ω CNF 𝑋 )
12 omelon ω ∈ On
13 12 a1i ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ω ∈ On )
14 11 13 6 cantnfs ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ( 𝑋 × { ∅ } ) ∈ dom ( ω CNF 𝑋 ) ↔ ( ( 𝑋 × { ∅ } ) : 𝑋 ⟶ ω ∧ ( 𝑋 × { ∅ } ) finSupp ∅ ) ) )
15 10 14 bitrd ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ( 𝑋 × { ∅ } ) ∈ 𝑆 ↔ ( ( 𝑋 × { ∅ } ) : 𝑋 ⟶ ω ∧ ( 𝑋 × { ∅ } ) finSupp ∅ ) ) )
16 5 8 15 mpbir2and ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑋 × { ∅ } ) ∈ 𝑆 )
17 16 adantr ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ 𝑓𝑆 ) → ( 𝑋 × { ∅ } ) ∈ 𝑆 )
18 simpl ( ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) → 𝑓𝑆 )
19 18 adantl ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → 𝑓𝑆 )
20 simpr ( ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) → ( 𝑋 × { ∅ } ) ∈ 𝑆 )
21 20 adantl ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → ( 𝑋 × { ∅ } ) ∈ 𝑆 )
22 19 21 ovresd ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) ( 𝑋 × { ∅ } ) ) = ( 𝑓f +o ( 𝑋 × { ∅ } ) ) )
23 9 eleq2d ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑓𝑆𝑓 ∈ dom ( ω CNF 𝑋 ) ) )
24 11 13 6 cantnfs ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑓 ∈ dom ( ω CNF 𝑋 ) ↔ ( 𝑓 : 𝑋 ⟶ ω ∧ 𝑓 finSupp ∅ ) ) )
25 23 24 bitrd ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑓𝑆 ↔ ( 𝑓 : 𝑋 ⟶ ω ∧ 𝑓 finSupp ∅ ) ) )
26 25 biimpd ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( 𝑓𝑆 → ( 𝑓 : 𝑋 ⟶ ω ∧ 𝑓 finSupp ∅ ) ) )
27 simpl ( ( 𝑓 : 𝑋 ⟶ ω ∧ 𝑓 finSupp ∅ ) → 𝑓 : 𝑋 ⟶ ω )
28 18 26 27 syl56 ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) → 𝑓 : 𝑋 ⟶ ω ) )
29 28 imp ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → 𝑓 : 𝑋 ⟶ ω )
30 29 ffnd ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → 𝑓 Fn 𝑋 )
31 fnconstg ( ∅ ∈ ω → ( 𝑋 × { ∅ } ) Fn 𝑋 )
32 3 31 mp1i ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → ( 𝑋 × { ∅ } ) Fn 𝑋 )
33 6 adantr ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → 𝑋 ∈ On )
34 inidm ( 𝑋𝑋 ) = 𝑋
35 30 32 33 33 34 offn ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → ( 𝑓f +o ( 𝑋 × { ∅ } ) ) Fn 𝑋 )
36 30 adantr ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → 𝑓 Fn 𝑋 )
37 3 31 mp1i ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( 𝑋 × { ∅ } ) Fn 𝑋 )
38 simplll ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → 𝑋 ∈ On )
39 simpr ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → 𝑥𝑋 )
40 fnfvof ( ( ( 𝑓 Fn 𝑋 ∧ ( 𝑋 × { ∅ } ) Fn 𝑋 ) ∧ ( 𝑋 ∈ On ∧ 𝑥𝑋 ) ) → ( ( 𝑓f +o ( 𝑋 × { ∅ } ) ) ‘ 𝑥 ) = ( ( 𝑓𝑥 ) +o ( ( 𝑋 × { ∅ } ) ‘ 𝑥 ) ) )
41 36 37 38 39 40 syl22anc ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( ( 𝑓f +o ( 𝑋 × { ∅ } ) ) ‘ 𝑥 ) = ( ( 𝑓𝑥 ) +o ( ( 𝑋 × { ∅ } ) ‘ 𝑥 ) ) )
42 3 a1i ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ∅ ∈ ω )
43 fvconst2g ( ( ∅ ∈ ω ∧ 𝑥𝑋 ) → ( ( 𝑋 × { ∅ } ) ‘ 𝑥 ) = ∅ )
44 42 39 43 syl2anc ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( ( 𝑋 × { ∅ } ) ‘ 𝑥 ) = ∅ )
45 44 oveq2d ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( ( 𝑓𝑥 ) +o ( ( 𝑋 × { ∅ } ) ‘ 𝑥 ) ) = ( ( 𝑓𝑥 ) +o ∅ ) )
46 29 ffvelcdmda ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( 𝑓𝑥 ) ∈ ω )
47 nnon ( ( 𝑓𝑥 ) ∈ ω → ( 𝑓𝑥 ) ∈ On )
48 oa0 ( ( 𝑓𝑥 ) ∈ On → ( ( 𝑓𝑥 ) +o ∅ ) = ( 𝑓𝑥 ) )
49 46 47 48 3syl ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( ( 𝑓𝑥 ) +o ∅ ) = ( 𝑓𝑥 ) )
50 41 45 49 3eqtrd ( ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) ∧ 𝑥𝑋 ) → ( ( 𝑓f +o ( 𝑋 × { ∅ } ) ) ‘ 𝑥 ) = ( 𝑓𝑥 ) )
51 35 30 50 eqfnfvd ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → ( 𝑓f +o ( 𝑋 × { ∅ } ) ) = 𝑓 )
52 22 51 eqtr2d ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ ( 𝑓𝑆 ∧ ( 𝑋 × { ∅ } ) ∈ 𝑆 ) ) → 𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) ( 𝑋 × { ∅ } ) ) )
53 52 expr ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ 𝑓𝑆 ) → ( ( 𝑋 × { ∅ } ) ∈ 𝑆𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) ( 𝑋 × { ∅ } ) ) ) )
54 17 53 jcai ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ 𝑓𝑆 ) → ( ( 𝑋 × { ∅ } ) ∈ 𝑆𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) ( 𝑋 × { ∅ } ) ) ) )
55 oveq2 ( 𝑧 = ( 𝑋 × { ∅ } ) → ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) ( 𝑋 × { ∅ } ) ) )
56 55 rspceeqv ( ( ( 𝑋 × { ∅ } ) ∈ 𝑆𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) ( 𝑋 × { ∅ } ) ) ) → ∃ 𝑧𝑆 𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) )
57 54 56 syl ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ 𝑓𝑆 ) → ∃ 𝑧𝑆 𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) )
58 oveq1 ( 𝑔 = 𝑓 → ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) )
59 58 eqeq2d ( 𝑔 = 𝑓 → ( 𝑓 = ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) ↔ 𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) ) )
60 59 rexbidv ( 𝑔 = 𝑓 → ( ∃ 𝑧𝑆 𝑓 = ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) ↔ ∃ 𝑧𝑆 𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) ) )
61 60 rspcev ( ( 𝑓𝑆 ∧ ∃ 𝑧𝑆 𝑓 = ( 𝑓 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) ) → ∃ 𝑔𝑆𝑧𝑆 𝑓 = ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) )
62 2 57 61 syl2anc ( ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) ∧ 𝑓𝑆 ) → ∃ 𝑔𝑆𝑧𝑆 𝑓 = ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) )
63 62 ralrimiva ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ∀ 𝑓𝑆𝑔𝑆𝑧𝑆 𝑓 = ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) )
64 foov ( ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) : ( 𝑆 × 𝑆 ) –onto𝑆 ↔ ( ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) : ( 𝑆 × 𝑆 ) ⟶ 𝑆 ∧ ∀ 𝑓𝑆𝑔𝑆𝑧𝑆 𝑓 = ( 𝑔 ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) 𝑧 ) ) )
65 1 63 64 sylanbrc ( ( 𝑋 ∈ On ∧ 𝑆 = dom ( ω CNF 𝑋 ) ) → ( ∘f +o ↾ ( 𝑆 × 𝑆 ) ) : ( 𝑆 × 𝑆 ) –onto𝑆 )