S - the state type of the ObservableSULI - the input typeO - the output typeQ - the state information type that is used to answer OmegaQueryspublic 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 OmegaQuerys.
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, waitanswerQuery, asOracle, isSameState, processQueryprotected 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()
OmegaMembershipOraclegetMembershipOracle 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.