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, wait
findCounterExample, isDisproved
isCounterExample
@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)
PropertyOracle
PropertyOracle.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)
PropertyOracle
hypothesis
.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)
PropertyOracle
setProperty
in interface PropertyOracle<I,A extends Output<I,D>,P,D>
property
- the property to set.public P getProperty()
PropertyOracle
getProperty
in interface PropertyOracle<I,A extends Output<I,D>,P,D>
public @Nullable DefaultQuery<I,D> getCounterExample()
PropertyOracle
PropertyOracle.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.