Interface SPA<S,I>
-
- Type Parameters:
S- state typeI- input symbol type
- All Superinterfaces:
AcceptorTS<S,I>,DeterministicAcceptorTS<S,I>,DeterministicTransitionSystem<S,I,S>,FiniteRepresentation,GraphViewable,InputAlphabetHolder<I>,Output<I,Boolean>,SimpleDTS<S,I>,SimpleTS<S,I>,SuffixOutput<I,Boolean>,TransitionSystem<S,I,S>,UniversalDTS<S,I,S,Boolean,Void>,UniversalTransitionSystem<S,I,S,Boolean,Void>
public interface SPA<S,I> extends DeterministicAcceptorTS<S,I>, SuffixOutput<I,Boolean>
A system of procedural automata. AnSPAis a context-free system where each non-terminal (procedure) is represented by aDFAthat accepts the language of right-hand sides of its respective production rules.For example, take the following context-free palindrome system over
a,b,cusing two non-terminalsF,G:F -> a | a F a | b | b F b | G | ε G -> c | c G c | FThe correspondingSPAwould consist ofprocedures(forFandG), accepting the regular languages{a,aFa,b,bFb,G,ε}and{c,cGc,F}respectively.In
SPAs, calls to and returns from procedures are visible. For the above example, a possible word accepted by the respectiveSPA(when usingFasinitial procedure) would beFaFGcRRaR(whereRdenotes the designatedreturn symbol.For further information, see "Compositional learning of mutually recursive procedural systems".
This interface makes no assumptions about how the semantics are implemented. One may use a stack-based approach, graph expansion, or else. However,
SPAs should be consistent with their alphabet definitions, i.e. anSPAshould be able toparsewords over thespecified alphabetand eachprocedureshould be able toparsewords over theprocedural inputs.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default BooleancomputeOutput(Iterable<? extends I> input)@Nullable IgetInitialProcedure()Returns the initial procedure (represented via itscall symbol) of this system.ProceduralInputAlphabet<I>getInputAlphabet()Refinement ofInputAlphabetHolder.getInputAlphabet()to add the constraint thatthissystem operates onProceduralInputAlphabets.default Collection<I>getProceduralInputs()Convenience method forgetProceduralInputs(Collection)which uses theinput alphabetofthissystem asconstraints.default Collection<I>getProceduralInputs(Collection<I> constraints)default @Nullable MgetProcedure(I callSymbol)Convenience method forgetProcedures()to quickly return the procedure of a given call symbol.Map<I,M>getProcedures()default Graph<?,?>graphView()default intsize()Returns the size ofthissystem which is given by the sum of the sizes of allprocedures.-
Methods inherited from interface net.automatalib.ts.acceptor.AcceptorTS
getStateProperty, getSuccessor, getTransitionProperty, isAccepting
-
Methods inherited from interface net.automatalib.ts.acceptor.DeterministicAcceptorTS
accepts, computeSuffixOutput, isAccepting
-
Methods inherited from interface net.automatalib.ts.DeterministicTransitionSystem
getSuccessor, getSuccessors, getTransition, getTransitions
-
Methods inherited from interface net.automatalib.ts.simple.SimpleDTS
getInitialState, getInitialStates, getState, getStates, getSuccessor, getSuccessors
-
Methods inherited from interface net.automatalib.ts.simple.SimpleTS
createDynamicStateMapping, createStaticStateMapping, getSuccessors
-
Methods inherited from interface net.automatalib.ts.TransitionSystem
powersetView
-
Methods inherited from interface net.automatalib.ts.UniversalDTS
getTransitionProperty
-
-
-
-
Method Detail
-
getProceduralInputs
default Collection<I> getProceduralInputs(Collection<I> constraints)
-
computeOutput
default Boolean computeOutput(Iterable<? extends I> input)
- Specified by:
computeOutputin interfaceDeterministicAcceptorTS<S,I>- Specified by:
computeOutputin interfaceOutput<S,I>- Specified by:
computeOutputin interfaceSuffixOutput<S,I>
-
getInputAlphabet
ProceduralInputAlphabet<I> getInputAlphabet()
Refinement ofInputAlphabetHolder.getInputAlphabet()to add the constraint thatthissystem operates onProceduralInputAlphabets.- Specified by:
getInputAlphabetin interfaceInputAlphabetHolder<I>- Returns:
- the input alphabet
-
getProceduralInputs
default Collection<I> getProceduralInputs()
Convenience method forgetProceduralInputs(Collection)which uses theinput alphabetofthissystem asconstraints.- Returns:
- a collection of defined inputs for
thissystem's procedures.
-
getInitialProcedure
@Nullable I getInitialProcedure()
Returns the initial procedure (represented via itscall symbol) of this system.- Returns:
- the initial procedure, may be
nullif undefined
-
getProcedures
Map<I,M> getProcedures()
Returns aMapfromcall symbolsto the procedures ofthissystem. Note that a (non-minimal)ProceduralSystemmay not contain a procedure for every call symbol.- Returns:
- the procedures of this system
-
getProcedure
default @Nullable M getProcedure(I callSymbol)
Convenience method forgetProcedures()to quickly return the procedure of a given call symbol.- Parameters:
callSymbol- the call symbol- Returns:
- the corresponding procedure. May be
nullifthissystem does not have a procedure for the given call symbol. - See Also:
getProcedures()
-
size
default int size()
Returns the size ofthissystem which is given by the sum of the sizes of allprocedures. Note that this value does not necessarily correspond to the classical notion ofSimpleAutomaton.size(), since semantically aProceduralSystemmay be infinite-sizedSimpleTS.- Specified by:
sizein interfaceFiniteRepresentation- Returns:
- the size of
thissystem
-
graphView
default Graph<?,?> graphView()
- Specified by:
graphViewin interfaceGraphViewable
-
-