000001| (** Abstract number datatype and operations *)
000002|
000003| type elem =
000004| | Bot
000005| | Top
000006|
000007| (* bot : elem *)
000008| let bot = (*[1]*)Bot
000009|
000010| (* top : elem *)
000011| let top = (*[1]*)Top
000012|
000013| (* eq : elem -> elem -> bool *)
000014| let eq (a:elem) a' = (*[2]*)a = a'
000015|
000016| (* leq : elem -> elem -> bool *)
000017| let leq a a' = match a with
000018| | Bot -> (*[403775]*)true
000019| | Top -> ((*[28417]*)a' = Top)
000020|
000021| (* join : elem -> elem -> elem *)
000022| let join a a' = match a with
000023| | Bot -> (*[6228406]*)a'
000024| | Top -> (*[322424]*)Top
000025|
000026| (* meet : elem -> elem -> elem *)
000027| let meet a a' = match a with
000028| | Bot -> (*[170]*)Bot
000029| | Top -> (*[305]*)a'
000030|
000031|
000032| (** {3 Pretty printing routine } *)
000033|
000034| (* to_string : elem -> unit *)
000035| let to_string a = match a with
000036| | Bot -> "Bot"
000037| | Top -> "Top"
000038|
000039| (* pprint : elem -> unit *)
000040| let pprint a = match a with
000041| | Bot -> Format.printf "Bot"
000042| | Top -> Format.printf "Top"