Named surface terms for building Theoria core terms.
Surface terms are not trusted. They must be elaborated to Theoria.Term
values and checked by Theoria.Kernel before they can prove anything.
Summary
Functions
Converts a core de Bruijn term back to named syntax using context for bound variables.
Types
@type t() :: Theoria.Syntax.Sort.t() | Theoria.Syntax.Var.t() | Theoria.Syntax.Const.t() | Theoria.Syntax.App.t() | Theoria.Syntax.Lam.t() | Theoria.Syntax.Forall.t() | Theoria.Syntax.Let.t() | Theoria.Syntax.Eq.t() | Theoria.Syntax.Refl.t() | Theoria.Syntax.EqRec.t()
Functions
@spec app(t(), t()) :: Theoria.Syntax.App.t()
@spec arrow(t(), t()) :: Theoria.Syntax.Forall.t()
@spec const(atom(), [non_neg_integer() | Theoria.Level.t()]) :: Theoria.Syntax.Const.t()
@spec eq(t(), t(), t()) :: Theoria.Syntax.Eq.t()
@spec eq_rec(t(), t(), t(), t()) :: Theoria.Syntax.EqRec.t()
@spec forall(atom(), t(), t()) :: Theoria.Syntax.Forall.t()
@spec from_core(Theoria.Term.t(), [atom()]) :: t()
Converts a core de Bruijn term back to named syntax using context for bound variables.
@spec lam(atom(), t(), t()) :: Theoria.Syntax.Lam.t()
@spec let(atom(), t(), t(), t()) :: Theoria.Syntax.Let.t()
@spec refl(t()) :: Theoria.Syntax.Refl.t()
@spec sort(non_neg_integer() | Theoria.Level.t()) :: Theoria.Syntax.Sort.t()
@spec var(atom()) :: Theoria.Syntax.Var.t()