definition
MapsTo :: "('o,'m,'a) Category_scheme ==> 'm ==> 'o ==> 'o ==> bool" (βΉ_ mapsπ _ to _βΊ [60, 60, 60] 65) where "MapsTo CC f X Y β‘ f β Mor CC β§ Dom CC f = X β§ Cod CC f = Y"
definition
CompDefined :: "('o,'m,'a) Category_scheme ==> 'm ==> 'm ==> bool" (infixlβΉβ>πβΊ65) where "CompDefined CC f g β‘ f β Mor CC β§ g β Mor CC β§ Cod CC f = Dom CC g"
locale ExtCategory = fixes C :: "('o,'m,'a) Category_scheme" (structure) assumes CdomExt: "(Dom C) β extensional (Mor C)" and CcodExt: "(Cod C) β extensional (Mor C)" and CidExt: "(Id C) β extensional (Obj C)" and CcompExt: "(case_prod (Comp C)) β extensional ({(f,g) | f g . f β> g})"
locale Category = ExtCategory + assumes Cdom : "f β mor ==> dom f β obj" and Ccod : "f β mor ==> cod f β obj" and Cidm [dest]: "X β obj ==> (id X) maps X to X" and Cidl : "f β mor ==> id (dom f) ;; f = f" and Cidr : "f β mor ==> f ;; id (cod f) = f" and Cassoc : "[f β> g ; g β> h]==> (f ;; g) ;; h = f ;; (g ;; h)" and Ccompt : "[f maps X to Y ; g maps Y to Z]==> (f ;; g) maps X to Z"
definition
MakeCat :: "('o,'m,'a) Category_scheme ==> ('o,'m,'a) Category_scheme"where "MakeCat C β‘( Obj = Obj C , Mor = Mor C , Dom = restrict (Dom C) (Mor C) , Cod = restrict (Cod C) (Mor C) , Id = restrict (Id C) (Obj C) , Comp = λ f g . (restrict (case_prod (Comp C)) ({(f,g) | f g . f β> g})) (f,g), β¦ = Category.more C )"
lemma MakeCatMapsTo: "f maps X to Y ==> f maps C X to Y" by (auto simp add: MapsTo_def MakeCat_def)
lemma MakeCatComp: "f β> g ==> f ;; C g = f ;; g" by (auto simp add: MapsTo_def MakeCat_def)
lemma MakeCatId: "X β obj==> id X = id C X" by (auto simp add: MapsTo_def MakeCat_def)
lemma MakeCatObj: "obj C = obj" by (simp add: MakeCat_def)
lemma MakeCatMor: "mor C = mor" by (simp add: MakeCat_def)
lemma MakeCatDom: "f β mor==> dom f = dom C f" by (simp add: MakeCat_def)
lemma MakeCatCod: "f β mor==> cod f = cod C f" by (simp add: MakeCat_def)
lemma MakeCatCompDef: "f β> C g = f β> g" by (auto simp add: CompDefined_def MakeCat_def)
lemma MakeCatComp2: "f β> C g ==> f ;; C g = f ;; g" by (simp add: MakeCatCompDef MakeCatComp)
lemma MapsToE[elim]: "[f maps X to Y ; [f β mor ; dom f = X ; cod f = Y]==> R]==> R" by (auto simp add: MapsTo_def)
lemma MapsToI[intro]: "[f β mor ; dom f = X ; cod f = Y]==> f maps X to Y" by (auto simp add: MapsTo_def)
lemma CompDefinedE[elim]: "[f β> g ; [f β mor ; g β mor ; cod f = dom g]==> R]==> R" by (auto simp add: CompDefined_def)
lemma CompDefinedI[intro]: "[f β mor ; g β mor ; cod f = dom g]==> f β> g" by (auto simp add: CompDefined_def)
lemma (in Category) MapsToCompI: assumes"f β> g"shows"(f ;; g) maps (dom f) to (cod g)" proof- have"f maps (dom f) to (dom g)" and"g maps (dom g) to (cod g)"using assms by auto thus ?thesis by (simp add: Ccompt[of f "dom f""dom g" g "cod g"]) qed
lemma MapsToCompDef: assumes"f maps X to Y"and"g maps Y to Z" shows"f β> g" proof(rule CompDefinedI) show"f β mor"and"g β mor"using assms by auto have"cod f = Y"and"dom g = Y"using assms by auto thus"cod f = dom g"by simp qed
lemma (in Category) MapsToMorDomCod: assumes"f β> g" shows"f ;; g β mor"and"dom (f ;; g) = dom f"and"cod (f ;; g) = cod g" proof- have"(f ;; g) maps (dom f) to (cod g)"using assms by (simp add: MapsToCompI) thus"f ;; g β mor"and"dom (f ;; g) = dom f"and"cod (f ;; g) = cod g"by auto qed
lemma (in Category) MapsToObj: assumes"f maps X to Y" shows"X β obj"and"Y β obj" proof- have"dom f = X"and"cod f = Y"and"f β mor"using assms by auto thus"X β obj"and"Y β obj"by (auto simp add: Cdom Ccod) qed
lemma (in Category) IdInj: assumes"X β obj"and"Y β obj"and"id X = id Y" shows"X = Y" proof- have"dom (id X) = dom (id Y)"using assms by simp moreoverhave"dom (id X) = X"and"dom (id Y) = Y"using assms by (auto simp add: MapsTo_def) ultimatelyshow ?thesis by simp qed
lemma (in Category) CompDefComp: assumes"f β> g"and"g β> h" shows"f β> (g ;; h)"and"(f ;; g) β> h" proof(auto simp add: CompDefined_def) show"f β mor"and"h β mor"using assms by auto have1: "g ;; h maps (dom g) to (cod h)" and2: "f ;; g maps (dom f) to (cod g)"using assms by (simp add: MapsToCompI)+ thus"g ;; h β mor"and"f ;; g β mor"by auto have"cod f = dom g"using assms by auto alsohave"... = dom (g ;; h)"using1by auto finallyshow"cod f = dom (g ;; h)" . have"dom h = cod g"using assms by auto alsohave"... = cod (f ;; g)"using2by auto finallyshow"cod (f ;; g) = dom h"by simp qed
lemma (in Category) CatIdInMor: "X β obj ==> id X β mor" by (auto simp add: Cidm)
lemma (in Category) MapsToId: assumes"X β obj"shows"id X β> id X" proof(rule CompDefinedI) have"id X maps X to X"using assms by (simp add: Cidm) thus"id X β mor"and"id X β mor"and"cod (id X) = dom (id X)"by auto qed
lemma (in Category) LeftRightInvUniq: assumes0: "h β> f"and z: "f β> g" assumes1: "f ;; g = id (dom f)" and2: "h ;; f = id (cod f)" shows"h = g" proof- have mor: "h β mor β§ g β mor" and dc : "dom f = cod h β§ cod f = dom g"using0 z by auto thenhave"h = h ;; id (dom f)"by (auto simp add: Simps) alsohave"... = h ;; (f ;; g)"using1by simp+ alsohave"... = (h ;; f) ;; g"using0 z by (simp add: Cassoc) alsohave"... = (id (cod f)) ;; g"using2by simp+ alsohave"... = g"using mor dc by (auto simp add: Simps) finallyshow ?thesis . qed
lemma (in Category) CatIdDomCod: assumes"X β obj" shows"dom (id X) = X"and"cod (id X) = X" proof- have"id X maps X to X"using assms by (simp add: Simps) thus"dom (id X) = X"and"cod (id X) = X"by auto qed
lemma (in Category) CatIdCompId: assumes"X β obj" shows"id X ;; id X = id X" proof- have0: "id X β mor"using assms by (auto simp add: Simps) moreoverhave"cod (id X) = X"using assms by auto moreoverhave"id X ;; id (cod (id X)) = id X"using0by (simp add: Simps) ultimatelyshow ?thesis by simp qed
(*lemmas (in Category) simps2 = simps CatIdCompId Cassoc CatIdDomCod*)
lemma (in Category) CatIdUniqR: assumes iota: "ι maps X to X" and rid: "β f . f β> ι βΆ f ;; ι = f" shows"id X = ι" proof(rule LeftRightInvUniq [of "id X""id X" ι ]) have0: "X β obj"using iota by (auto simp add: Simps) hence"id X maps X to X"by (simp add: Cidm) thus1: "id X β> ι"using iota by (auto simp add: Simps) show"id X β> id X"using0by (auto simp add: Simps) show"(id X) ;; ι = (id (dom (id X)))"using01 rid by (auto simp add: Simps CompDefined_def MapsTo_def) show"(id X) ;; (id X) = (id (cod (id X)))"using0by (auto simp add: CatIdCompId CompDefined_def MapsTo_def) qed
definition
inverse_rel :: "('o,'m,'a) Category_scheme ==> 'm ==> 'm ==> bool" (βΉcinvπ _ _βΊ60) where "inverse_rel C f g β‘ (f β> g) β§ (f ;; g) = (id (dom f)) β§ (g ;; f) = (id (cod f))"
definition
isomorphism :: "('o,'m,'a) Category_scheme ==> 'm ==> bool" (βΉcisoπ _βΊ [70]) where "isomorphism C f β‘β g . inverse_rel C f g"
lemma (in Category) Inverse_relI: "[f β> g ; f ;; g = id (dom f) ; g ;; f = id (cod f)]==> (cinv f g)" by (auto simp add: inverse_rel_def)
lemma (in Category) Inverse_relE[elim]: "[cinv f g ; [f β> g ; f ;; g = id (dom f) ; g ;; f = id (cod f)]==> P]==> P" by (auto simp add: inverse_rel_def)
lemma (in Category) Inverse_relSym: assumes"cinv f g" shows"cinv g f" proof(rule Inverse_relI) have1: "f β> g"using assms by auto show2: "g β> f" proof(rule CompDefinedI) show"g β mor"and0: "f β mor"using assms by auto have"f ;; g maps dom f to cod g"using1by (simp add: MapsToCompI) hence"cod g = cod (f ;; g)"by auto alsohave"... = cod (id (dom f))"using assms by (auto simp add: inverse_rel_def) alsohave"... = dom f" proof- have"dom f β obj"using0by (simp add: Simps) hence"id (dom f) maps (dom f) to (dom f)"by (simp add: Simps) thus ?thesis by auto qed finallyshow2: "cod g = dom f"by simp qed show"g ;; f = id (dom g)"using assms by (auto simp add: inverse_rel_def) show"f ;; g = id (cod g)"using assms 12by (auto simp add: inverse_rel_def) qed
lemma (in Category) InverseUnique: assumes1: "cinv f g" and2: "cinv f h" shows"g = h" proof(rule LeftRightInvUniq [of g f h]) have"cinv g f"using12by (simp only: Inverse_relSym[of f g]) thus"g β> f"and "g ;; f = id (cod f)"using1by auto show"f β> h"using2by auto show"f ;; h = id (dom f)"using2by auto qed
lemma (in Category) InvId: assumes"X β obj"shows"(cinv (id X) (id X))" proof(rule Inverse_relI) show"id X β> id X"using assms by (simp add: Simps) have"dom (id X) = X"and"dom (id X) = X"using assms by (simp add: CatIdDomCod)+ thus"id X ;; id X = id (dom (id X))"and"id X ;; id X = id (cod (id X))" using assms by (simp add: CatIdCompId CatIdDomCod)+ qed
definition
inverse :: "('o,'m,'a) Category_scheme ==> 'm ==> 'm" (βΉCinvπ _βΊ [70]) where "inverse C f β‘ THE g . inverse_rel C f g"
lemma (in Category) inv2Inv: assumes"cinv f g" shows"ciso f"and"Cinv f = g" proof- show"ciso f"using assms by (auto simp add: isomorphism_def) hence"β! g . cinv f g"using assms by (auto simp add: InverseUnique) thus"Cinv f = g"using assms by (auto simp add: inverse_def) qed
lemma (in Category) iso2Inv: assumes"ciso f" shows"cinv f (Cinv f)" proof- have"β! g . cinv f g"using assms by (auto simp add: InverseUnique isomorphism_def) thus ?thesis by (auto simp add: inverse_def intro:theI') qed
lemma (in Category) InvIsMor: "(cinv f g) ==> (f β mor β§ g β mor)" by (auto simp add: inverse_rel_def)
lemma (in Category) IsoIsMor: "ciso f ==> f β mor" by (auto simp add: InvIsMor dest: iso2Inv)
lemma (in Category) InvDomCod: assumes"ciso f" shows"dom (Cinv f) = cod f"and"cod (Cinv f) = dom f"and"Cinv f β mor" proof- have1: "cinv f (Cinv f)"using assms by (auto simp add: iso2Inv) thus"dom (Cinv f) = cod f"by (auto simp add: inverse_rel_def) from1have"cinv (Cinv f) f"by (auto simp add: Inverse_relSym[of f]) thus"cod (Cinv f) = dom f"by (auto simp add: inverse_rel_def) show"Cinv f β mor"using1by (auto simp add: inverse_rel_def) qed
lemma (in Category) IsoCompInv: "ciso f ==> f β> Cinv f" by (auto simp add: IsoIsMor InvDomCod)
lemma (in Category) InvCompIso: "ciso f ==> Cinv f β> f" by (auto simp add: IsoIsMor InvDomCod)
lemma (in Category) IsoInvId1 : "ciso f ==> (Cinv f) ;; f = (id (cod f))" by (auto dest: iso2Inv)
lemma (in Category) IsoInvId2 : "ciso f ==> f ;; (Cinv f) = (id (dom f))" by (auto dest: iso2Inv)
lemma (in Category) IsoCompDef: assumes1: "f β> g"and2: "ciso f"and3: "ciso g" shows"(Cinv g) β> (Cinv f)" proof(rule CompDefinedI) show"Cinv g β mor"and"Cinv f β mor"using assms by (auto simp add: InvDomCod) have"cod (Cinv g) = dom g"using3by (simp add: InvDomCod) alsohave"... = cod f"using1by auto alsohave"... = dom (Cinv f)"using2by (simp add: InvDomCod) finallyshow"cod (Cinv g) = dom (Cinv f)" . qed
lemma (in Category) IsoCompose: assumes1: "f β> g"and2: "ciso f"and3: "ciso g" shows"ciso (f ;; g)"and"Cinv (f ;; g) = (Cinv g) ;; (Cinv f)" proof- have a: "(Cinv g) β> (Cinv f)"using assms by (simp add: IsoCompDef) hence b: "(Cinv g) ;; (Cinv f) maps (dom (Cinv g)) to (cod (Cinv f))"by (simp add: MapsToCompI) hence c: "(Cinv g) ;; (Cinv f) maps (cod g) to (dom f)"using23by (simp add: InvDomCod) have d: "f ;; g maps (dom f) to (cod g)"using1by (simp add: Simps) have"cinv (f ;; g) ((Cinv g) ;; (Cinv f))" proof(auto simp add: inverse_rel_def) show"f ;; g β> (Cinv g) ;; (Cinv f)" proof(rule CompDefinedI) show"f ;; g β mor"using d by auto show"(Cinv g) ;; (Cinv f) β mor"using c by auto have"cod (f ;; g) = cod g"using d by auto alsohave"... = dom (Cinv g)"using assms by (simp add: InvDomCod) alsohave"... = dom ((Cinv g) ;; (Cinv f))"using b by auto finallyshow"cod (f ;; g) = dom ((Cinv g) ;; (Cinv f))" . qed show"f ;; g ;; ((Cinv g) ;; (Cinv f)) = id (dom (f ;; g))" proof- have e: "g β> (Cinv g)"using assms by (simp add: IsoCompInv) have f: "f β mor"using1by auto have"(f ;; g) ;; ((Cinv g) ;; (Cinv f)) = (f ;; (g ;; (Cinv g))) ;; (Cinv f)" using1 e a by (auto simp add: Cassoc CompDefComp) alsohave"... = f ;; (id (dom g)) ;; (Cinv f)"using3by (simp add: IsoInvId2) alsohave"... = f ;; id (cod f) ;; (Cinv f)"using1by (auto simp add: Simps) alsohave"... = f ;; (Cinv f)"using f by (auto simp add: Cidr) alsohave"... = id (dom f)"using2by (simp add: IsoInvId2) alsohave"... = id (dom (f ;; g))"using d by auto finallyshow ?thesis by simp qed show"((Cinv g) ;; (Cinv f)) ;; (f ;; g) = id (cod (f ;; g))" proof- have e: "(Cinv f) β> f"using assms by (simp add: InvCompIso) have f: "g β mor"using1by auto have"((Cinv g) ;; (Cinv f)) ;; (f ;; g) = (Cinv g) ;; (((Cinv f) ;; f) ;; g)" using1 e a by (auto simp add: Cassoc CompDefComp) alsohave"... = (Cinv g) ;; ((id (cod f)) ;; g)"using2by (simp add: IsoInvId1) alsohave"... = (Cinv g) ;; ((id (dom g)) ;; g)"using1by (auto simp add: Simps) alsohave"... = (Cinv g) ;; g"using f by (auto simp add: Cidl) alsohave"... = id (cod g)"using3by (simp add: IsoInvId1) alsohave"... = id (cod (f ;; g))"using d by auto finallyshow ?thesis by simp qed qed thus"ciso (f ;; g)"and"Cinv (f ;; g) = (Cinv g) ;; (Cinv f)"by (auto simp add: inv2Inv) qed
definition"ObjIso C A B β‘β k . (k maps A to B) β§ cisok"
definition
UnitCategory :: "(unit, unit) Category"where "UnitCategory = MakeCat ( Obj = {()} , Mor = {()} , Dom = (λf.()) , Cod = (λf.()) , Id = (λf.()) , Comp = (λf g. ()) )"
lemma [simp]: "Category(UnitCategory)" apply (simp add: UnitCategory_def, rule MakeCat) by (unfold_locales, auto simp add: UnitCategory_def)
definition
OppositeCategory :: "('o,'m,'a) Category_scheme ==> ('o,'m,'a) Category_scheme" (βΉOp _βΊ [65] 65) where "OppositeCategory C β‘( Obj = Obj C , Mor = Mor C , Dom = Cod C , Cod = Dom C , Id = Id C , Comp = (λf g. g ;; f), β¦ = Category.more C )"
lemma OpCatOpCat: "Op (Op C) = C" by (simp add: OppositeCategory_def)
lemma OpCatCatAx: "Category_axioms C ==> Category_axioms (Op C)" by (simp add: OppositeCategory_def Category_axioms_def MapsTo_def CompDefined_def)
lemma OpCatCatExt: "ExtCategory C ==> ExtCategory (Op C)" by (auto simp add: OppositeCategory_def ExtCategory_def MapsTo_def CompDefined_def extensional_def)
lemma OpCatCat: "Category C ==> Category (Op C)" by (intro_locales, simp_all add: Category_def OpCatCatAx OpCatCatExt)
lemma MapsToOp: "f mapsX to Y ==> f maps C Y to X" by (simp add: MapsTo_def OppositeCategory_def)
lemma MapsToOpOp: "f maps C X to Y ==> f mapsY to X" by (simp add: MapsTo_def OppositeCategory_def)
lemma CompDefOp: "f β> g ==> g β> C f" by (simp add: CompDefined_def OppositeCategory_def)
end
Messung V0.5 in Prozent
Β€ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-10)
Β€
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.