Package de.learnlib.oracle.membership
Class AbstractSULOmegaOracle<S,I,O,Q>
- java.lang.Object
-
- de.learnlib.oracle.membership.AbstractSULOmegaOracle<S,I,O,Q>
-
- Type Parameters:
S- the state type of theObservableSULI- the input typeO- the output typeQ- the state information type that is used to answerOmegaQuerys
- All Implemented Interfaces:
OmegaMembershipOracle<Q,I,Word<O>>,OmegaMembershipOracle.MealyOmegaMembershipOracle<Q,I,O>,OmegaQueryAnswerer<Q,I,Word<O>>,BatchProcessor<OmegaQuery<I,Word<O>>>
public abstract class AbstractSULOmegaOracle<S,I,O,Q> extends Object implements OmegaMembershipOracle.MealyOmegaMembershipOracle<Q,I,O>
An omega membership oracle for anObservableSUL.The behavior is similar to a
SULOracle, except that this class answersOmegaQuerys.After some symbols (i.e. after
OmegaQuery.getPrefix(), and after eachOmegaQuery.getLoop()) the state of theObservableSULis retrieved, and used to answer the query.This class is not thread-safe.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface de.learnlib.oracle.OmegaMembershipOracle
OmegaMembershipOracle.DFAOmegaMembershipOracle<S extends Object,I extends Object>, OmegaMembershipOracle.MealyOmegaMembershipOracle<S extends Object,I extends Object,O extends Object>
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractSULOmegaOracle(ObservableSUL<S,I,O> sul)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Pair<@Nullable Word<O>,Integer>answerQuery(Word<I> prefix, Word<I> loop, int repeat)MembershipOracle.MealyMembershipOracle<I,O>getMembershipOracle()protected abstract QgetQueryState(ObservableSUL<S,I,O> sul)ObservableSUL<S,I,O>getSul()Gets theObservableSUL.static <S,I,O>
AbstractSULOmegaOracle<S,I,O,?>newOracle(ObservableSUL<S,I,O> sul)Creates a newAbstractSULOmegaOraclethat assumes theSULcan not make deep copies.static <S,I,O>
AbstractSULOmegaOracle<S,I,O,?>newOracle(ObservableSUL<S,I,O> sul, boolean deepCopies)Creates a newAbstractSULOmegaOracle, while making sure the invariants of theObservableSULare satisfied.voidprocessQueries(Collection<? extends OmegaQuery<I,Word<O>>> queries)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface de.learnlib.oracle.OmegaMembershipOracle
asOracle, isSameState, processBatch, processQuery
-
-
-
-
Constructor Detail
-
AbstractSULOmegaOracle
protected AbstractSULOmegaOracle(ObservableSUL<S,I,O> sul)
-
-
Method Detail
-
getSul
public ObservableSUL<S,I,O> getSul()
Gets theObservableSUL.- Returns:
- the
ObservableSUL.
-
processQueries
public void processQueries(Collection<? extends OmegaQuery<I,Word<O>>> queries)
- Specified by:
processQueriesin interfaceOmegaMembershipOracle<S,I,O>
-
getQueryState
protected abstract Q getQueryState(ObservableSUL<S,I,O> sul)
-
answerQuery
public Pair<@Nullable Word<O>,Integer> answerQuery(Word<I> prefix, Word<I> loop, int repeat)
- Specified by:
answerQueryin interfaceOmegaMembershipOracle<S,I,O>- Specified by:
answerQueryin interfaceOmegaQueryAnswerer<S,I,O>
-
getMembershipOracle
public MembershipOracle.MealyMembershipOracle<I,O> getMembershipOracle()
- Specified by:
getMembershipOraclein interfaceOmegaMembershipOracle<S,I,O>- Specified by:
getMembershipOraclein interfaceOmegaMembershipOracle.MealyOmegaMembershipOracle<S,I,O>
-
newOracle
public static <S,I,O> AbstractSULOmegaOracle<S,I,O,?> newOracle(ObservableSUL<S,I,O> sul, boolean deepCopies)
Creates a newAbstractSULOmegaOracle, while making sure the invariants of theObservableSULare satisfied.- Type Parameters:
S- the state typeI- the input typeO- the output type- Parameters:
sul- theObservableSULto wrap around.deepCopies- whether to test for state equivalence directly on the retrieved state.- Returns:
- the
AbstractSULOmegaOracle.
-
newOracle
public static <S,I,O> AbstractSULOmegaOracle<S,I,O,?> newOracle(ObservableSUL<S,I,O> sul)
Creates a newAbstractSULOmegaOraclethat assumes theSULcan not make deep copies.- Type Parameters:
S- the state typeI- the input typeO- the output type- See Also:
newOracle(ObservableSUL, boolean)
-
-