MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  cofuass Structured version   Visualization version   GIF version

Theorem cofuass 17936
Description: Functor composition is associative. (Contributed by Mario Carneiro, 3-Jan-2017.)
Hypotheses
Ref Expression
cofuass.g (𝜑𝐺 ∈ (𝐶 Func 𝐷))
cofuass.h (𝜑𝐻 ∈ (𝐷 Func 𝐸))
cofuass.k (𝜑𝐾 ∈ (𝐸 Func 𝐹))
Assertion
Ref Expression
cofuass (𝜑 → ((𝐾func 𝐻) ∘func 𝐺) = (𝐾func (𝐻func 𝐺)))

Proof of Theorem cofuass
Dummy variables 𝑥 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 coass 6257 . . . 4 (((1st𝐾) ∘ (1st𝐻)) ∘ (1st𝐺)) = ((1st𝐾) ∘ ((1st𝐻) ∘ (1st𝐺)))
2 eqid 2765 . . . . . 6 (Base‘𝐷) = (Base‘𝐷)
3 cofuass.h . . . . . 6 (𝜑𝐻 ∈ (𝐷 Func 𝐸))
4 cofuass.k . . . . . 6 (𝜑𝐾 ∈ (𝐸 Func 𝐹))
52, 3, 4cofu1st 17930 . . . . 5 (𝜑 → (1st ‘(𝐾func 𝐻)) = ((1st𝐾) ∘ (1st𝐻)))
65coeq1d 5838 . . . 4 (𝜑 → ((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)) = (((1st𝐾) ∘ (1st𝐻)) ∘ (1st𝐺)))
7 eqid 2765 . . . . . 6 (Base‘𝐶) = (Base‘𝐶)
8 cofuass.g . . . . . 6 (𝜑𝐺 ∈ (𝐶 Func 𝐷))
97, 8, 3cofu1st 17930 . . . . 5 (𝜑 → (1st ‘(𝐻func 𝐺)) = ((1st𝐻) ∘ (1st𝐺)))
109coeq2d 5839 . . . 4 (𝜑 → ((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))) = ((1st𝐾) ∘ ((1st𝐻) ∘ (1st𝐺))))
111, 6, 103eqtr4a 2826 . . 3 (𝜑 → ((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)) = ((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))))
12 coass 6257 . . . . 5 (((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ (((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦))) ∘ (𝑥(2nd𝐺)𝑦)) = ((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ ((((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))
1333ad2ant1 1149 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝐻 ∈ (𝐷 Func 𝐸))
1443ad2ant1 1149 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝐾 ∈ (𝐸 Func 𝐹))
15 relfunc 17909 . . . . . . . . . . 11 Rel (𝐶 Func 𝐷)
16 1st2ndbr 8027 . . . . . . . . . . 11 ((Rel (𝐶 Func 𝐷) ∧ 𝐺 ∈ (𝐶 Func 𝐷)) → (1st𝐺)(𝐶 Func 𝐷)(2nd𝐺))
1715, 8, 16sylancr 598 . . . . . . . . . 10 (𝜑 → (1st𝐺)(𝐶 Func 𝐷)(2nd𝐺))
18173ad2ant1 1149 . . . . . . . . 9 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (1st𝐺)(𝐶 Func 𝐷)(2nd𝐺))
197, 2, 18funcf1 17913 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (1st𝐺):(Base‘𝐶)⟶(Base‘𝐷))
20 simp2 1153 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝑥 ∈ (Base‘𝐶))
2119, 20ffvelcdmd 7070 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st𝐺)‘𝑥) ∈ (Base‘𝐷))
22 simp3 1154 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝑦 ∈ (Base‘𝐶))
2319, 22ffvelcdmd 7070 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st𝐺)‘𝑦) ∈ (Base‘𝐷))
242, 13, 14, 21, 23cofu2nd 17932 . . . . . 6 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) = ((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ (((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦))))
2524coeq1d 5838 . . . . 5 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)) = (((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ (((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦))) ∘ (𝑥(2nd𝐺)𝑦)))
2683ad2ant1 1149 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝐺 ∈ (𝐶 Func 𝐷))
277, 26, 13, 20cofu1 17931 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st ‘(𝐻func 𝐺))‘𝑥) = ((1st𝐻)‘((1st𝐺)‘𝑥)))
287, 26, 13, 22cofu1 17931 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st ‘(𝐻func 𝐺))‘𝑦) = ((1st𝐻)‘((1st𝐺)‘𝑦)))
2927, 28oveq12d 7418 . . . . . 6 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) = (((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))))
307, 26, 13, 20, 22cofu2nd 17932 . . . . . 6 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (𝑥(2nd ‘(𝐻func 𝐺))𝑦) = ((((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))
3129, 30coeq12d 5841 . . . . 5 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)) = ((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ ((((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦))))
3212, 25, 313eqtr4a 2826 . . . 4 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)) = ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)))
3332mpoeq3dva 7477 . . 3 (𝜑 → (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦))) = (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦))))
3411, 33opeq12d 4842 . 2 (𝜑 → ⟨((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)), (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))⟩ = ⟨((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))), (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)))⟩)
353, 4cofucl 17935 . . 3 (𝜑 → (𝐾func 𝐻) ∈ (𝐷 Func 𝐹))
367, 8, 35cofuval 17929 . 2 (𝜑 → ((𝐾func 𝐻) ∘func 𝐺) = ⟨((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)), (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))⟩)
378, 3cofucl 17935 . . 3 (𝜑 → (𝐻func 𝐺) ∈ (𝐶 Func 𝐸))
387, 37, 4cofuval 17929 . 2 (𝜑 → (𝐾func (𝐻func 𝐺)) = ⟨((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))), (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)))⟩)
3934, 36, 383eqtr4d 2810 1 (𝜑 → ((𝐾func 𝐻) ∘func 𝐺) = (𝐾func (𝐻func 𝐺)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  w3a 1101   = wceq 1563  wcel 2145  cop 4591   class class class wbr 5105  ccom 5656  Rel wrel 5657  cfv 6525  (class class class)co 7400  cmpo 7402  1st c1st 7972  2nd c2nd 7973  Basecbs 17259   Func cfunc 17901  func ccofu 17903
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1818  ax-4 1832  ax-5 1933  ax-6 1990  ax-7 2031  ax-8 2147  ax-9 2155  ax-10 2178  ax-11 2194  ax-12 2215  ax-ext 2737  ax-rep 5232  ax-sep 5251  ax-nul 5261  ax-pow 5327  ax-pr 5395  ax-un 7722
This theorem depends on definitions:  df-bi 210  df-an 401  df-or 861  df-3an 1103  df-tru 1566  df-fal 1576  df-ex 1803  df-nf 1807  df-sb 2094  df-mo 2569  df-eu 2599  df-clab 2744  df-cleq 2757  df-clel 2840  df-nfc 2914  df-ne 2961  df-ral 3080  df-rex 3090  df-rmo 3370  df-reu 3371  df-rab 3418  df-v 3459  df-sbc 3748  df-csb 3856  df-dif 3910  df-un 3912  df-in 3914  df-ss 3924  df-nul 4289  df-if 4484  df-pw 4560  df-sn 4586  df-pr 4588  df-op 4592  df-uni 4869  df-iun 4954  df-br 5106  df-opab 5168  df-mpt 5187  df-id 5547  df-xp 5658  df-rel 5659  df-cnv 5660  df-co 5661  df-dm 5662  df-rn 5663  df-res 5664  df-ima 5665  df-iota 6481  df-fun 6527  df-fn 6528  df-f 6529  df-f1 6530  df-fo 6531  df-f1o 6532  df-fv 6533  df-riota 7357  df-ov 7403  df-oprab 7404  df-mpo 7405  df-1st 7974  df-2nd 7975  df-map 8814  df-ixp 8884  df-cat 17714  df-cid 17715  df-func 17905  df-cofu 17907
This theorem is referenced by:  catccatid  18153  uobeqw  49848
  Copyright terms: Public domain W3C validator