public class ContractRuleApp extends AbstractContractRuleApp
Modifier and Type | Field and Description |
---|---|
private java.util.List<LocationVariable> |
heapContext |
instantiation
builtInRule, ifInsts, pio
Modifier | Constructor and Description |
---|---|
(package private) |
ContractRuleApp(BuiltInRule rule,
PosInOccurrence pio) |
private |
ContractRuleApp(BuiltInRule rule,
PosInOccurrence pio,
Contract instantiation) |
Modifier and Type | Method and Description |
---|---|
ContractRuleApp |
forceInstantiate(Goal goal) |
java.util.List<LocationVariable> |
getHeapContext() |
IObserverFunction |
getObserverFunction(Services services) |
boolean |
isSufficientlyComplete()
returns true if tryToInstantiate may be able to complete the app
|
Term |
programTerm() |
ContractRuleApp |
replacePos(PosInOccurrence newPos) |
UseOperationContractRule |
rule()
returns the rule of this rule application
|
ContractRuleApp |
setContract(Contract contract) |
ContractRuleApp |
setIfInsts(ImmutableList<PosInOccurrence> ifInsts) |
ContractRuleApp |
tryToInstantiate(Goal goal)
Tries to complete the rule application from the available information.
|
check, complete, getInstantiation
execute, ifInsts, posInOccurrence, setMutable, toString
private java.util.List<LocationVariable> heapContext
ContractRuleApp(BuiltInRule rule, PosInOccurrence pio)
private ContractRuleApp(BuiltInRule rule, PosInOccurrence pio, Contract instantiation)
public ContractRuleApp replacePos(PosInOccurrence newPos)
replacePos
in interface IBuiltInRuleApp
replacePos
in class AbstractBuiltInRuleApp
public ContractRuleApp setContract(Contract contract)
setContract
in class AbstractContractRuleApp
public UseOperationContractRule rule()
AbstractBuiltInRuleApp
rule
in interface IBuiltInRuleApp
rule
in interface RuleApp
rule
in class AbstractBuiltInRuleApp
public boolean isSufficientlyComplete()
IBuiltInRuleApp
isSufficientlyComplete
in interface IBuiltInRuleApp
isSufficientlyComplete
in class AbstractBuiltInRuleApp
public ContractRuleApp tryToInstantiate(Goal goal)
IBuiltInRuleApp
UserInterfaceControl
to complete a built-in rule.
Returns a complete app only if there is exactly one contract.
If you want a complete app for combined contracts, use forceInstantiate
instead.
For an example implementation see e.g. UseOperationContractRule
or UseDependencyContractRule
.tryToInstantiate
in interface IBuiltInRuleApp
tryToInstantiate
in class AbstractContractRuleApp
public ContractRuleApp forceInstantiate(Goal goal)
forceInstantiate
in interface IBuiltInRuleApp
forceInstantiate
in class AbstractBuiltInRuleApp
public ContractRuleApp setIfInsts(ImmutableList<PosInOccurrence> ifInsts)
setIfInsts
in interface IBuiltInRuleApp
setIfInsts
in class AbstractBuiltInRuleApp
public java.util.List<LocationVariable> getHeapContext()
getHeapContext
in interface IBuiltInRuleApp
getHeapContext
in class AbstractBuiltInRuleApp
public Term programTerm()
public IObserverFunction getObserverFunction(Services services)
getObserverFunction
in class AbstractContractRuleApp