Experimental/internal API for 0.2; subject to change before 0.3. A tiny untrusted rewrite-rule database.
Summary
Functions
Adds a rule to the database.
Builds a rewrite database from generated definition and matcher equations in an environment.
Builds a rewrite database from generated equation metadata stored in an environment.
Builds a rewrite database from installed indexed matcher equation metadata.
Builds a rewrite database from generated matcher equations stored in an environment.
Builds a rewrite database from equation-lemma metadata.
Builds an empty rewrite database.
Applies the first rule that rewrites the term.
Types
@type t() :: %Theoria.Rewrite.Database{rules: [Theoria.Rewrite.Rule.t()]}
Functions
@spec add(t(), Theoria.Rewrite.Rule.t()) :: t()
Adds a rule to the database.
@spec from_env_all_equations( Theoria.Env.t(), keyword() ) :: t()
Builds a rewrite database from generated definition and matcher equations in an environment.
@spec from_env_equations( Theoria.Env.t(), keyword() ) :: t()
Builds a rewrite database from generated equation metadata stored in an environment.
@spec from_env_indexed_matcher_equations( Theoria.Env.t(), keyword() ) :: t()
Builds a rewrite database from installed indexed matcher equation metadata.
@spec from_env_matcher_equations( Theoria.Env.t(), keyword() ) :: t()
Builds a rewrite database from generated matcher equations stored in an environment.
@spec from_lemmas([Theoria.Equation.Lemma.t()], Theoria.Term.t(), keyword()) :: t()
Builds a rewrite database from equation-lemma metadata.
@spec new([Theoria.Rewrite.Rule.t()]) :: t()
Builds an empty rewrite database.
@spec once(t(), Theoria.Term.t()) :: {:ok, Theoria.Term.t(), Theoria.Rewrite.Rule.t()} | :not_found
Applies the first rule that rewrites the term.