Package it.unive.lisa.analysis.string
Class SubstringDomainWithConstants
- java.lang.Object
-
- it.unive.lisa.analysis.combination.CartesianProduct<ValueCartesianProduct<T1,T2>,T1,T2,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.symbolic.value.Identifier>
-
- it.unive.lisa.analysis.combination.ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>
-
- it.unive.lisa.analysis.string.SubstringDomainWithConstants
-
- All Implemented Interfaces:
it.unive.lisa.analysis.Lattice<ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>>
,it.unive.lisa.analysis.ScopedObject<ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>>
,it.unive.lisa.analysis.SemanticDomain<ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.symbolic.value.Identifier>
,it.unive.lisa.analysis.value.ValueDomain<ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>>
,it.unive.lisa.analysis.value.ValueOracle
,it.unive.lisa.util.representation.StructuredObject
public class SubstringDomainWithConstants extends ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>
The substring relational abstract domain (seeSubstringDomain
) enriched with string constant propagation. This domain is defined as the Cartesian product betweenSubstringDomain
andStringConstantPropagation
. This domain follows the one defined in this paper.
-
-
Field Summary
-
Fields inherited from class it.unive.lisa.analysis.combination.CartesianProduct
left, right
-
-
Constructor Summary
Constructors Constructor Description SubstringDomainWithConstants()
Builds the top abstract value.SubstringDomainWithConstants(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation> left, SubstringDomain right)
Builds the abstract value starting from components.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SubstringDomainWithConstants
assign(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
SubstringDomainWithConstants
mk(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation> left, SubstringDomain right)
Builds a new instance of Cartesian product.-
Methods inherited from class it.unive.lisa.analysis.combination.ValueCartesianProduct
isBottom, knowsIdentifier
-
Methods inherited from class it.unive.lisa.analysis.combination.CartesianProduct
assume, bottom, equals, forgetIdentifier, forgetIdentifiersIf, getAllDomainInstances, hashCode, isTop, lessOrEqual, lub, popScope, pushScope, representation, satisfies, smallStepSemantics, top, toString, widening
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface it.unive.lisa.analysis.Lattice
bottom, glb, isTop, lessOrEqual, lub, narrowing, top, widening
-
-
-
-
Constructor Detail
-
SubstringDomainWithConstants
public SubstringDomainWithConstants(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation> left, SubstringDomain right)
Builds the abstract value starting from components.- Parameters:
left
- the string constant propagation environmentright
- the substring domain abstract value
-
SubstringDomainWithConstants
public SubstringDomainWithConstants()
Builds the top abstract value.
-
-
Method Detail
-
assign
public SubstringDomainWithConstants assign(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
assign
in interfaceit.unive.lisa.analysis.SemanticDomain<ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.symbolic.value.Identifier>
- Overrides:
assign
in classCartesianProduct<ValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.symbolic.value.Identifier>
- Throws:
it.unive.lisa.analysis.SemanticException
-
mk
public SubstringDomainWithConstants mk(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation> left, SubstringDomain right)
Description copied from class:CartesianProduct
Builds a new instance of Cartesian product.- Overrides:
mk
in classValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>
- Parameters:
left
- the first domainright
- the second domain- Returns:
- the new instance of product
-
-