lemma NatTransMapsTo: assumes"NT η : F ==> G"and"X ∈ Obj (CatDom F)" shows"η $$ X maps G (F @@ X) to (G @@ X)" proof- have NTP: "NatTransP η"using assms by auto have NTC: "NTCatCod η = CatCod G"using assms by (auto simp add: NTCatCod_def) have NTD: "NTCatDom η = CatDom F"using assms by (auto simp add: NTCatDom_def) hence Obj: "X ∈ Obj (NTCatDom η)"using assms by simp have DF: "NTDom η = F"and CG: "NTCod η = G"using assms by auto have NTmapsTo: "η $$ X maps η ((NTDom η) @@ X) to ((NTCod η) @@ X)" using NTP Obj by (simp add: NatTransP.NatTransMapsTo) thus ?thesis using NTC NTD DF CG by simp qed
lemma IdNatTransNatTrans': "Functor F ==> NatTransP(IdNatTrans' F)" proof(auto simp add:NatTransP_def IdNatTrans'_def NTCatDom_def NTCatCod_def Category.Simps
PreFunctor.FunctorId2 functor_simps Functor.FunctorMapsTo)
{ fix f X Y assume a: "Functor F"and b: "f maps F X to Y" show"(F ## f) ;; F (id F (F @@ Y)) = (id F (F @@ X)) ;; F (F ## f)" proof- have1: "Category (CatCod F)"using a by simp have"F ## f maps F (F @@ X) to (F @@ Y)"using a b by (auto simp add: Functor.FunctorMapsTo) hence2: "F ## f ∈ mor F"and3: "cod F (F ## f) = (F @@ Y)" and4: "dom F (F ## f) = (F @@ X)"by auto have"(F ## f) ;; F (id F (F @@ Y)) = (F ## f) ;; F (id F (cod F (F ## f)))" using3by simp alsohave"... = F ## f"using12by (auto simp add: Category.Cidr) alsohave"... = (id F (dom F (F ## f))) ;; F (F ## f)" using12by (auto simp add: Category.Cidl) alsohave"... = (id F (F @@ X)) ;; F (F ## f)"using4by simp finallyshow ?thesis . qed
} qed
lemma IdNatTransNatTrans: "Functor F ==> NatTrans (IdNatTrans F)" by (simp add: IdNatTransNatTrans' IdNatTrans_def MakeNT)
lemma NatTransCompDefCod: assumes"NatTrans η"and"f maps η X to Y" shows"(η $$ X) ≈> η (NTCod η ## f)" proof(rule CompDefinedI) have b: "X ∈ obj η"and c: "Y ∈ obj η"using assms by (auto simp add: Category.MapsToObj) have d: "(η $$ X) maps η ((NTDom η) @@ X) to ((NTCod η) @@ X)"using assms b by (simp add: NatTransP.NatTransMapsTo) thus"η $$ X ∈ mor η"by auto have"f maps (NTCod η) X to Y"using assms by (simp add: NatTransP.NatTransFtorDom) hence e: "NTCod η ## f maps (NTCod η) (NTCod η @@ X) to (NTCod η @@ Y)"using assms by (simp add: FunctorM.FunctorCompM NatTransP.NatTransFtor2) thus"NTCod η ## f ∈ mor η"by (auto simp add: NTCatCod_def) have"cod η (η $$ X) = (NTCod η @@ X)"using d by auto alsohave"... = dom (NTCod η) (NTCod η ## f)"using e by auto finallyshow"cod η (η $$ X) = dom η (NTCod η ## f)"by (auto simp add: NTCatCod_def) qed
lemma NatTransCompDefDom: assumes"NatTrans η"and"f maps η X to Y" shows"(NTDom η ## f) ≈> η (η $$ Y)" proof(rule CompDefinedI) have b: "X ∈ obj η"and c: "Y ∈ obj η"using assms by (auto simp add: Category.MapsToObj) have d: "(η $$ Y) maps η ((NTDom η) @@ Y) to ((NTCod η) @@ Y)"using assms c by (simp add: NatTransP.NatTransMapsTo) thus"η $$ Y ∈ mor η"by auto have"f maps (NTDom η) X to Y"using assms by (simp add: NTCatDom_def) hence e: "NTDom η ## f maps (NTDom η) (NTDom η @@ X) to (NTDom η @@ Y)"using assms by (simp add: FunctorM.FunctorCompM NatTransP.NatTransFtor) thus"NTDom η ## f ∈ mor η"using assms by (auto simp add: NatTransP.NatTransFtorCod) have"dom η (η $$ Y) = (NTDom η @@ Y)"using d by auto alsohave"... = cod (NTDom η) (NTDom η ## f)"using e by auto finallyshow"cod η (NTDom η ## f) = dom η (η $$ Y)" using assms by (auto simp add: NatTransP.NatTransFtorCod) qed
lemma NatTransCompCompDef: assumes"η1 ≈>∙ η2"and"X ∈ obj η1" shows"(η1 $$ X) ≈> η1 (η2 $$ X)" proof(rule CompDefinedI) have1: "(η1 $$ X) maps η1 ((NTDom η1) @@ X) to ((NTCod η1) @@ X)"using assms by (simp add: NatTransP.NatTransMapsTo) have"NTCatCod η1 = NTCatCod η2"using assms by auto hence2: "(η2 $$ X) maps η1 ((NTDom η2) @@ X) to ((NTCod η2) @@ X)"using assms by (simp add: NatTransP.NatTransMapsTo NTCatDom) show"η1 $$ X ∈ mor η1" and"η2 $$ X ∈ mor η1"using12by auto have"cod η1 (η1 $$ X) = ((NTCod η1) @@ X)"using1by auto alsohave"... = ((NTDom η2) @@ X)"using assms by auto finallyshow"cod η1 (η1 $$ X) = dom η1 (η2 $$ X)"using2by auto qed
lemma NatTransCompNatTrans': assumes"η1 ≈>∙ η2" shows"NatTransP (η1 ∙1 η2)" proof(auto simp add: NatTransP_def) show"Functor (NTDom (η1 ∙1 η2))"and"Functor (NTCod (η1 ∙1 η2))"using assms by (auto simp add: NatTransComp'_def NatTransP.NatTransFtor NatTransP.NatTransFtor2) show"NTCatDom (η1 ∙1 η2) = CatDom (NTCod (η1 ∙1 η2))"and "NTCatCod (η1 ∙1 η2) = CatCod (NTDom (η1 ∙1 η2))" proof (auto simp add: NatTransComp'_def NTCatCod_def NTCatDom_def) have"CatDom (NTDom η1) = NTCatDom η1"by (simp add: NTCatDom_def) thus"CatDom (NTDom η1) = CatDom (NTCod η2)"using assms by (auto simp add: NatTransP.NatTransFtorDom) have"CatCod (NTCod η2) = NTCatCod η2"by (simp add: NTCatCod_def) thus"CatCod (NTCod η2) = CatCod (NTDom η1)"using assms by (auto simp add: NatTransP.NatTransFtorCod) qed
{ fix X assume aa: "X ∈ obj (η1 ∙1 η2)" show"(η1 ∙1 η2) $$ X maps (η1 ∙1 η2) NTDom (η1 ∙1 η2) @@ X to NTCod (η1 ∙1 η2) @@ X" proof- have"X ∈ obj η1"and"NatTrans η1"using assms aa by simp+ hence"(η1 $$ X) maps η1 ((NTDom η1) @@ X) to ((NTCod η1) @@ X)" by (simp add: NatTransP.NatTransMapsTo) moreoverhave"(η2 $$ X) maps η1 ((NTCod η1) @@ X) to ((NTCod η2) @@ X)" proof- have"X ∈ obj η2"and"NatTrans η2"using assms aa by auto hence"(η2 $$ X) maps η2 ((NTDom η2) @@ X) to ((NTCod η2) @@ X)" by (simp add: NatTransP.NatTransMapsTo) thus ?thesis using assms by auto qed ultimatelyhave"(η1 $$ X) ;; η1 (η2 $$ X) maps η1 ((NTDom η1) @@ X) to ((NTCod η2) @@ X)" using assms by (simp add: Category.Ccompt) thus ?thesis using assms by (auto simp add: NatTransComp'_def NTCatCod_def) qed
}
{ fix f X Y assume a: "f mapsNTCatDom (η1 ∙1 η2)) X to Y" show"(NTDom (η1 ∙1 η2) ## f) ;; (η1 ∙1 η2) (η1 ∙1 η2 $$ Y) = ((η1 ∙1 η2) $$ X) ;; (η1 ∙1 η2) (NTCod (η1 ∙1 η2) ## f)" proof- have b: "X ∈ obj η1"and c: "Y ∈ obj η1"using assms a by (auto simp add: Category.MapsToObj) have"((NTDom η1) ## f) ;; η1 ((η1 $$ Y) ;; η1 (η2 $$ Y)) = (((NTDom η1) ## f) ;; η1 (η1 $$ Y)) ;; η1 (η2 $$ Y)" proof- have"((NTDom η1) ## f) ≈> η1 (η1 $$ Y)"using assms a by (auto simp add: NatTransCompDefDom) moreoverhave"(η1 $$ Y) ≈> η1 (η2 $$ Y)"using assms by (simp add: NatTransCompCompDef c) ultimatelyshow ?thesis using assms by (simp add: Category.Cassoc) qed alsohave"... = ((η1 $$ X) ;; η1 ((NTDom η2) ## f)) ;; η1 (η2 $$ Y)" using assms a by (auto simp add: NatTransP.NatTrans) alsohave"... = (η1 $$ X) ;; η1 (((NTDom η2) ## f) ;; η1 (η2 $$ Y))" proof- have"(η1 $$ X) ≈> η1 ((NTCod η1) ## f)"using assms a by (simp add: NatTransCompDefCod) moreoverhave"((NTDom η2) ## f) ≈> η1 (η2 $$ Y)"using assms a by (simp add: NatTransCompDefDom NTCatDom NTCatCod) ultimatelyshow ?thesis using assms by (auto simp add: Category.Cassoc) qed alsohave"... = (η1 $$ X) ;; η1 ((η2 $$ X) ;; η1 ((NTCod η2) ## f))" using assms a by (simp add: NatTransP.NatTrans NTCatDom NTCatCod) alsohave"... = (η1 $$ X) ;; η1 (η2 $$ X) ;; η1 ((NTCod η2) ## f)" proof- have"(η1 $$ X) ≈> η1 (η2 $$ X)"using assms by (simp add: NatTransCompCompDef b) moreoverhave"(η2 $$ X) ≈> η1 ((NTCod η2) ## f)"using assms a by (simp add: NatTransCompDefCod NTCatCod NTCatDom) ultimatelyshow ?thesis using assms by (simp add: Category.Cassoc) qed finallyshow ?thesis using assms by (auto simp add: NatTransComp'_def NTCatCod_def) qed
} qed
definition
CatExp' :: "('o1,'m1,'a) Category_scheme ==> ('o2,'m2,'b) Category_scheme ==> (('o1, 'o2, 'm1, 'm2, 'a, 'b) Functor, ('o1, 'o2, 'm1, 'm2, 'a, 'b) NatTrans) Category"where "CatExp' A B ≡( Category.Obj = {F . Ftor F : A ⟶ B} , Category.Mor = {η . NatTrans η ∧ NTCatDom η = A ∧ NTCatCod η = B} , Category.Dom = NTDom , Category.Cod = NTCod , Category.Id = IdNatTrans , Category.Comp = λf g. (f ∙ g) )"
definition"CatExp A B ≡ MakeCat(CatExp' A B)"
lemma IdNatTransMapL: assumes NT: "NatTrans f" shows"IdNatTrans (NTDom f) ∙ f = f" proof(rule NatTransExt) show"NatTrans f"using assms . show"NatTrans (IdNatTrans (NTDom f) ∙ f)"using NT by (simp add: NatTransP.NatTransFtor IdNatTransNatTrans IdNatTransCompDefDom NatTransCompNatTrans) show"NTDom (IdNatTrans (NTDom f) ∙ f) = NTDom f"and "NTCod (IdNatTrans (NTDom f) ∙ f) = NTCod f"by (simp add: IdNatTrans_defs NatTransComp_defs)+
{ fix x assume aa: "x ∈ Obj (NTCatDom (IdNatTrans (NTDom f) ∙ f))" show"(IdNatTrans (NTDom f) ∙ f) $$ x = f $$ x" proof- have XObj: "x ∈ Obj(NTCatDom f)"using aa by (simp add: IdNatTrans_defs NatTransComp_defs) have fMap: "f $$ x maps f NTDom f @@ x to NTCod f @@ x"using NT XObj by (simp add: NatTransP.NatTransMapsTo) have"(IdNatTrans (NTDom f) ∙ f) $$ x = (IdNatTrans (NTDom f) $$ x) ;; f (f $$ x)" proof(rule NatTransComp_Comp1) show"x ∈ obj (IdNatTrans (NTDom f))"using XObj by (simp add: IdNatTrans_defs) show"IdNatTrans (NTDom f) ≈>∙ f"using NT by (simp add: IdNatTransCompDefDom) qed alsohave"... = id f (dom f (f $$ x)) ;; f (f $$ x)" using XObj NT fMap by (auto simp add: IdNatTrans_map NTCatDom_def CCCD NTCatCod_def) alsohave"... = f $$ x" proof- have"f $$ x ∈ mor f"using fMap by (auto) thus ?thesis using NT by (simp add: Category.Cidl) qed finallyshow ?thesis . qed
} qed
lemma IdNatTransMapR: assumes NT: "NatTrans f" shows"f ∙ IdNatTrans (NTCod f) = f" proof(rule NatTransExt) show"NatTrans f"using assms . show"NatTrans (f ∙ IdNatTrans (NTCod f))"using NT by (simp add: NatTransP.NatTransFtor IdNatTransNatTrans IdNatTransCompDefCod NatTransCompNatTrans) show"NTDom (f ∙ IdNatTrans (NTCod f)) = NTDom f"and "NTCod (f ∙ IdNatTrans (NTCod f)) = NTCod f"by (simp add: IdNatTrans_defs NatTransComp_defs)+
{ fix x assume aa: "x ∈ Obj (NTCatDom (f ∙ IdNatTrans (NTCod f)))" show"(f ∙ IdNatTrans (NTCod f)) $$ x = f $$ x" proof- have XObj: "x ∈ Obj(NTCatDom f)"using aa by (simp add: NatTransComp_defs) have fMap: "f $$ x maps f NTDom f @@ x to NTCod f @@ x"using NT XObj by (simp add: NatTransP.NatTransMapsTo) have"(f ∙ IdNatTrans (NTCod f)) $$ x = (f $$ x) ;; f (IdNatTrans (NTCod f) $$ x)" using XObj NT by (auto simp add: NatTransComp_Comp2 IdNatTransCompDefCod) alsohave"... = (f $$ x) ;; f (id f (cod f (f $$ x)))" proof- have"x ∈ obj (NTCod f)"using XObj NT by (simp add: IdNatTrans_defs DDDC) moreoverhave"(cod f (f $$ x)) = (NTCod f) @@ x"using fMap by auto ultimatelyhave"(IdNatTrans (NTCod f) $$ x) = (id f (cod f (f $$ x)))" by (simp add: IdNatTrans_map NTCatCod_def) thus ?thesis by simp qed alsohave"... = f $$ x" proof- have"f $$ x ∈ mor f"using fMap by (auto) thus ?thesis using NT by (simp add: Category.Cidr) qed finallyshow ?thesis . qed
} qed
lemma NatTransCompDefined: assumes"f ≈>∙ g"and"g ≈>∙ h" shows"(f ∙ g) ≈>∙ h"and"f ≈>∙ (g ∙ h)" proof- show"(f ∙ g) ≈>∙ h" proof(rule NTCompDefinedI) show"NatTrans (f ∙ g)"and"NatTrans h"using assms by (auto simp add: NatTransCompNatTrans) have"NTCatDom f = NTCatDom h"using assms by (simp add: NTCatDom) thus"NTCatDom h = NTCatDom (f ∙ g)"by (simp add: NatTransComp_defs) have"NTCatCod h = NTCatCod g"using assms by (simp add: NTCatCod) thus"NTCatCod h = NTCatCod (f ∙ g)"by ( simp add: NatTransComp_defs) show"NTCod (f ∙ g) = NTDom h"using assms by (auto simp add: NatTransComp_defs) qed show"f ≈>∙ (g ∙ h)" proof(rule NTCompDefinedI) show"NatTrans f"and"NatTrans (g ∙ h)"using assms by (auto simp add: NatTransCompNatTrans) have"NTCatDom f = NTCatDom g"using assms by (simp add: NTCatDom) thus"NTCatDom (g ∙ h) = NTCatDom f"by (simp add: NatTransComp_defs) have"NTCatCod h = NTCatCod f"using assms by (simp add: NTCatCod) thus"NTCatCod (g ∙ h) = NTCatCod f"by ( simp add: NatTransComp_defs) show"NTCod f = NTDom (g ∙ h)"using assms by (auto simp add: NatTransComp_defs) qed qed
lemma NatTransCompAssoc: assumes"f ≈>∙ g"and"g ≈>∙ h" shows"(f ∙ g) ∙ h = f ∙ (g ∙ h)" proof(rule NatTransExt) show"NatTrans ((f ∙ g) ∙ h)"using assms by (simp add: NatTransCompNatTrans NatTransCompDefined) show"NatTrans (f ∙ (g ∙ h))"using assms by (simp add: NatTransCompNatTrans NatTransCompDefined) show"NTDom (f ∙ g ∙ h) = NTDom (f ∙ (g ∙ h))"and"NTCod (f ∙ g ∙ h) = NTCod (f ∙(g ∙ h))" by(simp add: NatTransComp_defs)+
{ fix x assume aa: "x ∈ obj (f ∙ g ∙ h)"show"((f ∙ g) ∙ h) $$ x = (f ∙ (g ∙ h)) $$ x" proof- have ntd1: "NTCatDom (f ∙ g) = NTCatDom (f ∙ g ∙ h)"and ntd2: "NTCatDom f = NTCatDom (f ∙ g ∙ h)" using assms by (simp add: NatTransCompDefined)+ have obj1: "x ∈ Obj (NTCatDom f)"using aa ntd2 by simp have1: "(f ∙ g) $$ x = (f $$ x) ;; h (g $$ x)"and 2: "(g ∙ h) $$ x = (g $$ x) ;; h (h $$ x)"using obj1 using assms by (auto simp add: NatTransComp_Comp1) have"((f ∙ g) ∙ h) $$ x = ((f ∙ g) $$ x) ;; h (h $$ x)" proof(rule NatTransComp_Comp1) show"x ∈ obj (f ∙ g)"using aa ntd1 by simp show"f ∙ g ≈>∙ h"using assms by (simp add: NatTransCompDefined) qed alsohave"... = ((f $$ x) ;; h (g $$ x)) ;; h (h $$ x)"using1by simp alsohave"... = (f $$ x) ;; h ((g $$ x) ;; h (h $$ x))" proof- have1: "NTCatCod h = NTCatCod f"and2: "NTCatCod h = NTCatCod g"using assms by (simp add: NTCatCod)+ hence"(f $$ x) ≈> h (g $$ x)"using obj1 assms by (simp add: NatTransCompCompDef) moreoverhave"(g $$ x) ≈> h (h $$ x)"using obj1 assms 2by (simp add: NatTransCompCompDef NTCatDom) moreoverhave"Category (NTCatCod h)"using assms by auto ultimatelyshow ?thesis by (simp add: Category.Cassoc) qed alsohave"... = (f $$ x) ;; h ((g ∙ h) $$ x)"using2by simp alsohave"... = (f ∙ (g ∙ h)) $$ x" proof- have"NTCatCod f = NTCatCod h"using assms by (simp add: NTCatCod) moreoverhave"(f ∙ (g ∙ h)) $$ x = (f $$ x) ;; f ((g ∙ h) $$ x)" proof(rule NatTransComp_Comp2) show"x ∈ obj f"using obj1 assms by (simp add: NTCatDom) show"f ≈>∙ g ∙ h"using assms by (simp add: NatTransCompDefined) qed ultimatelyshow ?thesis by simp qed finallyshow ?thesis . qed
} qed
lemma CatExpCatAx: assumes"Category A"and"Category B" shows"Category_axioms (CatExp' A B)" proof(auto simp add: Category_axioms_def)
{ fix f assume"f ∈ mor' A B" thus"dom' A B f ∈ obj' A B"and "cod' A B f ∈ obj' A B" by(auto simp add: CatExp'_def NatTransP.NatTransFtor
NatTransP.NatTransFtor2 NatTransP.NatTransFtorDom NatTransP.NatTransFtorCod DDDC CCCD functor_abbrev_def)
}
{ fix F assume a: "F ∈ obj' A B" show"id' A B F maps' A B F to F" proof(rule MapsToI) have"Ftor F : A ⟶ B"using a by (simp add: CatExp'_def) thus"id' A B F ∈ mor' A B" apply(simp add: CatExp'_def NTCatDom_def NTCatCod_def IdNatTransNatTrans functor_abbrev_def) apply(simp add: IdNatTrans_defs) done show"dom' A B (id' A B F) = F"by (simp add: CatExp'_def IdNatTrans_defs) show"cod' A B (id' A B F) = F"by (simp add: CatExp'_def IdNatTrans_defs) qed
}
{ fix f assume a: "f ∈ mor' A B" show"(id' A B (dom' A B f)) ;;' A B f = f"and "f ;;' A B (id' A B (cod' A B f)) = f" proof(simp_all add: CatExp'_def) have NT: "NatTrans f"using a by (simp add: CatExp'_def) show"IdNatTrans (NTDom f) ∙ f = f"using NT by (simp add:IdNatTransMapL) show"f ∙ IdNatTrans (NTCod f) = f"using NT by (simp add:IdNatTransMapR) qed
}
{ fix f g h assume aa: "f ≈>' A B g"and bb: "g ≈>' A B h"
{ fix f g assume"f ≈>' A B g"hence"f ≈>∙ g" apply(simp only: NTCompDefined_def) by (auto simp add: CatExp'_def)
} hence"f ≈>∙ g"and"g ≈>∙ h"using aa bb by auto thus"f ;;' A B g ;;' A B h = f ;;' A B (g ;;' A B h)" by(simp add: CatExp'_def NatTransCompAssoc)
}
{ fix f g X Y Z assume a: "f maps' A B X to Y"and b: "g maps' A B Y to Z" show"f ;;' A B g maps' A B X to Z" proof(rule MapsToI, auto simp add: CatExp'_def) have nt1: "NatTrans f"and cd1: "NTCatDom f = A" and cc1: "NTCatCod f = B"and d1: "NTDom f = X"and c1: "NTCod f = Y" using a by (auto simp add: CatExp'_def) moreoverhave nt2: "NatTrans g"and cd2: "NTCatDom g = A" and cc2: "NTCatCod g = B"and d2: "NTDom g = Y"and c2: "NTCod g = Z" using b by (auto simp add: CatExp'_def) ultimatelyhave Comp: "f ≈>∙ g"by(auto intro: NTCompDefinedI) thus"NatTrans (f ∙ g)"by (simp add: NatTransCompNatTrans) show"NTCatDom (f ∙ g) = A"using Comp cd1 by (simp add: NTCatDom) show"NTCatCod (f ∙ g) = B"using Comp cc2 by (simp add: NTCatCod) show"NTDom (f ∙ g) = X"using d1 by (simp add: NatTransComp_defs) show"NTCod (f ∙ g) = Z"using c2 by (simp add: NatTransComp_defs) qed
} qed
lemma CatExpCat: "[Category A ; Category B]==> Category (CatExp A B)" by(simp add: CatExpCatAx CatExp_def MakeCat)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.