Skip to main content

docs/release_0_3.md

# 0.3 development boundary

The 0.3 development line makes generated equation artifacts explicit domain data instead of public generated atoms.

## Equation identities

`Theoria.Equation.Identity` is the canonical identity for generated equation artifacts:

```elixir
alias Theoria.Equation.Identity

Identity.equation(:nat_add, :succ)
Identity.unfold(:nat_add)
Identity.matcher_equation(:nat_add_match_1, :succ)
Identity.indexed_matcher_equation(:vec_match, :vec_cons)
```

Friendly output still renders familiar labels such as `nat_add.eq_succ`, but those labels are display strings. When generated equation theorems are installed, the structured `Identity` value itself is used as the environment key; generated atom encodings are not part of the model.

## Matcher names

Generated matcher declarations currently remain atoms such as `:nat_add_match_1`. Use `Theoria.Equation.Matcher.Info.default_name/2` and `source_name/1` instead of hand-building or parsing those names.

## Indexed Vec matcher opt-in

`Prelude.env/0` does not install indexed matchers or indexed matcher equations.

For validation and experiments, Vec exposes an explicit opt-in path:

```elixir
Theoria.Library.Vec.env_with_indexed_matcher()
Theoria.Library.Vec.env_with_indexed_matcher(install_equations: true)
```

The second form also installs realized indexed equation theorem declarations and records them in the matcher metadata. Rewrite and simp still exclude indexed matcher equations by default; pass `include_indexed_matchers: true` or use the indexed-specific database constructors when experimenting.

## Stability

This line is still experimental. The trusted kernel boundary is unchanged; equation generation, matcher planning, rewrite/simp, and Lean oracle output remain untrusted helpers whose products matter only after native kernel checking.