Theory Omega_Catoid
section ‹$\omega$-Catoids›
theory Omega_Catoid
imports "Two_Catoid"
begin
subsection ‹Indexed catoids.›
text ‹We add an index to the operations of catoids.›
class imultimagma =
fixes imcomp :: "'a ⇒ nat ⇒ 'a ⇒ 'a set" (‹_⊙ ⇘_⇙ _› [70,70,70]70)
definition (in imultimagma) iconv :: "'a set ⇒ nat ⇒ 'a set ⇒ 'a set" (‹_⋆⇘_⇙_›[70,70,70]70) where
"X ⋆⇘i⇙ Y = (⋃x ∈ X. ⋃y ∈ Y. x ⊙⇘i⇙ y)"
class imultisemigroup = imultimagma +
assumes assoc: "(⋃v ∈ y ⊙⇘i⇙ z. x ⊙⇘i⇙ v) = (⋃v ∈ x ⊙⇘i⇙ y. v ⊙⇘i⇙ z)"
begin
sublocale ims: multisemigroup "λx y. x ⊙⇘i⇙ y"
by unfold_locales (simp add: local.assoc)
abbreviation "DD ≡ ims.Δ"
lemma iconv_prop: "X ⋆⇘i⇙ Y ≡ ims.conv i X Y"
by (simp add: local.iconv_def multimagma.conv_def)
end
class st_imultimagma = imultimagma +
fixes src :: "nat ⇒ 'a ⇒ 'a"
and tgt :: "nat ⇒ 'a ⇒ 'a"
assumes Dst: "x ⊙⇘i⇙ y ≠ {} ⟹ tgt i x = src i y"
and src_absorb [simp]: "(src i x) ⊙⇘i⇙ x = {x}"
and tgt_absorb [simp]: "x ⊙⇘i⇙ (tgt i x) = {x}"
begin
lemma inst: "(src 1 x) ⊙⇘1⇙ x = {x}"
by simp