S
- the state type of the ObservableSUL
I
- the input typeO
- the output typeQ
- the state information type that is used to answer OmegaQuery
spublic abstract class AbstractSULOmegaOracle<S,I,O,Q> extends Object implements OmegaMembershipOracle.MealyOmegaMembershipOracle<Q,I,O>
ObservableSUL
.
The behavior is similar to a SULOracle
, except that this class answers OmegaQuery
s.
After some symbols (i.e. after OmegaQuery.getPrefix()
, and after each OmegaQuery.getLoop()
) the state
of the ObservableSUL
is retrieved, and used to answer the query.
Like SULOracle
this class is thread-safe.OmegaMembershipOracle.DFAOmegaMembershipOracle<S,I>, OmegaMembershipOracle.MealyOmegaMembershipOracle<S,I,O>
Modifier | Constructor and Description |
---|---|
protected |
AbstractSULOmegaOracle(ObservableSUL<S,I,O> sul) |
Modifier and Type | Method and Description |
---|---|
MembershipOracle.MealyMembershipOracle<I,O> |
getMembershipOracle()
Returns a regular membership oracle.
|
protected abstract Q |
getQueryState(ObservableSUL<S,I,O> sul) |
ObservableSUL<S,I,O> |
getSul()
Gets the
ObservableSUL . |
static <S,I,O> AbstractSULOmegaOracle<S,I,O,?> |
newOracle(ObservableSUL<S,I,O> sul)
Creates a new
AbstractSULOmegaOracle that assumes the SUL can not make deep copies. |
static <S,I,O> AbstractSULOmegaOracle<S,I,O,?> |
newOracle(ObservableSUL<S,I,O> sul,
boolean deepCopies)
Creates a new
AbstractSULOmegaOracle , while making sure the invariants of the ObservableSUL are
satisfied. |
void |
processQueries(Collection<? extends OmegaQuery<I,net.automatalib.words.Word<O>>> queries) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
answerQuery, asOracle, isSameState, processQuery
protected AbstractSULOmegaOracle(ObservableSUL<S,I,O> sul)
public ObservableSUL<S,I,O> getSul()
ObservableSUL
.ObservableSUL
.public void processQueries(Collection<? extends OmegaQuery<I,net.automatalib.words.Word<O>>> queries)
processQueries
in interface OmegaMembershipOracle<Q,I,net.automatalib.words.Word<O>>
protected abstract Q getQueryState(ObservableSUL<S,I,O> sul)
public MembershipOracle.MealyMembershipOracle<I,O> getMembershipOracle()
OmegaMembershipOracle
getMembershipOracle
in interface OmegaMembershipOracle<Q,I,net.automatalib.words.Word<O>>
getMembershipOracle
in interface OmegaMembershipOracle.MealyOmegaMembershipOracle<Q,I,O>
public static <S,I,O> AbstractSULOmegaOracle<S,I,O,?> newOracle(ObservableSUL<S,I,O> sul, boolean deepCopies)
AbstractSULOmegaOracle
, while making sure the invariants of the ObservableSUL
are
satisfied.S
- the state typeI
- the input typeO
- the output typesul
- the ObservableSUL
to wrap around.deepCopies
- whether to test for state equivalence directly on the retrieved state.AbstractSULOmegaOracle
.public static <S,I,O> AbstractSULOmegaOracle<S,I,O,?> newOracle(ObservableSUL<S,I,O> sul)
AbstractSULOmegaOracle
that assumes the SUL
can not make deep copies.S
- the state typeI
- the input typeO
- the output typenewOracle(ObservableSUL, boolean)
Copyright © 2019. All rights reserved.