Theory DBM_Constraint_Systems
chapter ‹DBMs as Constraint Systems›
theory DBM_Constraint_Systems
imports
DBM_Operations
DBM_Normalization
begin
section ‹Misc›
lemma Max_le_MinI:
assumes "finite S" "finite T" "S ≠ {}" "T ≠ {}" "⋀x y. x ∈ S ⟹ y ∈ T ⟹ x ≤ y"
shows "Max S ≤ Min T" by (simp add: assms)
lemma Min_insert_cases:
assumes "x = Min (insert a S)" "finite S"
obtains (default) "x = a" | (elem) "x ∈ S"
by (metis Min_in assms finite.insertI insertE insert_not_empty)
lemma cval_add_simp[simp]:
"(u ⊕ d) x = u x + d"
unfolding cval_add_def by simp
lemmas [simp] = any_le_inf
lemma Le_in_between:
assumes "a < b"
obtains d where "a ≤ Le d" "Le d ≤ b"
using assms by atomize_elim (cases a; cases b; auto)
lemma DBMEntry_le_to_sum:
fixes e e' :: "'t :: time DBMEntry"
assumes "e' ≠ ∞" "e ≤ e'"
shows "- e' + e ≤ 0"
using assms by (cases e; cases e') (auto simp: DBM.neutral DBM.add uminus)
lemma DBMEntry_le_add:
fixes a b c :: "'t :: time DBMEntry"
assumes "a ≤ b + c" "c ≠ ∞"
shows "-c + a ≤ b"
using assms
by (cases a; cases b; cases c) (auto simp: DBM.neutral DBM.add uminus algebra_simps)
lemma DBM_triv_emptyI:
assumes "M 0 0 < 0"
shows "[M]⇘v,n⇙ = {}"
using assms
unfolding DBM_zone_repr_def DBM_val_bounded_def DBM.less_eq[symmetric] DBM.neutral by auto
section ‹Definition and Semantics of Constraint Systems›