module Term:sig
..end
typelocation =
ParseLocation.t
type
builtin =
| |
Wildcard |
(* |
Wildcard symbol, i.e placeholder for an expression to be inferred, typically
during type-checking.
| *) |
| |
Ttype |
(* |
Builtin symbol for the type of Types.
| *) |
| |
Prop |
(* |
Builtin symbol for the type of propositions.
| *) |
| |
True |
(* |
The
true propositional constant. | *) |
| |
False |
(* |
The
false propositional constant. | *) |
| |
Eq |
(* |
Should all arguments be pariwise equal ?
| *) |
| |
Distinct |
(* |
Should all arguments be pairwise distinct ?
| *) |
| |
Ite |
(* |
Condional, usually applied to 3 terms (the condition, the then branch and the else branch).
| *) |
| |
Sequent |
(* |
Sequent as term, usually takes two argument (left side, and right side of the sequent),
which are respectively a conjunction and a disjunction of propositional formulas.
| *) |
| |
Subtype |
(* |
Subtyping relation
| *) |
| |
Product |
(* |
Product type constructor
| *) |
| |
Union |
(* |
Union type constructor
| *) |
| |
Not |
(* |
Propositional negation
| *) |
| |
And |
(* |
Propositional conjunction
| *) |
| |
Or |
(* |
Propositional disjunction
| *) |
| |
Nand |
(* |
Propositional not-and connective
| *) |
| |
Xor |
(* |
Propositional exclusive disjunction
| *) |
| |
Nor |
(* |
Propositional not-or
| *) |
| |
Imply |
(* |
Propositional implication
| *) |
| |
Implied |
(* |
Propositional left implication (i.e implication with reversed arguments).
| *) |
| |
Equiv |
(* |
Propositional equivalence
| *) |
type
binder =
| |
All |
(* |
Universal quantification
| *) |
| |
Ex |
(* |
Existencial quantification
| *) |
| |
Pi |
(* |
Polymorphic type quantification in function type
| *) |
| |
Arrow |
(* |
The arrow binder, for function types
| *) |
| |
Let |
(* |
Let bindings (either propositional or for terms
| *) |
| |
Fun |
|||
| |
Choice |
|||
| |
Description |
type
descr =
| |
Symbol of |
(* |
Constants, variables, etc... any string-identified non-builtin atomic term.
| *) |
| |
Builtin of |
(* |
Predefined builtins, i.e constants with lexical or syntaxic defintion in the source language.
| *) |
| |
Colon of |
(* |
Juxtaposition of terms, usually used to annotate a term with its type (for quantified variables,
functions arguments, etc...
| *) |
| |
App of |
(* |
Higher-order application
| *) |
| |
Binder of |
(* |
Binder (quantifiers, local functions, ...)
| *) |
type
t = {
|
term : |
|
attr : |
|
loc : |
include Term_intf.Logic
val fun_ty : ?loc:location -> t list -> t -> t
val pp : Buffer.t -> t -> unit
val print : Format.formatter -> t -> unit