object ModuloArithmetic extends Theory
Theory for performing bounded modulo-arithmetic (arithmetic modulo some number N). This in particular includes bit-vector/machine arithmetic.
- Alphabetic
- By Inheritance
- ModuloArithmetic
- Theory
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- class BVNAryOp extends IndexedBVOp
- class BVOrder extends SortedPredicate
- abstract class IndexedBVOp extends SortedIFunction
Generic class to represent families of functions, indexed by a vector of bit-widths.
- case class ModSort(lower: IdealInt, upper: IdealInt) extends ProxySort with TheorySort with Product with Serializable
Modulo sorts, representing the interval
[lower, upper]
with wrap-around arithmetic. - class ShiftFunction extends SortedIFunction
- class ShiftPredicate extends SortedPredicate
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val MultTheory: nia.GroebnerMultiplication.type
- val _bv_extract: Predicate
- val _l_shift_cast: ShiftPredicate
- val _mod_cast: SortedPredicate
- val _r_shift_cast: ShiftPredicate
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- val axioms: Conjunction
Axioms defining the theory; such axioms are simply added as formulae to the problem to be proven, and thus handled using the standard reasoning techniques (including e-matching).
Axioms defining the theory; such axioms are simply added as formulae to the problem to be proven, and thus handled using the standard reasoning techniques (including e-matching).
- Definition Classes
- ModuloArithmetic → Theory
- def bv(width: Int, num: IdealInt): ITerm
- val bv_add: BVNAryOp
- val bv_and: BVNAryOp
- val bv_ashr: BVNAryOp
- val bv_comp: BVComp.type
- val bv_concat: BVConcat.type
- val bv_extract: BVExtract.type
- val bv_lshr: BVNAryOp
- val bv_mul: BVNAryOp
- val bv_neg: BVNAryOp
- val bv_not: BVNAryOp
- val bv_or: BVNAryOp
- val bv_sdiv: BVNAryOp
- val bv_shl: BVNAryOp
- val bv_sle: BVOrder
- val bv_slt: BVOrder
- val bv_smod: BVNAryOp
- val bv_srem: BVNAryOp
- val bv_sub: BVNAryOp
- val bv_udiv: BVNAryOp
- val bv_ule: BVOrder
- val bv_ult: BVOrder
- val bv_urem: BVNAryOp
- val bv_xnor: BVNAryOp
- val bv_xor: BVNAryOp
- def bvadd(t1: ITerm, t2: ITerm): ITerm
- def bvand(t1: ITerm, t2: ITerm): ITerm
- def bvashr(t1: ITerm, t2: ITerm): ITerm
- def bvcomp(t1: ITerm, t2: ITerm): ITerm
- def bvlshr(t1: ITerm, t2: ITerm): ITerm
- def bvmul(t1: ITerm, t2: ITerm): ITerm
- def bvneg(t: ITerm): ITerm
- def bvnot(t: ITerm): ITerm
- def bvor(t1: ITerm, t2: ITerm): ITerm
- def bvsdiv(t1: ITerm, t2: ITerm): ITerm
- def bvsge(t1: ITerm, t2: ITerm): IFormula
- def bvsgt(t1: ITerm, t2: ITerm): IFormula
- def bvshl(t1: ITerm, t2: ITerm): ITerm
- def bvsle(t1: ITerm, t2: ITerm): IFormula
- def bvslt(t1: ITerm, t2: ITerm): IFormula
- def bvsmod(t1: ITerm, t2: ITerm): ITerm
- def bvsrem(t1: ITerm, t2: ITerm): ITerm
- def bvsub(t1: ITerm, t2: ITerm): ITerm
- def bvudiv(t1: ITerm, t2: ITerm): ITerm
- def bvuge(t1: ITerm, t2: ITerm): IFormula
- def bvugt(t1: ITerm, t2: ITerm): IFormula
- def bvule(t1: ITerm, t2: ITerm): IFormula
- def bvult(t1: ITerm, t2: ITerm): IFormula
- def bvurem(t1: ITerm, t2: ITerm): ITerm
- def bvxnor(t1: ITerm, t2: ITerm): ITerm
- def bvxor(t1: ITerm, t2: ITerm): ITerm
- def cast2Int(t: ITerm): ITerm
Cast a term to an integer term.
- def cast2Interval(lower: IdealInt, upper: IdealInt, t: ITerm): ITerm
Cast a term to an integer interval, with modulo semantics.
- def cast2SignedBV(bits: Int, t: ITerm): ITerm
Cast a term to a signed bit-vector term.
- def cast2Sort(sort: ModSort, t: ITerm): ITerm
Cast a term to a modulo sort.
- def cast2UnsignedBV(bits: Int, t: ITerm): ITerm
Cast a term to an unsigned bit-vector term.
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- def concat(t1: ITerm, t2: ITerm): ITerm
- val debug: Boolean
- Attributes
- protected[bitvectors]
- val dependencies: Iterable[Theory]
Optionally, other theories that this theory depends on.
Optionally, other theories that this theory depends on. Specified dependencies will be loaded before this theory, but the preprocessors of the dependencies will be called after the preprocessor of this theory.
- Definition Classes
- ModuloArithmetic → Theory
- val directlyEncodeExtract: Boolean
- Attributes
- protected[bitvectors]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def evalExtract(start: IdealInt, end: IdealInt, number: IdealInt): IdealInt
Evaluate
bv_extract
with concrete arguments - def evalFun(f: IFunApp): Option[ITerm]
Optionally, a function evaluating theory functions applied to concrete arguments, represented as constructor terms.
Optionally, a function evaluating theory functions applied to concrete arguments, represented as constructor terms.
- Definition Classes
- ModuloArithmetic → Theory
- def evalModCast(lower: IdealInt, upper: IdealInt, number: IdealInt): IdealInt
Evaluate
mod_cast
with concrete arguments - def evalPred(a: IAtom): Option[Boolean]
Optionally, a function evaluating theory predicates applied to concrete arguments, represented as constructor terms.
Optionally, a function evaluating theory predicates applied to concrete arguments, represented as constructor terms.
- Definition Classes
- ModuloArithmetic → Theory
- def evaluatingSimplifier(t: IExpression): IExpression
A simplification function that applies the methods
evalFun
andevalPred
to some given expression (but not recursively).A simplification function that applies the methods
evalFun
andevalPred
to some given expression (but not recursively). This is used in theTheory.postSimplifiers
methods.- Definition Classes
- Theory
- def extend(order: TermOrder): TermOrder
Add the symbols defined by this theory to the
order
Add the symbols defined by this theory to the
order
- Definition Classes
- Theory
- def extract(begin: Int, end: Int, t: ITerm): ITerm
- val functionPredicateMapping: List[(SortedIFunction, Predicate)]
Mapping of interpreted functions to interpreted predicates, used translating input ASTs to internal ASTs (the latter only containing predicates).
Mapping of interpreted functions to interpreted predicates, used translating input ASTs to internal ASTs (the latter only containing predicates).
- Definition Classes
- ModuloArithmetic → Theory
- val functionTranslation: Map[IFunction, Predicate]
- val functionalPredicates: Set[Predicate]
Information which of the predicates satisfy the functionality axiom; at some internal points, such predicates can be handled more efficiently
Information which of the predicates satisfy the functionality axiom; at some internal points, such predicates can be handled more efficiently
- Definition Classes
- ModuloArithmetic → Theory
- val functions: List[SortedIFunction]
Interpreted functions of the theory
Interpreted functions of the theory
- Definition Classes
- ModuloArithmetic → Theory
- def generateDecoderData(model: Conjunction): Option[TheoryDecoderData]
If this theory defines any
Theory.Decoder
, which can translate model data into some theory-specific representation, this function can be overridden to pre-compute required data from a model.If this theory defines any
Theory.Decoder
, which can translate model data into some theory-specific representation, this function can be overridden to pre-compute required data from a model.- Definition Classes
- Theory
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def getLowerUpper(arguments: Seq[Term]): (IdealInt, IdealInt)
- Attributes
- protected[bitvectors]
- def getModulus(a: Atom): IdealInt
- Attributes
- protected[bitvectors]
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def iPostprocess(f: IFormula, signature: Signature): IFormula
Optionally, a post-processor that is applied to formulas output by the prover, for instance to interpolants or the result of quantifier elimination.
Optionally, a post-processor that is applied to formulas output by the prover, for instance to interpolants or the result of quantifier elimination. This method will be applied to the formula after calling
Internal2Inputabsy
.- Definition Classes
- ModuloArithmetic → Theory
- def iPreprocess(f: IFormula, signature: Signature): (IFormula, Signature)
Optionally, a pre-processor that is applied to formulas over this theory, prior to sending the formula to a prover.
Optionally, a pre-processor that is applied to formulas over this theory, prior to sending the formula to a prover. This method will be applied very early in the translation process.
- Definition Classes
- ModuloArithmetic → Theory
- val int_cast: MonoSortedIFunction
Function to map the modulo-sorts back to integers.
Function to map the modulo-sorts back to integers. Semantically this is just the identify function
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isSoundForSat(theories: Seq[Theory], config: Theory.SatSoundnessConfig.Value): Boolean
Check whether we can tell that the given combination of theories is sound for checking satisfiability of a problem, i.e., if proof construction ends up in a dead end, can it be concluded that a problem is satisfiable.
Check whether we can tell that the given combination of theories is sound for checking satisfiability of a problem, i.e., if proof construction ends up in a dead end, can it be concluded that a problem is satisfiable.
- Definition Classes
- ModuloArithmetic → Theory
- val l_shift_cast: ShiftFunction
Function for multiplying any number
t
with2^n
and mapping to an interval [lower, upper].Function for multiplying any number
t
with2^n
and mapping to an interval [lower, upper]. The function is applied asl_shift_cast(lower, upper, t, n)
. - val mod_cast: SortedIFunction
Function for mapping any number to an interval [lower, upper].
Function for mapping any number to an interval [lower, upper]. The function is applied as
mod_cast(lower, upper, number)
- val modelGenPredicates: Set[Predicate]
Optionally, a set of predicates used by the theory to tell the
PresburgerModelFinder
about terms that will be handled exclusively by this theory.Optionally, a set of predicates used by the theory to tell the
PresburgerModelFinder
about terms that will be handled exclusively by this theory. If a proof goal in model generation mode contains an atomp(x)
, forp
in this set, then thePresburgerModelFinder
will ignorex
when assigning concrete values to symbols.- Definition Classes
- Theory
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- val order: TermOrder
- val otherPreds: List[BVOrder]
- val plugin: Some[ModPlugin.type]
Optionally, a plug-in implementing reasoning in this theory
Optionally, a plug-in implementing reasoning in this theory
- Definition Classes
- ModuloArithmetic → Theory
- def postSimplifiers: Seq[(IExpression) => IExpression]
Optionally, simplifiers that are applied to formulas output by the prover, for instance to interpolants or the result of quantifier.
Optionally, simplifiers that are applied to formulas output by the prover, for instance to interpolants or the result of quantifier. Such simplifiers are invoked by
ap.parser.Simplifier
. By default, this list will only include theevaluatingSimplifier
.- Definition Classes
- Theory
- def postprocess(f: Conjunction, order: TermOrder): Conjunction
Optionally, a post-processor that is applied to formulas output by the prover, for instance to interpolants or the result of quantifier elimination.
Optionally, a post-processor that is applied to formulas output by the prover, for instance to interpolants or the result of quantifier elimination. This method will be applied to the raw formulas, before calling
Internal2Inputabsy
.- Definition Classes
- Theory
- def pow2(bits: IdealInt): IdealInt
- Attributes
- protected[bitvectors]
- def pow2(bits: Int): IdealInt
- Attributes
- protected[bitvectors]
- def pow2MinusOne(bits: IdealInt): IdealInt
- Attributes
- protected[bitvectors]
- def pow2MinusOne(bits: Int): IdealInt
- Attributes
- protected[bitvectors]
- def pow2Mod(bits: IdealInt, modulus: IdealInt): IdealInt
- Attributes
- protected[bitvectors]
- val preAxioms: Formula
- val predicateMatchConfig: PredicateMatchConfig
Information how interpreted predicates should be handled for e-matching.
Information how interpreted predicates should be handled for e-matching.
- Definition Classes
- ModuloArithmetic → Theory
- val predicates: Seq[Predicate]
Interpreted predicates of the theory
Interpreted predicates of the theory
- Definition Classes
- ModuloArithmetic → Theory
- def preprocess(f: Conjunction, order: TermOrder): Conjunction
Optionally, a pre-processor that is applied to formulas over this theory, prior to sending the formula to a prover.
Optionally, a pre-processor that is applied to formulas over this theory, prior to sending the formula to a prover.
- Definition Classes
- ModuloArithmetic → Theory
- val r_shift_cast: ShiftFunction
Function for dividing any number
t
by2^n
, rounding towards negative, and mapping to an interval [lower, upper].Function for dividing any number
t
by2^n
, rounding towards negative, and mapping to an interval [lower, upper]. The function is applied asr_shift_cast(lower, upper, t, n)
. - val reducerPlugin: ReducerPluginFactory
Optionally, a plugin for the reducer applied to formulas both before and during proving.
Optionally, a plugin for the reducer applied to formulas both before and during proving.
- Definition Classes
- ModuloArithmetic → Theory
- def shiftLeft(sort: ModSort, shifted: ITerm, bits: ITerm): ITerm
Shift the term
shifted
a number of bits to the left, staying within the given sort. - def shiftRight(sort: ModSort, shifted: ITerm, bits: ITerm): ITerm
Shift the term
shifted
a number of bits to the right, staying within the given sort. - def sign_extend(addWidth: Int, t: ITerm): ITerm
- val singleInstantiationPredicates: Set[Predicate]
When instantiating existentially quantifier formulas,
EX phi
, at most one instantiation is necessary provided that all predicates inphi
are contained in this set.When instantiating existentially quantifier formulas,
EX phi
, at most one instantiation is necessary provided that all predicates inphi
are contained in this set.- Definition Classes
- ModuloArithmetic → Theory
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- ModuloArithmetic → AnyRef → Any
- val totalityAxioms: Conjunction
Additional axioms that are included if the option
+genTotalityAxioms
is given to Princess.Additional axioms that are included if the option
+genTotalityAxioms
is given to Princess.- Definition Classes
- ModuloArithmetic → Theory
- lazy val transitiveDependencies: Iterable[Theory]
Dependencies closed under transitivity, i.e., also including the dependencies of dependencies.
Dependencies closed under transitivity, i.e., also including the dependencies of dependencies.
- Definition Classes
- Theory
- val triggerRelevantFunctions: Set[IFunction]
A list of functions that should be considered in automatic trigger generation
A list of functions that should be considered in automatic trigger generation
- Definition Classes
- ModuloArithmetic → Theory
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- def zero_extend(addWidth: Int, t: ITerm): ITerm
- val zero_extend: ZeroExtend.type
- object BVComp extends IndexedBVOp
- object BVConcat extends IndexedBVOp
- object BVExtract extends IndexedBVOp
- object SignedBVSort
Object to create and recognise modulo sorts representing signed bit-vectors.
- object UnsignedBVSort
Object to create and recognise modulo sorts representing unsigned bit-vectors.
- object ZeroExtend extends IndexedBVOp
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)