Theory Graph.StampLattice
section ‹Stamps: Type and Range Information›
theory StampLattice
imports
Values
HOL.Lattices
begin
subsection ‹Void Stamp›
text ‹
The VoidStamp represents a type with no associated values.
The VoidStamp lattice is therefore a simple single element lattice.
›
datatype void =
VoidStamp
instantiation void :: order
begin
definition less_eq_void :: "void ⇒ void ⇒ bool" where
"less_eq_void a b = True"
definition less_void :: "void ⇒ void ⇒ bool" where
"less_void a b = False"
instance
apply standard
apply (simp add: less_eq_void_def less_void_def)+
by (metis (full_types) void.exhaust)
end
instantiation void :: semilattice_inf
begin
definition inf_void :: "void ⇒ void ⇒ void" where
"inf_void a b = VoidStamp"
instance
apply standard
by (simp add: less_eq_void_def)+
end
instantiation void :: semilattice_sup
begin
definition sup_void :: "void ⇒ void ⇒ void" where
"sup_void a b = VoidStamp"
instance
apply standard
by (simp add: less_eq_void_def)+
end
instantiation void :: bounded_lattice
begin
definition bot_void :: "void" where
"bot_void = VoidStamp"
definition top_void :: "void" where
"top_void = VoidStamp"
instance
apply standard
by (simp add: less_eq_void_def)+
end
text ‹Definition of the stamp type›