Metamath Proof Explorer


Theorem 2oppf

Description: The double opposite functor is the original functor. (Contributed by Zhi Wang, 14-Nov-2025)

Ref Expression
Hypotheses oppfrcl.1 ( 𝜑𝐺𝑅 )
oppfrcl.2 Rel 𝑅
oppfrcl.3 𝐺 = ( oppFunc ‘ 𝐹 )
Assertion 2oppf ( 𝜑 → ( oppFunc ‘ 𝐺 ) = 𝐹 )

Proof

Step Hyp Ref Expression
1 oppfrcl.1 ( 𝜑𝐺𝑅 )
2 oppfrcl.2 Rel 𝑅
3 oppfrcl.3 𝐺 = ( oppFunc ‘ 𝐹 )
4 fvex ( 1st𝐹 ) ∈ V
5 fvex ( 2nd𝐹 ) ∈ V
6 5 tposex tpos ( 2nd𝐹 ) ∈ V
7 oppfvalg ( ( ( 1st𝐹 ) ∈ V ∧ tpos ( 2nd𝐹 ) ∈ V ) → ( ( 1st𝐹 ) oppFunc tpos ( 2nd𝐹 ) ) = if ( ( Rel tpos ( 2nd𝐹 ) ∧ Rel dom tpos ( 2nd𝐹 ) ) , ⟨ ( 1st𝐹 ) , tpos tpos ( 2nd𝐹 ) ⟩ , ∅ ) )
8 4 6 7 mp2an ( ( 1st𝐹 ) oppFunc tpos ( 2nd𝐹 ) ) = if ( ( Rel tpos ( 2nd𝐹 ) ∧ Rel dom tpos ( 2nd𝐹 ) ) , ⟨ ( 1st𝐹 ) , tpos tpos ( 2nd𝐹 ) ⟩ , ∅ )
9 df-ov ( ( 1st𝐹 ) oppFunc tpos ( 2nd𝐹 ) ) = ( oppFunc ‘ ⟨ ( 1st𝐹 ) , tpos ( 2nd𝐹 ) ⟩ )
10 1 2 3 oppfrcl ( 𝜑𝐹 ∈ ( V × V ) )
11 1st2nd2 ( 𝐹 ∈ ( V × V ) → 𝐹 = ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ )
12 10 11 syl ( 𝜑𝐹 = ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ )
13 1 2 3 12 oppf1st2nd ( 𝜑 → ( 𝐺 ∈ ( V × V ) ∧ ( ( 1st𝐺 ) = ( 1st𝐹 ) ∧ ( 2nd𝐺 ) = tpos ( 2nd𝐹 ) ) ) )
14 eqopi ( ( 𝐺 ∈ ( V × V ) ∧ ( ( 1st𝐺 ) = ( 1st𝐹 ) ∧ ( 2nd𝐺 ) = tpos ( 2nd𝐹 ) ) ) → 𝐺 = ⟨ ( 1st𝐹 ) , tpos ( 2nd𝐹 ) ⟩ )
15 13 14 syl ( 𝜑𝐺 = ⟨ ( 1st𝐹 ) , tpos ( 2nd𝐹 ) ⟩ )
16 15 fveq2d ( 𝜑 → ( oppFunc ‘ 𝐺 ) = ( oppFunc ‘ ⟨ ( 1st𝐹 ) , tpos ( 2nd𝐹 ) ⟩ ) )
17 9 16 eqtr4id ( 𝜑 → ( ( 1st𝐹 ) oppFunc tpos ( 2nd𝐹 ) ) = ( oppFunc ‘ 𝐺 ) )
18 1 2 3 12 oppfrcl3 ( 𝜑 → ( Rel ( 2nd𝐹 ) ∧ Rel dom ( 2nd𝐹 ) ) )
19 tpostpos2 ( ( Rel ( 2nd𝐹 ) ∧ Rel dom ( 2nd𝐹 ) ) → tpos tpos ( 2nd𝐹 ) = ( 2nd𝐹 ) )
20 18 19 syl ( 𝜑 → tpos tpos ( 2nd𝐹 ) = ( 2nd𝐹 ) )
21 20 opeq2d ( 𝜑 → ⟨ ( 1st𝐹 ) , tpos tpos ( 2nd𝐹 ) ⟩ = ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ )
22 0nelrel0 ( Rel dom ( 2nd𝐹 ) → ¬ ∅ ∈ dom ( 2nd𝐹 ) )
23 18 22 simpl2im ( 𝜑 → ¬ ∅ ∈ dom ( 2nd𝐹 ) )
24 reldmtpos ( Rel dom tpos ( 2nd𝐹 ) ↔ ¬ ∅ ∈ dom ( 2nd𝐹 ) )
25 23 24 sylibr ( 𝜑 → Rel dom tpos ( 2nd𝐹 ) )
26 reltpos Rel tpos ( 2nd𝐹 )
27 25 26 jctil ( 𝜑 → ( Rel tpos ( 2nd𝐹 ) ∧ Rel dom tpos ( 2nd𝐹 ) ) )
28 27 iftrued ( 𝜑 → if ( ( Rel tpos ( 2nd𝐹 ) ∧ Rel dom tpos ( 2nd𝐹 ) ) , ⟨ ( 1st𝐹 ) , tpos tpos ( 2nd𝐹 ) ⟩ , ∅ ) = ⟨ ( 1st𝐹 ) , tpos tpos ( 2nd𝐹 ) ⟩ )
29 21 28 12 3eqtr4d ( 𝜑 → if ( ( Rel tpos ( 2nd𝐹 ) ∧ Rel dom tpos ( 2nd𝐹 ) ) , ⟨ ( 1st𝐹 ) , tpos tpos ( 2nd𝐹 ) ⟩ , ∅ ) = 𝐹 )
30 8 17 29 3eqtr3a ( 𝜑 → ( oppFunc ‘ 𝐺 ) = 𝐹 )