I
- input symbol type upper boundD
- output domain type upper boundpublic interface LocalSuffixFinder<I,D>
Given a query (u, v) which is a counterexample (i.e., the suffix-output for (u,v) is distinct from the target system's output for (u,v)), it calculates the index i of the suffix such that w[i:] (w = uv) still allows to expose a behavioral difference for an adequate prefix. This adequate prefix can be determined as {w[:i]}, where {.} denotes the access sequence of the corresponding word.
The effect of adding such a suffix can be described as follows: {w[:i]} and {w[:i-1]}w[i-1] both lead to the same state in the hypothesis, but a local suffix finder chooses the index i such that the output for ({w[:i]}, w[i:]) and ({w[:i-1]}w[i-1], w[i:]) will differ. Hence, the transition to the state reached by {w[:i]} from {w[:i-1]} is disproved.
Please note that the type parameters of these class only constitute upper bounds for the respective input
symbol and output classes, denoting the requirements of the process in general. A suffix finder which does not
exploit any properties of the used classes will implement this interface with <Object,Object> generic
arguments only. The genericity is still maintained due to the RI and RO generic parameters in the
findSuffixIndex(Query, AccessSequenceTransformer, SuffixOutput, MembershipOracle)
method.
Modifier and Type | Method and Description |
---|---|
<RI extends I,RD extends D> |
findSuffixIndex(Query<RI,RD> ceQuery,
AccessSequenceTransformer<RI> asTransformer,
net.automatalib.automata.concepts.SuffixOutput<RI,RD> hypOutput,
MembershipOracle<RI,RD> oracle)
Finds, for a given counterexample, a "split index", such that: - the part of the query word before this
index leads to the state being split - the part of the query word from this index on is a suffix
capable of splitting this state.
|
<RI extends I,RD extends D> int findSuffixIndex(Query<RI,RD> ceQuery, AccessSequenceTransformer<RI> asTransformer, net.automatalib.automata.concepts.SuffixOutput<RI,RD> hypOutput, MembershipOracle<RI,RD> oracle)
RI
- real input symbol class used for *this* counterexample analysisRD
- real output class used for *this* counterexample analysisceQuery
- the counterexample query that triggered the refinement. Note that the same restrictions as in LearningAlgorithm.refineHypothesis(DefaultQuery)
apply.asTransformer
- an AccessSequenceTransformer
used for access sequence transformation, if applicable.hypOutput
- interface to the output generation of the hypothesis, with the aim of comparing outputs of the hypothesis
and the SUL.oracle
- interface to the System Under Learning (SUL).Copyright © 2018. All rights reserved.