KContext

open class KContext(val operationMode: KContext.OperationMode = CONCURRENT, val astManagementMode: KContext.AstManagementMode = GC, val simplificationMode: KContext.SimplificationMode = SIMPLIFY, val printerParams: PrinterParams = PrinterParams()) : AutoCloseable

Constructors

Link copied to clipboard
fun KContext(operationMode: KContext.OperationMode = CONCURRENT, astManagementMode: KContext.AstManagementMode = GC, simplificationMode: KContext.SimplificationMode = SIMPLIFY, printerParams: PrinterParams = PrinterParams())

Types

Link copied to clipboard

Enable or disable Garbage Collection of unused KSMT expressions.

Link copied to clipboard

Allow or disallow concurrent execution of KContext operations (e.g. expression creation)

Link copied to clipboard

Enable or disable expression simplification during expression creation.

Functions

Link copied to clipboard
Link copied to clipboard
open fun <A : KArraySortBase<R>, R : KSort> arraySortDefaultValue(sort: A): KExpr<A>
Link copied to clipboard
Link copied to clipboard
open fun <S : KBvSort> bvSortDefaultValue(sort: S): KExpr<S>
Link copied to clipboard
open override fun close()
Link copied to clipboard
operator fun <T : KArithSort> KExpr<T>.div(other: KExpr<T>): KExpr<T>
Link copied to clipboard
fun ensureContextMatch(vararg args: KAst)
fun ensureContextMatch(ast0: KAst, ast1: KAst)
fun ensureContextMatch(ast0: KAst, ast1: KAst, ast2: KAst)
Link copied to clipboard
infix fun <T : KSort> KExpr<T>.eq(other: KExpr<T>): KExpr<KBoolSort>
Link copied to clipboard
open fun <S : KFpSort> fpSortDefaultValue(sort: S): KExpr<S>
Link copied to clipboard
infix fun <T : KArithSort> KExpr<T>.ge(other: KExpr<T>): KExpr<KBoolSort>
Link copied to clipboard
infix fun <T : KArithSort> KExpr<T>.gt(other: KExpr<T>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
infix fun <T : KArithSort> KExpr<T>.le(other: KExpr<T>): KExpr<KBoolSort>
Link copied to clipboard
infix fun <T : KArithSort> KExpr<T>.lt(other: KExpr<T>): KExpr<KBoolSort>
Link copied to clipboard
operator fun <T : KArithSort> KExpr<T>.minus(other: KExpr<T>): KExpr<T>
Link copied to clipboard
fun mkAnd(vararg args: KExpr<KBoolSort>): KExpr<KBoolSort>

open fun mkAnd(args: List<KExpr<KBoolSort>>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>

Create boolean AND expression.

open fun mkAnd(lhs: KExpr<KBoolSort>, rhs: KExpr<KBoolSort>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>

Create boolean binary AND expression.

Link copied to clipboard
Link copied to clipboard

Create boolean AND expression.

Create boolean binary AND expression.

Link copied to clipboard
open fun <T : KSort> mkApp(decl: KDecl<T>, args: List<KExpr<*>>): KApp<T, *>

Create function app expression.

Link copied to clipboard
fun <T : KArithSort> mkArithAdd(vararg args: KExpr<T>): KExpr<T>

open fun <T : KArithSort> mkArithAdd(args: List<KExpr<T>>): KExpr<T>

Create an Int/Real arithmetic addition expression.

Link copied to clipboard
Link copied to clipboard

Create an Int/Real arithmetic addition expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithDiv(lhs: KExpr<T>, rhs: KExpr<T>): KExpr<T>

Create an Int/Real arithmetic division expression.

Link copied to clipboard
Link copied to clipboard

Create an Int/Real arithmetic division expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithGe(lhs: KExpr<T>, rhs: KExpr<T>): KExpr<KBoolSort>

Create an Int/Real arithmetic >= (greater-or-equal) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KArithSort> mkArithGeNoSimplify(lhs: KExpr<T>, rhs: KExpr<T>): KGeArithExpr<T>

Create an Int/Real arithmetic >= (greater-or-equal) expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithGt(lhs: KExpr<T>, rhs: KExpr<T>): KExpr<KBoolSort>

Create an Int/Real arithmetic > (greater) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KArithSort> mkArithGtNoSimplify(lhs: KExpr<T>, rhs: KExpr<T>): KGtArithExpr<T>

Create an Int/Real arithmetic > (greater) expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithLe(lhs: KExpr<T>, rhs: KExpr<T>): KExpr<KBoolSort>

Create an Int/Real arithmetic <= (less-or-equal) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KArithSort> mkArithLeNoSimplify(lhs: KExpr<T>, rhs: KExpr<T>): KLeArithExpr<T>

Create an Int/Real arithmetic <= (less-or-equal) expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithLt(lhs: KExpr<T>, rhs: KExpr<T>): KExpr<KBoolSort>

Create an Int/Real arithmetic < (less) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KArithSort> mkArithLtNoSimplify(lhs: KExpr<T>, rhs: KExpr<T>): KLtArithExpr<T>

Create an Int/Real arithmetic < (less) expression.

Link copied to clipboard
fun <T : KArithSort> mkArithMul(vararg args: KExpr<T>): KExpr<T>

open fun <T : KArithSort> mkArithMul(args: List<KExpr<T>>): KExpr<T>

Create an Int/Real arithmetic multiplication expression.

Link copied to clipboard
Link copied to clipboard

Create an Int/Real arithmetic multiplication expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithPower(lhs: KExpr<T>, rhs: KExpr<T>): KExpr<T>

Create an Int/Real arithmetic power expression.

Link copied to clipboard
Link copied to clipboard

Create an Int/Real arithmetic power expression.

Link copied to clipboard
fun <T : KArithSort> mkArithSub(vararg args: KExpr<T>): KExpr<T>

open fun <T : KArithSort> mkArithSub(args: List<KExpr<T>>): KExpr<T>

Create an Int/Real arithmetic subtraction expression.

Link copied to clipboard
Link copied to clipboard

Create an Int/Real arithmetic subtraction expression.

Link copied to clipboard
open fun <T : KArithSort> mkArithUnaryMinus(arg: KExpr<T>): KExpr<T>

Create an Int/Real arithmetic negation expression.

Link copied to clipboard

Create an Int/Real arithmetic negation expression.

Link copied to clipboard
open fun <A : KArraySortBase<R>, R : KSort> mkArrayConst(arraySort: A, value: KExpr<R>): KArrayConst<A, R>

Create a constant array expression ((as const arraySort) value).

Link copied to clipboard
Link copied to clipboard
open fun <D : KSort, R : KSort> mkArrayLambda(indexVar: KDecl<D>, body: KExpr<R>): KArrayLambda<D, R>

Create an array lambda expression (lambda (indexVar) body).

open fun <D0 : KSort, D1 : KSort, R : KSort> mkArrayLambda(indexVar0: KDecl<D0>, indexVar1: KDecl<D1>, body: KExpr<R>): KArray2Lambda<D0, D1, R>

Create an array lambda expression (lambda (indexVar0) body).

open fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArrayLambda(indexVar0: KDecl<D0>, indexVar1: KDecl<D1>, indexVar2: KDecl<D2>, body: KExpr<R>): KArray3Lambda<D0, D1, D2, R>

Create an array lambda expression (lambda (indexVar0 indexVar2) body).

Link copied to clipboard
open fun <R : KSort> mkArrayNLambda(indices: List<KDecl<*>>, body: KExpr<R>): KArrayNLambda<R>

Create n-ary array lambda expression (lambda (indices_0 ... indices_n) body).

Link copied to clipboard
open fun <R : KSort> mkArrayNSelect(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>): KExpr<R>

Create n-ary array select expression (select array_0 ... indices_n).

Link copied to clipboard
Link copied to clipboard
open fun <R : KSort> mkArrayNSelectNoSimplify(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>): KArrayNSelect<R>

Create n-ary array select expression (select array_0 ... indices_n).

Link copied to clipboard
fun <R : KSort> mkArrayNSort(domain: List<KSort>, range: R): KArrayNSort<R>

Create a n-ary array sort (Array domain_0 ... domain_n range).

Link copied to clipboard
open fun <R : KSort> mkArrayNStore(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, value: KExpr<R>): KExpr<KArrayNSort<R>>

Create n-ary array store expression (store array_0 ... indices_n value).

Link copied to clipboard
Link copied to clipboard
open fun <R : KSort> mkArrayNStoreNoSimplify(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, value: KExpr<R>): KArrayNStore<R>

Create n-ary array store expression (store array_0 ... indices_n value).

Link copied to clipboard
open fun <R : KSort> mkArrayNStoreNoSimplifyNoAnalyze(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, value: KExpr<R>): KArrayNStore<R>

Create n-ary array store expression (store array_0 ... indices_n value) without cache. Cache is used to speed up mkArrayNSelect operation simplification but can result in a huge memory consumption.

Link copied to clipboard
open fun <D : KSort, R : KSort> mkArraySelect(array: KExpr<KArraySort<D, R>>, index: KExpr<D>): KExpr<R>

Create an array select expression (select array).

open fun <D0 : KSort, D1 : KSort, R : KSort> mkArraySelect(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>): KExpr<R>
open fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArraySelect(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>): KExpr<R>

Create an array select expression (select array index1).

Link copied to clipboard
open fun <D : KSort, R : KSort> mkArraySelectNoSimplify(array: KExpr<KArraySort<D, R>>, index: KExpr<D>): KArraySelect<D, R>

Create an array select expression (select array).

open fun <D0 : KSort, D1 : KSort, R : KSort> mkArraySelectNoSimplify(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>): KArray2Select<D0, D1, R>
open fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArraySelectNoSimplify(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>): KArray3Select<D0, D1, D2, R>

Create an array select expression (select array index1).

Link copied to clipboard
fun <D : KSort, R : KSort> mkArraySort(domain: D, range: R): KArraySort<D, R>

Create an array sort (Array domain).

fun <D0 : KSort, D1 : KSort, R : KSort> mkArraySort(domain0: D0, domain1: D1, range: R): KArray2Sort<D0, D1, R>

Create an array sort (Array domain0 range).

fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArraySort(domain0: D0, domain1: D1, domain2: D2, range: R): KArray3Sort<D0, D1, D2, R>

Create an array sort (Array domain0 domain2).

Link copied to clipboard
open fun <D : KSort, R : KSort> mkArrayStore(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, value: KExpr<R>): KExpr<KArraySort<D, R>>

Create an array store expression (store array value).

open fun <D0 : KSort, D1 : KSort, R : KSort> mkArrayStore(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, value: KExpr<R>): KExpr<KArray2Sort<D0, D1, R>>

Create an array store expression (store array index1).

open fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArrayStore(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, value: KExpr<R>): KExpr<KArray3Sort<D0, D1, D2, R>>

Create an array store expression (store array index1 value).

Link copied to clipboard
Link copied to clipboard
open fun <D : KSort, R : KSort> mkArrayStoreNoSimplify(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, value: KExpr<R>): KArrayStore<D, R>

Create an array store expression (store array value).

open fun <D0 : KSort, D1 : KSort, R : KSort> mkArrayStoreNoSimplify(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, value: KExpr<R>): KArray2Store<D0, D1, R>

Create an array store expression (store array index1).

open fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArrayStoreNoSimplify(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, value: KExpr<R>): KArray3Store<D0, D1, D2, R>

Create an array store expression (store array index1 value).

Link copied to clipboard
open fun <D : KSort, R : KSort> mkArrayStoreNoSimplifyNoAnalyze(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, value: KExpr<R>): KArrayStore<D, R>

Create an array store expression (store array value) without cache. Cache is used to speed up mkArraySelect operation simplification but can result in a huge memory consumption.

open fun <D0 : KSort, D1 : KSort, R : KSort> mkArrayStoreNoSimplifyNoAnalyze(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, value: KExpr<R>): KArray2Store<D0, D1, R>

Create an array store expression (store array index1) without cache. Cache is used to speed up mkArraySelect operation simplification but can result in a huge memory consumption.

open fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> mkArrayStoreNoSimplifyNoAnalyze(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, value: KExpr<R>): KArray3Store<D0, D1, D2, R>

Create an array store expression (store array index1 value) without cache. Cache is used to speed up mkArraySelect operation simplification but can result in a huge memory consumption.

Link copied to clipboard
Link copied to clipboard

Create a Bool sort.

Link copied to clipboard

Create a BitVec value with 1 bit length.

fun mkBv(value: Byte): KBitVec8Value

Create a BitVec value with 8 bit length.

fun mkBv(value: Int): KBitVec32Value

Create a BitVec value with 32 bit length.

fun mkBv(value: Long): KBitVec64Value

Create a BitVec value with 64 bit length.

Create a BitVec value with 16 bit length.

fun <T : KBvSort> mkBv(value: BigInteger, sort: T): KBitVecValue<T>
fun <T : KBvSort> mkBv(value: Boolean, sort: T): KBitVecValue<T>
fun <T : KBvSort> mkBv(value: Byte, sort: T): KBitVecValue<T>
fun <T : KBvSort> mkBv(value: Int, sort: T): KBitVecValue<T>
fun <T : KBvSort> mkBv(value: Long, sort: T): KBitVecValue<T>
fun <T : KBvSort> mkBv(value: Short, sort: T): KBitVecValue<T>

Create a BitVec value of the BitVec sort.

fun mkBv(value: BigInteger, sizeBits: UInt): KBitVecValue<KBvSort>
fun mkBv(value: Boolean, sizeBits: UInt): KBitVecValue<KBvSort>
fun mkBv(value: Byte, sizeBits: UInt): KBitVecValue<KBvSort>
fun mkBv(value: Int, sizeBits: UInt): KBitVecValue<KBvSort>
fun mkBv(value: Long, sizeBits: UInt): KBitVecValue<KBvSort>
fun mkBv(value: Short, sizeBits: UInt): KBitVecValue<KBvSort>

Create a BitVec value with sizeBits bit length.

fun mkBv(value: String, sizeBits: UInt): KBitVecValue<KBvSort>

Create a BitVec value with sizeBits bit length from the given binary string value.

Link copied to clipboard

Create a BitVec sort with 16 bits length (_ BitVec 16).

Link copied to clipboard

Create a BitVec sort with 1 bit length (_ BitVec 1).

Link copied to clipboard
fun mkBv2IntDecl(value: KBvSort, isSigned: Boolean): KBv2IntDecl
Link copied to clipboard
open fun <T : KBvSort> mkBv2IntExpr(value: KExpr<T>, isSigned: Boolean): KExpr<KIntSort>

Convert BitVec expressions value to the arithmetic Int expressions. When isSigned is set, the sign (highest, leftmost) bit is treated as the value sign.

Link copied to clipboard
open fun <T : KBvSort> mkBv2IntExprNoSimplify(value: KExpr<T>, isSigned: Boolean): KBv2IntExpr

Convert BitVec expressions value to the arithmetic Int expressions. When isSigned is set, the sign (highest, leftmost) bit is treated as the value sign.

Link copied to clipboard

Create a BitVec sort with 32 bits length (_ BitVec 32).

Link copied to clipboard

Create a BitVec sort with 64 bits length (_ BitVec 64).

Link copied to clipboard

Create a BitVec sort with 8 bits length (_ BitVec 8).

Link copied to clipboard
fun <T : KBvSort> mkBvAddDecl(arg0: T, arg1: T): KBvAddDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvAddExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic addition (bvadd) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvAddExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvAddExpr<T>

Create BitVec arithmetic addition (bvadd) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvAddNoOverflowDecl(arg0: T, arg1: T, isSigned: Boolean): KBvAddNoOverflowDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvAddNoOverflowExpr(arg0: KExpr<T>, arg1: KExpr<T>, isSigned: Boolean): KExpr<KBoolSort>

Create BitVec add-no-overflow check expression. Determines that BitVec arithmetic addition does not overflow. An overflow occurs when the addition result value is greater than max supported value.

Link copied to clipboard

Create BitVec add-no-overflow check expression. Determines that BitVec arithmetic addition does not overflow. An overflow occurs when the addition result value is greater than max supported value.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvAddNoUnderflowExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec add-no-underflow check expression. Determines that BitVec arithmetic addition does not underflow. An underflow occurs when the addition result value is lower than min supported value.

Link copied to clipboard

Create BitVec add-no-underflow check expression. Determines that BitVec arithmetic addition does not underflow. An underflow occurs when the addition result value is lower than min supported value.

Link copied to clipboard
fun <T : KBvSort> mkBvAndDecl(arg0: T, arg1: T): KBvAndDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvAndExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create bitwise AND (bvand) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvAndExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvAndExpr<T>

Create bitwise AND (bvand) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvArithShiftRightExpr(arg: KExpr<T>, shift: KExpr<T>): KExpr<T>

Create BitVec arithmetic shift right (bvashr) expression. The shifted expressions is padded with sign (leftmost, highest) bits.

Link copied to clipboard

Create BitVec arithmetic shift right (bvashr) expression. The shifted expressions is padded with sign (leftmost, highest) bits.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort, S : KBvSort> mkBvConcatExpr(arg0: KExpr<T>, arg1: KExpr<S>): KExpr<KBvSort>

Create BitVec concatenation (concat) expression.

Link copied to clipboard

Create BitVec concatenation (concat) expression.

Link copied to clipboard
fun mkBvDecl(value: Byte): KDecl<KBv8Sort>
fun mkBvDecl(value: Int): KDecl<KBv32Sort>
fun mkBvDecl(value: BigInteger, size: UInt): KDecl<KBvSort>
fun mkBvDecl(value: String, sizeBits: UInt): KDecl<KBvSort>
Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvDivNoOverflowExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec div-no-overflow check expression. Determines that BitVec arithmetic signed division does not overflow.

Link copied to clipboard

Create BitVec div-no-overflow check expression. Determines that BitVec arithmetic signed division does not overflow.

Link copied to clipboard
fun mkBvExtractDecl(high: Int, low: Int, value: KExpr<KBvSort>): KBvExtractDecl
Link copied to clipboard
open fun <T : KBvSort> mkBvExtractExpr(high: Int, low: Int, value: KExpr<T>): KExpr<KBvSort>

Create BitVec extract (extract) expression. Extract bits from low (including) to high (including) as a new BitVec.

Link copied to clipboard
open fun <T : KBvSort> mkBvExtractExprNoSimplify(high: Int, low: Int, value: KExpr<T>): KBvExtractExpr

Create BitVec extract (extract) expression. Extract bits from low (including) to high (including) as a new BitVec.

Link copied to clipboard
fun mkBvHex(value: String, sizeBits: UInt): KBitVecValue<KBvSort>

Create a BitVec value with sizeBits bit length from the given hex string value.

Link copied to clipboard
fun mkBvHexDecl(value: String, sizeBits: UInt): KDecl<KBvSort>
Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvLogicalShiftRightExpr(arg: KExpr<T>, shift: KExpr<T>): KExpr<T>

Create BitVec logical shift right (bvlshr) expression. The shifted expressions is padded with zero bits.

Link copied to clipboard

Create BitVec logical shift right (bvlshr) expression. The shifted expressions is padded with zero bits.

Link copied to clipboard
fun <T : KBvSort> mkBvMulDecl(arg0: T, arg1: T): KBvMulDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvMulExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic multiplication (bvmul) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvMulExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvMulExpr<T>

Create BitVec arithmetic multiplication (bvmul) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvMulNoOverflowDecl(arg0: T, arg1: T, isSigned: Boolean): KBvMulNoOverflowDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvMulNoOverflowExpr(arg0: KExpr<T>, arg1: KExpr<T>, isSigned: Boolean): KExpr<KBoolSort>

Create BitVec mul-no-overflow check expression. Determines that BitVec arithmetic multiplication does not overflow. An overflow occurs when the multiplication result value is greater than max supported value.

Link copied to clipboard

Create BitVec mul-no-overflow check expression. Determines that BitVec arithmetic multiplication does not overflow. An overflow occurs when the multiplication result value is greater than max supported value.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvMulNoUnderflowExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec mul-no-underflow check expression. Determines that BitVec arithmetic multiplication does not underflow. An underflow occurs when the multiplication result value is lower than min supported value.

Link copied to clipboard

Create BitVec mul-no-underflow check expression. Determines that BitVec arithmetic multiplication does not underflow. An underflow occurs when the multiplication result value is lower than min supported value.

Link copied to clipboard
fun <T : KBvSort> mkBvNAndDecl(arg0: T, arg1: T): KBvNAndDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvNAndExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create bitwise NAND (bvnand) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvNAndExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvNAndExpr<T>

Create bitwise NAND (bvnand) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvNegationExpr(value: KExpr<T>): KExpr<T>

Create BitVec arithmetic negation (bvneg) expression.

Link copied to clipboard

Create BitVec arithmetic negation (bvneg) expression.

Link copied to clipboard

Create BitVec neg-no-overflow check expression. Determines that BitVec arithmetic negation does not overflow.

Link copied to clipboard

Create BitVec neg-no-overflow check expression. Determines that BitVec arithmetic negation does not overflow.

Link copied to clipboard
fun <T : KBvSort> mkBvNorDecl(arg0: T, arg1: T): KBvNorDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvNorExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create bitwise NOR (bvnor) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvNorExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvNorExpr<T>

Create bitwise NOR (bvnor) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvNotDecl(sort: T): KBvNotDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvNotExpr(value: KExpr<T>): KExpr<T>

Create bitwise NOT (bvnot) expression.

Link copied to clipboard

Create bitwise NOT (bvnot) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvOrDecl(arg0: T, arg1: T): KBvOrDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvOrExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create bitwise OR (bvor) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvOrExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvOrExpr<T>

Create bitwise OR (bvor) expression.

Link copied to clipboard
Link copied to clipboard

Create bitwise AND reduction (bvredand) expression. Reduce all bits to a single bit with AND operation.

Link copied to clipboard

Create bitwise AND reduction (bvredand) expression. Reduce all bits to a single bit with AND operation.

Link copied to clipboard
Link copied to clipboard

Create bitwise OR reduction (bvredor) expression. Reduce all bits to a single bit with OR operation.

Link copied to clipboard

Create bitwise OR reduction (bvredor) expression. Reduce all bits to a single bit with OR operation.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvRepeatExpr(repeatNumber: Int, value: KExpr<T>): KExpr<KBvSort>
Link copied to clipboard
open fun <T : KBvSort> mkBvRepeatExprNoSimplify(repeatNumber: Int, value: KExpr<T>): KBvRepeatExpr

Create BitVec repeat (repeat) expression. Returns a BitVec expression with repeatNumber concatenated copies of value.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvRotateLeftExpr(arg: KExpr<T>, rotation: KExpr<T>): KExpr<T>

Create BitVec rotate left (rotateleft) expression. The result expression is rotated left rotation times.

Link copied to clipboard

Create BitVec rotate left (rotateleft) expression. The result expression is rotated left rotation times.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvRotateLeftIndexedExpr(rotation: Int, value: KExpr<T>): KExpr<T>

Create BitVec rotate left (rotateleft) expression. The result expression is rotated left rotation times.

Link copied to clipboard

Create BitVec rotate left (rotateleft) expression. The result expression is rotated left rotation times.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvRotateRightExpr(arg: KExpr<T>, rotation: KExpr<T>): KExpr<T>

Create BitVec rotate right (rotateright) expression. The result expression is rotated right rotation times.

Link copied to clipboard

Create BitVec rotate right (rotateright) expression. The result expression is rotated right rotation times.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvRotateRightIndexedExpr(rotation: Int, value: KExpr<T>): KExpr<T>

Create BitVec rotate right (rotateright) expression. The result expression is rotated right rotation times.

Link copied to clipboard

Create BitVec rotate right (rotateright) expression. The result expression is rotated right rotation times.

Link copied to clipboard
fun <T : KBvSort> mkBvShiftLeftDecl(arg0: T, arg1: T): KBvShiftLeftDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvShiftLeftExpr(arg: KExpr<T>, shift: KExpr<T>): KExpr<T>

Create BitVec shift left (bvshl) expression.

Link copied to clipboard

Create BitVec shift left (bvshl) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvSignedDivDecl(arg0: T, arg1: T): KBvSignedDivDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvSignedDivExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic signed division (bvsdiv) expression. The division result sign depends on the arguments signs.

Link copied to clipboard

Create BitVec arithmetic signed division (bvsdiv) expression. The division result sign depends on the arguments signs.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvSignedGreaterExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec signed greater (bvsgt) expression.

Link copied to clipboard

Create BitVec signed greater (bvsgt) expression.

Link copied to clipboard

Create BitVec signed greater-or-equal (bvsge) expression.

Link copied to clipboard

Create BitVec signed greater-or-equal (bvsge) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvSignedLessExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec signed less (bvslt) expression.

Link copied to clipboard

Create BitVec signed less (bvslt) expression.

Link copied to clipboard
Link copied to clipboard

Create BitVec signed less-or-equal (bvsle) expression.

Link copied to clipboard

Create BitVec signed less-or-equal (bvsle) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvSignedModDecl(arg0: T, arg1: T): KBvSignedModDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvSignedModExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic signed mod (bvsmod) expression.

Link copied to clipboard

Create BitVec arithmetic signed mod (bvsmod) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvSignedRemDecl(arg0: T, arg1: T): KBvSignedRemDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvSignedRemExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic signed reminder (bvsrem) expression.

Link copied to clipboard

Create BitVec arithmetic signed reminder (bvsrem) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvSignExtensionExpr(extensionSize: Int, value: KExpr<T>): KExpr<KBvSort>

Create BitVec signed extension (signext) expression. Returns a BitVec expression with extensionSize extra sign (leftmost, highest) bits. The extra bits are prepended to the provided value.

Link copied to clipboard

Create BitVec signed extension (signext) expression. Returns a BitVec expression with extensionSize extra sign (leftmost, highest) bits. The extra bits are prepended to the provided value.

Link copied to clipboard
open fun mkBvSort(sizeBits: UInt): KBvSort

Create a BitVec sort with sizeBits bits length (_ BitVec sizeBits).

Link copied to clipboard
fun <T : KBvSort> mkBvSubDecl(arg0: T, arg1: T): KBvSubDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvSubExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic subtraction (bvsub) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvSubExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvSubExpr<T>

Create BitVec arithmetic subtraction (bvsub) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvSubNoOverflowExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec sub-no-overflow check expression. Determines that BitVec arithmetic subtraction does not overflow. An overflow occurs when the subtraction result value is greater than max supported value.

Link copied to clipboard

Create BitVec sub-no-overflow check expression. Determines that BitVec arithmetic subtraction does not overflow. An overflow occurs when the subtraction result value is greater than max supported value.

Link copied to clipboard
fun <T : KBvSort> mkBvSubNoUnderflowDecl(arg0: T, arg1: T, isSigned: Boolean): KBvSubNoUnderflowDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvSubNoUnderflowExpr(arg0: KExpr<T>, arg1: KExpr<T>, isSigned: Boolean): KExpr<KBoolSort>

Create BitVec sub-no-underflow check expression. Determines that BitVec arithmetic subtraction does not underflow. An underflow occurs when the subtraction result value is lower than min supported value.

Link copied to clipboard

Create BitVec sub-no-underflow check expression. Determines that BitVec arithmetic subtraction does not underflow. An underflow occurs when the subtraction result value is lower than min supported value.

Link copied to clipboard
fun <T : KFpSort> mkBvToFpDecl(sort: T, rm: KFpRoundingModeSort, value: KBvSort, signed: Boolean): KBvToFpDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkBvToFpExpr(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<KBvSort>, signed: Boolean): KExpr<T>

Create Fp from BitVec value. Rounding is performed according to the roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkBvToFpExprNoSimplify(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<KBvSort>, signed: Boolean): KBvToFpExpr<T>

Create Fp from BitVec value. Rounding is performed according to the roundingMode.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvUnsignedDivExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic unsigned division (bvudiv) expression.

Link copied to clipboard

Create BitVec arithmetic unsigned division (bvudiv) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvUnsignedGreaterExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec unsigned greater (bvugt) expression.

Link copied to clipboard

Create BitVec unsigned greater (bvugt) expression.

Link copied to clipboard

Create BitVec unsigned greater-or-equal (bvuge) expression.

Link copied to clipboard

Create BitVec unsigned greater-or-equal (bvuge) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvUnsignedLessExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create BitVec unsigned less (bvult) expression.

Link copied to clipboard

Create BitVec unsigned less (bvult) expression.

Link copied to clipboard

Create BitVec unsigned less-or-equal (bvule) expression.

Link copied to clipboard

Create BitVec unsigned less-or-equal (bvule) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvUnsignedRemExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create BitVec arithmetic unsigned reminder (bvurem) expression.

Link copied to clipboard

Create BitVec arithmetic unsigned reminder (bvurem) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvXNorDecl(arg0: T, arg1: T): KBvXNorDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvXNorExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create bitwise XNOR (bvxnor) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvXNorExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvXNorExpr<T>

Create bitwise XNOR (bvxnor) expression.

Link copied to clipboard
fun <T : KBvSort> mkBvXorDecl(arg0: T, arg1: T): KBvXorDecl<T>
Link copied to clipboard
open fun <T : KBvSort> mkBvXorExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create bitwise XOR (bvxor) expression.

Link copied to clipboard
open fun <T : KBvSort> mkBvXorExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KBvXorExpr<T>

Create bitwise XOR (bvxor) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KBvSort> mkBvZeroExtensionExpr(extensionSize: Int, value: KExpr<T>): KExpr<KBvSort>

Create BitVec zero extension (zeroext) expression. Returns a BitVec expression with extensionSize extra zero bits. The extra bits are prepended to the provided value.

Link copied to clipboard

Create BitVec zero extension (zeroext) expression. Returns a BitVec expression with extensionSize extra zero bits. The extra bits are prepended to the provided value.

Link copied to clipboard
fun <T : KSort> mkConst(name: String, sort: T): KApp<T, *>

Create a constant named name with sort sort.

Link copied to clipboard
open fun <T : KSort> mkConstApp(decl: KDecl<T>): KConst<T>

Create constant (function without arguments) app expression.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun <T : KSort> mkDistinct(args: List<KExpr<T>>, order: Boolean = true): KExpr<KBoolSort>

Create DISTINCT expression.

Link copied to clipboard
Link copied to clipboard

Create DISTINCT expression.

Link copied to clipboard
open fun <T : KSort> mkEq(lhs: KExpr<T>, rhs: KExpr<T>, order: Boolean = true): KExpr<KBoolSort>

Create EQ expression.

Link copied to clipboard
fun <T : KSort> mkEqDecl(arg: T): KEqDecl<T>
Link copied to clipboard
open fun <T : KSort> mkEqNoSimplify(lhs: KExpr<T>, rhs: KExpr<T>): KEqExpr<T>

Create EQ expression.

Link copied to clipboard

Create existential quantifier (exists).

Link copied to clipboard

Create boolean False constant.

Link copied to clipboard
Link copied to clipboard
fun <T : KFpSort> mkFp(value: Double, sort: T): KFpValue<T>
fun <T : KFpSort> mkFp(value: Float, sort: T): KFpValue<T>
fun <T : KFpSort> mkFp(significand: KBitVecValue<*>, unbiasedExponent: KBitVecValue<*>, signBit: Boolean, sort: T): KFpValue<T>
fun <T : KFpSort> mkFp(significand: Int, unbiasedExponent: Int, signBit: Boolean, sort: T): KFpValue<T>
fun <T : KFpSort> mkFp(significand: Long, unbiasedExponent: Long, signBit: Boolean, sort: T): KFpValue<T>
Link copied to clipboard
fun mkFp128(significand: KBitVecValue<*>, unbiasedExponent: KBitVecValue<*>, signBit: Boolean): KFp128Value
fun mkFp128(significand: Long, unbiasedExponent: Long, signBit: Boolean): KFp128Value

Create FP128 from the IEEE binary representation. Note: unbiasedExponent here is unbiased, i.e. signed.

Link copied to clipboard
fun mkFp128Biased(significand: KBitVecValue<*>, biasedExponent: KBitVecValue<*>, signBit: Boolean): KFp128Value

Create FP128 from the IEEE binary representation. Note: biasedExponent here is biased, i.e. unsigned.

Link copied to clipboard
fun mkFp128Decl(significandBits: KBitVecValue<*>, unbiasedExponent: KBitVecValue<*>, signBit: Boolean): KFp128Decl
Link copied to clipboard
fun mkFp128DeclBiased(significandBits: KBitVecValue<*>, biasedExponent: KBitVecValue<*>, signBit: Boolean): KFp128Decl
Link copied to clipboard

Create FP128 NaN value.

Link copied to clipboard

Create a 128-bit IEEE floating point sort (_ FloatingPoint 15 113).

Link copied to clipboard
fun mkFp16(value: Float): KFp16Value

Create FP16 from the value.

Link copied to clipboard
Link copied to clipboard

Create FP16 NaN value.

Link copied to clipboard

Create a 16-bit IEEE floating point sort (_ FloatingPoint 5 11).

Link copied to clipboard
fun mkFp32(value: Float): KFp32Value

Create FP32 from the value.

Link copied to clipboard
Link copied to clipboard

Create FP32 NaN value.

Link copied to clipboard

Create a 32-bit IEEE floating point sort (_ FloatingPoint 8 24).

Link copied to clipboard
fun mkFp64(value: Double): KFp64Value

Create FP64 from the value.

Link copied to clipboard
Link copied to clipboard

Create FP64 NaN value.

Link copied to clipboard

Create a 64-bit IEEE floating point sort (_ FloatingPoint 11 53).

Link copied to clipboard
fun <T : KFpSort> mkFpAbsDecl(valueSort: T): KFpAbsDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpAbsExpr(value: KExpr<T>): KExpr<T>

Create Fp absolute value (fp.abs) expression.

Link copied to clipboard

Create Fp absolute value (fp.abs) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpAddDecl(roundingMode: KFpRoundingModeSort, arg0Sort: T, arg1Sort: T): KFpAddDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpAddExpr(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp addition (fp.add) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpAddExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KFpAddExpr<T>

Create Fp addition (fp.add) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
fun <T : KFpSort> mkFpBiased(significand: KBitVecValue<*>, biasedExponent: KBitVecValue<*>, signBit: Boolean, sort: T): KFpValue<T>
fun <T : KFpSort> mkFpBiased(significand: Int, biasedExponent: Int, signBit: Boolean, sort: T): KFpValue<T>
fun <T : KFpSort> mkFpBiased(significand: Long, biasedExponent: Long, signBit: Boolean, sort: T): KFpValue<T>
Link copied to clipboard
fun <T : KFpSort> mkFpCustomSize(unbiasedExponent: KBitVecValue<out KBvSort>, significand: KBitVecValue<out KBvSort>, signBit: Boolean): KFpValue<T>
fun <T : KFpSort> mkFpCustomSize(exponentSize: UInt, significandSize: UInt, unbiasedExponent: KBitVecValue<*>, significand: KBitVecValue<*>, signBit: Boolean): KFpValue<T>

Create FP with a custom size from the IEEE binary representation. Important: unbiasedExponent here is an unbiased value.

Link copied to clipboard
fun <T : KFpSort> mkFpCustomSizeBiased(significandSize: UInt, exponentSize: UInt, significand: KBitVecValue<*>, biasedExponent: KBitVecValue<*>, signBit: Boolean): KFpValue<T>

Create FP with a custom size from the IEEE binary representation. Important: biasedExponent here is an biased value.

Link copied to clipboard
fun <T : KFpSort> mkFpCustomSizeDecl(significandSize: UInt, exponentSize: UInt, significand: KBitVecValue<*>, unbiasedExponent: KBitVecValue<*>, signBit: Boolean): KFpDecl<T>
Link copied to clipboard
fun <T : KFpSort> mkFpCustomSizeDeclBiased(significandSize: UInt, exponentSize: UInt, significand: KBitVecValue<*>, biasedExponent: KBitVecValue<*>, signBit: Boolean): KFpDecl<T>
Link copied to clipboard
fun <T : KFpSort> mkFpDivDecl(roundingMode: KFpRoundingModeSort, arg0Sort: T, arg1Sort: T): KFpDivDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpDivExpr(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp division (fp.div) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpDivExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KFpDivExpr<T>

Create Fp division (fp.div) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
fun <T : KFpSort> mkFpEqualDecl(arg0Sort: T, arg1Sort: T): KFpEqualDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpEqualExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create Fp equality comparison (fp.eq) expression. Checks arguments equality using IEEE 754-2008 rules.

Link copied to clipboard
open fun <T : KFpSort> mkFpEqualExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KFpEqualExpr<T>

Create Fp equality comparison (fp.eq) expression. Checks arguments equality using IEEE 754-2008 rules.

Link copied to clipboard
fun <T : KFpSort> mkFpFromBvDecl(signSort: KBv1Sort, expSort: KBvSort, significandSort: KBvSort): KFpFromBvDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpFromBvExpr(sign: KExpr<KBv1Sort>, biasedExponent: KExpr<out KBvSort>, significand: KExpr<out KBvSort>): KExpr<T>

Create Fp from IEEE BitVec expressions.

Link copied to clipboard
open fun <T : KFpSort> mkFpFromBvExprNoSimplify(sign: KExpr<KBv1Sort>, biasedExponent: KExpr<out KBvSort>, significand: KExpr<out KBvSort>): KFpFromBvExpr<T>

Create Fp from IEEE BitVec expressions.

Link copied to clipboard
fun <T : KFpSort> mkFpFusedMulAddDecl(roundingMode: KFpRoundingModeSort, arg0Sort: T, arg1Sort: T, arg2Sort: T): KFpFusedMulAddDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpFusedMulAddExpr(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>, arg2: KExpr<T>): KExpr<T>

Create Fp fused multiplication and addition (fp.fma) expression. Computes (arg0 * arg1) + arg2. The result is rounded according to the provided roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpFusedMulAddExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>, arg2: KExpr<T>): KFpFusedMulAddExpr<T>

Create Fp fused multiplication and addition (fp.fma) expression. Computes (arg0 * arg1) + arg2. The result is rounded according to the provided roundingMode.

Link copied to clipboard
fun <T : KFpSort> mkFpGreaterDecl(arg0Sort: T, arg1Sort: T): KFpGreaterDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpGreaterExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create Fp greater comparison (fp.gt) expression.

Link copied to clipboard

Create Fp greater comparison (fp.gt) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpGreaterOrEqualDecl(arg0Sort: T, arg1Sort: T): KFpGreaterOrEqualDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpGreaterOrEqualExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create Fp greater-or-equal comparison (fp.geq) expression.

Link copied to clipboard

Create Fp greater-or-equal comparison (fp.geq) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpInf(signBit: Boolean, sort: T): KFpValue<T>

Create Fp Inf value with signBit sign.

Link copied to clipboard
Link copied to clipboard

Create Fp is-inf check (fp.isInfinite) expression.

Link copied to clipboard

Create Fp is-inf check (fp.isInfinite) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpIsNaNDecl(valueSort: T): KFpIsNaNDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpIsNaNExpr(value: KExpr<T>): KExpr<KBoolSort>

Create Fp is-nan check (fp.isNaN) expression.

Link copied to clipboard

Create Fp is-nan check (fp.isNaN) expression.

Link copied to clipboard
Link copied to clipboard

Create Fp is-negative check (fp.isNegative) expression.

Link copied to clipboard

Create Fp is-negative check (fp.isNegative) expression.

Link copied to clipboard
Link copied to clipboard
open fun <T : KFpSort> mkFpIsNormalExpr(value: KExpr<T>): KExpr<KBoolSort>

Create Fp is-normal check (fp.isNormal) expression.

Link copied to clipboard

Create Fp is-normal check (fp.isNormal) expression.

Link copied to clipboard
Link copied to clipboard

Create Fp is-positive check (fp.isPositive) expression.

Link copied to clipboard

Create Fp is-positive check (fp.isPositive) expression.

Link copied to clipboard
Link copied to clipboard

Create Fp is-subnormal check (fp.isSubnormal) expression.

Link copied to clipboard

Create Fp is-subnormal check (fp.isSubnormal) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpIsZeroDecl(valueSort: T): KFpIsZeroDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpIsZeroExpr(value: KExpr<T>): KExpr<KBoolSort>

Create Fp is-zero check (fp.isZero) expression.

Link copied to clipboard

Create Fp is-zero check (fp.isZero) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpLessDecl(arg0Sort: T, arg1Sort: T): KFpLessDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpLessExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create Fp less comparison (fp.lt) expression.

Link copied to clipboard
open fun <T : KFpSort> mkFpLessExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KFpLessExpr<T>

Create Fp less comparison (fp.lt) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpLessOrEqualDecl(arg0Sort: T, arg1Sort: T): KFpLessOrEqualDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpLessOrEqualExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<KBoolSort>

Create Fp less-or-equal comparison (fp.leq) expression.

Link copied to clipboard

Create Fp less-or-equal comparison (fp.leq) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpMaxDecl(arg0Sort: T, arg1Sort: T): KFpMaxDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpMaxExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp maximum (fp.max) expression.

Link copied to clipboard
open fun <T : KFpSort> mkFpMaxExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KFpMaxExpr<T>

Create Fp maximum (fp.max) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpMinDecl(arg0Sort: T, arg1Sort: T): KFpMinDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpMinExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp minimum (fp.min) expression.

Link copied to clipboard
open fun <T : KFpSort> mkFpMinExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KFpMinExpr<T>

Create Fp minimum (fp.min) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpMulDecl(roundingMode: KFpRoundingModeSort, arg0Sort: T, arg1Sort: T): KFpMulDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpMulExpr(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp multiplication (fp.mul) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpMulExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KFpMulExpr<T>

Create Fp multiplication (fp.mul) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
fun <T : KFpSort> mkFpNaN(sort: T): KFpValue<T>

Create Fp NaN value.

Link copied to clipboard
Link copied to clipboard
open fun <T : KFpSort> mkFpNegationExpr(value: KExpr<T>): KExpr<T>

Create Fp negation (fp.neg) expression.

Link copied to clipboard

Create Fp negation (fp.neg) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpRemDecl(arg0Sort: T, arg1Sort: T): KFpRemDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpRemExpr(arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp IEEE remainder (fp.IEEERem) expression.

Link copied to clipboard
open fun <T : KFpSort> mkFpRemExprNoSimplify(arg0: KExpr<T>, arg1: KExpr<T>): KFpRemExpr<T>

Create Fp IEEE remainder (fp.IEEERem) expression.

Link copied to clipboard

Create Fp rounding mode.

Link copied to clipboard

Create a floating point rounding mode sort.

Link copied to clipboard
Link copied to clipboard
open fun <T : KFpSort> mkFpRoundToIntegralExpr(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>): KExpr<T>

Create Fp round to integral (fp.roundToIntegral) expression. The rounding is performed according to the provided roundingMode.

Link copied to clipboard

Create Fp round to integral (fp.roundToIntegral) expression. The rounding is performed according to the provided roundingMode.

Link copied to clipboard
open fun mkFpSort(exponentBits: UInt, significandBits: UInt): KFpSort

Create an arbitrary precision IEEE floating point sort (_ FloatingPoint exponentBits).

Link copied to clipboard
fun <T : KFpSort> mkFpSqrtDecl(roundingMode: KFpRoundingModeSort, valueSort: T): KFpSqrtDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpSqrtExpr(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>): KExpr<T>

Create Fp square root (fp.sqrt) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpSqrtExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>): KFpSqrtExpr<T>

Create Fp square root (fp.sqrt) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
fun <T : KFpSort> mkFpSubDecl(roundingMode: KFpRoundingModeSort, arg0Sort: T, arg1Sort: T): KFpSubDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpSubExpr(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KExpr<T>

Create Fp subtraction (fp.sub) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpSubExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>): KFpSubExpr<T>

Create Fp subtraction (fp.sub) expression. The result is rounded according to the provided roundingMode.

Link copied to clipboard
fun <T : KFpSort> mkFpToBvDecl(roundingMode: KFpRoundingModeSort, valueSort: T, bvSize: Int, isSigned: Boolean): KFpToBvDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpToBvExpr(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>, bvSize: Int, isSigned: Boolean): KExpr<KBvSort>

Create Fp to BitVec conversion (fp.to_sbv, fp.to_ubv) expression. Provided Fp value is rounded to the nearest integral according to the roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpToBvExprNoSimplify(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>, bvSize: Int, isSigned: Boolean): KFpToBvExpr<T>

Create Fp to BitVec conversion (fp.to_sbv, fp.to_ubv) expression. Provided Fp value is rounded to the nearest integral according to the roundingMode.

Link copied to clipboard
Link copied to clipboard
open fun <T : KFpSort> mkFpToFpExpr(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<out KFpSort>): KExpr<T>

Create Fp to another Fp. Rounding is performed according to the roundingMode.

Link copied to clipboard
open fun <T : KFpSort> mkFpToFpExprNoSimplify(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<out KFpSort>): KFpToFpExpr<T>

Create Fp to another Fp. Rounding is performed according to the roundingMode.

Link copied to clipboard
Link copied to clipboard
open fun <T : KFpSort> mkFpToIEEEBvExpr(value: KExpr<T>): KExpr<KBvSort>

Create Fp to IEEE BitVec conversion expression. Converts Fp value to the corresponding IEEE 754-2008 binary format.

Link copied to clipboard

Create Fp to IEEE BitVec conversion expression. Converts Fp value to the corresponding IEEE 754-2008 binary format.

Link copied to clipboard
fun <T : KFpSort> mkFpToRealDecl(valueSort: T): KFpToRealDecl<T>
Link copied to clipboard
open fun <T : KFpSort> mkFpToRealExpr(value: KExpr<T>): KExpr<KRealSort>

Create Fp to Real conversion (fp.to_real) expression.

Link copied to clipboard

Create Fp to Real conversion (fp.to_real) expression.

Link copied to clipboard
fun <T : KFpSort> mkFpZero(signBit: Boolean, sort: T): KFpValue<T>

Create Fp zero value with signBit sign.

Link copied to clipboard
fun <T : KSort> mkFreshConst(name: String, sort: T): KApp<T, *>

Create a fresh constant with name prefix name and sort sort.

Link copied to clipboard
fun <T : KSort> mkFreshConstDecl(name: String, sort: T): KConstDecl<T>
Link copied to clipboard
fun <T : KSort> mkFreshFuncDecl(name: String, sort: T, args: List<KSort>): KFuncDecl<T>
Link copied to clipboard
fun <T : KSort> mkFuncDecl(name: String, sort: T, args: List<KSort>): KFuncDecl<T>
Link copied to clipboard
open fun <A : KArraySortBase<R>, R : KSort> mkFunctionAsArray(sort: A, function: KFuncDecl<R>): KFunctionAsArray<A, R>

Create a function-as-array expression (_ as-array function).

Link copied to clipboard

Create boolean => (implication) expression.

Link copied to clipboard
Link copied to clipboard

Create boolean => (implication) expression.

Link copied to clipboard

Create an Int mod expression.

Link copied to clipboard
Link copied to clipboard

Create an Int mod expression.

Link copied to clipboard
fun mkIntNum(value: Int): KIntNumExpr

Create an Int value.

Link copied to clipboard
Link copied to clipboard

Create an Int rem expression. The result value is either (mod lhs rhs) when rhs >= 0 and (neg (mod lhs rhs)) otherwise. The result sign matches the rhs sign.

Link copied to clipboard
Link copied to clipboard

Create an Int rem expression.

Link copied to clipboard

Create an Int sort.

Link copied to clipboard

Convert an Int expression to a corresponding Real expression.

Link copied to clipboard
Link copied to clipboard

Convert an Int expression to a corresponding Real expression.

Link copied to clipboard
open fun <T : KSort> mkIte(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>): KExpr<T>

Create ITE (if-then-else) expression.

Link copied to clipboard
fun <T : KSort> mkIteDecl(arg: T): KIteDecl<T>
Link copied to clipboard
open fun <T : KSort> mkIteNoSimplify(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>): KIteExpr<T>

Create ITE (if-then-else) expression.

Link copied to clipboard
open fun mkNot(arg: KExpr<KBoolSort>): KExpr<KBoolSort>

Create boolean NOT expression.

Link copied to clipboard
Link copied to clipboard

Create boolean NOT expression.

Link copied to clipboard
fun mkOr(vararg args: KExpr<KBoolSort>): KExpr<KBoolSort>

open fun mkOr(args: List<KExpr<KBoolSort>>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>

Create boolean OR expression.

open fun mkOr(lhs: KExpr<KBoolSort>, rhs: KExpr<KBoolSort>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>

Create boolean binary OR expression.

Link copied to clipboard
Link copied to clipboard

Create boolean OR expression.

Create boolean binary OR expression.

Link copied to clipboard

Check whether the given Real expression has an integer value.

Link copied to clipboard
Link copied to clipboard

Check whether the given Real expression has an integer value.

Link copied to clipboard
fun mkRealNum(numerator: Int): KRealNumExpr
fun mkRealNum(numerator: Long): KRealNumExpr
fun mkRealNum(numerator: KIntNumExpr, denominator: KIntNumExpr): KRealNumExpr
fun mkRealNum(numerator: Int, denominator: Int): KRealNumExpr
fun mkRealNum(numerator: Long, denominator: Long): KRealNumExpr

Create a Real value.

Create a Real value from a string of the form "123/456".

Link copied to clipboard
Link copied to clipboard

Create a Real sort.

Link copied to clipboard
Link copied to clipboard
open fun <T : KFpSort> mkRealToFpExpr(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<KRealSort>): KExpr<T>

Create Fp from Real expression. Rounding is performed according to the roundingMode.

Link copied to clipboard

Create Fp from Real expression. Rounding is performed according to the roundingMode.

Link copied to clipboard

Convert Real expression to an Int expression (floor division).

Link copied to clipboard
Link copied to clipboard

Convert Real expression to an Int expression (floor division).

Link copied to clipboard
fun mkTrue(): KTrue

Create boolean True constant.

Link copied to clipboard
Link copied to clipboard

Create an uninterpreted sort named name.

Link copied to clipboard

Create uninterpreted sort value.

Link copied to clipboard

Create universal quantifier (forall).

Link copied to clipboard

Create boolean XOR expression.

Link copied to clipboard
Link copied to clipboard

Create boolean XOR expression.

Link copied to clipboard
Link copied to clipboard
infix fun <T : KSort> KExpr<T>.neq(other: KExpr<T>): KExpr<KBoolSort>
Link copied to clipboard
operator fun KExpr<KBoolSort>.not(): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
operator fun <T : KArithSort> KExpr<T>.plus(other: KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KArithSort> KExpr<T>.power(other: KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <D : KSort, R : KSort> KExpr<KArraySort<D, R>>.select(index: KExpr<D>): KExpr<R>
fun <D0 : KSort, D1 : KSort, R : KSort> KExpr<KArray2Sort<D0, D1, R>>.select(index0: KExpr<D0>, index1: KExpr<D1>): KExpr<R>
fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KExpr<KArray3Sort<D0, D1, D2, R>>.select(index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>): KExpr<R>
Link copied to clipboard
fun <D : KSort, R : KSort> KExpr<KArraySort<D, R>>.store(index: KExpr<D>, value: KExpr<R>): KExpr<KArraySort<D, R>>
fun <D0 : KSort, D1 : KSort, R : KSort> KExpr<KArray2Sort<D0, D1, R>>.store(index0: KExpr<D0>, index1: KExpr<D1>, value: KExpr<R>): KExpr<KArray2Sort<D0, D1, R>>
fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KExpr<KArray3Sort<D0, D1, D2, R>>.store(index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, value: KExpr<R>): KExpr<KArray3Sort<D0, D1, D2, R>>
Link copied to clipboard
operator fun <T : KArithSort> KExpr<T>.times(other: KExpr<T>): KExpr<T>
Link copied to clipboard
fun Double.toFp(sort: KFpSort = mkFp64Sort()): KFpValue<KFpSort>
fun Float.toFp(sort: KFpSort = mkFp32Sort()): KFpValue<KFpSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
operator fun <T : KArithSort> KExpr<T>.unaryMinus(): KExpr<T>
Link copied to clipboard

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
var isActive: Boolean = true

KContext and all created expressions are only valid as long as the context is active (not closed).

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

String representations are not cached since it requires a lot of memory. For example, (and a b) will store a full copy of a and b string representations

Link copied to clipboard

Extensions

Link copied to clipboard
inline fun <T : KBvSort> KContext.bvLessOrEqual(lhs: KExpr<T>, rhs: KExpr<T>, signed: Boolean, rewriteBvEq: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun KContext.distributeExtractOverConcat(high: Int, low: Int, concatenation: KBvConcatExpr, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvConcatExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>): KExpr<KBvSort>

(extract (concat a b)) ==> (concat (extract a) (extract b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.distributeOperationOverConcat(args: List<KExpr<T>>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvOpExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.evalFpPredicateOr(value: KExpr<T>, predicate: (KFpValue<T>) -> Boolean, cont: (KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : KFpSort> KContext.mkFpMaxValue(sort: T, signBit: Boolean): KFpValue<T>
Link copied to clipboard
fun <T : KFpSort> KContext.mkFpOne(sort: T, signBit: Boolean): KFpValue<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.rewriteArithGe(lhs: KExpr<T>, rhs: KExpr<T>, rewriteArithLe: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(>= a b) ==> (<= b a)

Link copied to clipboard
inline fun <T : KArithSort> KContext.rewriteArithGt(lhs: KExpr<T>, rhs: KExpr<T>, rewriteArithLt: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(> a b) ==> (< b a)

Link copied to clipboard
inline fun <T : KArithSort> KContext.rewriteArithSub(args: List<KExpr<T>>, rewriteArithAdd: KContext.(List<KExpr<T>>) -> KExpr<T>, rewriteArithUnaryMinus: KContext.(KExpr<T>) -> KExpr<T>): KExpr<T>

(- a b) ==> (+ a -b)

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvAddNoOverflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, isSigned: Boolean, rewriteBvSignedLessExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = KContext::simplifyBvSignedLessExpr, rewriteBvAddExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::simplifyBvAddExpr, rewriteBvZeroExtensionExpr: KContext.(Int, KExpr<T>) -> KExpr<KBvSort> = KContext::simplifyBvZeroExtensionExpr, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<T>) -> KExpr<KBvSort> = KContext::simplifyBvExtractExpr, rewriteBvEq: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBoolSort> = { l, r -> simplifyEq(l, r) }, rewriteAnd: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = { l, r -> simplifyAnd(l, r) }, rewriteImplies: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::simplifyImplies): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvAddNoUnderflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvSignedLessExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = KContext::simplifyBvSignedLessExpr, rewriteBvAddExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T> = KContext::simplifyBvAddExpr, rewriteAnd: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = { l, r -> simplifyAnd(l, r) }, rewriteImplies: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::simplifyImplies): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvConcatEq(l: KExpr<T>, r: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvEq: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBoolSort>, rewriteFlatAnd: KContext.(List<KExpr<KBoolSort>>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(= (concat a b) c) ==> (and (= a (extract (0, ) c)) (= b (extract (, + ) c)) )

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvDivNoOverflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvEq: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = { l, r -> simplifyEq(l, r) }, rewriteAnd: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = { l, r -> simplifyAnd(l, r) }, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::simplifyNot): KExpr<KBoolSort>
Link copied to clipboard
fun <T : KBvSort> KContext.rewriteBvMulNoOverflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, isSigned: Boolean, rewriteBvZeroExtensionExpr: KContext.(Int, KExpr<T>) -> KExpr<KBvSort> = KContext::mkBvZeroExtensionExpr, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvExtractExpr, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvConcatExpr, rewriteBvMulExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvMulExpr, rewriteBvXorExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvXorExpr, rewriteBvEq: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBoolSort> = { l, r -> mkEq(l, r) }, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T> = KContext::mkBvNotExpr, rewriteOr: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>, Boolean, Boolean) -> KExpr<KBoolSort> = KContext::mkOr, rewriteFlatOr: KContext.(List<KExpr<KBoolSort>>) -> KExpr<KBoolSort> = { mkOr(it) }, rewriteAnd: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = { l, r -> mkAnd(l, r) }, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::mkNot): KExpr<KBoolSort>
Link copied to clipboard
fun <T : KBvSort> KContext.rewriteBvMulNoUnderflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvExtractExpr, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvConcatExpr, rewriteBvMulExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvMulExpr, rewriteBvXorExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort> = KContext::mkBvXorExpr, rewriteBvEq: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBoolSort> = { l, r -> mkEq(l, r) }, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T> = KContext::mkBvNotExpr, rewriteOr: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>, Boolean, Boolean) -> KExpr<KBoolSort> = KContext::mkOr, rewriteFlatOr: KContext.(List<KExpr<KBoolSort>>) -> KExpr<KBoolSort> = { mkOr(it) }, rewriteAnd: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = { l, r -> mkAnd(l, r) }, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::mkNot): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvNAndExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvOrExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T>): KExpr<T>

(bvnand a b) ==> (bvor (bvnot a) (bvnot b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvNegNoOverflowExpr(arg: KExpr<T>, rewriteBvEq: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = { l, r -> simplifyEq(l, r) }, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::simplifyNot): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvNorExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvOrExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T>): KExpr<T>

(bvnor a b) ==> (bvnot (bvor a b))

Link copied to clipboard
inline fun KContext.rewriteBvRepeatExpr(repeatNumber: Int, value: KExpr<KBvSort>, rewriteFlatBvConcatExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>): KExpr<KBvSort>

(repeat a x) ==> (concat a a ..x.. a)

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvRotateLeftIndexedExpr(rotation: Int, value: KExpr<T>, crossinline rewriteBvExtractExpr: KContext.(Int, Int, KExpr<T>) -> KExpr<KBvSort>, crossinline rewriteBvConcatExpr: KContext.(KExpr<T>, KExpr<KBvSort>) -> KExpr<KBvSort>): KExpr<T>

(rotateLeft a x) ==> (concat (extract size-1-x:0 a) (extract size-1:size-x a))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvRotateRightIndexedExpr(rotation: Int, value: KExpr<T>, crossinline rewriteBvExtractExpr: KContext.(Int, Int, KExpr<T>) -> KExpr<KBvSort>, crossinline rewriteBvConcatExpr: KContext.(KExpr<T>, KExpr<KBvSort>) -> KExpr<KBvSort>): KExpr<T>

(rotateRight a x) ==> (rotateLeft a (- size x))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvSignedGreaterExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvSignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(sgt a b) ==> (not (sle a b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvSignedGreaterOrEqualExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvSignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(sge a b) ==> (sle b a)

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvSignedLessExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvSignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(slt a b) ==> (not (sle b a))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvSubExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvAddExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteBvNegationExpr: KContext.(KExpr<T>) -> KExpr<T>): KExpr<T>

(- a b) ==> (+ a -b)

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvSubNoOverflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvSignedLessExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = KContext::simplifyBvSignedLessExpr, rewriteBvAddNoOverflowExpr: (KExpr<T>, KExpr<T>, Boolean) -> KExpr<KBoolSort> = { l, r, isSigned -> simplifyBvAddNoOverflowExpr(l, r, isSigned) }, rewriteBvEq: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = { l, r -> simplifyEq(l, r) }, rewriteBvNegationExpr: KContext.(KExpr<T>) -> KExpr<T> = KContext::simplifyBvNegationExpr, rewriteIte: (KExpr<KBoolSort>, KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = { c, t, f -> simplifyIte(c, t, f) }): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvSubNoUnderflowExpr(lhs: KExpr<T>, rhs: KExpr<T>, isSigned: Boolean, rewriteBvSignedLessExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = KContext::simplifyBvSignedLessExpr, rewriteBvUnsignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = KContext::simplifyBvUnsignedLessOrEqualExpr, createBvAddNoUnderflowExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort> = KContext::simplifyBvAddNoUnderflowExpr, rewriteBvNegationExpr: KContext.(KExpr<T>) -> KExpr<T> = KContext::simplifyBvNegationExpr, rewriteImplies: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort> = KContext::simplifyImplies): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvUnsignedGreaterExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvUnsignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(ugt a b) ==> (not (ule a b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvUnsignedGreaterOrEqualExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvUnsignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(uge a b) ==> (ule b a)

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvUnsignedLessExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvUnsignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort>): KExpr<KBoolSort>

(ult a b) ==> (not (ule b a))

Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvXNorExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvXorExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T>): KExpr<T>

(bvxnor a b) ==> (bvnot (bvxor a b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.rewriteBvZeroExtensionExpr(extensionSize: Int, value: KExpr<T>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>): KExpr<KBvSort>

(zeroext a) ==> (concat 0 a)

Link copied to clipboard
inline fun <T : KFpSort> KContext.rewriteFpGreaterExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteFpLessExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KFpSort> KContext.rewriteFpGreaterOrEqualExpr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteFpLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KFpSort> KContext.rewriteFpSubExpr(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>, rewriteFpNegationExpr: KContext.(KExpr<T>) -> KExpr<T>, rewriteFpAddExpr: KContext.(KExpr<KFpRoundingModeSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

a - b ==> a + (-b)

Link copied to clipboard

(=> p q) ==> (or (not p) q)

Link copied to clipboard

(xor a b) ==> (= (not a) b)

Link copied to clipboard
inline fun <T : KBvSort> KContext.rotateLeft(arg: KExpr<T>, size: Int, rotationNumber: Int, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<T>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<T>, KExpr<KBvSort>) -> KExpr<KBvSort>): KExpr<T>
Link copied to clipboard
fun KContext.simplifyAnd(lhs: KExpr<KBoolSort>, rhs: KExpr<KBoolSort>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
fun KContext.simplifyAnd(args: List<KExpr<KBoolSort>>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithAddLight(args: List<KExpr<T>>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithDivLight(lhs: KExpr<T>, rhs: KExpr<T>, rewriteArithUnaryMinus: KContext.(KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithLeLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithLtLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithMulLight(args: List<KExpr<T>>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithPowerLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KArithSort> KContext.simplifyArithUnaryMinusLight(arg: KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
fun <R : KSort> KContext.simplifyArrayNSelect(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>): KExpr<R>
Link copied to clipboard
inline fun <R : KSort> KContext.simplifyArrayNSelectFromArrayStore(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, storeIndexMatch: KContext.(KArrayNStore<R>, List<KExpr<*>>) -> Boolean, storeIndexDistinct: KContext.(KArrayNStore<R>, List<KExpr<*>>) -> Boolean, cont: (KExpr<KArrayNSort<R>>, List<KExpr<*>>) -> KExpr<R>): KExpr<R>
Link copied to clipboard
inline fun <R : KSort> KContext.simplifyArrayNSelectLambda(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, rewriteBody: KContext.(KExpr<R>) -> KExpr<R> = { it }, cont: (KExpr<KArrayNSort<R>>, List<KExpr<*>>) -> KExpr<R>): KExpr<R>
Link copied to clipboard
fun <R : KSort> KContext.simplifyArrayNStore(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, value: KExpr<R>): KExpr<KArrayNSort<R>>
Link copied to clipboard
inline fun <R : KSort> KContext.simplifyArrayNStoreLight(array: KExpr<KArrayNSort<R>>, indices: List<KExpr<*>>, value: KExpr<R>, cont: (KExpr<KArrayNSort<R>>, List<KExpr<*>>, KExpr<R>) -> KExpr<KArrayNSort<R>>): KExpr<KArrayNSort<R>>
Link copied to clipboard
fun <D : KSort, R : KSort> KContext.simplifyArraySelect(array: KExpr<KArraySort<D, R>>, index: KExpr<D>): KExpr<R>
fun <D0 : KSort, D1 : KSort, R : KSort> KContext.simplifyArraySelect(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>): KExpr<R>
fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KContext.simplifyArraySelect(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>): KExpr<R>
Link copied to clipboard
inline fun <A : KArraySortBase<R>, R : KSort, L : KArrayLambdaBase<A, R>> KContext.simplifyArraySelectLambda(array: KExpr<A>, mkLambdaSubstitution: KExprSubstitutor.(L) -> Unit, rewriteBody: KContext.(KExpr<R>) -> KExpr<R>, default: (KExpr<A>) -> KExpr<R>): KExpr<R>
inline fun <D : KSort, R : KSort> KContext.simplifyArraySelectLambda(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, rewriteBody: KContext.(KExpr<R>) -> KExpr<R> = { it }, cont: (KExpr<KArraySort<D, R>>, KExpr<D>) -> KExpr<R>): KExpr<R>
inline fun <D0 : KSort, D1 : KSort, R : KSort> KContext.simplifyArraySelectLambda(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, rewriteBody: KContext.(KExpr<R>) -> KExpr<R> = { it }, cont: (KExpr<KArray2Sort<D0, D1, R>>, KExpr<D0>, KExpr<D1>) -> KExpr<R>): KExpr<R>
inline fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KContext.simplifyArraySelectLambda(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, rewriteBody: KContext.(KExpr<R>) -> KExpr<R> = { it }, cont: (KExpr<KArray3Sort<D0, D1, D2, R>>, KExpr<D0>, KExpr<D1>, KExpr<D2>) -> KExpr<R>): KExpr<R>
Link copied to clipboard
fun <D : KSort, R : KSort> KContext.simplifyArrayStore(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, value: KExpr<R>): KExpr<KArraySort<D, R>>
fun <D0 : KSort, D1 : KSort, R : KSort> KContext.simplifyArrayStore(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, value: KExpr<R>): KExpr<KArray2Sort<D0, D1, R>>
fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KContext.simplifyArrayStore(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, value: KExpr<R>): KExpr<KArray3Sort<D0, D1, D2, R>>
Link copied to clipboard
inline fun <D : KSort, R : KSort> KContext.simplifyArrayStoreLight(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, value: KExpr<R>, cont: (KExpr<KArraySort<D, R>>, KExpr<D>, KExpr<R>) -> KExpr<KArraySort<D, R>>): KExpr<KArraySort<D, R>>
inline fun <D0 : KSort, D1 : KSort, R : KSort> KContext.simplifyArrayStoreLight(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, value: KExpr<R>, cont: (KExpr<KArray2Sort<D0, D1, R>>, KExpr<D0>, KExpr<D1>, KExpr<R>) -> KExpr<KArray2Sort<D0, D1, R>>): KExpr<KArray2Sort<D0, D1, R>>
inline fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KContext.simplifyArrayStoreLight(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, value: KExpr<R>, cont: (KExpr<KArray3Sort<D0, D1, D2, R>>, KExpr<D0>, KExpr<D1>, KExpr<D2>, KExpr<R>) -> KExpr<KArray3Sort<D0, D1, D2, R>>): KExpr<KArray3Sort<D0, D1, D2, R>>
Link copied to clipboard

(ite c true e) ==> (or c e) (ite c false e) ==> (and (not c) e) (ite c t true) ==> (or (not c) t) (ite c t false) ==> (and c t)

Link copied to clipboard

(ite c t c) ==> (and c t) (ite c c e) ==> (or c e)

Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBv2IntExprLight(value: KExpr<T>, isSigned: Boolean, cont: (KExpr<T>, Boolean) -> KExpr<KIntSort>): KExpr<KIntSort>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvAddExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvAddExprNestedAdd(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvAddExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(+ const1 (+ const2 x)) ==> (+ (+ const1 const2) x)

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvAndExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvAndExprNestedAnd(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvAndExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvand const1 (bvand const2 x)) ==> (bvand (bvand const1 const2) x)

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvAndOr(args: List<KExpr<T>>, neutralElement: KBitVecValue<T>, isZeroElement: KContext.(KBitVecValue<T>) -> Boolean, buildZeroElement: KContext.() -> KBitVecValue<T>, operation: (KBitVecValue<T>, KBitVecValue<T>) -> KBitVecValue<T>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvArithShiftRightExprLight(lhs: KExpr<T>, shift: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort, S : KBvSort> KContext.simplifyBvConcatExprLight(lhs: KExpr<T>, rhs: KExpr<S>, cont: (KExpr<T>, KExpr<S>) -> KExpr<KBvSort>): KExpr<KBvSort>

eval constants

Link copied to clipboard
inline fun <T : KBvSort, S : KBvSort> KContext.simplifyBvConcatExprNestedConcat(lhs: KExpr<T>, rhs: KExpr<S>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (KExpr<T>, KExpr<S>) -> KExpr<KBvSort>): KExpr<KBvSort>

(concat const1 (concat const2 a)) ==> (concat (concat const1 const2) a) (concat (concat a const1) const2) ==> (concat a (concat const1 const2))

Link copied to clipboard
fun <T : KBvSort> KContext.simplifyBvExtractExpr(high: Int, low: Int, value: KExpr<T>): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvExtractExprLight(high: Int, low: Int, value: KExpr<T>, cont: (Int, Int, KExpr<T>) -> KExpr<KBvSort>): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvExtractExprNestedExtract(high: Int, low: Int, value: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (Int, Int, KExpr<T>) -> KExpr<KBvSort>): KExpr<KBvSort>

(extracthigh:low (extract_:nestedLow x)) ==> (extracthigh+nestedLow : low+nestedLow x)

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvExtractExprTryRewrite(high: Int, low: Int, value: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvConcatExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, rewriteBvNotExpr: KContext.(KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvOrExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvAndExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvXorExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvAddExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvMulExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (Int, Int, KExpr<T>) -> KExpr<KBvSort>): KExpr<KBvSort>
inline fun <T : KBvSort> KContext.simplifyBvLogicalShiftRightExprConstShift(arg: KExpr<T>, shift: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvlshr x shift) ==> (concat 0.shift.0 (extract size-1:shift x))

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvLogicalShiftRightExprLight(lhs: KExpr<T>, shift: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvMulExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvMulExprMinusOneConst(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvNegationExpr: KContext.(KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(* -1 a) ==> -a

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvMulExprNestedMul(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvMulExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(* const1 (* const2 x)) ==> (* (* const1 const2) x)

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvNegationExprAdd(arg: KExpr<T>, rewriteBvAddExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteBvNegationExpr: KContext.(KExpr<T>) -> KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>

(bvneg (bvadd a b)) ==> (bvadd (bvneg a) (bvneg b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvNegationExprLight(arg: KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvNotExprConcat(arg: KExpr<T>, rewriteBvNotExpr: KContext.(KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>

(bvnot (concat a b)) ==> (concat (bvnot a) (bvnot b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvNotExprIte(arg: KExpr<T>, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T>, rewriteBvIte: KContext.(KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>

(bvnot (ite c a b)) ==> (ite c (bvnot a) (bvnot b))

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvNotExprLight(arg: KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvOrExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvOrExprNestedOr(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvOrExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvor const1 (bvor const2 x)) ==> (bvor (bvor const1 const2) x)

Link copied to clipboard
Link copied to clipboard
fun <T : KBvSort> KContext.simplifyBvRepeatExpr(repeatNumber: Int, value: KExpr<T>): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvRepeatExprLight(repeatNumber: Int, value: KExpr<T>, cont: (Int, KExpr<T>) -> KExpr<KBvSort>): KExpr<KBvSort>

(repeat a x) ==> (concat a a ..x.. a)

Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvRotateLeftExprConstRotation(lhs: KExpr<T>, rotation: KExpr<T>, rewriteBvRotateLeftIndexedExpr: KContext.(Int, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvRotateRightExprConstRotation(lhs: KExpr<T>, rotation: KExpr<T>, rewriteBvRotateRightIndexedExpr: KContext.(Int, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(rotateRight a x) ==> (rotateLeft a (- size x))

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvShiftLeftExprConstShift(lhs: KExpr<T>, shift: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvshl x shift) ==> (concat (extract size-1-shift:0 x) 0.shift.0)

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvShiftLeftExprLight(lhs: KExpr<T>, shift: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvShiftLeftExprNestedShiftLeft(lhs: KExpr<T>, shift: KExpr<T>, rewriteBvAddExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteBvUnsignedLessOrEqualExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, rewriteBvShiftLeftExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteIte: (KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvshl (bvshl x nestedShift) shift) ==> (ite (bvule nestedShift (+ nestedShift shift)) (bvshl x (+ nestedShift shift)) 0)

Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvSignedDivExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvSignedLessOrEqualExprLight(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvEq: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvSignedModExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvSignedRemExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KBvSort> KContext.simplifyBvSignExtensionExpr(extensionSize: Int, value: KExpr<T>): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvSignExtensionExprLight(extensionSize: Int, value: KExpr<T>, cont: (Int, KExpr<T>) -> KExpr<KBvSort>): KExpr<KBvSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyBvToFpExpr(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<KBvSort>, signed: Boolean): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyBvToFpExprLight(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<KBvSort>, signed: Boolean, cont: (T, KExpr<KFpRoundingModeSort>, KExpr<KBvSort>, Boolean) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvUnsignedDivExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
inline fun <T : KBvSort> KContext.simplifyBvUnsignedDivExprPowerOfTwoDivisor(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvLogicalShiftRightExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(udiv a x), x == 2^n ==> (lshr a n)

Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvUnsignedRemExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
inline fun <T : KBvSort> KContext.simplifyBvUnsignedRemExprPowerOfTwoDivisor(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<T>) -> KExpr<KBvSort>, rewriteBvZeroExtensionExpr: KContext.(Int, KExpr<T>) -> KExpr<KBvSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(urem a x), x == 2^n ==> (concat 0 (extract n-1:0 a))

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvXorExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvXorExprMaxConst(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvNotExpr: KContext.(KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvxor 0xFFFF... a) ==> (bvnot a)

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvXorExprNestedXor(lhs: KExpr<T>, rhs: KExpr<T>, rewriteBvXorExpr: KContext.(KExpr<T>, KExpr<T>) -> KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(bvxor const1 (bvxor const2 x)) ==> (bvxor (bvxor const1 const2) x)

Link copied to clipboard
fun <T : KBvSort> KContext.simplifyBvZeroExtensionExpr(extensionSize: Int, value: KExpr<T>): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyBvZeroExtensionExprLight(extensionSize: Int, value: KExpr<T>, cont: (Int, KExpr<T>) -> KExpr<KBvSort>): KExpr<KBvSort>
Link copied to clipboard
fun <T : KSort> KContext.simplifyDistinct(args: List<KExpr<T>>, order: Boolean = true): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KSort> KContext.simplifyDistinctLight(args: List<KExpr<T>>, rewriteNot: KContext.(KExpr<KBoolSort>) -> KExpr<KBoolSort>, rewriteEq: KContext.(KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>, cont: (List<KExpr<T>>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
fun <T : KSort> KContext.simplifyEq(lhs: KExpr<T>, rhs: KExpr<T>, order: Boolean = true): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KSort> KContext.simplifyEqBool(lhs: KExpr<T>, rhs: KExpr<T>, rewriteEqBool: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard

(= (not a) (not b)) ==> (= a b)

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyEqBvConcat(lhs: KExpr<T>, rhs: KExpr<T>, crossinline rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, crossinline rewriteBvEq: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBoolSort>, crossinline rewriteFlatAnd: KContext.(List<KExpr<KBoolSort>>) -> KExpr<KBoolSort>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyEqBvLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyEqFpLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KSort> KContext.simplifyEqLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyFlatBvAddExpr(args: List<KExpr<T>>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyFlatBvAndExpr(args: List<KExpr<T>>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>
inline fun <T : KBvSort> KContext.simplifyFlatBvAndExprDistributeOverConcat(args: List<KExpr<T>>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvAndExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>

(bvand (concat a b) c) ==> (concat (bvand (extract (0, ) c)) (bvand b (extract (, + ) c)) )

Link copied to clipboard
inline fun KContext.simplifyFlatBvConcatExpr(args: List<KExpr<KBvSort>>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvConcatExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, cont: (List<KExpr<KBvSort>>) -> KExpr<KBvSort>): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyFlatBvMulExpr(args: List<KExpr<T>>, cont: (negateResult: Boolean, List<KExpr<T>>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyFlatBvOrExpr(args: List<KExpr<T>>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyFlatBvOrExprDistributeOverConcat(args: List<KExpr<T>>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvOrExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>

(bvor (concat a b) c) ==> (concat (bvor (extract (0, ) c)) (bvor b (extract (, + ) c)) )

Link copied to clipboard
inline fun <T : KBvSort> KContext.simplifyFlatBvXorExpr(args: List<KExpr<T>>, cont: (Boolean, List<KExpr<T>>) -> KExpr<T>): KExpr<T>
inline fun <T : KBvSort> KContext.simplifyFlatBvXorExprDistributeOverConcat(args: List<KExpr<T>>, rewriteBvExtractExpr: KContext.(Int, Int, KExpr<KBvSort>) -> KExpr<KBvSort>, rewriteFlatBvXorExpr: KContext.(List<KExpr<KBvSort>>) -> KExpr<KBvSort>, rewriteBvConcatExpr: KContext.(KExpr<KBvSort>, KExpr<KBvSort>) -> KExpr<KBvSort>, cont: (List<KExpr<T>>) -> KExpr<T>): KExpr<T>

(bvxor (concat a b) c) ==> (concat (bvxor (extract (0, ) c)) (bvxor b (extract (, + ) c)) )

Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpAbsExprLight(value: KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpAddExpr(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpAddExprLight(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<KFpRoundingModeSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpDivExpr(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpDivExprLight(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<KFpRoundingModeSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpEqualExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpFromBvExpr(sign: KExpr<KBv1Sort>, biasedExponent: KExpr<out KBvSort>, significand: KExpr<out KBvSort>): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpFromBvExprLight(sign: KExpr<KBv1Sort>, biasedExponent: KExpr<out KBvSort>, significand: KExpr<out KBvSort>, cont: (KExpr<KBv1Sort>, KExpr<out KBvSort>, KExpr<out KBvSort>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpFusedMulAddExpr(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>, arg2: KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpFusedMulAddExprLight(roundingMode: KExpr<KFpRoundingModeSort>, arg0: KExpr<T>, arg1: KExpr<T>, arg2: KExpr<T>, cont: (KExpr<KFpRoundingModeSort>, KExpr<T>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpLessExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<KBoolSort>): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpMaxExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpMinExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpMulExpr(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpMulExprLight(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<KFpRoundingModeSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpNegationExprLight(value: KExpr<T>, cont: (KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpRemExprLight(lhs: KExpr<T>, rhs: KExpr<T>, cont: (KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpSubExpr(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>): KExpr<T>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpToBvExpr(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>, bvSize: Int, isSigned: Boolean): KExpr<KBvSort>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpToBvExprLight(roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<T>, bvSize: Int, isSigned: Boolean, cont: (KExpr<KFpRoundingModeSort>, KExpr<T>, Int, Boolean) -> KExpr<KBvSort>): KExpr<KBvSort>
Link copied to clipboard
fun <T : KFpSort> KContext.simplifyFpToFpExpr(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<out KFpSort>): KExpr<T>
Link copied to clipboard
inline fun <T : KFpSort> KContext.simplifyFpToFpExprLight(sort: T, roundingMode: KExpr<KFpRoundingModeSort>, value: KExpr<out KFpSort>, cont: (T, KExpr<KFpRoundingModeSort>, KExpr<out KFpSort>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : KSort> KContext.simplifyIte(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KSort> KContext.simplifyIteBool(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>, rewriteBoolIte: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort>, cont: (KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KSort> KContext.simplifyIteLight(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>, cont: (KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KSort> KContext.simplifyIteNotCondition(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>, cont: (KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(ite (not c) a b) ==> (ite c b a)

Link copied to clipboard
inline fun <T : KSort> KContext.simplifyIteSameBranches(condition: KExpr<KBoolSort>, trueBranch: KExpr<T>, falseBranch: KExpr<T>, rewriteIte: KContext.(KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>, rewriteOr: KContext.(KExpr<KBoolSort>, KExpr<KBoolSort>) -> KExpr<KBoolSort>, cont: (KExpr<KBoolSort>, KExpr<T>, KExpr<T>) -> KExpr<T>): KExpr<T>

(ite c t1 (ite c2 t1 t2)) ==> (ite (or c c2) t1 t2)

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun KContext.simplifyOr(lhs: KExpr<KBoolSort>, rhs: KExpr<KBoolSort>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
fun KContext.simplifyOr(args: List<KExpr<KBoolSort>>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
inline fun <A : KArraySortBase<R>, R : KSort, S : KArrayStoreBase<A, R>> KContext.simplifySelectFromArrayStore(initialArray: KExpr<A>, storeIndicesMatch: (S) -> Boolean, storeIndicesDistinct: (S) -> Boolean, findArrayToSelectFrom: (S) -> KExpr<A>, default: (KExpr<A>) -> KExpr<R>): KExpr<R>

Simplify select from a chain of array store expressions.

inline fun <D : KSort, R : KSort> KContext.simplifySelectFromArrayStore(array: KExpr<KArraySort<D, R>>, index: KExpr<D>, storeIndexMatch: KContext.(KArrayStore<D, R>, KExpr<D>) -> Boolean, storeIndexDistinct: KContext.(KArrayStore<D, R>, KExpr<D>) -> Boolean, cont: (KExpr<KArraySort<D, R>>, KExpr<D>) -> KExpr<R>): KExpr<R>
inline fun <D0 : KSort, D1 : KSort, R : KSort> KContext.simplifySelectFromArrayStore(array: KExpr<KArray2Sort<D0, D1, R>>, index0: KExpr<D0>, index1: KExpr<D1>, storeIndexMatch: KContext.(KArray2Store<D0, D1, R>, KExpr<D0>, KExpr<D1>) -> Boolean, storeIndexDistinct: KContext.(KArray2Store<D0, D1, R>, KExpr<D0>, KExpr<D1>) -> Boolean, cont: (KExpr<KArray2Sort<D0, D1, R>>, KExpr<D0>, KExpr<D1>) -> KExpr<R>): KExpr<R>
inline fun <D0 : KSort, D1 : KSort, D2 : KSort, R : KSort> KContext.simplifySelectFromArrayStore(array: KExpr<KArray3Sort<D0, D1, D2, R>>, index0: KExpr<D0>, index1: KExpr<D1>, index2: KExpr<D2>, storeIndexMatch: KContext.(KArray3Store<D0, D1, D2, R>, KExpr<D0>, KExpr<D1>, KExpr<D2>) -> Boolean, storeIndexDistinct: KContext.(KArray3Store<D0, D1, D2, R>, KExpr<D0>, KExpr<D1>, KExpr<D2>) -> Boolean, cont: (KExpr<KArray3Sort<D0, D1, D2, R>>, KExpr<D0>, KExpr<D1>, KExpr<D2>) -> KExpr<R>): KExpr<R>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard