Module Encoding

Encoding strategy selector: dispatches --encoding naive|gen to the appropriate Intf.T functor.

type t =
  1. | Naive
  2. | Gen

Tag serialized into the output JSON.

val pp : Ppx_deriving_runtime.Format.formatter -> t -> Ppx_deriving_runtime.unit
val show : t -> Ppx_deriving_runtime.string
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
module Intf : sig ... end

Shared interface for SMT encoding strategies (getAutomaton, Definition 5).

module Naive : sig ... end

Naive encoding (Section 4.1 of the paper).

module Gen : sig ... end

Generative encoding (Section 4.2, Figure 1 of the paper).

module type T = Intf.T
val get : (module Algebra.Semiring.T with type t = 's) -> (module Automata.WFA.T with type s = 's and type t = 'a) -> t -> (module Intf.T with type a = 'a and type s = 's)

get (module S) (module A) encoding returns a first-class Intf.T module for the chosen encoding strategy, specialized to semiring S and WFA module A.