public final class SimpleBlockContract extends Object implements BlockContract
| Modifier and Type | Class and Description |
|---|---|
private static class |
SimpleBlockContract.Combinator |
static class |
SimpleBlockContract.Creator |
private static class |
SimpleBlockContract.ReplacementMap<S extends Sorted> |
private static class |
SimpleBlockContract.TermReplacementMap |
private static class |
SimpleBlockContract.VariableReplacementMap |
BlockContract.Terms, BlockContract.Variables, BlockContract.VariablesCreator| Modifier and Type | Field and Description |
|---|---|
private StatementBlock |
block |
private Map<LocationVariable,Boolean> |
hasMod |
private ImmutableList<InfFlowSpec> |
infFlowSpecs |
private Term |
instantiationSelf |
private JoinProcedure |
joinProcedure |
private List<Label> |
labels |
private IProgramMethod |
method |
private Modality |
modality |
private Map<LocationVariable,Term> |
modifiesClauses |
private Map<LocationVariable,Term> |
postconditions |
private Map<LocationVariable,Term> |
preconditions |
private boolean |
transactionApplicable |
private BlockContract.Variables |
variables |
| Constructor and Description |
|---|
SimpleBlockContract(StatementBlock block,
List<Label> labels,
IProgramMethod method,
Modality modality,
Map<LocationVariable,Term> preconditions,
Map<LocationVariable,Term> postconditions,
Map<LocationVariable,Term> modifiesClauses,
ImmutableList<InfFlowSpec> infFlowSpecs,
JoinProcedure joinProcedure,
BlockContract.Variables variables,
boolean transactionApplicable,
Map<LocationVariable,Boolean> hasMod) |
private final StatementBlock block
private final IProgramMethod method
private final Modality modality
private Term instantiationSelf
private final Map<LocationVariable,Term> preconditions
private final Map<LocationVariable,Term> postconditions
private final Map<LocationVariable,Term> modifiesClauses
private ImmutableList<InfFlowSpec> infFlowSpecs
private JoinProcedure joinProcedure
private final BlockContract.Variables variables
private final boolean transactionApplicable
private final Map<LocationVariable,Boolean> hasMod
public SimpleBlockContract(StatementBlock block, List<Label> labels, IProgramMethod method, Modality modality, Map<LocationVariable,Term> preconditions, Map<LocationVariable,Term> postconditions, Map<LocationVariable,Term> modifiesClauses, ImmutableList<InfFlowSpec> infFlowSpecs, JoinProcedure joinProcedure, BlockContract.Variables variables, boolean transactionApplicable, Map<LocationVariable,Boolean> hasMod)
public static BlockContract combine(ImmutableSet<BlockContract> contracts, Services services)
public StatementBlock getBlock()
getBlock in interface BlockContractpublic List<Label> getLabels()
getLabels in interface BlockContractpublic IProgramMethod getMethod()
getMethod in interface BlockContractpublic KeYJavaType getKJT()
SpecificationElementgetKJT in interface SpecificationElementpublic Modality getModality()
getModality in interface BlockContractpublic BlockContract.Variables getPlaceholderVariables()
getPlaceholderVariables in interface BlockContractpublic boolean isTransactionApplicable()
isTransactionApplicable in interface BlockContractpublic boolean isReadOnly(Services services)
isReadOnly in interface BlockContractpublic boolean hasModifiesClause(LocationVariable heap)
BlockContracttrue iff the method (according to the contract) does
not modify the heap at all, i.e., iff it is "strictly pure."hasModifiesClause in interface BlockContractpublic BlockContract.Variables getVariables()
BlockContractgetVariables in interface BlockContractpublic BlockContract.Terms getVariablesAsTerms(Services services)
BlockContractgetVariablesAsTerms in interface BlockContractpublic Term getPrecondition(LocationVariable heap, ProgramVariable self, Map<LocationVariable,LocationVariable> remembranceHeaps, Services services)
getPrecondition in interface BlockContractpublic Term getPrecondition(LocationVariable heapVariable, Term heap, Term self, Map<LocationVariable,Term> remembranceHeaps, Services services)
getPrecondition in interface BlockContractpublic Term getPrecondition(LocationVariable heap, Services services)
getPrecondition in interface BlockContractpublic Term getPostcondition(LocationVariable heap, BlockContract.Variables variables, Services services)
getPostcondition in interface BlockContractpublic Term getPostcondition(LocationVariable heapVariable, Term heap, BlockContract.Terms terms, Services services)
getPostcondition in interface BlockContractpublic Term getPostcondition(LocationVariable heap, Services services)
getPostcondition in interface BlockContractpublic Term getModifiesClause(LocationVariable heap, ProgramVariable self, Services services)
getModifiesClause in interface BlockContractpublic Term getModifiesClause(LocationVariable heapVariable, Term heap, Term self, Services services)
getModifiesClause in interface BlockContractpublic Term getModifiesClause(LocationVariable heap, Services services)
getModifiesClause in interface BlockContractpublic Term getPre(Services services)
BlockContractgetPre in interface BlockContractpublic Term getRequires(LocationVariable heap)
getRequires in interface BlockContractpublic Term getPost(Services services)
BlockContractgetPost in interface BlockContractpublic Term getEnsures(LocationVariable heap)
getEnsures in interface BlockContractpublic Term getMod(Services services)
BlockContractgetMod in interface BlockContractpublic ImmutableList<InfFlowSpec> getInfFlowSpecs()
BlockContractgetInfFlowSpecs in interface BlockContractpublic Term getAssignable(LocationVariable heap)
getAssignable in interface BlockContractpublic JoinProcedure getJoinProcedure()
getJoinProcedure in interface BlockContractpublic void visit(Visitor visitor)
visit in interface BlockContractpublic String getName()
SpecificationElementgetName in interface SpecificationElementpublic String getUniqueName()
getUniqueName in interface BlockContractpublic String getDisplayName()
SpecificationElementgetDisplayName in interface SpecificationElementpublic String getHtmlText(Services services)
getHtmlText in interface BlockContractpublic String getPlainText(Services services, BlockContract.Terms terms)
getPlainText in interface BlockContractpublic VisibilityModifier getVisibility()
SpecificationElementgetVisibility in interface SpecificationElementpublic BlockContract update(StatementBlock newBlock, Map<LocationVariable,Term> newPreconditions, Map<LocationVariable,Term> newPostconditions, Map<LocationVariable,Term> newModifiesClauses, ImmutableList<InfFlowSpec> newinfFlowSpecs, JoinProcedure newJoinProcedure, BlockContract.Variables newVariables)
update in interface BlockContractpublic BlockContract setBlock(StatementBlock newBlock)
setBlock in interface BlockContractpublic BlockContract setTarget(KeYJavaType newKJT, IObserverFunction newPM)
setTarget in interface BlockContractpublic Contract.OriginalVariables getOrigVars()
getOrigVars in interface BlockContractprivate Map<ProgramVariable,ProgramVariable> createReplacementMap(BlockContract.Variables newVariables, Services services)
private Map<Term,Term> createReplacementMap(Term newHeap, BlockContract.Terms newTerms, Services services)
public boolean hasMby()
BlockContracthasMby in interface BlockContractpublic boolean hasInfFlowSpecs()
hasInfFlowSpecs in interface BlockContractpublic boolean hasJoinProcedure()
hasJoinProcedure in interface BlockContractpublic void setInstantiationSelf(Term selfInstantiation)
setInstantiationSelf in interface BlockContractpublic Term getInstantiationSelfTerm(TermServices services)
BlockContractgetInstantiationSelfTerm in interface BlockContractpublic IProgramMethod getTarget()
BlockContractgetTarget in interface BlockContract