Metamath Proof Explorer


Theorem natoppfb

Description: A natural transformation is natural between opposite functors, and vice versa. (Contributed by Zhi Wang, 18-Nov-2025)

Ref Expression
Hypotheses natoppf.o ⊢ O = oppCat ⁡ C
natoppf.p ⊢ P = oppCat ⁡ D
natoppf.n ⊢ N = C Nat D
natoppf.m ⊢ M = O Nat P
natoppfb.k No typesetting found for |- ( ph -> K = ( oppFunc ` F ) ) with typecode |-
natoppfb.l No typesetting found for |- ( ph -> L = ( oppFunc ` G ) ) with typecode |-
natoppfb.c ⊢ φ → C ∈ V
natoppfb.d ⊢ φ → D ∈ W
Assertion natoppfb ⊢ φ → F N G = L M K

Proof

Step Hyp Ref Expression
1 natoppf.o ⊢ O = oppCat ⁡ C
2 natoppf.p ⊢ P = oppCat ⁡ D
3 natoppf.n ⊢ N = C Nat D
4 natoppf.m ⊢ M = O Nat P
5 natoppfb.k Could not format ( ph -> K = ( oppFunc ` F ) ) : No typesetting found for |- ( ph -> K = ( oppFunc ` F ) ) with typecode |-
6 natoppfb.l Could not format ( ph -> L = ( oppFunc ` G ) ) : No typesetting found for |- ( ph -> L = ( oppFunc ` G ) ) with typecode |-
7 natoppfb.c ⊢ φ → C ∈ V
8 natoppfb.d ⊢ φ → D ∈ W
9 5 adantr Could not format ( ( ph /\ x e. ( F N G ) ) -> K = ( oppFunc ` F ) ) : No typesetting found for |- ( ( ph /\ x e. ( F N G ) ) -> K = ( oppFunc ` F ) ) with typecode |-
10 6 adantr Could not format ( ( ph /\ x e. ( F N G ) ) -> L = ( oppFunc ` G ) ) : No typesetting found for |- ( ( ph /\ x e. ( F N G ) ) -> L = ( oppFunc ` G ) ) with typecode |-
11 simpr ⊢ φ ∧ x ∈ F N G → x ∈ F N G
12 1 2 3 4 9 10 11 natoppf2 ⊢ φ ∧ x ∈ F N G → x ∈ L M K
13 eqid ⊢ oppCat ⁡ O = oppCat ⁡ O
14 eqid ⊢ oppCat ⁡ P = oppCat ⁡ P
15 eqid ⊢ oppCat ⁡ O Nat oppCat ⁡ P = oppCat ⁡ O Nat oppCat ⁡ P
16 6 adantr Could not format ( ( ph /\ x e. ( L M K ) ) -> L = ( oppFunc ` G ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> L = ( oppFunc ` G ) ) with typecode |-
17 16 fveq2d Could not format ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` L ) = ( oppFunc ` ( oppFunc ` G ) ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` L ) = ( oppFunc ` ( oppFunc ` G ) ) ) with typecode |-
18 4 natrcl ⊢ x ∈ L M K → L ∈ O Func P ∧ K ∈ O Func P
19 18 adantl ⊢ φ ∧ x ∈ L M K → L ∈ O Func P ∧ K ∈ O Func P
20 19 simpld ⊢ φ ∧ x ∈ L M K → L ∈ O Func P
21 16 20 eqeltrrd Could not format ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` G ) e. ( O Func P ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` G ) e. ( O Func P ) ) with typecode |-
22 relfunc ⊢ Rel ⁡ O Func P
23 eqid Could not format ( oppFunc ` G ) = ( oppFunc ` G ) : No typesetting found for |- ( oppFunc ` G ) = ( oppFunc ` G ) with typecode |-
24 21 22 23 2oppf Could not format ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` ( oppFunc ` G ) ) = G ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` ( oppFunc ` G ) ) = G ) with typecode |-
25 17 24 eqtr2d Could not format ( ( ph /\ x e. ( L M K ) ) -> G = ( oppFunc ` L ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> G = ( oppFunc ` L ) ) with typecode |-
26 5 adantr Could not format ( ( ph /\ x e. ( L M K ) ) -> K = ( oppFunc ` F ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> K = ( oppFunc ` F ) ) with typecode |-
27 26 fveq2d Could not format ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` K ) = ( oppFunc ` ( oppFunc ` F ) ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` K ) = ( oppFunc ` ( oppFunc ` F ) ) ) with typecode |-
28 19 simprd ⊢ φ ∧ x ∈ L M K → K ∈ O Func P
29 26 28 eqeltrrd Could not format ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` F ) e. ( O Func P ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` F ) e. ( O Func P ) ) with typecode |-
30 eqid Could not format ( oppFunc ` F ) = ( oppFunc ` F ) : No typesetting found for |- ( oppFunc ` F ) = ( oppFunc ` F ) with typecode |-
31 29 22 30 2oppf Could not format ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` ( oppFunc ` F ) ) = F ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> ( oppFunc ` ( oppFunc ` F ) ) = F ) with typecode |-
32 27 31 eqtr2d Could not format ( ( ph /\ x e. ( L M K ) ) -> F = ( oppFunc ` K ) ) : No typesetting found for |- ( ( ph /\ x e. ( L M K ) ) -> F = ( oppFunc ` K ) ) with typecode |-
33 simpr ⊢ φ ∧ x ∈ L M K → x ∈ L M K
34 13 14 4 15 25 32 33 natoppf2 ⊢ φ ∧ x ∈ L M K → x ∈ F oppCat ⁡ O Nat oppCat ⁡ P G
35 1 2oppchomf ⊢ Hom 𝑓 ⁡ C = Hom 𝑓 ⁡ oppCat ⁡ O
36 35 a1i ⊢ φ ∧ x ∈ L M K → Hom 𝑓 ⁡ C = Hom 𝑓 ⁡ oppCat ⁡ O
37 1 2oppccomf ⊢ comp 𝑓 ⁡ C = comp 𝑓 ⁡ oppCat ⁡ O
38 37 a1i ⊢ φ ∧ x ∈ L M K → comp 𝑓 ⁡ C = comp 𝑓 ⁡ oppCat ⁡ O
39 2 2oppchomf ⊢ Hom 𝑓 ⁡ D = Hom 𝑓 ⁡ oppCat ⁡ P
40 39 a1i ⊢ φ ∧ x ∈ L M K → Hom 𝑓 ⁡ D = Hom 𝑓 ⁡ oppCat ⁡ P
41 2 2oppccomf ⊢ comp 𝑓 ⁡ D = comp 𝑓 ⁡ oppCat ⁡ P
42 41 a1i ⊢ φ ∧ x ∈ L M K → comp 𝑓 ⁡ D = comp 𝑓 ⁡ oppCat ⁡ P
43 7 adantr ⊢ φ ∧ x ∈ L M K → C ∈ V
44 8 adantr ⊢ φ ∧ x ∈ L M K → D ∈ W
45 1 2 43 44 29 funcoppc5 ⊢ φ ∧ x ∈ L M K → F ∈ C Func D
46 45 func1st2nd ⊢ φ ∧ x ∈ L M K → 1 st ⁡ F C Func D 2 nd ⁡ F
47 46 funcrcl2 ⊢ φ ∧ x ∈ L M K → C ∈ Cat
48 1 oppccat ⊢ C ∈ Cat → O ∈ Cat
49 13 oppccat ⊢ O ∈ Cat → oppCat ⁡ O ∈ Cat
50 47 48 49 3syl ⊢ φ ∧ x ∈ L M K → oppCat ⁡ O ∈ Cat
51 46 funcrcl3 ⊢ φ ∧ x ∈ L M K → D ∈ Cat
52 2 oppccat ⊢ D ∈ Cat → P ∈ Cat
53 14 oppccat ⊢ P ∈ Cat → oppCat ⁡ P ∈ Cat
54 51 52 53 3syl ⊢ φ ∧ x ∈ L M K → oppCat ⁡ P ∈ Cat
55 36 38 40 42 47 50 51 54 natpropd ⊢ φ ∧ x ∈ L M K → C Nat D = oppCat ⁡ O Nat oppCat ⁡ P
56 3 55 eqtrid ⊢ φ ∧ x ∈ L M K → N = oppCat ⁡ O Nat oppCat ⁡ P
57 56 oveqd ⊢ φ ∧ x ∈ L M K → F N G = F oppCat ⁡ O Nat oppCat ⁡ P G
58 34 57 eleqtrrd ⊢ φ ∧ x ∈ L M K → x ∈ F N G
59 12 58 impbida ⊢ φ → x ∈ F N G ↔ x ∈ L M K
60 59 eqrdv ⊢ φ → F N G = L M K