InvariantInvariants for witnesses.
module ExpLat : sig ... endSymbolic (and fully syntactic) expression "lattice".
Lift ExpLat such that join/meet folds don't introduce excessive || 0| or && 1 expressions.
module N : sig ... endinclude sig ... endval hash : t -> intval show : [< `Bot | `Lifted of ExpLat.t | `Top ] -> stringval pretty : unit -> t -> Printable.Pretty.docval printXml :
'a BatInnerIO.output ->
[< `Bot | `Lifted of ExpLat.t | `Top ] ->
unitval to_yojson : [< `Bot | `Lifted of ExpLat.t | `Top ] -> Yojson.Safe.tval relift : [< `Bot | `Lifted of ExpLat.t | `Top Lifted ] as 'a -> 'aval arbitrary : unit -> [ `Bot | `Lifted of ExpLat.t | `Top ] QCheck.arbitraryval join : [< `Bot | `Lifted of ExpLat.t | `Top Lifted Top ] as 'a -> 'a -> 'aval meet : [< `Bot | `Lifted of ExpLat.t | `Top Bot Lifted ] as 'a -> 'a -> 'aval narrow : [> `Bot | `Lifted of ExpLat.t | `Top ] as 'a -> 'a -> 'aval (&&) : [< `Bot | `Lifted of ExpLat.t | `Top Bot Lifted ] as 'a -> 'a -> 'aval (||) : [< `Bot | `Lifted of ExpLat.t | `Top Lifted Top ] as 'a -> 'a -> 'aval default_context : context