-
- All Implemented Interfaces:
-
io.ksmt.expr.transformer.KTransformerBase
public class KZ3ExprInternalizer extends KExprLongInternalizerBase
-
-
Constructor Summary
Constructors Constructor Description KZ3ExprInternalizer(KContext ctx, KZ3Context z3InternCtx)
-
Method Summary
Modifier and Type Method Description final KContextgetCtx()LongfindInternalizedExpr(KExpr<?> expr)UnitsaveInternalizedExpr(KExpr<?> expr, Long internalized)final <T extends KDecl<?>> LonginternalizeDecl(T $self)final <T extends KSort> LonginternalizeSort(T $self)<T extends KSort> KFunctionApp<T>transform(KFunctionApp<T> expr)<T extends KSort> KConst<T>transform(KConst<T> expr)KAndExprtransform(KAndExpr expr)KAndBinaryExprtransform(KAndBinaryExpr expr)KOrExprtransform(KOrExpr expr)KOrBinaryExprtransform(KOrBinaryExpr expr)KNotExprtransform(KNotExpr expr)KImpliesExprtransform(KImpliesExpr expr)KXorExprtransform(KXorExpr expr)KTruetransform(KTrue expr)KFalsetransform(KFalse expr)<T extends KSort> KEqExpr<T>transform(KEqExpr<T> expr)<T extends KSort> KDistinctExpr<T>transform(KDistinctExpr<T> expr)<T extends KSort> KIteExpr<T>transform(KIteExpr<T> expr)KBitVecValue<KBv1Sort>transform(KBitVec1Value expr)KBitVecValue<KBv8Sort>transform(KBitVec8Value expr)KBitVecValue<KBv16Sort>transform(KBitVec16Value expr)KBitVecValue<KBv32Sort>transform(KBitVec32Value expr)KBitVecValue<KBv64Sort>transform(KBitVec64Value expr)KBitVecValue<KBvSort>transform(KBitVecCustomValue expr)<T extends KBvSort> KBvNotExpr<T>transform(KBvNotExpr<T> expr)<T extends KBvSort> KBvReductionAndExpr<T>transform(KBvReductionAndExpr<T> expr)<T extends KBvSort> KBvReductionOrExpr<T>transform(KBvReductionOrExpr<T> expr)<T extends KBvSort> KBvAndExpr<T>transform(KBvAndExpr<T> expr)<T extends KBvSort> KBvOrExpr<T>transform(KBvOrExpr<T> expr)<T extends KBvSort> KBvXorExpr<T>transform(KBvXorExpr<T> expr)<T extends KBvSort> KBvNAndExpr<T>transform(KBvNAndExpr<T> expr)<T extends KBvSort> KBvNorExpr<T>transform(KBvNorExpr<T> expr)<T extends KBvSort> KBvXNorExpr<T>transform(KBvXNorExpr<T> expr)<T extends KBvSort> KBvNegationExpr<T>transform(KBvNegationExpr<T> expr)<T extends KBvSort> KBvAddExpr<T>transform(KBvAddExpr<T> expr)<T extends KBvSort> KBvSubExpr<T>transform(KBvSubExpr<T> expr)<T extends KBvSort> KBvMulExpr<T>transform(KBvMulExpr<T> expr)<T extends KBvSort> KBvUnsignedDivExpr<T>transform(KBvUnsignedDivExpr<T> expr)<T extends KBvSort> KBvSignedDivExpr<T>transform(KBvSignedDivExpr<T> expr)<T extends KBvSort> KBvUnsignedRemExpr<T>transform(KBvUnsignedRemExpr<T> expr)<T extends KBvSort> KBvSignedRemExpr<T>transform(KBvSignedRemExpr<T> expr)<T extends KBvSort> KBvSignedModExpr<T>transform(KBvSignedModExpr<T> expr)<T extends KBvSort> KBvUnsignedLessExpr<T>transform(KBvUnsignedLessExpr<T> expr)<T extends KBvSort> KBvSignedLessExpr<T>transform(KBvSignedLessExpr<T> expr)<T extends KBvSort> KBvUnsignedLessOrEqualExpr<T>transform(KBvUnsignedLessOrEqualExpr<T> expr)<T extends KBvSort> KBvSignedLessOrEqualExpr<T>transform(KBvSignedLessOrEqualExpr<T> expr)<T extends KBvSort> KBvUnsignedGreaterOrEqualExpr<T>transform(KBvUnsignedGreaterOrEqualExpr<T> expr)<T extends KBvSort> KBvSignedGreaterOrEqualExpr<T>transform(KBvSignedGreaterOrEqualExpr<T> expr)<T extends KBvSort> KBvUnsignedGreaterExpr<T>transform(KBvUnsignedGreaterExpr<T> expr)<T extends KBvSort> KBvSignedGreaterExpr<T>transform(KBvSignedGreaterExpr<T> expr)KExpr<KBvSort>transform(KBvConcatExpr expr)KBvExtractExprtransform(KBvExtractExpr expr)KBvSignExtensionExprtransform(KBvSignExtensionExpr expr)KBvZeroExtensionExprtransform(KBvZeroExtensionExpr expr)KBvRepeatExprtransform(KBvRepeatExpr expr)<T extends KBvSort> KBvShiftLeftExpr<T>transform(KBvShiftLeftExpr<T> expr)<T extends KBvSort> KBvLogicalShiftRightExpr<T>transform(KBvLogicalShiftRightExpr<T> expr)<T extends KBvSort> KBvArithShiftRightExpr<T>transform(KBvArithShiftRightExpr<T> expr)<T extends KBvSort> KBvRotateLeftExpr<T>transform(KBvRotateLeftExpr<T> expr)<T extends KBvSort> KBvRotateLeftIndexedExpr<T>transform(KBvRotateLeftIndexedExpr<T> expr)<T extends KBvSort> KBvRotateRightExpr<T>transform(KBvRotateRightExpr<T> expr)<T extends KBvSort> KBvRotateRightIndexedExpr<T>transform(KBvRotateRightIndexedExpr<T> expr)KBv2IntExprtransform(KBv2IntExpr expr)<T extends KBvSort> KBvAddNoOverflowExpr<T>transform(KBvAddNoOverflowExpr<T> expr)<T extends KBvSort> KBvAddNoUnderflowExpr<T>transform(KBvAddNoUnderflowExpr<T> expr)<T extends KBvSort> KBvSubNoOverflowExpr<T>transform(KBvSubNoOverflowExpr<T> expr)<T extends KBvSort> KBvSubNoUnderflowExpr<T>transform(KBvSubNoUnderflowExpr<T> expr)<T extends KBvSort> KBvDivNoOverflowExpr<T>transform(KBvDivNoOverflowExpr<T> expr)<T extends KBvSort> KBvNegNoOverflowExpr<T>transform(KBvNegNoOverflowExpr<T> expr)<T extends KBvSort> KBvMulNoOverflowExpr<T>transform(KBvMulNoOverflowExpr<T> expr)<T extends KBvSort> KBvMulNoUnderflowExpr<T>transform(KBvMulNoUnderflowExpr<T> expr)KExpr<KFp16Sort>transform(KFp16Value expr)KExpr<KFp32Sort>transform(KFp32Value expr)KExpr<KFp64Sort>transform(KFp64Value expr)KExpr<KFp128Sort>transform(KFp128Value expr)KExpr<KFpSort>transform(KFpCustomSizeValue expr)KExpr<KFpRoundingModeSort>transform(KFpRoundingModeExpr expr)<T extends KFpSort> KExpr<T>transform(KFpAbsExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpNegationExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpAddExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpSubExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpMulExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpDivExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpFusedMulAddExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpSqrtExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpRemExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpRoundToIntegralExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpMinExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpMaxExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpLessOrEqualExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpLessExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpGreaterOrEqualExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpGreaterExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpEqualExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsNormalExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsSubnormalExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsZeroExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsInfiniteExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsNaNExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsNegativeExpr<T> expr)<T extends KFpSort> KExpr<KBoolSort>transform(KFpIsPositiveExpr<T> expr)<T extends KFpSort> KExpr<KBvSort>transform(KFpToBvExpr<T> expr)<T extends KFpSort> KExpr<KRealSort>transform(KFpToRealExpr<T> expr)<T extends KFpSort> KExpr<KBvSort>transform(KFpToIEEEBvExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpFromBvExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KFpToFpExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KRealToFpExpr<T> expr)<T extends KFpSort> KExpr<T>transform(KBvToFpExpr<T> expr)<D extends KSort, R extends KSort> KArrayStore<D, R>transform(KArrayStore<D, R> expr)<D0 extends KSort, D1 extends KSort, R extends KSort> KExpr<KArray2Sort<D0, D1, R>>transform(KArray2Store<D0, D1, R> expr)<D0 extends KSort, D1 extends KSort, D2 extends KSort, R extends KSort> KExpr<KArray3Sort<D0, D1, D2, R>>transform(KArray3Store<D0, D1, D2, R> expr)<R extends KSort> KExpr<KArrayNSort<R>>transform(KArrayNStore<R> expr)<D extends KSort, R extends KSort> KArraySelect<D, R>transform(KArraySelect<D, R> expr)<D0 extends KSort, D1 extends KSort, R extends KSort> KExpr<R>transform(KArray2Select<D0, D1, R> expr)<D0 extends KSort, D1 extends KSort, D2 extends KSort, R extends KSort> KExpr<R>transform(KArray3Select<D0, D1, D2, R> expr)<R extends KSort> KExpr<R>transform(KArrayNSelect<R> expr)<A extends KArraySortBase<R>, R extends KSort> KArrayConst<A, R>transform(KArrayConst<A, R> expr)<D extends KSort, R extends KSort> KArrayLambda<D, R>transform(KArrayLambda<D, R> expr)<D0 extends KSort, D1 extends KSort, R extends KSort> KExpr<KArray2Sort<D0, D1, R>>transform(KArray2Lambda<D0, D1, R> expr)<D0 extends KSort, D1 extends KSort, D2 extends KSort, R extends KSort> KExpr<KArray3Sort<D0, D1, D2, R>>transform(KArray3Lambda<D0, D1, D2, R> expr)<R extends KSort> KExpr<KArrayNSort<R>>transform(KArrayNLambda<R> expr)<T extends KArithSort> KAddArithExpr<T>transform(KAddArithExpr<T> expr)<T extends KArithSort> KSubArithExpr<T>transform(KSubArithExpr<T> expr)<T extends KArithSort> KMulArithExpr<T>transform(KMulArithExpr<T> expr)<T extends KArithSort> KUnaryMinusArithExpr<T>transform(KUnaryMinusArithExpr<T> expr)<T extends KArithSort> KDivArithExpr<T>transform(KDivArithExpr<T> expr)<T extends KArithSort> KPowerArithExpr<T>transform(KPowerArithExpr<T> expr)<T extends KArithSort> KLtArithExpr<T>transform(KLtArithExpr<T> expr)<T extends KArithSort> KLeArithExpr<T>transform(KLeArithExpr<T> expr)<T extends KArithSort> KGtArithExpr<T>transform(KGtArithExpr<T> expr)<T extends KArithSort> KGeArithExpr<T>transform(KGeArithExpr<T> expr)KModIntExprtransform(KModIntExpr expr)KRemIntExprtransform(KRemIntExpr expr)KToRealIntExprtransform(KToRealIntExpr expr)KInt32NumExprtransform(KInt32NumExpr expr)KInt64NumExprtransform(KInt64NumExpr expr)KIntBigNumExprtransform(KIntBigNumExpr expr)KToIntRealExprtransform(KToIntRealExpr expr)KIsIntRealExprtransform(KIsIntRealExpr expr)KRealNumExprtransform(KRealNumExpr expr)KQuantifiertransform(KExistentialQuantifier expr)KQuantifiertransform(KUniversalQuantifier expr)<A extends KArraySortBase<R>, R extends KSort> KExpr<A>transform(KFunctionAsArray<A, R> expr)KExpr<KUninterpretedSort>transform(KUninterpretedSortValue expr)There is no way in Z3 API to mark uninterpreted constant as value. final <S extends KExpr<?>> Stransform(S $self, KExpr<?> arg, Function2<Long, Long, Long> operation)final <S extends KExpr<?>> Stransform(S $self, KExpr<?> arg0, KExpr<?> arg1, Function3<Long, Long, Long, Long> operation)final <S extends KExpr<?>> Stransform(S $self, KExpr<?> arg0, KExpr<?> arg1, KExpr<?> arg2, Function4<Long, Long, Long, Long, Long> operation)final <S extends KExpr<?>> Stransform(S $self, KExpr<?> arg0, KExpr<?> arg1, KExpr<?> arg2, KExpr<?> arg3, Function5<Long, Long, Long, Long, Long, Long> operation)final <T extends KBvSort> KBitVecValue<T>transformBitVecValue(KBitVecValue<T> expr)final <S extends KExpr<?>> StransformArray(S $self, List<KExpr<?>> args, Function1<LongArray, Long> operation)-
Methods inherited from class io.ksmt.solver.util.KExprLongInternalizerBase
internalizeExpr, transform, transform, transform, transform, transform, transformList -
Methods inherited from class io.ksmt.expr.transformer.KTransformerBase
apply, transform -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Constructor Detail
-
KZ3ExprInternalizer
KZ3ExprInternalizer(KContext ctx, KZ3Context z3InternCtx)
-
-
Method Detail
-
getCtx
final KContext getCtx()
-
findInternalizedExpr
Long findInternalizedExpr(KExpr<?> expr)
-
saveInternalizedExpr
Unit saveInternalizedExpr(KExpr<?> expr, Long internalized)
-
internalizeDecl
final <T extends KDecl<?>> Long internalizeDecl(T $self)
-
internalizeSort
final <T extends KSort> Long internalizeSort(T $self)
-
transform
KAndExpr transform(KAndExpr expr)
-
transform
KAndBinaryExpr transform(KAndBinaryExpr expr)
-
transform
KOrExpr transform(KOrExpr expr)
-
transform
KOrBinaryExpr transform(KOrBinaryExpr expr)
-
transform
KNotExpr transform(KNotExpr expr)
-
transform
KImpliesExpr transform(KImpliesExpr expr)
-
transform
KXorExpr transform(KXorExpr expr)
-
transform
KTrue transform(KTrue expr)
-
transform
KFalse transform(KFalse expr)
-
transform
KBitVecValue<KBv1Sort> transform(KBitVec1Value expr)
-
transform
KBitVecValue<KBv8Sort> transform(KBitVec8Value expr)
-
transform
KBitVecValue<KBv16Sort> transform(KBitVec16Value expr)
-
transform
KBitVecValue<KBv32Sort> transform(KBitVec32Value expr)
-
transform
KBitVecValue<KBv64Sort> transform(KBitVec64Value expr)
-
transform
KBitVecValue<KBvSort> transform(KBitVecCustomValue expr)
-
transform
<T extends KBvSort> KBvUnsignedLessOrEqualExpr<T> transform(KBvUnsignedLessOrEqualExpr<T> expr)
-
transform
<T extends KBvSort> KBvSignedLessOrEqualExpr<T> transform(KBvSignedLessOrEqualExpr<T> expr)
-
transform
<T extends KBvSort> KBvUnsignedGreaterOrEqualExpr<T> transform(KBvUnsignedGreaterOrEqualExpr<T> expr)
-
transform
<T extends KBvSort> KBvSignedGreaterOrEqualExpr<T> transform(KBvSignedGreaterOrEqualExpr<T> expr)
-
transform
KExpr<KBvSort> transform(KBvConcatExpr expr)
-
transform
KBvExtractExpr transform(KBvExtractExpr expr)
-
transform
KBvSignExtensionExpr transform(KBvSignExtensionExpr expr)
-
transform
KBvZeroExtensionExpr transform(KBvZeroExtensionExpr expr)
-
transform
KBvRepeatExpr transform(KBvRepeatExpr expr)
-
transform
<T extends KBvSort> KBvLogicalShiftRightExpr<T> transform(KBvLogicalShiftRightExpr<T> expr)
-
transform
<T extends KBvSort> KBvRotateLeftIndexedExpr<T> transform(KBvRotateLeftIndexedExpr<T> expr)
-
transform
<T extends KBvSort> KBvRotateRightIndexedExpr<T> transform(KBvRotateRightIndexedExpr<T> expr)
-
transform
KBv2IntExpr transform(KBv2IntExpr expr)
-
transform
KExpr<KFp16Sort> transform(KFp16Value expr)
-
transform
KExpr<KFp32Sort> transform(KFp32Value expr)
-
transform
KExpr<KFp64Sort> transform(KFp64Value expr)
-
transform
KExpr<KFp128Sort> transform(KFp128Value expr)
-
transform
KExpr<KFpSort> transform(KFpCustomSizeValue expr)
-
transform
KExpr<KFpRoundingModeSort> transform(KFpRoundingModeExpr expr)
-
transform
<D0 extends KSort, D1 extends KSort, R extends KSort> KExpr<KArray2Sort<D0, D1, R>> transform(KArray2Store<D0, D1, R> expr)
-
transform
<D0 extends KSort, D1 extends KSort, D2 extends KSort, R extends KSort> KExpr<KArray3Sort<D0, D1, D2, R>> transform(KArray3Store<D0, D1, D2, R> expr)
-
transform
<D0 extends KSort, D1 extends KSort, R extends KSort> KExpr<R> transform(KArray2Select<D0, D1, R> expr)
-
transform
<D0 extends KSort, D1 extends KSort, D2 extends KSort, R extends KSort> KExpr<R> transform(KArray3Select<D0, D1, D2, R> expr)
-
transform
<A extends KArraySortBase<R>, R extends KSort> KArrayConst<A, R> transform(KArrayConst<A, R> expr)
-
transform
<D0 extends KSort, D1 extends KSort, R extends KSort> KExpr<KArray2Sort<D0, D1, R>> transform(KArray2Lambda<D0, D1, R> expr)
-
transform
<D0 extends KSort, D1 extends KSort, D2 extends KSort, R extends KSort> KExpr<KArray3Sort<D0, D1, D2, R>> transform(KArray3Lambda<D0, D1, D2, R> expr)
-
transform
KModIntExpr transform(KModIntExpr expr)
-
transform
KRemIntExpr transform(KRemIntExpr expr)
-
transform
KToRealIntExpr transform(KToRealIntExpr expr)
-
transform
KInt32NumExpr transform(KInt32NumExpr expr)
-
transform
KInt64NumExpr transform(KInt64NumExpr expr)
-
transform
KIntBigNumExpr transform(KIntBigNumExpr expr)
-
transform
KToIntRealExpr transform(KToIntRealExpr expr)
-
transform
KIsIntRealExpr transform(KIsIntRealExpr expr)
-
transform
KRealNumExpr transform(KRealNumExpr expr)
-
transform
KQuantifier transform(KExistentialQuantifier expr)
-
transform
KQuantifier transform(KUniversalQuantifier expr)
-
transform
<A extends KArraySortBase<R>, R extends KSort> KExpr<A> transform(KFunctionAsArray<A, R> expr)
-
transform
KExpr<KUninterpretedSort> transform(KUninterpretedSortValue expr)
There is no way in Z3 API to mark uninterpreted constant as value.
To overcome this we apply the following scheme:
Internalize value
xof a sort T as normal constant.Associate unique interpreted value
iwith this constant. Currently, we use integer values.Introduce
interpreterfunctionFof type T -> Int. We introduce one function for each uninterpreted sort.Assert expression
(= i (F x))to the solver. Since all Int values are known to be distinct, this assertion forces that all values of T are also distinct.
-
transform
final <S extends KExpr<?>> S transform(S $self, KExpr<?> arg, Function2<Long, Long, Long> operation)
-
transform
final <S extends KExpr<?>> S transform(S $self, KExpr<?> arg0, KExpr<?> arg1, Function3<Long, Long, Long, Long> operation)
-
transform
final <S extends KExpr<?>> S transform(S $self, KExpr<?> arg0, KExpr<?> arg1, KExpr<?> arg2, Function4<Long, Long, Long, Long, Long> operation)
-
transform
final <S extends KExpr<?>> S transform(S $self, KExpr<?> arg0, KExpr<?> arg1, KExpr<?> arg2, KExpr<?> arg3, Function5<Long, Long, Long, Long, Long, Long> operation)
-
transformBitVecValue
final <T extends KBvSort> KBitVecValue<T> transformBitVecValue(KBitVecValue<T> expr)
-
-
-
-