Definitional Simplifier for SymM #
DSimp mirrors Sym.Simp but does not produce proof terms. Every rewrite must hold
by definitional equality, so the kernel checks e ≡ e' at the use site and we only need
to return the simplified expression.
Configuration options for the definitional simplifier.
- maxSteps : Nat
Maximum number of steps that can be performed by the simplifier.
Instances For
The result of definitionally simplifying an expression e.
The done flag controls whether simplification should continue after this result:
done = false(default): Continue with subsequent simplification steps. If apre/postmethod returns.step e' false,dsimprecurses one'.done = true: Stop processing, return this result as final.
Unlike Sym.Simp.Result, this carries no proof term and no contextDependent flag.
- rfl
(done : Bool := false)
: Result
No change. If
done = true, skip remaining simplification steps for this term. - step
(e' : Expr)
(done : Bool := false)
: Result
Simplified to
e'. Ifdone = true, skip recursive simplification ofe'.
Instances For
Read-only context for the definitional simplifier.
- config : Config
Simplifier configuration options.
Instances For
Cache mapping expressions (by pointer equality) to their simplified results.
Instances For
Monad for the definitional simplifier, layered on top of SymM.
Instances For
Instances For
Instances For
Runs a DSimpM computation with the given methods, configuration, and state.
The cache and numSteps from s are preserved (cache entries persist across
invocations because results are not context-dependent).