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 betweenSubstringDomainandStringConstantPropagation. 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 SubstringDomainWithConstantsassign(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)SubstringDomainWithConstantsmk(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:
assignin 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:
assignin 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:CartesianProductBuilds a new instance of Cartesian product.- Overrides:
mkin classValueCartesianProduct<it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<StringConstantPropagation>,SubstringDomain>- Parameters:
left- the first domainright- the second domain- Returns:
- the new instance of product
-
-