123456789101112131415161718192021222324252627282930313233343536373839404142434445464748(** Boolean domains. *)moduleBool=structincludeBasetype.RawBools(* type t = bool
let equal = Bool.equal
let compare = Bool.compare
let relift x = x
let arbitrary () = QCheck.bool *)letpretty_diff()(x,y)=GoblintCil.Pretty.dprintf"%s: %a not leq %a"(name())prettyxprettyyendmoduleMayBool:Lattice.Swithtypet=bool=structincludeBoolletbot()=falseletis_botx=x=falselettop()=trueletis_topx=x=trueletleqxy=x==y||yletjoin=(||)letwiden=(||)letmeet=(&&)letnarrow=(&&)endmoduleMustBool:Lattice.Swithtypet=bool=structincludeBoolletbot()=trueletis_botx=x=truelettop()=falseletis_topx=x=falseletleqxy=x==y||xletjoin=(&&)letwiden=(&&)letmeet=(||)letnarrow=(||)endmoduleFlatBool:Lattice.Swithtypet=[`Bot|`Liftedofbool|`Top]=Lattice.FlatConf(structincludePrintable.DefaultConflettop_name="?"letbot_name="-"end)(Bool)