Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tactic wishlist #10361

Open
3 of 70 tasks
BoltonBailey opened this issue Feb 8, 2024 · 0 comments
Open
3 of 70 tasks

Tactic wishlist #10361

BoltonBailey opened this issue Feb 8, 2024 · 0 comments
Labels
enhancement New feature or request help-wanted The author needs attention to resolve issues please-adopt Inactive PR (would be valuable to adopt) t-meta Tactics, attributes or user commands

Comments

@BoltonBailey
Copy link
Collaborator

BoltonBailey commented Feb 8, 2024

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
  • finish/terminal: It would be nice if tactics that were capable of finishing a proof were tagged with some kind of finishing or terminal attribute, so that they could be collected into a single tactic that would try them all.
    • 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.

Enhancements of existing Tactics

As-Yet Unported mathlib3 Tactics

  • TODO identify these
@BoltonBailey BoltonBailey added enhancement New feature or request t-meta Tactics, attributes or user commands help-wanted The author needs attention to resolve issues please-adopt Inactive PR (would be valuable to adopt) labels Feb 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help-wanted The author needs attention to resolve issues please-adopt Inactive PR (would be valuable to adopt) t-meta Tactics, attributes or user commands
Projects
None yet
Development

No branches or pull requests

1 participant