Metamath Proof Explorer


Theorem 1arymaptfo

Description: The mapping of unary (endo)functions is a function onto the set of endofunctions. (Contributed by AV, 18-May-2024)

Ref Expression
Hypothesis 1arymaptfv.h 𝐻 = ( ∈ ( 1 -aryF 𝑋 ) ↦ ( 𝑥𝑋 ↦ ( ‘ { ⟨ 0 , 𝑥 ⟩ } ) ) )
Assertion 1arymaptfo ( 𝑋𝑉𝐻 : ( 1 -aryF 𝑋 ) –onto→ ( 𝑋m 𝑋 ) )

Proof

Step Hyp Ref Expression
1 1arymaptfv.h 𝐻 = ( ∈ ( 1 -aryF 𝑋 ) ↦ ( 𝑥𝑋 ↦ ( ‘ { ⟨ 0 , 𝑥 ⟩ } ) ) )
2 1 1arymaptf ( 𝑋𝑉𝐻 : ( 1 -aryF 𝑋 ) ⟶ ( 𝑋m 𝑋 ) )
3 elmapi ( 𝑓 ∈ ( 𝑋m 𝑋 ) → 𝑓 : 𝑋𝑋 )
4 eqid ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) )
5 4 1arympt1 ( ( 𝑋𝑉𝑓 : 𝑋𝑋 ) → ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ∈ ( 1 -aryF 𝑋 ) )
6 3 5 sylan2 ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ∈ ( 1 -aryF 𝑋 ) )
7 fveq2 ( 𝑔 = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) → ( 𝐻𝑔 ) = ( 𝐻 ‘ ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) )
8 7 eqeq2d ( 𝑔 = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) → ( 𝑓 = ( 𝐻𝑔 ) ↔ 𝑓 = ( 𝐻 ‘ ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ) )
9 8 adantl ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ 𝑔 = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) → ( 𝑓 = ( 𝐻𝑔 ) ↔ 𝑓 = ( 𝐻 ‘ ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ) )
10 3 adantl ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → 𝑓 : 𝑋𝑋 )
11 10 feqmptd ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → 𝑓 = ( 𝑥𝑋 ↦ ( 𝑓𝑥 ) ) )
12 simplr ( ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ∧ 𝑥𝑋 ) → = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) )
13 fveq1 ( 𝑎 = { ⟨ 0 , 𝑥 ⟩ } → ( 𝑎 ‘ 0 ) = ( { ⟨ 0 , 𝑥 ⟩ } ‘ 0 ) )
14 c0ex 0 ∈ V
15 vex 𝑥 ∈ V
16 14 15 fvsn ( { ⟨ 0 , 𝑥 ⟩ } ‘ 0 ) = 𝑥
17 13 16 eqtrdi ( 𝑎 = { ⟨ 0 , 𝑥 ⟩ } → ( 𝑎 ‘ 0 ) = 𝑥 )
18 17 fveq2d ( 𝑎 = { ⟨ 0 , 𝑥 ⟩ } → ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) = ( 𝑓𝑥 ) )
19 18 adantl ( ( ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ∧ 𝑥𝑋 ) ∧ 𝑎 = { ⟨ 0 , 𝑥 ⟩ } ) → ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) = ( 𝑓𝑥 ) )
20 14 a1i ( ( 𝑋𝑉𝑥𝑋 ) → 0 ∈ V )
21 simpr ( ( 𝑋𝑉𝑥𝑋 ) → 𝑥𝑋 )
22 20 21 fsnd ( ( 𝑋𝑉𝑥𝑋 ) → { ⟨ 0 , 𝑥 ⟩ } : { 0 } ⟶ 𝑋 )
23 snex { 0 } ∈ V
24 23 a1i ( 𝑥𝑋 → { 0 } ∈ V )
25 elmapg ( ( 𝑋𝑉 ∧ { 0 } ∈ V ) → ( { ⟨ 0 , 𝑥 ⟩ } ∈ ( 𝑋m { 0 } ) ↔ { ⟨ 0 , 𝑥 ⟩ } : { 0 } ⟶ 𝑋 ) )
26 24 25 sylan2 ( ( 𝑋𝑉𝑥𝑋 ) → ( { ⟨ 0 , 𝑥 ⟩ } ∈ ( 𝑋m { 0 } ) ↔ { ⟨ 0 , 𝑥 ⟩ } : { 0 } ⟶ 𝑋 ) )
27 22 26 mpbird ( ( 𝑋𝑉𝑥𝑋 ) → { ⟨ 0 , 𝑥 ⟩ } ∈ ( 𝑋m { 0 } ) )
28 27 ad4ant14 ( ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ∧ 𝑥𝑋 ) → { ⟨ 0 , 𝑥 ⟩ } ∈ ( 𝑋m { 0 } ) )
29 fvexd ( ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ∧ 𝑥𝑋 ) → ( 𝑓𝑥 ) ∈ V )
30 nfv 𝑎 ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) )
31 nfmpt1 𝑎 ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) )
32 31 nfeq2 𝑎 = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) )
33 30 32 nfan 𝑎 ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) )
34 nfv 𝑎 𝑥𝑋
35 33 34 nfan 𝑎 ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ∧ 𝑥𝑋 )
36 nfcv 𝑎 { ⟨ 0 , 𝑥 ⟩ }
37 nfcv 𝑎 ( 𝑓𝑥 )
38 12 19 28 29 35 36 37 fvmptdf ( ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) ∧ 𝑥𝑋 ) → ( ‘ { ⟨ 0 , 𝑥 ⟩ } ) = ( 𝑓𝑥 ) )
39 38 mpteq2dva ( ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) ∧ = ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) → ( 𝑥𝑋 ↦ ( ‘ { ⟨ 0 , 𝑥 ⟩ } ) ) = ( 𝑥𝑋 ↦ ( 𝑓𝑥 ) ) )
40 simpl ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → 𝑋𝑉 )
41 40 mptexd ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → ( 𝑥𝑋 ↦ ( 𝑓𝑥 ) ) ∈ V )
42 1 39 6 41 fvmptd2 ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → ( 𝐻 ‘ ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) = ( 𝑥𝑋 ↦ ( 𝑓𝑥 ) ) )
43 11 42 eqtr4d ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → 𝑓 = ( 𝐻 ‘ ( 𝑎 ∈ ( 𝑋m { 0 } ) ↦ ( 𝑓 ‘ ( 𝑎 ‘ 0 ) ) ) ) )
44 6 9 43 rspcedvd ( ( 𝑋𝑉𝑓 ∈ ( 𝑋m 𝑋 ) ) → ∃ 𝑔 ∈ ( 1 -aryF 𝑋 ) 𝑓 = ( 𝐻𝑔 ) )
45 44 ralrimiva ( 𝑋𝑉 → ∀ 𝑓 ∈ ( 𝑋m 𝑋 ) ∃ 𝑔 ∈ ( 1 -aryF 𝑋 ) 𝑓 = ( 𝐻𝑔 ) )
46 dffo3 ( 𝐻 : ( 1 -aryF 𝑋 ) –onto→ ( 𝑋m 𝑋 ) ↔ ( 𝐻 : ( 1 -aryF 𝑋 ) ⟶ ( 𝑋m 𝑋 ) ∧ ∀ 𝑓 ∈ ( 𝑋m 𝑋 ) ∃ 𝑔 ∈ ( 1 -aryF 𝑋 ) 𝑓 = ( 𝐻𝑔 ) ) )
47 2 45 46 sylanbrc ( 𝑋𝑉𝐻 : ( 1 -aryF 𝑋 ) –onto→ ( 𝑋m 𝑋 ) )