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

Theorem cofuass 17934
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 6285 . . . 4 (((1st𝐾) ∘ (1st𝐻)) ∘ (1st𝐺)) = ((1st𝐾) ∘ ((1st𝐻) ∘ (1st𝐺)))
2 eqid 2737 . . . . . 6 (Base‘𝐷) = (Base‘𝐷)
3 cofuass.h . . . . . 6 (𝜑𝐻 ∈ (𝐷 Func 𝐸))
4 cofuass.k . . . . . 6 (𝜑𝐾 ∈ (𝐸 Func 𝐹))
52, 3, 4cofu1st 17928 . . . . 5 (𝜑 → (1st ‘(𝐾func 𝐻)) = ((1st𝐾) ∘ (1st𝐻)))
65coeq1d 5872 . . . 4 (𝜑 → ((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)) = (((1st𝐾) ∘ (1st𝐻)) ∘ (1st𝐺)))
7 eqid 2737 . . . . . 6 (Base‘𝐶) = (Base‘𝐶)
8 cofuass.g . . . . . 6 (𝜑𝐺 ∈ (𝐶 Func 𝐷))
97, 8, 3cofu1st 17928 . . . . 5 (𝜑 → (1st ‘(𝐻func 𝐺)) = ((1st𝐻) ∘ (1st𝐺)))
109coeq2d 5873 . . . 4 (𝜑 → ((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))) = ((1st𝐾) ∘ ((1st𝐻) ∘ (1st𝐺))))
111, 6, 103eqtr4a 2803 . . 3 (𝜑 → ((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)) = ((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))))
12 coass 6285 . . . . 5 (((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ (((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦))) ∘ (𝑥(2nd𝐺)𝑦)) = ((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ ((((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))
1333ad2ant1 1134 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝐻 ∈ (𝐷 Func 𝐸))
1443ad2ant1 1134 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝐾 ∈ (𝐸 Func 𝐹))
15 relfunc 17907 . . . . . . . . . . 11 Rel (𝐶 Func 𝐷)
16 1st2ndbr 8067 . . . . . . . . . . 11 ((Rel (𝐶 Func 𝐷) ∧ 𝐺 ∈ (𝐶 Func 𝐷)) → (1st𝐺)(𝐶 Func 𝐷)(2nd𝐺))
1715, 8, 16sylancr 587 . . . . . . . . . 10 (𝜑 → (1st𝐺)(𝐶 Func 𝐷)(2nd𝐺))
18173ad2ant1 1134 . . . . . . . . 9 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (1st𝐺)(𝐶 Func 𝐷)(2nd𝐺))
197, 2, 18funcf1 17911 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (1st𝐺):(Base‘𝐶)⟶(Base‘𝐷))
20 simp2 1138 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝑥 ∈ (Base‘𝐶))
2119, 20ffvelcdmd 7105 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st𝐺)‘𝑥) ∈ (Base‘𝐷))
22 simp3 1139 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝑦 ∈ (Base‘𝐶))
2319, 22ffvelcdmd 7105 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st𝐺)‘𝑦) ∈ (Base‘𝐷))
242, 13, 14, 21, 23cofu2nd 17930 . . . . . 6 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) = ((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ (((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦))))
2524coeq1d 5872 . . . . 5 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)) = (((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ (((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦))) ∘ (𝑥(2nd𝐺)𝑦)))
2683ad2ant1 1134 . . . . . . . 8 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → 𝐺 ∈ (𝐶 Func 𝐷))
277, 26, 13, 20cofu1 17929 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st ‘(𝐻func 𝐺))‘𝑥) = ((1st𝐻)‘((1st𝐺)‘𝑥)))
287, 26, 13, 22cofu1 17929 . . . . . . 7 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((1st ‘(𝐻func 𝐺))‘𝑦) = ((1st𝐻)‘((1st𝐺)‘𝑦)))
2927, 28oveq12d 7449 . . . . . 6 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) = (((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))))
307, 26, 13, 20, 22cofu2nd 17930 . . . . . 6 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → (𝑥(2nd ‘(𝐻func 𝐺))𝑦) = ((((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))
3129, 30coeq12d 5875 . . . . 5 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)) = ((((1st𝐻)‘((1st𝐺)‘𝑥))(2nd𝐾)((1st𝐻)‘((1st𝐺)‘𝑦))) ∘ ((((1st𝐺)‘𝑥)(2nd𝐻)((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦))))
3212, 25, 313eqtr4a 2803 . . . 4 ((𝜑𝑥 ∈ (Base‘𝐶) ∧ 𝑦 ∈ (Base‘𝐶)) → ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)) = ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)))
3332mpoeq3dva 7510 . . 3 (𝜑 → (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦))) = (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦))))
3411, 33opeq12d 4881 . 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 17933 . . 3 (𝜑 → (𝐾func 𝐻) ∈ (𝐷 Func 𝐹))
367, 8, 35cofuval 17927 . 2 (𝜑 → ((𝐾func 𝐻) ∘func 𝐺) = ⟨((1st ‘(𝐾func 𝐻)) ∘ (1st𝐺)), (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st𝐺)‘𝑥)(2nd ‘(𝐾func 𝐻))((1st𝐺)‘𝑦)) ∘ (𝑥(2nd𝐺)𝑦)))⟩)
378, 3cofucl 17933 . . 3 (𝜑 → (𝐻func 𝐺) ∈ (𝐶 Func 𝐸))
387, 37, 4cofuval 17927 . 2 (𝜑 → (𝐾func (𝐻func 𝐺)) = ⟨((1st𝐾) ∘ (1st ‘(𝐻func 𝐺))), (𝑥 ∈ (Base‘𝐶), 𝑦 ∈ (Base‘𝐶) ↦ ((((1st ‘(𝐻func 𝐺))‘𝑥)(2nd𝐾)((1st ‘(𝐻func 𝐺))‘𝑦)) ∘ (𝑥(2nd ‘(𝐻func 𝐺))𝑦)))⟩)
3934, 36, 383eqtr4d 2787 1 (𝜑 → ((𝐾func 𝐻) ∘func 𝐺) = (𝐾func (𝐻func 𝐺)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  w3a 1087   = wceq 1540  wcel 2108  cop 4632   class class class wbr 5143  ccom 5689  Rel wrel 5690  cfv 6561  (class class class)co 7431  cmpo 7433  1st c1st 8012  2nd c2nd 8013  Basecbs 17247   Func cfunc 17899  func ccofu 17901
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1795  ax-4 1809  ax-5 1910  ax-6 1967  ax-7 2007  ax-8 2110  ax-9 2118  ax-10 2141  ax-11 2157  ax-12 2177  ax-ext 2708  ax-rep 5279  ax-sep 5296  ax-nul 5306  ax-pow 5365  ax-pr 5432  ax-un 7755
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 849  df-3an 1089  df-tru 1543  df-fal 1553  df-ex 1780  df-nf 1784  df-sb 2065  df-mo 2540  df-eu 2569  df-clab 2715  df-cleq 2729  df-clel 2816  df-nfc 2892  df-ne 2941  df-ral 3062  df-rex 3071  df-rmo 3380  df-reu 3381  df-rab 3437  df-v 3482  df-sbc 3789  df-csb 3900  df-dif 3954  df-un 3956  df-in 3958  df-ss 3968  df-nul 4334  df-if 4526  df-pw 4602  df-sn 4627  df-pr 4629  df-op 4633  df-uni 4908  df-iun 4993  df-br 5144  df-opab 5206  df-mpt 5226  df-id 5578  df-xp 5691  df-rel 5692  df-cnv 5693  df-co 5694  df-dm 5695  df-rn 5696  df-res 5697  df-ima 5698  df-iota 6514  df-fun 6563  df-fn 6564  df-f 6565  df-f1 6566  df-fo 6567  df-f1o 6568  df-fv 6569  df-riota 7388  df-ov 7434  df-oprab 7435  df-mpo 7436  df-1st 8014  df-2nd 8015  df-map 8868  df-ixp 8938  df-cat 17711  df-cid 17712  df-func 17903  df-cofu 17905
This theorem is referenced by:  catccatid  18151
  Copyright terms: Public domain W3C validator