Module Polynomials.NonNegativePolynomial

include IStdlib.PrettyPrintable.PrintableType
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
type degree_with_term = (UnreachableTraces.tDegree.t * NonNegativeNonTopPolynomial.tTopTraces.t) Absint.AbstractDomain.Types.below_above
val pp_hum : Stdlib.Format.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool
val top : t
val of_unreachable : IBase.Location.t -> t
val zero : t
val one : ?⁠autoreleasepool_trace:BO.Bounds.BoundTrace.t -> unit -> t
val of_int_exn : ?⁠autoreleasepool_trace:BO.Bounds.BoundTrace.t -> int -> t
val is_symbolic : t -> bool
val is_top : t -> bool
val is_unreachable : t -> bool
val is_zero : t -> bool
val is_one : t -> bool
val of_non_negative_bound : ?⁠degree_kind:DegreeKind.t -> Bounds.NonNegativeBound.t -> t
val of_func_ptr : Symb.SymbolPath.partial -> IBase.Location.t -> t
val plus : t -> t -> t
val mult_unreachable : t -> t -> t

if one of the operands is unreachable, the result is unreachable

val mult : t -> t -> t
val mult_loop : iter:t -> body:t -> t
val min_default_left : t -> t -> t
val subst : IR.Procname.t -> IBase.Location.t -> t -> Bounds.Bound.eval_sym -> FuncPtr.Set.eval_func_ptrs -> (IR.Procname.t -> t option) -> default_closure_cost:Ints.NonNegativeInt.t -> t
val degree : t -> Degree.t option
val degree_str : t -> string
val compare_by_degree : t -> t -> int
val pp_degree : only_bigO:bool -> Stdlib.Format.formatter -> degree_with_term -> unit
val polynomial_traces : ?⁠is_autoreleasepool_trace:bool -> t -> Absint.Errlog.loc_trace
val encode : t -> string
val decode : string -> t
val get_degree_with_term : t -> degree_with_term