sig
  module type Ordered_field =
    sig
      type t
      val zero : Flang.Ordered_field.t
      val ( + ) :
        Flang.Ordered_field.t ->
        Flang.Ordered_field.t -> Flang.Ordered_field.t
      val ( - ) :
        Flang.Ordered_field.t ->
        Flang.Ordered_field.t -> Flang.Ordered_field.t
      val ( * ) :
        Flang.Ordered_field.t ->
        Flang.Ordered_field.t -> Flang.Ordered_field.t
      val ( / ) :
        Flang.Ordered_field.t ->
        Flang.Ordered_field.t -> Flang.Ordered_field.t
      val t_of_sexp : Sexplib.Sexp.t -> Flang.Ordered_field.t
      val sexp_of_t : Flang.Ordered_field.t -> Sexplib.Sexp.t
      val compare : Flang.Ordered_field.t -> Flang.Ordered_field.t -> int
    end
  type 'a t =
      [ `Abs of 'Flang.t
      | `Add of 'Flang.t * 'Flang.t
      | `Base of 'a
      | `Div of 'Flang.t * 'Flang.t
      | `Max of 'Flang.t * 'Flang.t
      | `Min of 'Flang.t * 'Flang.t
      | `Mult of 'Flang.t * 'Flang.t
      | `Sub of 'Flang.t * 'Flang.t ]
  val base : '-> 'Flang.t
  val add : 'Flang.t -> 'Flang.t -> 'Flang.t
  val sub : 'Flang.t -> 'Flang.t -> 'Flang.t
  val mult : 'Flang.t -> 'Flang.t -> 'Flang.t
  val div : 'Flang.t -> 'Flang.t -> 'Flang.t
  val add_list : 'Flang.t list -> 'Flang.t
  val mult_list : 'Flang.t list -> 'Flang.t
  val abs : 'Flang.t -> 'Flang.t
  val min : 'Flang.t -> 'Flang.t -> 'Flang.t
  val max : 'Flang.t -> 'Flang.t -> 'Flang.t
  val atoms : 'Flang.t -> 'a list
  module Eval :
    functor (F : Ordered_field->
      sig val eval : 'Flang.t -> f:('-> F.t) -> F.t end
  val compare : ('-> '-> int) -> 'Flang.t -> 'Flang.t -> int
  val bin_t : 'Bin_prot.Type_class.t -> 'Flang.t Bin_prot.Type_class.t
  val bin_read_t : 'Bin_prot.Read.reader -> 'Flang.t Bin_prot.Read.reader
  val __bin_read_t__ :
    'Bin_prot.Read.reader -> (int -> 'Flang.t) Bin_prot.Read.reader
  val bin_reader_t :
    'Bin_prot.Type_class.reader -> 'Flang.t Bin_prot.Type_class.reader
  val bin_size_t : 'Bin_prot.Size.sizer -> 'Flang.t Bin_prot.Size.sizer
  val bin_write_t :
    'Bin_prot.Write.writer -> 'Flang.t Bin_prot.Write.writer
  val bin_writer_t :
    'Bin_prot.Type_class.writer -> 'Flang.t Bin_prot.Type_class.writer
  val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'Flang.t
  val __t_of_sexp__ : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'Flang.t
  val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'Flang.t -> Sexplib.Sexp.t
end