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 "?"