Metamath Proof Explorer


Theorem fsnex

Description: Relate a function with a singleton as domain and one variable. (Contributed by Thierry Arnoux, 12-Jul-2020)

Ref Expression
Hypothesis fsnex.1 ( 𝑥 = ( 𝑓𝐴 ) → ( 𝜓𝜑 ) )
Assertion fsnex ( 𝐴𝑉 → ( ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ↔ ∃ 𝑥𝐷 𝜓 ) )

Proof

Step Hyp Ref Expression
1 fsnex.1 ( 𝑥 = ( 𝑓𝐴 ) → ( 𝜓𝜑 ) )
2 fsn2g ( 𝐴𝑉 → ( 𝑓 : { 𝐴 } ⟶ 𝐷 ↔ ( ( 𝑓𝐴 ) ∈ 𝐷𝑓 = { ⟨ 𝐴 , ( 𝑓𝐴 ) ⟩ } ) ) )
3 2 simprbda ( ( 𝐴𝑉𝑓 : { 𝐴 } ⟶ 𝐷 ) → ( 𝑓𝐴 ) ∈ 𝐷 )
4 3 adantrr ( ( 𝐴𝑉 ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) → ( 𝑓𝐴 ) ∈ 𝐷 )
5 1 adantl ( ( ( 𝐴𝑉 ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) ∧ 𝑥 = ( 𝑓𝐴 ) ) → ( 𝜓𝜑 ) )
6 simprr ( ( 𝐴𝑉 ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) → 𝜑 )
7 4 5 6 rspcedvd ( ( 𝐴𝑉 ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) → ∃ 𝑥𝐷 𝜓 )
8 7 ex ( 𝐴𝑉 → ( ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) → ∃ 𝑥𝐷 𝜓 ) )
9 8 exlimdv ( 𝐴𝑉 → ( ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) → ∃ 𝑥𝐷 𝜓 ) )
10 9 imp ( ( 𝐴𝑉 ∧ ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) → ∃ 𝑥𝐷 𝜓 )
11 nfv 𝑥 𝐴𝑉
12 nfre1 𝑥𝑥𝐷 𝜓
13 11 12 nfan 𝑥 ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 )
14 f1osng ( ( 𝐴𝑉𝑥 ∈ V ) → { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } –1-1-onto→ { 𝑥 } )
15 14 elvd ( 𝐴𝑉 → { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } –1-1-onto→ { 𝑥 } )
16 15 ad3antrrr ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } –1-1-onto→ { 𝑥 } )
17 f1of ( { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } –1-1-onto→ { 𝑥 } → { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } ⟶ { 𝑥 } )
18 16 17 syl ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } ⟶ { 𝑥 } )
19 simplr ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → 𝑥𝐷 )
20 19 snssd ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → { 𝑥 } ⊆ 𝐷 )
21 18 20 fssd ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } ⟶ 𝐷 )
22 fvsng ( ( 𝐴𝑉𝑥 ∈ V ) → ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) = 𝑥 )
23 22 elvd ( 𝐴𝑉 → ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) = 𝑥 )
24 23 eqcomd ( 𝐴𝑉𝑥 = ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) )
25 24 ad3antrrr ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → 𝑥 = ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) )
26 snex { ⟨ 𝐴 , 𝑥 ⟩ } ∈ V
27 feq1 ( 𝑓 = { ⟨ 𝐴 , 𝑥 ⟩ } → ( 𝑓 : { 𝐴 } ⟶ 𝐷 ↔ { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } ⟶ 𝐷 ) )
28 fveq1 ( 𝑓 = { ⟨ 𝐴 , 𝑥 ⟩ } → ( 𝑓𝐴 ) = ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) )
29 28 eqeq2d ( 𝑓 = { ⟨ 𝐴 , 𝑥 ⟩ } → ( 𝑥 = ( 𝑓𝐴 ) ↔ 𝑥 = ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) ) )
30 27 29 anbi12d ( 𝑓 = { ⟨ 𝐴 , 𝑥 ⟩ } → ( ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ↔ ( { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } ⟶ 𝐷𝑥 = ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) ) ) )
31 26 30 spcev ( ( { ⟨ 𝐴 , 𝑥 ⟩ } : { 𝐴 } ⟶ 𝐷𝑥 = ( { ⟨ 𝐴 , 𝑥 ⟩ } ‘ 𝐴 ) ) → ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) )
32 21 25 31 syl2anc ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) )
33 simprl ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) → 𝑓 : { 𝐴 } ⟶ 𝐷 )
34 simpllr ( ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) ∧ 𝑓 : { 𝐴 } ⟶ 𝐷 ) → 𝜓 )
35 simplrr ( ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) ∧ 𝑓 : { 𝐴 } ⟶ 𝐷 ) → 𝑥 = ( 𝑓𝐴 ) )
36 35 1 syl ( ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) ∧ 𝑓 : { 𝐴 } ⟶ 𝐷 ) → ( 𝜓𝜑 ) )
37 34 36 mpbid ( ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) ∧ 𝑓 : { 𝐴 } ⟶ 𝐷 ) → 𝜑 )
38 33 37 mpdan ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) → 𝜑 )
39 33 38 jca ( ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) ∧ ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) ) → ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) )
40 39 ex ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → ( ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) → ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) )
41 40 eximdv ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → ( ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝑥 = ( 𝑓𝐴 ) ) → ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ) )
42 32 41 mpd ( ( ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) ∧ 𝑥𝐷 ) ∧ 𝜓 ) → ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) )
43 simpr ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) → ∃ 𝑥𝐷 𝜓 )
44 13 42 43 r19.29af ( ( 𝐴𝑉 ∧ ∃ 𝑥𝐷 𝜓 ) → ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) )
45 10 44 impbida ( 𝐴𝑉 → ( ∃ 𝑓 ( 𝑓 : { 𝐴 } ⟶ 𝐷𝜑 ) ↔ ∃ 𝑥𝐷 𝜓 ) )