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