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 𝑂 = ( oppCat ‘ 𝐶 )
natoppf.p 𝑃 = ( oppCat ‘ 𝐷 )
natoppf.n 𝑁 = ( 𝐶 Nat 𝐷 )
natoppf.m 𝑀 = ( 𝑂 Nat 𝑃 )
natoppfb.k ( 𝜑𝐾 = ( oppFunc ‘ 𝐹 ) )
natoppfb.l ( 𝜑𝐿 = ( oppFunc ‘ 𝐺 ) )
natoppfb.c ( 𝜑𝐶𝑉 )
natoppfb.d ( 𝜑𝐷𝑊 )
Assertion natoppfb ( 𝜑 → ( 𝐹 𝑁 𝐺 ) = ( 𝐿 𝑀 𝐾 ) )

Proof

Step Hyp Ref Expression
1 natoppf.o 𝑂 = ( oppCat ‘ 𝐶 )
2 natoppf.p 𝑃 = ( oppCat ‘ 𝐷 )
3 natoppf.n 𝑁 = ( 𝐶 Nat 𝐷 )
4 natoppf.m 𝑀 = ( 𝑂 Nat 𝑃 )
5 natoppfb.k ( 𝜑𝐾 = ( oppFunc ‘ 𝐹 ) )
6 natoppfb.l ( 𝜑𝐿 = ( oppFunc ‘ 𝐺 ) )
7 natoppfb.c ( 𝜑𝐶𝑉 )
8 natoppfb.d ( 𝜑𝐷𝑊 )
9 5 adantr ( ( 𝜑𝑥 ∈ ( 𝐹 𝑁 𝐺 ) ) → 𝐾 = ( oppFunc ‘ 𝐹 ) )
10 6 adantr ( ( 𝜑𝑥 ∈ ( 𝐹 𝑁 𝐺 ) ) → 𝐿 = ( oppFunc ‘ 𝐺 ) )
11 simpr ( ( 𝜑𝑥 ∈ ( 𝐹 𝑁 𝐺 ) ) → 𝑥 ∈ ( 𝐹 𝑁 𝐺 ) )
12 1 2 3 4 9 10 11 natoppf2 ( ( 𝜑𝑥 ∈ ( 𝐹 𝑁 𝐺 ) ) → 𝑥 ∈ ( 𝐿 𝑀 𝐾 ) )
13 eqid ( oppCat ‘ 𝑂 ) = ( oppCat ‘ 𝑂 )
14 eqid ( oppCat ‘ 𝑃 ) = ( oppCat ‘ 𝑃 )
15 eqid ( ( oppCat ‘ 𝑂 ) Nat ( oppCat ‘ 𝑃 ) ) = ( ( oppCat ‘ 𝑂 ) Nat ( oppCat ‘ 𝑃 ) )
16 6 adantr ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐿 = ( oppFunc ‘ 𝐺 ) )
17 16 fveq2d ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppFunc ‘ 𝐿 ) = ( oppFunc ‘ ( oppFunc ‘ 𝐺 ) ) )
18 4 natrcl ( 𝑥 ∈ ( 𝐿 𝑀 𝐾 ) → ( 𝐿 ∈ ( 𝑂 Func 𝑃 ) ∧ 𝐾 ∈ ( 𝑂 Func 𝑃 ) ) )
19 18 adantl ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( 𝐿 ∈ ( 𝑂 Func 𝑃 ) ∧ 𝐾 ∈ ( 𝑂 Func 𝑃 ) ) )
20 19 simpld ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐿 ∈ ( 𝑂 Func 𝑃 ) )
21 16 20 eqeltrrd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppFunc ‘ 𝐺 ) ∈ ( 𝑂 Func 𝑃 ) )
22 relfunc Rel ( 𝑂 Func 𝑃 )
23 eqid ( oppFunc ‘ 𝐺 ) = ( oppFunc ‘ 𝐺 )
24 21 22 23 2oppf ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppFunc ‘ ( oppFunc ‘ 𝐺 ) ) = 𝐺 )
25 17 24 eqtr2d ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐺 = ( oppFunc ‘ 𝐿 ) )
26 5 adantr ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐾 = ( oppFunc ‘ 𝐹 ) )
27 26 fveq2d ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppFunc ‘ 𝐾 ) = ( oppFunc ‘ ( oppFunc ‘ 𝐹 ) ) )
28 19 simprd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐾 ∈ ( 𝑂 Func 𝑃 ) )
29 26 28 eqeltrrd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppFunc ‘ 𝐹 ) ∈ ( 𝑂 Func 𝑃 ) )
30 eqid ( oppFunc ‘ 𝐹 ) = ( oppFunc ‘ 𝐹 )
31 29 22 30 2oppf ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppFunc ‘ ( oppFunc ‘ 𝐹 ) ) = 𝐹 )
32 27 31 eqtr2d ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐹 = ( oppFunc ‘ 𝐾 ) )
33 simpr ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝑥 ∈ ( 𝐿 𝑀 𝐾 ) )
34 13 14 4 15 25 32 33 natoppf2 ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝑥 ∈ ( 𝐹 ( ( oppCat ‘ 𝑂 ) Nat ( oppCat ‘ 𝑃 ) ) 𝐺 ) )
35 1 2oppchomf ( Homf𝐶 ) = ( Homf ‘ ( oppCat ‘ 𝑂 ) )
36 35 a1i ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( Homf𝐶 ) = ( Homf ‘ ( oppCat ‘ 𝑂 ) ) )
37 1 2oppccomf ( compf𝐶 ) = ( compf ‘ ( oppCat ‘ 𝑂 ) )
38 37 a1i ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( compf𝐶 ) = ( compf ‘ ( oppCat ‘ 𝑂 ) ) )
39 2 2oppchomf ( Homf𝐷 ) = ( Homf ‘ ( oppCat ‘ 𝑃 ) )
40 39 a1i ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( Homf𝐷 ) = ( Homf ‘ ( oppCat ‘ 𝑃 ) ) )
41 2 2oppccomf ( compf𝐷 ) = ( compf ‘ ( oppCat ‘ 𝑃 ) )
42 41 a1i ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( compf𝐷 ) = ( compf ‘ ( oppCat ‘ 𝑃 ) ) )
43 7 adantr ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐶𝑉 )
44 8 adantr ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐷𝑊 )
45 1 2 43 44 29 funcoppc5 ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐹 ∈ ( 𝐶 Func 𝐷 ) )
46 45 func1st2nd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( 1st𝐹 ) ( 𝐶 Func 𝐷 ) ( 2nd𝐹 ) )
47 46 funcrcl2 ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐶 ∈ Cat )
48 1 oppccat ( 𝐶 ∈ Cat → 𝑂 ∈ Cat )
49 13 oppccat ( 𝑂 ∈ Cat → ( oppCat ‘ 𝑂 ) ∈ Cat )
50 47 48 49 3syl ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppCat ‘ 𝑂 ) ∈ Cat )
51 46 funcrcl3 ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝐷 ∈ Cat )
52 2 oppccat ( 𝐷 ∈ Cat → 𝑃 ∈ Cat )
53 14 oppccat ( 𝑃 ∈ Cat → ( oppCat ‘ 𝑃 ) ∈ Cat )
54 51 52 53 3syl ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( oppCat ‘ 𝑃 ) ∈ Cat )
55 36 38 40 42 47 50 51 54 natpropd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( 𝐶 Nat 𝐷 ) = ( ( oppCat ‘ 𝑂 ) Nat ( oppCat ‘ 𝑃 ) ) )
56 3 55 eqtrid ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝑁 = ( ( oppCat ‘ 𝑂 ) Nat ( oppCat ‘ 𝑃 ) ) )
57 56 oveqd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → ( 𝐹 𝑁 𝐺 ) = ( 𝐹 ( ( oppCat ‘ 𝑂 ) Nat ( oppCat ‘ 𝑃 ) ) 𝐺 ) )
58 34 57 eleqtrrd ( ( 𝜑𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) → 𝑥 ∈ ( 𝐹 𝑁 𝐺 ) )
59 12 58 impbida ( 𝜑 → ( 𝑥 ∈ ( 𝐹 𝑁 𝐺 ) ↔ 𝑥 ∈ ( 𝐿 𝑀 𝐾 ) ) )
60 59 eqrdv ( 𝜑 → ( 𝐹 𝑁 𝐺 ) = ( 𝐿 𝑀 𝐾 ) )