Module type Hopcroft.S

type label
type state
type transition = {
src : state;
lbl : label;
dst : state;
}
type automaton = {
states : int;(*

The number of states of the automaton.

*)
partitions : state list list;(*

A set of state partitions initially known to be observationally distinct. For instance, if the automaton has the list l as accepting states, one can set partitions = [l].

*)
transitions : transition list;(*

The transitions of the automaton without duplicates.

*)
}
val reduce : automaton -> state list array

Associate the array of equivalence classes of the states of an automaton