Documentation

Lean.Meta.Tactic.Grind.Homomorphism

Per-goal state for the [grind hom]/[grind hom_pred] solver extension.

  • Persistent Sym.simp cache, reused across internalizations.

  • internalized : PHashSet ExprPtr

    Terms already visited during internalization.

  • initialized : Bool
  • [grind hom] rules, retrieved once per goal.

  • [grind hom_pred] predicates, retrieved once per goal.

  • sourceTypes : NameSet

    Head constants of the homomorphism source types, retrieved once per goal.

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

      Equality hook: when the classes of a and b are merged and the [grind hom] set translates a = b, asserts the translated (and fully reduced) equality. This is the =-injection of the homomorphism: one fact per union, so a class with n elements produces n - 1 translated equalities; the transitive closure is handled by the target-domain E-graph, and asserting a = c after a = b and b = c is a no-op because no union takes place.

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

        Disequality hook: when a ≠ b is asserted and the [grind hom] set translates a = b, asserts the negation of the translated equality. Unlike equalities, disequalities are not propagated by congruence, and the target-domain solvers consume them directly (e.g. cutsat case splits on x ≠ 0). The translation is justified by the backward direction of the =-injection rule, i.e. the injectivity of the homomorphism.

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