Module Pulselib__PulseArithmetic
module AbductiveDomain = Pulselib.PulseAbductiveDomain
val and_nonnegative : Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val and_positive : Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val and_eq_int : Pulselib.PulseBasicInterface.AbstractValue.t -> IR.IntLit.t -> AbductiveDomain.t -> AbductiveDomain.t
type operand
= Pulselib.PulseBasicInterface.PathCondition.operand
=
|
LiteralOperand of IR.IntLit.t
|
AbstractValueOperand of Pulselib.PulseBasicInterface.AbstractValue.t
val eval_binop : Pulselib.PulseBasicInterface.AbstractValue.t -> IR.Binop.t -> operand -> operand -> AbductiveDomain.t -> AbductiveDomain.t
val eval_unop : Pulselib.PulseBasicInterface.AbstractValue.t -> IR.Unop.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val prune_binop : negated:bool -> IR.Binop.t -> operand -> operand -> AbductiveDomain.t -> AbductiveDomain.t
val is_known_zero : AbductiveDomain.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> bool
val is_unsat_cheap : AbductiveDomain.t -> bool
val is_unsat_expensive : AbductiveDomain.t -> AbductiveDomain.t * bool
val has_no_assumptions : AbductiveDomain.t -> bool