Experimental/internal API for 0.2; subject to change before 0.3. Internal constructor-equation compiler for the initial Bool/Nat/List fragment.
Summary
Functions
Compiles a supported constructor-equation fragment.
Compiles Bool constructor clauses to a Bool recursor application.
Compiles a supported constructor-equation fragment and generated metadata.
Compiles List nil/cons clauses to a List recursor application.
Compiles Nat zero/succ clauses to a Nat recursor application.
Types
@type compiled_result() :: {:ok, Theoria.Equation.Compiled.t()} | {:error, term()}
@type result() :: {:ok, Theoria.Term.t()} | {:error, term()}
Functions
@spec compile( :bool | :nat | {:list, Theoria.Term.t(), [Theoria.Level.t() | non_neg_integer()]}, Theoria.Term.t(), [Theoria.Equation.Clause.t()], Theoria.Term.t() ) :: result()
Compiles a supported constructor-equation fragment.
@spec compile_bool( Theoria.Term.t(), [Theoria.Equation.Clause.t()], Theoria.Term.t(), Theoria.Equation.Context.t() ) :: result()
Compiles Bool constructor clauses to a Bool recursor application.
@spec compile_definition( :bool | :nat | {:list, Theoria.Term.t(), [Theoria.Level.t() | non_neg_integer()]}, Theoria.Equation.Signature.t(), Theoria.Term.t(), [Theoria.Equation.Clause.t()], Theoria.Term.t(), keyword() ) :: compiled_result()
Compiles a supported constructor-equation fragment and generated metadata.
@spec compile_list( Theoria.Term.t(), Theoria.Term.t(), [Theoria.Equation.Clause.t()], Theoria.Term.t(), [Theoria.Level.t() | non_neg_integer()] ) :: result()
Compiles List nil/cons clauses to a List recursor application.
@spec compile_nat(Theoria.Term.t(), [Theoria.Equation.Clause.t()], Theoria.Term.t()) :: result()
Compiles Nat zero/succ clauses to a Nat recursor application.