Module Synapx.Comp

Approximate Computation Syntax

type unbox_modifier = [
  1. | `Strengthened
]
type case_pragma = Synint.Comp.case_pragma =
  1. | PragmaCase
  2. | PragmaNotCase
type context_case = Synint.Comp.context_case =
  1. | EmptyContext of Syncom.Location.t
  2. | ExtendedBy of Syncom.Location.t * int
type case_label = Synint.Comp.case_label =
  1. | Lf_constant of Syncom.Location.t * Syncom.Name.t * Syncom.Id.cid_term
  2. | Comp_constant of Syncom.Location.t * Syncom.Name.t * Syncom.Id.cid_comp_const
  3. | BVarCase of Syncom.Location.t
  4. | ContextCase of context_case
  5. | PVarCase of Syncom.Location.t * int * int option
type 'a generic_order = 'a Synint.Comp.generic_order =
  1. | Arg of 'a
  2. | Lex of 'a generic_order list
  3. | Simul of 'a generic_order list
type 'a generic_suffices_typ = [
  1. | `exact of 'a
  2. | `infer of Syncom.Location.t
]

Type specified in an interactive use of `suffices`

val map_suffices_typ : ('a -> 'b) -> 'a generic_suffices_typ -> 'b generic_suffices_typ
val map_order : ('a -> 'b) -> 'a generic_order -> 'b generic_order
type kind =
  1. | Ctype of Syncom.Location.t
  2. | PiKind of Syncom.Location.t * LF.ctyp_decl * kind
type meta_typ = Syncom.Location.t * LF.ctyp
type meta_obj = Syncom.Location.t * LF.mfront
type meta_spine =
  1. | MetaNil
  2. | MetaApp of meta_obj * meta_spine

Computation-level terms

and branch =
  1. | Branch of Syncom.Location.t * LF.ctyp_decl LF.ctx * pattern * exp
and fun_branches =
  1. | NilFBranch of Syncom.Location.t
  2. | ConsFBranch of Syncom.Location.t * pattern_spine * exp * fun_branches
type ctyp_decl =
  1. | CTypDecl of Syncom.Name.t * typ
type gctx = ctyp_decl LF.ctx
type hypotheses = {
  1. cD : LF.mctx;
  2. cG : gctx;
}
type proof =
  1. | Incomplete of Syncom.Location.t * string option
  2. | Command of Syncom.Location.t * command * proof
  3. | Directive of Syncom.Location.t * directive
and command =
  1. | By of Syncom.Location.t * exp * Syncom.Name.t
  2. | Unbox of Syncom.Location.t * exp * Syncom.Name.t * unbox_modifier option
and directive =
  1. | Intros of Syncom.Location.t * hypothetical
  2. | Solve of Syncom.Location.t * exp
  3. | Split of Syncom.Location.t * exp * split_branch list
  4. | Suffices of Syncom.Location.t * exp * suffices_arg list
and suffices_arg = Syncom.Location.t * typ * proof
and split_branch = {
  1. case_label : case_label;
  2. branch_body : hypothetical;
  3. split_branch_loc : Syncom.Location.t;
}
and hypothetical = {
  1. hypotheses : hypotheses;
  2. proof : proof;
  3. hypothetical_loc : Syncom.Location.t;
}
type thm =
  1. | Program of exp
  2. | Proof of proof
val loc_of_exp : exp -> Syncom.Location.t