Metamath Proof Explorer


Theorem fgreu

Description: Exactly one point of a function's graph has a given first element. (Contributed by Thierry Arnoux, 1-Apr-2018)

Ref Expression
Assertion fgreu ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) → ∃! 𝑝𝐹 𝑋 = ( 1st𝑝 ) )

Proof

Step Hyp Ref Expression
1 funfvop ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) → ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ∈ 𝐹 )
2 simplll ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → Fun 𝐹 )
3 funrel ( Fun 𝐹 → Rel 𝐹 )
4 2 3 syl ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → Rel 𝐹 )
5 simplr ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → 𝑝𝐹 )
6 1st2nd ( ( Rel 𝐹𝑝𝐹 ) → 𝑝 = ⟨ ( 1st𝑝 ) , ( 2nd𝑝 ) ⟩ )
7 4 5 6 syl2anc ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → 𝑝 = ⟨ ( 1st𝑝 ) , ( 2nd𝑝 ) ⟩ )
8 simpr ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → 𝑋 = ( 1st𝑝 ) )
9 simpllr ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → 𝑋 ∈ dom 𝐹 )
10 8 opeq1d ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → ⟨ 𝑋 , ( 2nd𝑝 ) ⟩ = ⟨ ( 1st𝑝 ) , ( 2nd𝑝 ) ⟩ )
11 7 10 eqtr4d ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → 𝑝 = ⟨ 𝑋 , ( 2nd𝑝 ) ⟩ )
12 11 5 eqeltrrd ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → ⟨ 𝑋 , ( 2nd𝑝 ) ⟩ ∈ 𝐹 )
13 funopfvb ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) → ( ( 𝐹𝑋 ) = ( 2nd𝑝 ) ↔ ⟨ 𝑋 , ( 2nd𝑝 ) ⟩ ∈ 𝐹 ) )
14 13 biimpar ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ ⟨ 𝑋 , ( 2nd𝑝 ) ⟩ ∈ 𝐹 ) → ( 𝐹𝑋 ) = ( 2nd𝑝 ) )
15 2 9 12 14 syl21anc ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → ( 𝐹𝑋 ) = ( 2nd𝑝 ) )
16 8 15 opeq12d ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ = ⟨ ( 1st𝑝 ) , ( 2nd𝑝 ) ⟩ )
17 7 16 eqtr4d ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑋 = ( 1st𝑝 ) ) → 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ )
18 simpr ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) → 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ )
19 18 fveq2d ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) → ( 1st𝑝 ) = ( 1st ‘ ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) )
20 fvex ( 𝐹𝑋 ) ∈ V
21 op1stg ( ( 𝑋 ∈ dom 𝐹 ∧ ( 𝐹𝑋 ) ∈ V ) → ( 1st ‘ ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) = 𝑋 )
22 20 21 mpan2 ( 𝑋 ∈ dom 𝐹 → ( 1st ‘ ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) = 𝑋 )
23 22 ad3antlr ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) → ( 1st ‘ ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) = 𝑋 )
24 19 23 eqtr2d ( ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) ∧ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) → 𝑋 = ( 1st𝑝 ) )
25 17 24 impbida ( ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) ∧ 𝑝𝐹 ) → ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) )
26 25 ralrimiva ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) → ∀ 𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) )
27 eqeq2 ( 𝑞 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ → ( 𝑝 = 𝑞𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) )
28 27 bibi2d ( 𝑞 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ → ( ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = 𝑞 ) ↔ ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) ) )
29 28 ralbidv ( 𝑞 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ → ( ∀ 𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = 𝑞 ) ↔ ∀ 𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) ) )
30 29 rspcev ( ( ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ∈ 𝐹 ∧ ∀ 𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = ⟨ 𝑋 , ( 𝐹𝑋 ) ⟩ ) ) → ∃ 𝑞𝐹𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = 𝑞 ) )
31 1 26 30 syl2anc ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) → ∃ 𝑞𝐹𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = 𝑞 ) )
32 reu6 ( ∃! 𝑝𝐹 𝑋 = ( 1st𝑝 ) ↔ ∃ 𝑞𝐹𝑝𝐹 ( 𝑋 = ( 1st𝑝 ) ↔ 𝑝 = 𝑞 ) )
33 31 32 sylibr ( ( Fun 𝐹𝑋 ∈ dom 𝐹 ) → ∃! 𝑝𝐹 𝑋 = ( 1st𝑝 ) )