Package-level declarations

Types

Functions

Link copied to clipboard
Link copied to clipboard

left and right are definitely distinct if there is at least one distinct pair of expressions.

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
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> evalBinaryOp(roundingMode: KExpr<KFpRoundingModeSort>, lhs: KExpr<T>, rhs: KExpr<T>, operation: (KFpRoundingMode, KFpValue<*>, KFpValue<*>) -> KFpValue<*>, cont: () -> KExpr<T>): KExpr<T>
Link copied to clipboard
inline fun <T : KBvSort, S : KBvSort, R : KBvSort> evalBvOperation(lhs: KExpr<T>, rhs: KExpr<S>, operation: (KBitVecValue<T>, KBitVecValue<S>) -> KBitVecValue<R>, cont: () -> KExpr<R>): KExpr<R>
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

Eval integer div wrt Int theory rules.

Link copied to clipboard

Eval integer mod wrt Int theory rules.

Link copied to clipboard

Eval integer rem wrt Int theory rules.

Link copied to clipboard
inline fun <T : KBvSort> executeIfValue(lhs: KExpr<T>, rhs: KExpr<T>, body: (KBitVecValue<T>, KExpr<T>) -> Unit)
Link copied to clipboard
inline fun <T> flatBinaryBvExpr(initial: KExpr<KBvSort>, getLhs: (T) -> KExpr<KBvSort>, getRhs: (T) -> KExpr<KBvSort>): List<KExpr<KBvSort>>
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 : 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(args: List<KExpr<KBoolSort>>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
fun KContext.simplifyAnd(lhs: KExpr<KBoolSort>, rhs: KExpr<KBoolSort>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
Link copied to clipboard
inline fun <T : KApp<KBoolSort, KBoolSort>> simplifyAndOr(flat: Boolean, order: Boolean, args: List<KExpr<KBoolSort>>, neutralElement: KExpr<KBoolSort>, zeroElement: KExpr<KBoolSort>, buildResultExpr: (List<KExpr<KBoolSort>>) -> T): KExpr<KBoolSort>
inline fun <T : KApp<KBoolSort, KBoolSort>> simplifyAndOr(flat: Boolean, order: Boolean, args: List<KExpr<KBoolSort>>, neutralElement: KExpr<KBoolSort>, zeroElement: KExpr<KBoolSort>, buildResultBinaryExpr: (KExpr<KBoolSort>, KExpr<KBoolSort>) -> T, buildResultFlatExpr: (List<KExpr<KBoolSort>>) -> T): KExpr<KBoolSort>
inline fun <T : KApp<KBoolSort, KBoolSort>> simplifyAndOr(flat: Boolean, order: Boolean, lhs: KExpr<KBoolSort>, rhs: KExpr<KBoolSort>, neutralElement: KExpr<KBoolSort>, zeroElement: KExpr<KBoolSort>, buildResultBinaryExpr: (KExpr<KBoolSort>, KExpr<KBoolSort>) -> T, buildResultFlatExpr: (List<KExpr<KBoolSort>>) -> T): 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 <A : KArraySortBase<R>, R : KSort, S : KArraySelectBase<out A, R>> simplifyArrayStoreLight(array: KExpr<A>, value: KExpr<R>, selectIndicesMatch: (S) -> Boolean, default: () -> KExpr<A>): KExpr<A>
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 : KSort, P : KExpr<T>> KExprSimplifierBase.simplifyExpr(expr: P, preprocess: KContext.(P) -> KExpr<T>): KExpr<T>

Specialized version of simplifyExpr for expressions which are always rewritten with another expression on the preprocess stage.

inline fun <T : KSort, P : KExpr<T>, A0 : KSort> KExprSimplifierBase.simplifyExpr(expr: P, a0: KExpr<A0>, preprocess: KContext.(P) -> KExpr<T> = { expr }, crossinline simplifier: KContext.(KExpr<A0>) -> KExpr<T>): KExpr<T>

Specialized version of simplifyExpr for expressions with a single argument.

inline fun <T : KSort, P : KExpr<T>, A : KSort> KExprSimplifierBase.simplifyExpr(expr: P, args: List<KExpr<A>>, preprocess: KContext.(P) -> KExpr<T> = { expr }, crossinline simplifier: KContext.(List<KExpr<A>>) -> KExpr<T>): KExpr<T>

Simplify an expression. preprocess Rewrite an expression before simplification of an args (top-down). simplifier Rewrite an expression after args simplification (bottom-up).

inline fun <T : KSort, P : KExpr<T>, A0 : KSort, A1 : KSort> KExprSimplifierBase.simplifyExpr(expr: P, a0: KExpr<A0>, a1: KExpr<A1>, preprocess: KContext.(P) -> KExpr<T> = { expr }, crossinline simplifier: KContext.(KExpr<A0>, KExpr<A1>) -> KExpr<T>): KExpr<T>

Specialized version of simplifyExpr for expressions with two arguments.

inline fun <T : KSort, P : KExpr<T>, A0 : KSort, A1 : KSort, A2 : KSort> KExprSimplifierBase.simplifyExpr(expr: P, a0: KExpr<A0>, a1: KExpr<A1>, a2: KExpr<A2>, preprocess: KContext.(P) -> KExpr<T> = { expr }, crossinline simplifier: KContext.(KExpr<A0>, KExpr<A1>, KExpr<A2>) -> KExpr<T>): KExpr<T>

Specialized version of simplifyExpr for expressions with three arguments.

inline fun <T : KSort, P : KExpr<T>, A0 : KSort, A1 : KSort, A2 : KSort, A3 : KSort> KExprSimplifierBase.simplifyExpr(expr: P, a0: KExpr<A0>, a1: KExpr<A1>, a2: KExpr<A2>, a3: KExpr<A3>, preprocess: KContext.(P) -> KExpr<T> = { expr }, crossinline simplifier: KContext.(KExpr<A0>, KExpr<A1>, KExpr<A2>, KExpr<A3>) -> KExpr<T>): KExpr<T>

Specialized version of simplifyExpr for expressions with four arguments.

inline fun <T : KSort, P : KExpr<T>, A0 : KSort, A1 : KSort, A2 : KSort, A3 : KSort, A4 : KSort> KExprSimplifierBase.simplifyExpr(expr: P, a0: KExpr<A0>, a1: KExpr<A1>, a2: KExpr<A2>, a3: KExpr<A3>, a4: KExpr<A4>, preprocess: KContext.(P) -> KExpr<T> = { expr }, crossinline simplifier: KContext.(KExpr<A0>, KExpr<A1>, KExpr<A2>, KExpr<A3>, KExpr<A4>) -> KExpr<T>): KExpr<T>

Specialized version of simplifyExpr for expressions with five arguments.

Link copied to clipboard
inline fun <T : KSort> KExprSimplifierBase.simplifyExprBase(expr: KExpr<T>, preprocess: KExprSimplifier.() -> KExpr<T>, simplify: KExprSimplifier.() -> KExpr<T>): KExpr<T>

Simplify an expression.

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(args: List<KExpr<KBoolSort>>, flat: Boolean = true, order: Boolean = true): KExpr<KBoolSort>
fun KContext.simplifyOr(lhs: KExpr<KBoolSort>, rhs: 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
Link copied to clipboard
fun trySimplifyAndOrElement(arg: KExpr<KBoolSort>, neutralElement: KExpr<KBoolSort>, zeroElement: KExpr<KBoolSort>, posLiterals: MutableSet<KExpr<KBoolSort>>, negLiterals: MutableSet<KExpr<KBoolSort>>, resultElements: MutableList<KExpr<KBoolSort>>): KExpr<KBoolSort>?
Link copied to clipboard
Link copied to clipboard
inline fun <T : KSort, R> withExpressionsOrdered(lhs: KExpr<T>, rhs: KExpr<T>, body: (KExpr<T>, KExpr<T>) -> R): R

Properties