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)