Documentation

Lean.Meta.Tactic.Grind.NormSymProcs

Sym.simp simprocs of the grind normalizer #

Ports of the Meta.simp simprocs in SimpUtil.lean and ForallProp.lean whose rewrite rules are not first-order (they bind variables or dispatch on the shape of the term). Results are built with the maximal-sharing builders (mkAppS, ...); proofs are built without inferType. The definitional reductions (beta, zeta, projections, matchers) are the shared ones in Lean.Meta.Sym.Simp.Reduce.

Grind.PreMatchCond p is left as is: p is a condition of a match equation and must keep the shape produced by annotateMatchEqnType; replacePreMatchCond turns it into Grind.MatchCond after normalization.

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

    Grind.simpMatchDiscrsOnly m, where m is a match application: only the discriminants of m are simplified, the alternatives are not visited. The annotation stays and is erased by eraseSimpMatchDiscrsOnly after normalization.

    Equations
    Instances For

      Normalizes equalities:

      • Bool: true = b becomes b = true; (a && b) = c becomes ((a && b) = true) = (c = true).
      • a = a becomes True, p = True becomes p, p = False becomes ¬p.
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Converts dite with non-dependent branches into ite.

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

          Pushes negations inwards through the propositional connectives, ite, and the quantifiers. Negated arithmetic comparisons are handled by the rewrite rules Nat.not_le_eq and Int.not_le_eq.

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

            Normalizes disjunctions: units, right-associativity, and universally quantified disjuncts moved to the front.

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

              Reduces c₁ ... = c₂ ... to False for distinct constructors c₁ and c₂.

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

                Normalizes universally quantified propositions and implications: Grind.imp_true_eq, Grind.imp_false_eq, Grind.true_imp_eq, Grind.false_imp_eq, Grind.imp_self_eq, Grind.forall_true, forall_false, Grind.forall_or_forall, Grind.forall_forall_or, Grind.forall_and (see forallImpAnd?).

                Equations
                Instances For

                  Normalizes existentially quantified propositions: Grind.exists_or, Grind.exists_and_left, Grind.exists_and_right, Grind.exists_prop, Grind.exists_const.

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