package fr.inria.diverse.k3.benchVM.prop; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import statemachine.State; import statemachine.StateMachine; import fr.inria.diverse.k3.benchVM.helper.TransformationsToolBox; public class ContainsEpsilon implements UnaryTest { @Override public boolean test(StateMachine a) { Iterator<State> i = a.initials().iterator(); Set<State> s = new HashSet<>(); while (i.hasNext()) { State st = i.next(); if (st.isTerminal()) return true; s.add(st); /* compute epsilon closure */ Set<State> cl = TransformationsToolBox.epsilonClosure(s,a); if(TransformationsToolBox.containsATerminalState(cl)) return true; } return false; } }