Teacher.TModule type for the learning oracle (teacher / minimally adequate teacher).
A teacher holds the target language and answers two kinds of queries:
mem): given a word w, return the value f(w) ∈ S.equiv): given a hypothesis WFA, return either None (the hypothesis is correct) or Some cex where cex is a word on which the hypothesis disagrees with the target.val mk : Automata.Char.set -> (Automata.Word.t -> s) -> Base.int -> tmk alpha lang bound creates a teacher. lang is the target weighted language (a word-to-semiring function). bound is the maximum number of words to enumerate during equivalence checking. All calls to lang are transparently memoised.
val mem : t -> Automata.Word.t -> sMembership query: mem t w returns f(w), the target value for w.
val equiv : t -> a -> Automata.Word.t Base.optionEquivalence query: equiv t aut enumerates words of Σ* in breadth-first order up to bound words and returns the first w such that aut(w) ≠ f(w), or None if no counterexample is found within the bound.
val alpha : t -> Automata.Char.setval show_stats : t -> Base.stringval reset_stats : t -> Base.unitReset per-round statistics counters (called after each round).