Interface BaseNonRelationalValueDomain<T extends BaseNonRelationalValueDomain<T>>
-
- Type Parameters:
T
- the concrete type of this domain
- All Superinterfaces:
BaseLattice<T>
,Lattice<T>
,NonRelationalDomain<T,ValueExpression,ValueEnvironment<T>>
,NonRelationalElement<T,ValueExpression,ValueEnvironment<T>>
,NonRelationalValueDomain<T>
,SemanticEvaluator
,StructuredObject
public interface BaseNonRelationalValueDomain<T extends BaseNonRelationalValueDomain<T>> extends BaseLattice<T>, NonRelationalValueDomain<T>
Base implementation forNonRelationalValueDomain
s. This class extendsBaseLattice
and implementsNonRelationalDomain.eval(SymbolicExpression, Environment, ProgramPoint, SemanticOracle)
by taking care of the recursive computation of inner expressions evaluation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
BaseNonRelationalValueDomain.EvaluationVisitor<T extends BaseNonRelationalValueDomain<T>>
AExpressionVisitor
forBaseNonRelationalValueDomain
instances.
-
Field Summary
-
Fields inherited from interface it.unive.lisa.analysis.Lattice
BOTTOM_STRING, TOP_STRING
-
-
Method Summary
All Methods Instance Methods Default Methods Modifier and Type Method Description default ValueEnvironment<T>
assume(ValueEnvironment<T> environment, ValueExpression expression, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle)
Yields the environmentenvironment
on which the expressionexpression
is assumed to hold by this domain.default ValueEnvironment<T>
assumeBinaryExpression(ValueEnvironment<T> environment, BinaryOperator operator, ValueExpression left, ValueExpression right, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle)
Yields the environmentenvironment
assuming that a binary expression with operatoroperator
, left argumentleft
, and right argumentright
holds.default ValueEnvironment<T>
assumeTernaryExpression(ValueEnvironment<T> environment, TernaryOperator operator, ValueExpression left, ValueExpression middle, ValueExpression right, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle)
Yields the environmentenvironment
assuming that a ternary expression with operatoroperator
, left argumentleft
, middle argumentmiddle
,and right argumentright
holds.default ValueEnvironment<T>
assumeUnaryExpression(ValueEnvironment<T> environment, UnaryOperator operator, ValueExpression expression, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle)
Yields the environmentenvironment
assuming that an unary expression with operatoroperator
and argumentexpression
holds.default boolean
canProcess(SymbolicExpression expression, ProgramPoint pp, SemanticOracle oracle)
Yieldstrue
if the domain can processexpression
,false
otherwise.default T
eval(ValueExpression expression, ValueEnvironment<T> environment, ProgramPoint pp, SemanticOracle oracle)
Evaluates aSymbolicExpression
, assuming that the values of program variables are the ones stored inenvironment
.default T
evalBinaryExpression(BinaryOperator operator, T left, T right, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of aBinaryExpression
applyingoperator
to two expressions whose abstract value areleft
andright
, respectively.default T
evalIdentifier(Identifier id, ValueEnvironment<T> environment, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of an identifier in a given environment.default T
evalNonNullConstant(Constant constant, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of the given non-null constant.default T
evalNullConstant(ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of the null constantNullConstant
.default T
evalPushAny(PushAny pushAny, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of a push-any expression.default T
evalPushInv(PushInv pushInv, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of a push-inv expression.default T
evalSkip(Skip skip, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of a skip expression.default T
evalTernaryExpression(TernaryOperator operator, T left, T middle, T right, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of aTernaryExpression
applyingoperator
to two expressions whose abstract value areleft
,middle
andright
, respectively.default T
evalTypeCast(BinaryExpression cast, T left, T right, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of a type cast expression.default T
evalTypeConv(BinaryExpression conv, T left, T right, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of a type conversion expression.default T
evalUnaryExpression(UnaryOperator operator, T arg, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of aUnaryExpression
applyingoperator
to an expression whose abstract value isarg
.default T
evalValueExpression(ValueExpression expression, T[] subExpressions, ProgramPoint pp, SemanticOracle oracle)
Yields the evaluation of a genericValueExpression
, where the recursive evaluation of its sub-expressions, if any, has already happened and is passed in thesubExpressions
parameters.default Satisfiability
satisfies(ValueExpression expression, ValueEnvironment<T> environment, ProgramPoint pp, SemanticOracle oracle)
Checks whetherexpression
is satisfied inenvironment
, assuming that the values of program variables are the ones stored inenvironment
and returning an instance ofSatisfiability
.default Satisfiability
satisfiesAbstractValue(T value, ProgramPoint pp, SemanticOracle oracle)
Yields the satisfiability of an abstract value of type<T>
.default Satisfiability
satisfiesBinaryExpression(BinaryOperator operator, T left, T right, ProgramPoint pp, SemanticOracle oracle)
Yields the satisfiability of aBinaryExpression
applyingoperator
to two expressions whose abstract values areleft
, andright
.default Satisfiability
satisfiesNonNullConstant(Constant constant, ProgramPoint pp, SemanticOracle oracle)
Yields the satisfiability of the given non-null constant on this abstract domain.default Satisfiability
satisfiesNullConstant(ProgramPoint pp, SemanticOracle oracle)
Yields the satisfiability of the null constantNullConstant
on this abstract domain.default Satisfiability
satisfiesTernaryExpression(TernaryOperator operator, T left, T middle, T right, ProgramPoint pp, SemanticOracle oracle)
Yields the satisfiability of aTernaryExpression
applyingoperator
to three expressions whose abstract values areleft
,middle
andright
.default Satisfiability
satisfiesUnaryExpression(UnaryOperator operator, T arg, ProgramPoint pp, SemanticOracle oracle)
Yields the satisfiability of aUnaryExpression
applyingoperator
to an expression whose abstract value isarg
, returning an instance ofSatisfiability
.-
Methods inherited from interface it.unive.lisa.analysis.BaseLattice
equals, glb, glbAux, hashCode, lessOrEqual, lessOrEqualAux, lub, lubAux, narrowing, narrowingAux, toString, widening, wideningAux
-
Methods inherited from interface it.unive.lisa.analysis.nonrelational.NonRelationalElement
fixedVariable, unknownVariable
-
Methods inherited from interface it.unive.lisa.util.representation.StructuredObject
representation
-
-
-
-
Method Detail
-
satisfies
default Satisfiability satisfies(ValueExpression expression, ValueEnvironment<T> environment, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Description copied from interface:NonRelationalElement
Checks whetherexpression
is satisfied inenvironment
, assuming that the values of program variables are the ones stored inenvironment
and returning an instance ofSatisfiability
.- Specified by:
satisfies
in interfaceNonRelationalElement<T extends BaseNonRelationalValueDomain<T>,ValueExpression,ValueEnvironment<T extends BaseNonRelationalValueDomain<T>>>
- Parameters:
expression
- the expression whose satisfiability is to be evaluatedenvironment
- the environment containing the values of program variables for the satisfiabilitypp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
if the expression is satisfied by the environment,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if something goes wrong during the computation
-
eval
default T eval(ValueExpression expression, ValueEnvironment<T> environment, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Description copied from interface:NonRelationalDomain
Evaluates aSymbolicExpression
, assuming that the values of program variables are the ones stored inenvironment
.- Specified by:
eval
in interfaceNonRelationalDomain<T extends BaseNonRelationalValueDomain<T>,ValueExpression,ValueEnvironment<T extends BaseNonRelationalValueDomain<T>>>
- Parameters:
expression
- the expression to evaluateenvironment
- the environment containing the values of program variables for the evaluationpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- an new instance of this domain, representing the abstract result
of
expression
when evaluated onenvironment
- Throws:
SemanticException
- if something goes wrong during the computation
-
canProcess
default boolean canProcess(SymbolicExpression expression, ProgramPoint pp, SemanticOracle oracle)
Description copied from interface:SemanticEvaluator
Yieldstrue
if the domain can processexpression
,false
otherwise.- Specified by:
canProcess
in interfaceSemanticEvaluator
- Parameters:
expression
- the expressionpp
- the program point where this method is queriedoracle
- the oracle for inter-domain communication- Returns:
true
if the domain can processexpression
,false
otherwise.
-
evalIdentifier
default T evalIdentifier(Identifier id, ValueEnvironment<T> environment, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of an identifier in a given environment.- Parameters:
id
- the identifier to be evaluatedenvironment
- the environment where the identifier must be evaluatedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the identifier
- Throws:
SemanticException
- if an error occurs during the computation
-
evalSkip
default T evalSkip(Skip skip, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of a skip expression.- Parameters:
skip
- the skip expression to be evaluatedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the skip expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalPushAny
default T evalPushAny(PushAny pushAny, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of a push-any expression.- Parameters:
pushAny
- the push-any expression to be evaluatedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the push-any expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalPushInv
default T evalPushInv(PushInv pushInv, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of a push-inv expression.- Parameters:
pushInv
- the push-inv expression to be evaluatedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the push-inv expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalTypeConv
default T evalTypeConv(BinaryExpression conv, T left, T right, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of a type conversion expression.- Parameters:
conv
- the type conversion expressionleft
- the left expression, namely the expression to be convertedright
- the right expression, namely the types to which left should be convertedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the type conversion expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalTypeCast
default T evalTypeCast(BinaryExpression cast, T left, T right, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of a type cast expression.- Parameters:
cast
- the type casted expressionleft
- the left expression, namely the expression to be castedright
- the right expression, namely the types to which left should be castedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the type cast expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalNullConstant
default T evalNullConstant(ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of the null constantNullConstant
.- Parameters:
pp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the constant
- Throws:
SemanticException
- if an error occurs during the computation
-
evalNonNullConstant
default T evalNonNullConstant(Constant constant, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of the given non-null constant.- Parameters:
constant
- the constant to evaluatepp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the constant
- Throws:
SemanticException
- if an error occurs during the computation
-
evalUnaryExpression
default T evalUnaryExpression(UnaryOperator operator, T arg, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of aUnaryExpression
applyingoperator
to an expression whose abstract value isarg
. It is guaranteed thatarg
is notLattice.bottom()
.- Parameters:
operator
- the operator applied by the expressionarg
- the instance of this domain representing the abstract value of the expresion's argumentpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalBinaryExpression
default T evalBinaryExpression(BinaryOperator operator, T left, T right, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of aBinaryExpression
applyingoperator
to two expressions whose abstract value areleft
andright
, respectively. It is guaranteed that bothleft
andright
are notLattice.bottom()
and thatoperator
is neitherTypeCast
norTypeConv
.- Parameters:
operator
- the operator applied by the expressionleft
- the instance of this domain representing the abstract value of the left-hand side argumentright
- the instance of this domain representing the abstract value of the right-hand side argumentpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalTernaryExpression
default T evalTernaryExpression(TernaryOperator operator, T left, T middle, T right, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of aTernaryExpression
applyingoperator
to two expressions whose abstract value areleft
,middle
andright
, respectively. It is guaranteed that bothleft
andright
are notLattice.bottom()
.- Parameters:
operator
- the operator applied by the expressionleft
- the instance of this domain representing the abstract value of the left-hand side argumentmiddle
- the instance of this domain representing the abstract value of the middle argumentright
- the instance of this domain representing the abstract value of the right-hand side argumentpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the expression
- Throws:
SemanticException
- if an error occurs during the computation
-
evalValueExpression
default T evalValueExpression(ValueExpression expression, T[] subExpressions, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the evaluation of a genericValueExpression
, where the recursive evaluation of its sub-expressions, if any, has already happened and is passed in thesubExpressions
parameters. It is guaranteed that no element ofsubExpressions
isLattice.bottom()
.
This method allows evaluating frontend-defined expressions. For all standard expressions defined within LiSA, the corresponding evaluation method will be invoked instead.- Parameters:
expression
- the expression to evaluatesubExpressions
- the instances of this domain representing the abstract values of all its sub-expressions, if any; if there are no sub-expressions, this parameter can benull
or emptypp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
- the evaluation of the expression
- Throws:
SemanticException
- if an error occurs during the computation
-
satisfiesAbstractValue
default Satisfiability satisfiesAbstractValue(T value, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the satisfiability of an abstract value of type<T>
.- Parameters:
value
- the abstract value whose satisfiability is to be evaluatedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
if the expression is satisfied by this domain,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if an error occurs during the computation
-
satisfiesNullConstant
default Satisfiability satisfiesNullConstant(ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the satisfiability of the null constantNullConstant
on this abstract domain.- Parameters:
pp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
if the expression is satisfied by this domain,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if an error occurs during the computation
-
satisfiesNonNullConstant
default Satisfiability satisfiesNonNullConstant(Constant constant, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the satisfiability of the given non-null constant on this abstract domain.- Parameters:
constant
- the constant to satisfiedpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
is the constant is satisfied by this domain,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if an error occurs during the computation
-
satisfiesUnaryExpression
default Satisfiability satisfiesUnaryExpression(UnaryOperator operator, T arg, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the satisfiability of aUnaryExpression
applyingoperator
to an expression whose abstract value isarg
, returning an instance ofSatisfiability
. It is guaranteed thatoperator
is notLogicalNegation
andarg
is notLattice.bottom()
.- Parameters:
operator
- the unary operator applied by the expressionarg
- an instance of this abstract domain representing the argument of the unary expressionpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
if the expression is satisfied by this domain,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if an error occurs during the computation
-
satisfiesBinaryExpression
default Satisfiability satisfiesBinaryExpression(BinaryOperator operator, T left, T right, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the satisfiability of aBinaryExpression
applyingoperator
to two expressions whose abstract values areleft
, andright
. This method returns an instance ofSatisfiability
. It is guaranteed thatoperator
is neitherLogicalAnd
norLogicalOr
, and that bothleft
andright
are notLattice.bottom()
.- Parameters:
operator
- the binary operator applied by the expressionleft
- an instance of this abstract domain representing the argument of the left-hand side of the binary expressionright
- an instance of this abstract domain representing the argument of the right-hand side of the binary expressionpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
if the expression is satisfied by this domain,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if an error occurs during the computation
-
satisfiesTernaryExpression
default Satisfiability satisfiesTernaryExpression(TernaryOperator operator, T left, T middle, T right, ProgramPoint pp, SemanticOracle oracle) throws SemanticException
Yields the satisfiability of aTernaryExpression
applyingoperator
to three expressions whose abstract values areleft
,middle
andright
. This method returns an instance ofSatisfiability
. It is guaranteed thatleft
,middle
andright
are notLattice.bottom()
.- Parameters:
operator
- the ternary operator applied by the expressionleft
- an instance of this abstract domain representing the argument of the left-most side of the ternary expressionmiddle
- an instance of this abstract domain representing the argument in the middle of the ternary expressionright
- an instance of this abstract domain representing the argument of the right-most side of the ternary expressionpp
- the program point that where this operation is being evaluatedoracle
- the oracle for inter-domain communication- Returns:
Satisfiability.SATISFIED
if the expression is satisfied by this domain,Satisfiability.NOT_SATISFIED
if it is not satisfied, orSatisfiability.UNKNOWN
if it is either impossible to determine if it satisfied, or if it is satisfied by some values and not by some others (this is equivalent to a TOP boolean value)- Throws:
SemanticException
- if an error occurs during the computation
-
assume
default ValueEnvironment<T> assume(ValueEnvironment<T> environment, ValueExpression expression, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle) throws SemanticException
Description copied from interface:NonRelationalElement
Yields the environmentenvironment
on which the expressionexpression
is assumed to hold by this domain. The returned environment must be an updated version of the given one, where the relevant abstractions have been (optionally) updated. Returning the given environment as-is is always a sound implementation.- Specified by:
assume
in interfaceNonRelationalElement<T extends BaseNonRelationalValueDomain<T>,ValueExpression,ValueEnvironment<T extends BaseNonRelationalValueDomain<T>>>
- Parameters:
environment
- the environmentexpression
- the expression to be assumedsrc
- the program point that where this operation is being evaluated, corresponding to the one that generated the given expressiondest
- the program point where the execution will move after the expression has been assumedoracle
- the oracle for inter-domain communication- Returns:
- the environment
environment
whereexpression
is assumed to hold - Throws:
SemanticException
- if an error occurs during the computation
-
assumeTernaryExpression
default ValueEnvironment<T> assumeTernaryExpression(ValueEnvironment<T> environment, TernaryOperator operator, ValueExpression left, ValueExpression middle, ValueExpression right, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle) throws SemanticException
Yields the environmentenvironment
assuming that a ternary expression with operatoroperator
, left argumentleft
, middle argumentmiddle
,and right argumentright
holds.- Parameters:
environment
- the environment on which the expression must be assumedoperator
- the operator of the ternary expressionleft
- the left-hand side argument of the ternary expressionmiddle
- the middle-hand side argument of the ternary expressionright
- the right-hand side argument of the ternary expressionsrc
- the program point that where this operation is being evaluated, corresponding to the one that generated the given expressiondest
- the program point where the execution will move after the expression has been assumedoracle
- the oracle for inter-domain communication- Returns:
- the environment
environment
assuming that a ternary expression with operatoroperator
, left argumentleft
, middle argumentmiddle
,and right argumentright
holds - Throws:
SemanticException
- if something goes wrong during the assumption
-
assumeBinaryExpression
default ValueEnvironment<T> assumeBinaryExpression(ValueEnvironment<T> environment, BinaryOperator operator, ValueExpression left, ValueExpression right, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle) throws SemanticException
Yields the environmentenvironment
assuming that a binary expression with operatoroperator
, left argumentleft
, and right argumentright
holds. The binary expression with binary operatorLogicalAnd
andLogicalOr
are already handled byassume(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<T>, it.unive.lisa.symbolic.value.ValueExpression, it.unive.lisa.program.cfg.ProgramPoint, it.unive.lisa.program.cfg.ProgramPoint, it.unive.lisa.analysis.SemanticOracle)
.- Parameters:
environment
- the environment on which the expression must be assumedoperator
- the operator of the binary expressionleft
- the left-hand side argument of the binary expressionright
- the right-hand side argument of the binary expressionsrc
- the program point that where this operation is being evaluated, corresponding to the one that generated the given expressiondest
- the program point where the execution will move after the expression has been assumedoracle
- the oracle for inter-domain communication- Returns:
- the environment
environment
assuming that a binary expression with operatoroperator
, left argumentleft
, and right argumentright
holds - Throws:
SemanticException
- if something goes wrong during the assumption
-
assumeUnaryExpression
default ValueEnvironment<T> assumeUnaryExpression(ValueEnvironment<T> environment, UnaryOperator operator, ValueExpression expression, ProgramPoint src, ProgramPoint dest, SemanticOracle oracle) throws SemanticException
Yields the environmentenvironment
assuming that an unary expression with operatoroperator
and argumentexpression
holds.- Parameters:
environment
- the environment on which the expression must be assumedoperator
- the operator of the unary expressionexpression
- the argument of the unary expressionsrc
- the program point that where this operation is being evaluated, corresponding to the one that generated the given expressiondest
- the program point where the execution will move after the expression has been assumedoracle
- the oracle for inter-domain communication- Returns:
- the environment
environment
assuming that an unary expression with operatoroperator
and argumentexpression
holds. - Throws:
SemanticException
- if something goes wrong during the assumption
-
-