jon.recoil.org

Module Jkind_types.Layout

type 'sort t =
  1. | Sort of 'sort * Scannable_axes.t
  2. | Product of 'sort t list
  3. | Any of Scannable_axes.t

Note that products have two possible encodings: as Product ... or as Sort (Product .... This duplication is hard to eliminate because of the possibility that a sort variable may be instantiated by a product sort.

module Const : sig ... end
val of_const : Const.t -> Sort.t t
val of_new_sort_var : level:int -> Scannable_axes.t -> Sort.t t * Sort.t
val get_const : Sort.t t -> Const.t option
val get_flat_const : Sort.Flat.t t -> Const.t option
val product : 'a t list -> 'a t