Theory Abstract_Separation_D
section "Instantiating capDL as a separation algebra."
theory Abstract_Separation_D
imports "../../Sep_Tactics" Types_D "../../Map_Extra"
begin
lemma inter_empty_not_both:
"⟦x ∈ A; A ∩ B = {}⟧ ⟹ x ∉ B"
by fastforce
lemma union_intersection:
"A ∩ (A ∪ B) = A"
"B ∩ (A ∪ B) = B"
"(A ∪ B) ∩ A = A"
"(A ∪ B) ∩ B = B"
by fastforce+
lemma union_intersection1: "A ∩ (A ∪ B) = A"
by (rule inf_sup_absorb)
lemma union_intersection2: "B ∩ (A ∪ B) = B"
by fastforce
lemma restrict_map_disj':
"S ∩ T = {} ⟹ h |` S ⊥ h' |` T"
by (auto simp: map_disj_def restrict_map_def dom_def)
lemma map_add_restrict_comm:
"S ∩ T = {} ⟹ h |` S ++ h' |` T = h' |` T ++ h |` S"
apply (drule restrict_map_disj')
apply (erule map_add_com)
done