I - the input type.A - the automaton type.P - the property type.D - the output type.public class PropertyOracleChain<I,A extends Output<I,D>,P,D> extends Object implements PropertyOracle<I,A,P,D>
For example you may want to construct a chain that first uses a model checker for monitors, and next, one that uses a model checker for full LTL. This strategy tends to give shorter counter examples for properties, and these counter examples can be found more quickly (as in smaller hypothesis size and less learning queries).
PropertyOracle.DFAPropertyOracle<I,P>, PropertyOracle.MealyPropertyOracle<I,O,P>InclusionOracle.DFAInclusionOracle<I>, InclusionOracle.MealyInclusionOracle<I,O>EquivalenceOracle.DFAEquivalenceOracle<I>, EquivalenceOracle.MealyEquivalenceOracle<I,O>| Constructor and Description |
|---|
PropertyOracleChain(Collection<? extends PropertyOracle<I,? super A,P,D>> oracles) |
PropertyOracleChain(PropertyOracle<I,? super A,P,D>... oracles) |
| Modifier and Type | Method and Description |
|---|---|
void |
addOracle(PropertyOracle<I,? super A,P,D> oracle) |
@Nullable DefaultQuery<I,D> |
disprove(A hypothesis,
Collection<? extends I> inputs)
Try to disprove the property with the given
hypothesis. |
@Nullable DefaultQuery<I,D> |
doFindCounterExample(A hypothesis,
Collection<? extends I> inputs)
Unconditionally find a counterexample, i.e. regardless of whether the property can be disproved.
|
@Nullable DefaultQuery<I,D> |
getCounterExample()
Returns the counterexample for the property if
PropertyOracle.isDisproved(), null otherwise. |
P |
getProperty()
Returns the property.
|
void |
setProperty(P property)
Set the property.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitfindCounterExample, isDisprovedisCounterExample@SafeVarargs public PropertyOracleChain(PropertyOracle<I,? super A,P,D>... oracles)
public PropertyOracleChain(Collection<? extends PropertyOracle<I,? super A,P,D>> oracles)
public void addOracle(PropertyOracle<I,? super A,P,D> oracle)
public @Nullable DefaultQuery<I,D> doFindCounterExample(A hypothesis, Collection<? extends I> inputs)
PropertyOraclePropertyOracle.disprove(Output, Collection) is not even be called.doFindCounterExample in interface PropertyOracle<I,A extends Output<I,D>,P,D>PropertyOracle.findCounterExample(Output, Collection)public @Nullable DefaultQuery<I,D> disprove(A hypothesis, Collection<? extends I> inputs)
PropertyOraclehypothesis.disprove in interface PropertyOracle<I,A extends Output<I,D>,P,D>hypothesis - the hypothesis.inputs - the inputsDefaultQuery that is a counterexample the property, or null, if the property
could not be disproved.public void setProperty(P property)
PropertyOraclesetProperty in interface PropertyOracle<I,A extends Output<I,D>,P,D>property - the property to set.public P getProperty()
PropertyOraclegetProperty in interface PropertyOracle<I,A extends Output<I,D>,P,D>public @Nullable DefaultQuery<I,D> getCounterExample()
PropertyOraclePropertyOracle.isDisproved(), null otherwise.
If this method does not return null, a previous call to PropertyOracle.disprove(Output, Collection) must
have returned a DefaultQuery.getCounterExample in interface PropertyOracle<I,A extends Output<I,D>,P,D>PropertyOracle.isDisproved(), null otherwise.Copyright © 2020. All rights reserved.