de.learnlib.mealy.MealyLearnerWrapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of learnlib-core Show documentation
Show all versions of learnlib-core Show documentation
Infrastructure and core functionalities of LearnLib
/* Copyright (C) 2013-2014 TU Dortmund
* This file is part of LearnLib, http://www.learnlib.de/.
*
* LearnLib is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 3.0 as published by the Free Software Foundation.
*
* LearnLib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with LearnLib; if not, see
* http://www.gnu.de/documents/lgpl.en.html.
*/
package de.learnlib.mealy;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
import net.automatalib.automata.transout.MealyMachine;
import net.automatalib.words.Word;
import de.learnlib.api.LearningAlgorithm;
import de.learnlib.oracles.DefaultQuery;
@ParametersAreNonnullByDefault
final class MealyLearnerWrapper, I, O> implements LearningAlgorithm.MealyLearner {
private final LearningAlgorithm learner;
private M hypothesis = null;
public MealyLearnerWrapper(LearningAlgorithm learner) {
this.learner = learner;
}
@Override
public void startLearning() {
learner.startLearning();
}
@Override
public boolean refineHypothesis(DefaultQuery> ceQuery) {
if(hypothesis == null)
hypothesis = learner.getHypothesisModel();
DefaultQuery reducedQry = MealyUtil.reduceCounterExample(hypothesis, ceQuery);
if(reducedQry == null)
return false;
hypothesis = null;
return learner.refineHypothesis(reducedQry);
}
@Override
@Nonnull
public M getHypothesisModel() {
hypothesis = learner.getHypothesisModel();
return hypothesis;
}
}