001package de.learnlib.eqtests.basic;
002
003import net.automatalib.automata.UniversalDeterministicAutomaton;
004import net.automatalib.automata.concepts.Output;
005import de.learnlib.api.MembershipOracle;
006
007public abstract class EquivalenceQueries {
008
009        private EquivalenceQueries() {
010        }
011
012        public static <A extends UniversalDeterministicAutomaton<?,I,?,?,?> & Output<I,O>,I,O>
013        WMethodEQOracle<A, I, O> wMethod(int maxDepth, MembershipOracle<I, O> sulOracle) {
014                return new WMethodEQOracle<>(maxDepth, sulOracle);
015        }
016        
017        public static <A extends UniversalDeterministicAutomaton<?,I,?,?,?> & Output<I,O>,I,O>
018        WpMethodEQOracle<A, I, O> wpMethod(int maxDepth, MembershipOracle<I,O> sulOracle) {
019                return new WpMethodEQOracle<>(maxDepth, sulOracle);
020        }
021        
022        public static <A extends UniversalDeterministicAutomaton<?,I,?,?,?> & Output<I,O>,I,O>
023        SimulatorEQOracle<I, O> simulator(A target) {
024                A automaton = target;
025                return new SimulatorEQOracle<I,O>(automaton);
026        }
027
028}