Documentation

Lean.Meta.Sym.Grind

Grind Goal API for Symbolic Simulation #

This module provides an API for building symbolic simulation engines and verification condition generators on top of grind. It wraps Sym operations to work with grind's Goal type, enabling users to carry grind state through symbolic execution while using lightweight Sym operations for the main loop.

Typical usage pattern #

let goalmkGoal mvarId
let .goal xs goal ← goal.introN 2 | failure
let .goal goal ← goal.simp methods | failure
let goal ← goal.internalizeAll
-- ... symbolic execution loop using goal.apply ...
let .closed ← goal.grind | failure

Design #

Operations like introN, apply, and simp run in SymM for performance. internalize and grind run in GrindM to access the E-graph.

Creates a Goal from an MVarId, applying Sym preprocessing. Preprocessing ensures the goal is compatible with Sym operations.

Equations
Instances For
    Instances For

      Introduces num binders from the goal's target.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Introduces binders with the specified names.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Instances For

            Applies a backward rule, returning subgoals on success.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Instances For

                Simplifies the goal using the given methods.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Like simp, but returns the original goal unchanged when no progress is made.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    Internalizes the next num hypotheses from the local context into the grind state (e.g., its E-graph).

                    Equations
                    Instances For

                      Internalizes all (un-internalized) hypotheses from the local context into the grind state.

                      Equations
                      Instances For
                        Instances For

                          Attempts to close the goal using grind. Returns .closed on success, or .failed with the first subgoal that failed to be closed.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            Closes the goal if its target matches a hypothesis. Returns true on success.

                            Equations
                            Instances For