Invariant
Invariants for witnesses.
module ExpLat : sig ... end
Symbolic (and fully syntactic) expression "lattice".
Lift ExpLat
such that join/meet folds don't introduce excessive || 0|
or && 1
expressions.
module N : sig ... end
include sig ... end
val hash : t -> int
val show : [< `Bot | `Lifted of ExpLat.t | `Top ] -> string
val pretty : unit -> t -> Printable.Pretty.doc
val printXml :
'a BatInnerIO.output ->
[< `Bot | `Lifted of ExpLat.t | `Top ] ->
unit
val to_yojson : [< `Bot | `Lifted of ExpLat.t | `Top ] -> Yojson.Safe.t
val relift : [< `Bot | `Lifted of ExpLat.t | `Top Lifted ] as 'a -> 'a
val arbitrary : unit -> [ `Bot | `Lifted of ExpLat.t | `Top ] QCheck.arbitrary
val join : [< `Bot | `Lifted of ExpLat.t | `Top Lifted Top ] as 'a -> 'a -> 'a
val meet : [< `Bot | `Lifted of ExpLat.t | `Top Bot Lifted ] as 'a -> 'a -> 'a
val narrow : [> `Bot | `Lifted of ExpLat.t | `Top ] as 'a -> 'a -> 'a
val (&&) : [< `Bot | `Lifted of ExpLat.t | `Top Bot Lifted ] as 'a -> 'a -> 'a
val (||) : [< `Bot | `Lifted of ExpLat.t | `Top Lifted Top ] as 'a -> 'a -> 'a
val default_context : context