Theoria.Syntax (theoria v0.6.0)

Copy Markdown View Source

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

Types

Functions

app(fun, arg)

@spec app(t(), t()) :: Theoria.Syntax.App.t()

arrow(domain, codomain)

@spec arrow(t(), t()) :: Theoria.Syntax.Forall.t()

const(name, levels \\ [])

eq(type, left, right)

@spec eq(t(), t(), t()) :: Theoria.Syntax.Eq.t()

eq_rec(type, motive, base, proof)

@spec eq_rec(t(), t(), t(), t()) :: Theoria.Syntax.EqRec.t()

forall(name, domain, body)

@spec forall(atom(), t(), t()) :: Theoria.Syntax.Forall.t()

from_core(term, context \\ [])

@spec from_core(Theoria.Term.t(), [atom()]) :: t()

Converts a core de Bruijn term back to named syntax using context for bound variables.

lam(name, domain, body)

@spec lam(atom(), t(), t()) :: Theoria.Syntax.Lam.t()

let(name, type, value, body)

@spec let(atom(), t(), t(), t()) :: Theoria.Syntax.Let.t()

refl(value)

@spec refl(t()) :: Theoria.Syntax.Refl.t()

sort(level)

var(name)

@spec var(atom()) :: Theoria.Syntax.Var.t()