Theory ConcreteRTSCategory
theory ConcreteRTSCategory
imports Main RTSCategory
begin
section "Concrete RTS-Categories"
text‹
If we are given a set ‹Obj› of ``objects'', a mapping ‹Hom› that assigns to every two
objects ‹A› and ‹B› an extensional ``hom-RTS'' RTS ‹Hom A B›, a mapping ‹Id› that assigns
to each object ‹A› an ``identity arrow'' ‹Id A› of ‹Hom A B›, and a mapping ‹Comp› that
assigns to every three objects ‹A›, ‹B›, ‹C› a ``composition law''
‹Comp A B C› from ‹Hom B C × Hom A B› to ‹Hom A B›, subject to suitable identity and
associativity conditions, then we can form from this data an RTS-category whose
underlying set of arrows is the disjoint union of the sets of arrows of the hom-RTS's.
›
locale concrete_rts_category =
fixes obj_type :: "'O itself"
and arr_type :: "'A itself"
and Obj :: "'O set"
and Hom :: "'O ⇒ 'O ⇒ 'A resid"
and Id :: "'O ⇒ 'A"
and Comp :: "'O ⇒ 'O ⇒ 'O ⇒ 'A ⇒ 'A ⇒ 'A"
assumes rts_Hom: "⟦ A ∈ Obj; B ∈ Obj ⟧ ⟹ extensional_rts (Hom A B)"
and binary_simulation_Comp:
"⟦ A ∈ Obj; B ∈ Obj; C ∈ Obj ⟧
⟹ binary_simulation
(Hom B C) (Hom A B) (Hom A C) (λ(t, u). Comp A B C t u)"
and ide_Id: "A ∈ Obj ⟹ residuation.ide (Hom A A) (Id A)"
and Comp_Hom_Id: "⟦ A ∈ Obj; B ∈ Obj; residuation.arr (Hom A B) t ⟧
⟹ Comp A A B t (Id A) = t"
and Comp_Id_Hom: "⟦ A ∈ Obj; B ∈ Obj; residuation.arr (Hom A B) u ⟧
⟹ Comp A B B (Id B) u = u"
and Comp_assoc: "⟦ A ∈ Obj; B ∈ Obj; C ∈ Obj; D ∈ Obj;
residuation.arr (Hom C D) t; residuation.arr (Hom B C) u;
residuation.arr (Hom A B) v ⟧ ⟹
Comp A B D (Comp B C D t u) v =
Comp A C D t (Comp A B C u v)"
begin