Module Sstt_parsing.Ast

type builtin =
  1. | TEmpty
  2. | TAny
  3. | TAnyTuple
  4. | TAnyAtom
  5. | TAnyTag
  6. | TAnyInt
  7. | TAnyArrow
  8. | TAnyRecord
  9. | TAnyTupleComp of int
  10. | TAnyTagComp of Sstt_types.TagComp.Tag.t
type varop =
  1. | TTuple
type binop =
  1. | TCap
  2. | TCup
  3. | TDiff
  4. | TArrow
type unop =
  1. | TNeg
type ty =
  1. | TBuiltin of builtin
  2. | TNamed of string
  3. | TTag of string * ty
  4. | TVar of string
  5. | TVarMono of string
  6. | TInterval of Z.t option * Z.t option
  7. | TRecord of (string * ty * bool) list * bool
  8. | TVarop of varop * ty list
  9. | TBinop of binop * ty * ty
  10. | TUnop of unop * ty
  11. | TWhere of ty * (string * ty) list
type op =
  1. | LEQ
  2. | EQ
  3. | GEQ
type subst = (bool * string * ty) list
type tally = (ty * op * ty) list
type expr =
  1. | CTy of ty
  2. | CSubst of subst
  3. | CTally of tally
  4. | CCat of expr * expr
  5. | CApp of expr * expr
  6. | CCmp of expr * op * expr
type elt =
  1. | DefineType of string list * expr
  2. | Expr of string option * expr
type program = elt list
type command =
  1. | Elt of elt
  2. | End
module StrMap : Stdlib.Map.S with type key = string
type env = {
  1. aenv : Sstt_types.Atoms.Atom.t StrMap.t;
  2. tagenv : Sstt_types.TagComp.Tag.t StrMap.t;
  3. tenv : Sstt_types.Ty.t StrMap.t;
  4. venv : Sstt_types.Var.t StrMap.t;
  5. mvenv : Sstt_types.Var.t StrMap.t;
  6. mono : Sstt_types.VarSet.t;
  7. lenv : Sstt_types.Label.t StrMap.t;
}
val empty_env : env
val build_ty : env -> ty -> Sstt_types.Ty.t * env
val build_subst : env -> subst -> Sstt_types.Subst.t * env
val build_tally : env -> tally -> Sstt_types.Tallying.constr list * env