Theoria.Lean.Encode (theoria v0.7.0)

Copy Markdown View Source

Experimental/internal API for 0.2; subject to change before 0.3.

Encodes Theoria core terms as Lean source for contributor oracle checks.

The public API is intentionally small; concrete rendering is dispatched through Theoria.Lean.Encodable so each core term owns its Lean shape. The encoder does not prove or simplify anything; Lean remains the external checker for generated files.

Summary

Functions

Applies a Lean function source to encoded argument sources.

Encodes a Theoria constant name in the Lean oracle namespace.

Returns a binder name that does not collide with the current Lean context.

Encodes an atom as a Lean identifier.

Encodes a universe level as a Lean universe expression.

Wraps Lean source in parentheses.

Encodes a sort level as Prop, Type, Type n, or Sort u.

Encodes a Theoria term as a Lean expression.

Encodes a Theoria term as a Lean expression with a de Bruijn context.

Functions

apply_source(fun, args)

@spec apply_source(String.t(), [String.t()]) :: String.t()

Applies a Lean function source to encoded argument sources.

constant(name)

@spec constant(atom()) :: String.t()

Encodes a Theoria constant name in the Lean oracle namespace.

fresh_name(name, context)

@spec fresh_name(atom(), [String.t()]) :: String.t()

Returns a binder name that does not collide with the current Lean context.

identifier(name)

@spec identifier(atom() | String.t()) :: String.t()

Encodes an atom as a Lean identifier.

level(arg1)

@spec level(Theoria.Level.t()) :: String.t()

Encodes a universe level as a Lean universe expression.

parens(source)

@spec parens(iodata()) :: String.t()

Wraps Lean source in parentheses.

sort(level)

@spec sort(Theoria.Level.t()) :: String.t()

Encodes a sort level as Prop, Type, Type n, or Sort u.

term(term)

@spec term(Theoria.Term.t()) :: String.t()

Encodes a Theoria term as a Lean expression.

term(term, context)

@spec term(Theoria.Term.t(), [String.t()]) :: String.t()

Encodes a Theoria term as a Lean expression with a de Bruijn context.