
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"