Metamath Proof Explorer


Theorem lmdpropd

Description: If the categories have the same set of objects, morphisms, and compositions, then they have the same limits. (Contributed by Zhi Wang, 20-Nov-2025)

Ref Expression
Hypotheses lmdpropd.1 ⊢ φ → Hom 𝑓 ⁡ A = Hom 𝑓 ⁡ B
lmdpropd.2 ⊢ φ → comp 𝑓 ⁡ A = comp 𝑓 ⁡ B
lmdpropd.3 ⊢ φ → Hom 𝑓 ⁡ C = Hom 𝑓 ⁡ D
lmdpropd.4 ⊢ φ → comp 𝑓 ⁡ C = comp 𝑓 ⁡ D
lmdpropd.a ⊢ φ → A ∈ V
lmdpropd.b ⊢ φ → B ∈ V
lmdpropd.c ⊢ φ → C ∈ V
lmdpropd.d ⊢ φ → D ∈ V
Assertion lmdpropd Could not format assertion : No typesetting found for |- ( ph -> ( A Limit C ) = ( B Limit D ) ) with typecode |-

Proof

Step Hyp Ref Expression
1 lmdpropd.1 ⊢ φ → Hom 𝑓 ⁡ A = Hom 𝑓 ⁡ B
2 lmdpropd.2 ⊢ φ → comp 𝑓 ⁡ A = comp 𝑓 ⁡ B
3 lmdpropd.3 ⊢ φ → Hom 𝑓 ⁡ C = Hom 𝑓 ⁡ D
4 lmdpropd.4 ⊢ φ → comp 𝑓 ⁡ C = comp 𝑓 ⁡ D
5 lmdpropd.a ⊢ φ → A ∈ V
6 lmdpropd.b ⊢ φ → B ∈ V
7 lmdpropd.c ⊢ φ → C ∈ V
8 lmdpropd.d ⊢ φ → D ∈ V
9 3 4 1 2 7 8 5 6 funcpropd ⊢ φ → C Func A = D Func B
10 1 adantr ⊢ φ ∧ f ∈ C Func A → Hom 𝑓 ⁡ A = Hom 𝑓 ⁡ B
11 10 oppchomfpropd ⊢ φ ∧ f ∈ C Func A → Hom 𝑓 ⁡ oppCat ⁡ A = Hom 𝑓 ⁡ oppCat ⁡ B
12 2 adantr ⊢ φ ∧ f ∈ C Func A → comp 𝑓 ⁡ A = comp 𝑓 ⁡ B
13 10 12 oppccomfpropd ⊢ φ ∧ f ∈ C Func A → comp 𝑓 ⁡ oppCat ⁡ A = comp 𝑓 ⁡ oppCat ⁡ B
14 3 adantr ⊢ φ ∧ f ∈ C Func A → Hom 𝑓 ⁡ C = Hom 𝑓 ⁡ D
15 4 adantr ⊢ φ ∧ f ∈ C Func A → comp 𝑓 ⁡ C = comp 𝑓 ⁡ D
16 simpr ⊢ φ ∧ f ∈ C Func A → f ∈ C Func A
17 16 func1st2nd ⊢ φ ∧ f ∈ C Func A → 1 st ⁡ f C Func A 2 nd ⁡ f
18 17 funcrcl2 ⊢ φ ∧ f ∈ C Func A → C ∈ Cat
19 9 adantr ⊢ φ ∧ f ∈ C Func A → C Func A = D Func B
20 16 19 eleqtrd ⊢ φ ∧ f ∈ C Func A → f ∈ D Func B
21 20 func1st2nd ⊢ φ ∧ f ∈ C Func A → 1 st ⁡ f D Func B 2 nd ⁡ f
22 21 funcrcl2 ⊢ φ ∧ f ∈ C Func A → D ∈ Cat
23 17 funcrcl3 ⊢ φ ∧ f ∈ C Func A → A ∈ Cat
24 21 funcrcl3 ⊢ φ ∧ f ∈ C Func A → B ∈ Cat
25 14 15 10 12 18 22 23 24 fucpropd ⊢ φ ∧ f ∈ C Func A → C FuncCat A = D FuncCat B
26 25 fveq2d ⊢ φ ∧ f ∈ C Func A → Hom 𝑓 ⁡ C FuncCat A = Hom 𝑓 ⁡ D FuncCat B
27 26 oppchomfpropd ⊢ φ ∧ f ∈ C Func A → Hom 𝑓 ⁡ oppCat ⁡ C FuncCat A = Hom 𝑓 ⁡ oppCat ⁡ D FuncCat B
28 25 fveq2d ⊢ φ ∧ f ∈ C Func A → comp 𝑓 ⁡ C FuncCat A = comp 𝑓 ⁡ D FuncCat B
29 26 28 oppccomfpropd ⊢ φ ∧ f ∈ C Func A → comp 𝑓 ⁡ oppCat ⁡ C FuncCat A = comp 𝑓 ⁡ oppCat ⁡ D FuncCat B
30 fvexd ⊢ φ ∧ f ∈ C Func A → oppCat ⁡ A ∈ V
31 fvexd ⊢ φ ∧ f ∈ C Func A → oppCat ⁡ B ∈ V
32 fvexd ⊢ φ ∧ f ∈ C Func A → oppCat ⁡ C FuncCat A ∈ V
33 fvexd ⊢ φ ∧ f ∈ C Func A → oppCat ⁡ D FuncCat B ∈ V
34 11 13 27 29 30 31 32 33 uppropd Could not format ( ( ph /\ f e. ( C Func A ) ) -> ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) = ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) ) : No typesetting found for |- ( ( ph /\ f e. ( C Func A ) ) -> ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) = ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) ) with typecode |-
35 10 12 14 15 23 24 18 22 diagpropd ⊢ φ ∧ f ∈ C Func A → A Δ func C = B Δ func D
36 35 fveq2d Could not format ( ( ph /\ f e. ( C Func A ) ) -> ( oppFunc ` ( A DiagFunc C ) ) = ( oppFunc ` ( B DiagFunc D ) ) ) : No typesetting found for |- ( ( ph /\ f e. ( C Func A ) ) -> ( oppFunc ` ( A DiagFunc C ) ) = ( oppFunc ` ( B DiagFunc D ) ) ) with typecode |-
37 eqidd ⊢ φ ∧ f ∈ C Func A → f = f
38 34 36 37 oveq123d Could not format ( ( ph /\ f e. ( C Func A ) ) -> ( ( oppFunc ` ( A DiagFunc C ) ) ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) f ) = ( ( oppFunc ` ( B DiagFunc D ) ) ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) f ) ) : No typesetting found for |- ( ( ph /\ f e. ( C Func A ) ) -> ( ( oppFunc ` ( A DiagFunc C ) ) ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) f ) = ( ( oppFunc ` ( B DiagFunc D ) ) ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) f ) ) with typecode |-
39 9 38 mpteq12dva Could not format ( ph -> ( f e. ( C Func A ) |-> ( ( oppFunc ` ( A DiagFunc C ) ) ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) f ) ) = ( f e. ( D Func B ) |-> ( ( oppFunc ` ( B DiagFunc D ) ) ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) f ) ) ) : No typesetting found for |- ( ph -> ( f e. ( C Func A ) |-> ( ( oppFunc ` ( A DiagFunc C ) ) ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) f ) ) = ( f e. ( D Func B ) |-> ( ( oppFunc ` ( B DiagFunc D ) ) ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) f ) ) ) with typecode |-
40 lmdfval Could not format ( A Limit C ) = ( f e. ( C Func A ) |-> ( ( oppFunc ` ( A DiagFunc C ) ) ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) f ) ) : No typesetting found for |- ( A Limit C ) = ( f e. ( C Func A ) |-> ( ( oppFunc ` ( A DiagFunc C ) ) ( ( oppCat ` A ) UP ( oppCat ` ( C FuncCat A ) ) ) f ) ) with typecode |-
41 lmdfval Could not format ( B Limit D ) = ( f e. ( D Func B ) |-> ( ( oppFunc ` ( B DiagFunc D ) ) ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) f ) ) : No typesetting found for |- ( B Limit D ) = ( f e. ( D Func B ) |-> ( ( oppFunc ` ( B DiagFunc D ) ) ( ( oppCat ` B ) UP ( oppCat ` ( D FuncCat B ) ) ) f ) ) with typecode |-
42 39 40 41 3eqtr4g Could not format ( ph -> ( A Limit C ) = ( B Limit D ) ) : No typesetting found for |- ( ph -> ( A Limit C ) = ( B Limit D ) ) with typecode |-