
000001| (** Abstract absence datatype and operations *)

000002|

000003| type elem =

000004| | Must

000005| | May

000006|

000007| (* bot : elem *)

000008| let bot = (*[1]*)Must

000009| let is_present = (*[1]*)bot

000010|

000011| (* top : elem *)

000012| let top = (*[1]*)May

000013| let maybe_absent = (*[1]*)top

000014|

000015| (* eq : elem -> elem -> bool *)

000016| let eq (a:elem) a' = (*[4833]*)a = a'

000017|

000018| (* leq : elem -> elem -> bool *)

000019| let leq a a' = match a with

000020| | Must -> (*[187701]*)true

000021| | May -> ((*[6530]*)a' = May)

000022|

000023| (* join : elem -> elem -> elem *)

000024| let join a a' = match a with

000025| | Must -> (*[2633239]*)a'

000026| | May -> (*[163472]*)May

000027|

000028| (* meet : elem -> elem -> elem *)

000029| let meet a a' = match a with

000032|

000033|

000034| (** {3 Pretty printing routine } *)

000035|

000036| (* to_string : elem -> unit *)

000037| let to_string a = match a with

000038| | Must -> "!"

000039| | May -> "?"

000040|

000041| (* pprint : elem -> unit *)

000042| let pprint a = match a with

000043| | Must -> Format.printf "!"

000044| | May -> Format.printf "?"