- java.lang.Object
-
- de.learnlib.filter.cache.sul.SULCache<I,O>
-
- Type Parameters:
I
- input symbol typeO
- output symbol type
- All Implemented Interfaces:
LearningCache<net.automatalib.automaton.transducer.MealyMachine<?,I,?,O>,I,net.automatalib.word.Word<O>>
,LearningCache.MealyLearningCache<I,O>
,Resumable<de.learnlib.filter.cache.sul.AbstractSULCache.SULCacheState<I,O>>
,SUL<I,O>
,net.automatalib.alphabet.SupportsGrowingAlphabet<I>
- Direct Known Subclasses:
ThreadSafeSULCache
public class SULCache<I,O> extends Object
A cache to be used with aSUL
.Because on a
SUL
, a query is executed step-by-step, it is impossible to determine in advance whether the cached information is sufficient to answer the complete query. However, in general it is undesired to execute any actions on the underlying SUL as long as the requested information can be provided from the cache.This class therefore defers any real execution to the point where the cached information is definitely insufficient; if such a point is not reached before a call to
SUL.post()
is made, the underlying SUL is not queried.Note: this implementation is not thread-safe. If you require a cache that is usable in a parallel environment. use the
ThreadSafeSULCache
(or rather theThreadSafeSULCaches
factory) from thelearnlib-parallelism
artifact.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface de.learnlib.filter.cache.LearningCache
LearningCache.DFALearningCache<I>, LearningCache.MealyLearningCache<I,O>, LearningCache.MooreLearningCache<I,O>
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAlphabetSymbol(I symbol)
boolean
canFork()
Returns whether this SUL is capable offorking
.EquivalenceOracle.MealyEquivalenceOracle<I,O>
createCacheConsistencyTest()
Creates a cache consistency test.SUL<I,O>
fork()
Forks this SUL, if possible.void
post()
shut down SUL.void
pre()
setup SUL.void
resume(C state)
Resume the datastructure from a previously suspended point in time.int
size()
O
step(I in)
make one step on the SUL.C
suspend()
Expose the state object.
-
-
-
Method Detail
-
pre
public void pre()
Description copied from interface:SUL
setup SUL.
-
post
public void post()
Description copied from interface:SUL
shut down SUL.
-
step
public O step(I in)
Description copied from interface:SUL
make one step on the SUL.
-
canFork
public boolean canFork()
Description copied from interface:SUL
Returns whether this SUL is capable offorking
.- Specified by:
canFork
in interfaceSUL<I,O>
- Returns:
true
if this SUL can be forked,false
otherwise- See Also:
SUL.fork()
-
fork
public SUL<I,O> fork()
Description copied from interface:SUL
Forks this SUL, if possible. The fork of a SUL is a copy which behaves exactly the same as this SUL. This method should always return a reseted SUL, regardless of whether this call is made between a call toSUL.pre()
andSUL.post()
.If
SUL.canFork()
returnstrue
, this method must return a non-null
object, which should behave exactly like this SUL (in particular, it must be forkable as well). Otherwise, aUnsupportedOperationException
must be thrown.Implementation note: if resetting a SUL changes the internal state of this object in a non-trivial way (e.g., incrementing a counter to ensure independent sessions), care must be taken that forks of this SUL manipulate the same internal state.
-
createCacheConsistencyTest
public EquivalenceOracle.MealyEquivalenceOracle<I,O> createCacheConsistencyTest()
Description copied from interface:LearningCache
Creates a cache consistency test. A cache consistency test is an equivalence oracle which checks a given hypothesis against the current contents of the cache. Hence, no queries are posed to the underlying system.The created cache consistency test is backed by the cache contents. This method does not need to be invoked repeatedly when the cache contents change.
- Specified by:
createCacheConsistencyTest
in interfaceLearningCache<I,O,C extends de.learnlib.filter.cache.sul.AbstractSULCache.SULCacheState<I,O>>
- Returns:
- a cache consistency test for the contents of this cache
-
addAlphabetSymbol
public void addAlphabetSymbol(I symbol)
- Specified by:
addAlphabetSymbol
in interfacenet.automatalib.alphabet.SupportsGrowingAlphabet<I>
-
suspend
public C suspend()
Description copied from interface:Resumable
Expose the state object.
-
resume
public void resume(C state)
Description copied from interface:Resumable
Resume the datastructure from a previously suspended point in time.
-
size
public int size()
-
-