Theory Domain_Quantale
section ‹Component for Recursive Programs›
theory Domain_Quantale
imports KAD.Modal_Kleene_Algebra
begin
text ‹This component supports the verification and step-wise refinement of recursive programs
in a partial correctness setting.›
notation
times (infixl ‹⋅› 70) and
bot (‹⊥›) and
top (‹⊤›) and
inf (infixl ‹⊓› 65) and
sup (infixl ‹⊔› 65)
subsection ‹Lattice-Ordered Monoids with Domain›
class bd_lattice_ordered_monoid = bounded_lattice + distrib_lattice + monoid_mult +
assumes left_distrib: "x ⋅ (y ⊔ z) = x ⋅ y ⊔ x ⋅ z"
and right_distrib: "(x ⊔ y) ⋅ z = x ⋅ z ⊔ y ⋅ z"
and bot_annil [simp]: "⊥ ⋅ x = ⊥"
and bot_annir [simp]: "x ⋅ ⊥ = ⊥"
begin
sublocale semiring_one_zero "(⊔)" "(⋅)" "1" "bot"
by (standard, auto simp: sup.assoc sup.commute sup_left_commute left_distrib right_distrib sup_absorb1)