Skip to content

Tracking Issue: Tactic wishlist #10361

Open
@BoltonBailey

Description

@BoltonBailey

There has been some discussion of what tactics we would like in a few threads on Zulip. I am making this tracking issue to try to organize these ideas and put them in a visible place. Anyone with repo permission should feel free to edit or add to the list.

TODO: Integrate suggestions from this thread.

New Tactics

  • Tendsto
    • Should find limits in "simple" cases (e.g., no 0/0 etc).
    • Simplest version is Continuous.tendsto' (by continuity) _ _ (by simp).
    • More advanced version should know that exp(-1/x) tends to 𝓝[>] 0 as x tends to atTop.
      *Should know that 1/x tends to cobounded as x tends to 𝓝[≠] 0 and vice versa (for any normed field, not only reals)
  • Exists positive from limit
    • Prove statements like (δ : Real) (h : 0 < δ) ⊢ ∃ ε > 0, ε ^ 2 + 5 * ε + sin ε < δ ∧ 3 * ε < δ by proving Tendsto (fun ε ↦ ε ^ 2 + 5 * ε + sin ε) (nhds 0) (nhds 0), similarly for 3 * ε, then using this fact to get a witness
  • Nonzero A tactic that proves expr ≠ 0.
    • at least as powerful as whatever field_simp currently uses (it tries several tactics);
    • knows lemmas like a ≠ 0 → -a ≠ 0, a ≠ 0 → b ≠ 0 → a * b ≠ 0 and a ≠ 0 → a ^ n ≠ 0;
    • fallbacks to positivity if it can't deal with the head symbol (e.g., +) and there is a PartialOrder instance
  • Tactic that can compute things about polynomials
    • Polynomial equality
    • Polynomial disequality
    • n-th coefficient, leading coefficient
    • degree (compute_degree)
    • monicity (is that the word for the property of being monic?)
  • ring in characteristic n
  • More tactics resolving statements in decidable first-order theories
    • Such as:
      • Presburger arithmetic. (Is this just omega?)
      • Reals.
      • Lists.
    • Often these are hard to write fast tactics for.
      • Nevertheless, I think they could often be helpful.
      • Maybe the best version of these tactics is to use a look-up table for common instances.
  • Tactic to decide the order on logarithmico-exponential functions
  • Tactic to provide approximations of real-valued expressions (i.e prove 3.83 < ln(2) + pi < 3.84)
  • push tactic that generalizes push_neg from neg to any def. #21841
    • Pushes any instance of the def it is fed to the leaves of the syntax tree. For example, push Real.log would apply log_mul.
  • field field tactic #4837
  • module_nf
  • recommend
  • Priority mechanism for hint tactic #25302
    • Preferably in order of typical completion time, though we could also use exponential backoff to avoid spending too much time on expensive tactics.
    • Have a ? version that gives a Try This on success.
  • a tactic that rewrites modulo associativity and commutativity:#general > "Missing Tactics" list @ 💬

Enhancements of existing Tactics

simprocs

As-Yet Unported mathlib3 Tactics

  • TODO identify these

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp-wantedThe author needs attention to resolve issuesplease-adoptInactive PR (would be valuable to adopt)t-metaTactics, attributes or user commands

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions