Skip to content

Commit 2517cb4

Browse files
committed
use native alphabet type in PaulAndMary example
1 parent b9d2da6 commit 2517cb4

File tree

7 files changed

+52
-59
lines changed

7 files changed

+52
-59
lines changed

algorithms/active/lstar/src/test/java/de/learnlib/algorithms/lstar/LStarDFATest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import net.automatalib.automata.fsa.DFA;
3434
import net.automatalib.words.Alphabet;
3535
import net.automatalib.words.Word;
36-
import net.automatalib.words.impl.Symbol;
3736
import org.testng.annotations.Test;
3837

3938
@Test
@@ -42,25 +41,25 @@ public class LStarDFATest extends LearningTest {
4241
@Test
4342
public void testLStar() {
4443
ExamplePaulAndMary pmExample = ExamplePaulAndMary.createExample();
45-
DFA<?, Symbol> targetDFA = pmExample.getReferenceAutomaton();
46-
Alphabet<Symbol> alphabet = pmExample.getAlphabet();
44+
DFA<?, String> targetDFA = pmExample.getReferenceAutomaton();
45+
Alphabet<String> alphabet = pmExample.getAlphabet();
4746

48-
DFAMembershipOracle<Symbol> dfaOracle = new DFASimulatorOracle<>(targetDFA);
47+
DFAMembershipOracle<String> dfaOracle = new DFASimulatorOracle<>(targetDFA);
4948

5049
// Empty set of suffixes => minimum compliant set
51-
List<Word<Symbol>> suffixes = Collections.emptyList();
50+
List<Word<String>> suffixes = Collections.emptyList();
5251

53-
List<EquivalenceOracle<? super DFA<?, Symbol>, Symbol, Boolean>> eqOracles = new ArrayList<>();
52+
List<EquivalenceOracle<? super DFA<?, String>, String, Boolean>> eqOracles = new ArrayList<>();
5453

5554
eqOracles.add(new SimulatorEQOracle<>(targetDFA));
5655
eqOracles.add(new WMethodEQOracle<>(dfaOracle, 3));
5756
eqOracles.add(new WpMethodEQOracle<>(dfaOracle, 3));
5857

59-
for (ObservationTableCEXHandler<? super Symbol, ? super Boolean> handler : LearningTest.CEX_HANDLERS) {
60-
for (ClosingStrategy<? super Symbol, ? super Boolean> strategy : LearningTest.CLOSING_STRATEGIES) {
58+
for (ObservationTableCEXHandler<? super String, ? super Boolean> handler : LearningTest.CEX_HANDLERS) {
59+
for (ClosingStrategy<? super String, ? super Boolean> strategy : LearningTest.CLOSING_STRATEGIES) {
6160

62-
for (EquivalenceOracle<? super DFA<?, Symbol>, Symbol, Boolean> eqOracle : eqOracles) {
63-
LearningAlgorithm<? extends DFA<?, Symbol>, Symbol, Boolean> learner =
61+
for (EquivalenceOracle<? super DFA<?, String>, String, Boolean> eqOracle : eqOracles) {
62+
LearningAlgorithm<? extends DFA<?, String>, String, Boolean> learner =
6463
new ExtensibleLStarDFA<>(alphabet, dfaOracle, suffixes, handler, strategy);
6564

6665
testLearnModel(targetDFA, alphabet, learner, dfaOracle, eqOracle);

oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracleTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,17 @@
2525
import net.automatalib.util.automata.Automata;
2626
import net.automatalib.words.Alphabet;
2727
import net.automatalib.words.Word;
28-
import net.automatalib.words.impl.Symbol;
2928
import org.testng.annotations.BeforeClass;
3029
import org.testng.annotations.Test;
3130

3231
/**
3332
* @author frohme
3433
*/
35-
public class IncrementalWMethodEQOracleTest extends AbstractEQOracleTest<DFA<?, Symbol>, Symbol, Boolean> {
34+
public class IncrementalWMethodEQOracleTest extends AbstractEQOracleTest<DFA<?, String>, String, Boolean> {
3635

37-
private DFA<?, Symbol> dfa;
38-
private Set<Word<Symbol>> transitionCover;
39-
private Set<Word<Symbol>> characterizingSet;
36+
private DFA<?, String> dfa;
37+
private Set<Word<String>> transitionCover;
38+
private Set<Word<String>> characterizingSet;
4039

4140
@BeforeClass
4241
public void setUp() {
@@ -52,23 +51,23 @@ public void setUp() {
5251
public void testNGFix() {}
5352

5453
@Override
55-
protected void checkGeneratedQuery(Word<Symbol> query) {
54+
protected void checkGeneratedQuery(Word<String> query) {
5655
transitionCover.stream().filter(w -> w.isPrefixOf(query)).findAny().orElseThrow(AssertionError::new);
5756
characterizingSet.stream().filter(w -> w.isSuffixOf(query)).findAny().orElseThrow(AssertionError::new);
5857
}
5958

6059
@Override
61-
protected EquivalenceOracle<DFA<?, Symbol>, Symbol, Boolean> getOracle(MembershipOracle<Symbol, Boolean> mOracle) {
60+
protected EquivalenceOracle<DFA<?, String>, String, Boolean> getOracle(MembershipOracle<String, Boolean> mOracle) {
6261
return new IncrementalWMethodEQOracle<>(mOracle, getAlphabet());
6362
}
6463

6564
@Override
66-
protected DFA<?, Symbol> getHypothesis() {
65+
protected DFA<?, String> getHypothesis() {
6766
return dfa;
6867
}
6968

7069
@Override
71-
protected Alphabet<Symbol> getAlphabet() {
70+
protected Alphabet<String> getAlphabet() {
7271
return ExamplePaulAndMary.createInputAlphabet();
7372
}
7473
}

oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracleTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,23 @@
2525
import net.automatalib.util.automata.Automata;
2626
import net.automatalib.words.Alphabet;
2727
import net.automatalib.words.Word;
28-
import net.automatalib.words.impl.Symbol;
2928
import org.testng.Assert;
3029
import org.testng.annotations.BeforeClass;
3130
import org.testng.annotations.Test;
3231

3332
/**
3433
* @author frohme
3534
*/
36-
public class RandomWMethodEQOracleTest extends AbstractEQOracleTest<DFA<?, Symbol>, Symbol, Boolean> {
35+
public class RandomWMethodEQOracleTest extends AbstractEQOracleTest<DFA<?, String>, String, Boolean> {
3736

3837
private static final int MAX_TESTS;
3938
private static final int MIN_LENGTH;
4039
private static final int MAX_LENGTH;
4140

4241
private int numberOfGeneratedQueries;
43-
private DFA<?, Symbol> dfa;
44-
private Set<Word<Symbol>> transitionCover;
45-
private Set<Word<Symbol>> characterizingSet;
42+
private DFA<?, String> dfa;
43+
private Set<Word<String>> transitionCover;
44+
private Set<Word<String>> characterizingSet;
4645

4746
static {
4847
MAX_TESTS = 1000;
@@ -65,25 +64,25 @@ public void testNumberOfTotalQueries() {
6564
}
6665

6766
@Override
68-
protected void checkGeneratedQuery(Word<Symbol> query) {
67+
protected void checkGeneratedQuery(Word<String> query) {
6968
numberOfGeneratedQueries++;
7069

7170
transitionCover.stream().filter(w -> w.isPrefixOf(query)).findAny().orElseThrow(AssertionError::new);
7271
characterizingSet.stream().filter(w -> w.isSuffixOf(query)).findAny().orElseThrow(AssertionError::new);
7372
}
7473

7574
@Override
76-
protected EquivalenceOracle<DFA<?, Symbol>, Symbol, Boolean> getOracle(MembershipOracle<Symbol, Boolean> mOracle) {
75+
protected EquivalenceOracle<DFA<?, String>, String, Boolean> getOracle(MembershipOracle<String, Boolean> mOracle) {
7776
return new RandomWMethodEQOracle<>(mOracle, MIN_LENGTH, MAX_LENGTH, MAX_TESTS);
7877
}
7978

8079
@Override
81-
protected DFA<?, Symbol> getHypothesis() {
80+
protected DFA<?, String> getHypothesis() {
8281
return dfa;
8382
}
8483

8584
@Override
86-
protected Alphabet<Symbol> getAlphabet() {
85+
protected Alphabet<String> getAlphabet() {
8786
return ExamplePaulAndMary.createInputAlphabet();
8887
}
8988
}

oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracleTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,23 @@
2525
import net.automatalib.util.automata.Automata;
2626
import net.automatalib.words.Alphabet;
2727
import net.automatalib.words.Word;
28-
import net.automatalib.words.impl.Symbol;
2928
import org.testng.Assert;
3029
import org.testng.annotations.BeforeClass;
3130
import org.testng.annotations.Test;
3231

3332
/**
3433
* @author frohme
3534
*/
36-
public class RandomWpMethodEQOracleTest extends AbstractEQOracleTest<DFA<?, Symbol>, Symbol, Boolean> {
35+
public class RandomWpMethodEQOracleTest extends AbstractEQOracleTest<DFA<?, String>, String, Boolean> {
3736

3837
private static final int MAX_TESTS;
3938
private static final int MIN_LENGTH;
4039
private static final int MAX_LENGTH;
4140

4241
private int numberOfGeneratedQueries;
43-
private DFA<?, Symbol> dfa;
44-
private Set<Word<Symbol>> stateCover;
45-
private Set<Word<Symbol>> characterizingSet;
42+
private DFA<?, String> dfa;
43+
private Set<Word<String>> stateCover;
44+
private Set<Word<String>> characterizingSet;
4645

4746
static {
4847
MAX_TESTS = 1000;
@@ -65,25 +64,25 @@ public void testNumberOfTotalQueries() {
6564
}
6665

6766
@Override
68-
protected void checkGeneratedQuery(Word<Symbol> query) {
67+
protected void checkGeneratedQuery(Word<String> query) {
6968
numberOfGeneratedQueries++;
7069

7170
stateCover.stream().filter(w -> w.isPrefixOf(query)).findAny().orElseThrow(AssertionError::new);
7271
characterizingSet.stream().filter(w -> w.isSuffixOf(query)).findAny().orElseThrow(AssertionError::new);
7372
}
7473

7574
@Override
76-
protected EquivalenceOracle<DFA<?, Symbol>, Symbol, Boolean> getOracle(MembershipOracle<Symbol, Boolean> mOracle) {
75+
protected EquivalenceOracle<DFA<?, String>, String, Boolean> getOracle(MembershipOracle<String, Boolean> mOracle) {
7776
return new RandomWpMethodEQOracle<>(mOracle, MIN_LENGTH, MAX_LENGTH, MAX_TESTS);
7877
}
7978

8079
@Override
81-
protected DFA<?, Symbol> getHypothesis() {
80+
protected DFA<?, String> getHypothesis() {
8281
return dfa;
8382
}
8483

8584
@Override
86-
protected Alphabet<Symbol> getAlphabet() {
85+
protected Alphabet<String> getAlphabet() {
8786
return ExamplePaulAndMary.createInputAlphabet();
8887
}
8988
}

oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOmegaOracleTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import de.learnlib.oracle.membership.SimulatorOmegaOracle.DFASimulatorOmegaOracle;
2424
import net.automatalib.automata.fsa.DFA;
2525
import net.automatalib.words.Word;
26-
import net.automatalib.words.impl.Symbol;
2726
import org.testng.Assert;
2827
import org.testng.annotations.Test;
2928

@@ -38,18 +37,18 @@ public class SimulatorOmegaOracleTest {
3837
@Test
3938
public void testDFASimulatorOmegaOracle() {
4039

41-
DFA<Integer, Symbol> dfa = ExamplePaulAndMary.constructMachine();
40+
DFA<Integer, String> dfa = ExamplePaulAndMary.constructMachine();
4241

43-
DFASimulatorOmegaOracle<Integer, Symbol> oracle = new DFASimulatorOmegaOracle<>(dfa);
42+
DFASimulatorOmegaOracle<Integer, String> oracle = new DFASimulatorOmegaOracle<>(dfa);
4443

45-
List<OmegaQuery<Symbol, Boolean>> queries = new ArrayList<>();
44+
List<OmegaQuery<String, Boolean>> queries = new ArrayList<>();
4645

47-
OmegaQuery<Symbol, Boolean> q1 = new OmegaQuery<>(Word.epsilon(),
46+
OmegaQuery<String, Boolean> q1 = new OmegaQuery<>(Word.epsilon(),
4847
Word.fromSymbols(ExamplePaulAndMary.IN_PAUL,
4948
ExamplePaulAndMary.IN_LOVES,
5049
ExamplePaulAndMary.IN_MARY),
5150
1);
52-
OmegaQuery<Symbol, Boolean> q2 = new OmegaQuery<>(Word.fromSymbols(ExamplePaulAndMary.IN_MARY),
51+
OmegaQuery<String, Boolean> q2 = new OmegaQuery<>(Word.fromSymbols(ExamplePaulAndMary.IN_MARY),
5352
Word.fromSymbols(ExamplePaulAndMary.IN_MARY,
5453
ExamplePaulAndMary.IN_LOVES,
5554
ExamplePaulAndMary.IN_PAUL),

oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOracleTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import de.learnlib.examples.dfa.ExamplePaulAndMary;
2424
import net.automatalib.automata.fsa.DFA;
2525
import net.automatalib.words.Word;
26-
import net.automatalib.words.impl.Symbol;
2726
import org.testng.Assert;
2827
import org.testng.annotations.Test;
2928

@@ -35,16 +34,16 @@ public class SimulatorOracleTest {
3534
@Test
3635
public void testDFASimulatorOracle() {
3736

38-
DFA<?, Symbol> dfa = ExamplePaulAndMary.constructMachine();
37+
DFA<?, String> dfa = ExamplePaulAndMary.constructMachine();
3938

40-
SimulatorOracle<Symbol, Boolean> oracle = new SimulatorOracle<>(dfa);
39+
SimulatorOracle<String, Boolean> oracle = new SimulatorOracle<>(dfa);
4140

42-
List<DefaultQuery<Symbol, Boolean>> queries = new ArrayList<>();
41+
List<DefaultQuery<String, Boolean>> queries = new ArrayList<>();
4342

44-
DefaultQuery<Symbol, Boolean> q1 = new DefaultQuery<>(Word.fromSymbols(ExamplePaulAndMary.IN_PAUL,
43+
DefaultQuery<String, Boolean> q1 = new DefaultQuery<>(Word.fromSymbols(ExamplePaulAndMary.IN_PAUL,
4544
ExamplePaulAndMary.IN_LOVES,
4645
ExamplePaulAndMary.IN_MARY));
47-
DefaultQuery<Symbol, Boolean> q2 = new DefaultQuery<>(Word.fromSymbols(ExamplePaulAndMary.IN_MARY,
46+
DefaultQuery<String, Boolean> q2 = new DefaultQuery<>(Word.fromSymbols(ExamplePaulAndMary.IN_MARY,
4847
ExamplePaulAndMary.IN_LOVES,
4948
ExamplePaulAndMary.IN_PAUL));
5049
queries.add(q1);

test-support/learning-examples/src/main/java/de/learnlib/examples/dfa/ExamplePaulAndMary.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,18 @@
2020
import net.automatalib.automata.fsa.impl.compact.CompactDFA;
2121
import net.automatalib.util.automata.builders.AutomatonBuilders;
2222
import net.automatalib.words.Alphabet;
23-
import net.automatalib.words.impl.FastAlphabet;
24-
import net.automatalib.words.impl.Symbol;
23+
import net.automatalib.words.impl.Alphabets;
2524

2625
/**
2726
* This class implements a sad love story - DFA style.
2827
*
2928
* @author Maik Merten
3029
*/
31-
public class ExamplePaulAndMary extends DefaultDFALearningExample<Symbol> {
30+
public class ExamplePaulAndMary extends DefaultDFALearningExample<String> {
3231

33-
public static final Symbol IN_PAUL = new Symbol("Paul");
34-
public static final Symbol IN_LOVES = new Symbol("loves");
35-
public static final Symbol IN_MARY = new Symbol("Mary");
32+
public static final String IN_PAUL = "Paul";
33+
public static final String IN_LOVES = "loves";
34+
public static final String IN_MARY = "Mary";
3635

3736
public ExamplePaulAndMary() {
3837
super(constructMachine());
@@ -43,11 +42,11 @@ public ExamplePaulAndMary() {
4342
*
4443
* @return machine instance of the example
4544
*/
46-
public static CompactDFA<Symbol> constructMachine() {
45+
public static CompactDFA<String> constructMachine() {
4746
return constructMachine(new CompactDFA<>(createInputAlphabet()));
4847
}
4948

50-
public static <A extends MutableDFA<S, ? super Symbol>, S> A constructMachine(A dfa) {
49+
public static <A extends MutableDFA<S, ? super String>, S> A constructMachine(A dfa) {
5150

5251
// @formatter:off
5352
return AutomatonBuilders.forDFA(dfa)
@@ -70,8 +69,8 @@ public static CompactDFA<Symbol> constructMachine() {
7069
// @formatter:on
7170
}
7271

73-
public static Alphabet<Symbol> createInputAlphabet() {
74-
return new FastAlphabet<>(IN_PAUL, IN_LOVES, IN_MARY);
72+
public static Alphabet<String> createInputAlphabet() {
73+
return Alphabets.fromArray(IN_PAUL, IN_LOVES, IN_MARY);
7574
}
7675

7776
public static ExamplePaulAndMary createExample() {

0 commit comments

Comments
 (0)