You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There has been some discussion of what tactics we would like in a fewthreadsonZulip. 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.
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)
an attribute that automatically produces correct positivity extension in a simple case (e.g., we only know how to prove 0 ≤ f a, never 0 < f a, or we always can prove 0 < f a)
support for goals expr < 0, so that it can prove -3 * ε - δ < 0
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
0/0etc).Continuous.tendsto' (by continuity) _ _ (by simp).exp(-1/x)tends to𝓝[>] 0asxtends toatTop.*Should know that 1/x tends to cobounded as
xtends to𝓝[≠] 0and vice versa (for any normed field, not only reals)(δ : Real) (h : 0 < δ) ⊢ ∃ ε > 0, ε ^ 2 + 5 * ε + sin ε < δ ∧ 3 * ε < δby provingTendsto (fun ε ↦ ε ^ 2 + 5 * ε + sin ε) (nhds 0) (nhds 0), similarly for3 * ε, then using this fact to get a witnessexpr ≠ 0.field_simpcurrently uses (it tries several tactics);a ≠ 0 → -a ≠ 0, a ≠ 0 → b ≠ 0 → a * b ≠ 0 and a ≠ 0 → a ^ n ≠ 0;+) and there is aPartialOrderinstancecompute_degree)omega?)piexplogpushtactic that generalizespush_negfromnegto any def. #21841push Real.logwould applylog_mul.fieldfield tactic #4837module_nfrecommendhinttactic #25302?version that gives aTry Thison success.Enhancements of existing Tactics
0 ≤ f a, never0 < f a, or we always can prove0 < f a)expr < 0, so that it can prove-3 * ε - δ < 0zify!zify!tactic #7450rifyrifyshould work forNNReal#25303by_contra!similar tocontrapose!0 ≤ n%dn%d < dd * n/d + n%d = nd = 0these do not all hold.abelwork for multiplicative monoids/groups.abelfor multiplicative Groups/Monoids #13233linear_combinationwork for groups.polyrithin pure Lean, removing the dependence on sage and an internet connection.omegainto a full decision procedure for Presburger arithmetic.clear_unneeded:clear_unneededtactic #25319(a : α)is a hypothesis andαis Nonempty, butais never used elsewhere, deletea.(h : a = ...)if a hypothesis andais never used elsewhere, deleteh.simp_rwthat can create new goals for side-conditionsfield_simpthat collects non-zeroness as side conditions.?versions of tacticsunfold?to list possible unfold applications. ([Merged by Bors] - feat: interactiveunfold?tactic #12016)assumption?/rwa?(replaces with call toexact)field_simp?linarith?/nlinarith?#25320linarith only)linear_combinationnorm_castuseFin.cast_val_eq_self, soNat.cast (Fin.val n)simplifies ton.cases (r:ℚ)should replacerwith_ / _instead of an application ofRat.mk'linear_combinationbe used nonterminally.sufficesshould work with incremental elaborationplausiblethat produces a counterexample demonstration.simp?tactic that, instead of outputting asimp onlycall, outputs asimp_rwcall.norm_numconvert Gaussian rationals to the forma_n / a_d + b_n / b_d * Iextract_goalcalledextract_mwethat provides the same things, but with additional import and opened namespace information.ext at#general > "Missing Tactics" list @ 💬observe!#general > "Missing Tactics" list @ 💬simprocs∃ a', ... ∧ a' = a ∧ ...(Zulip). ([Merged by Bors] - feat(Simproc): simproc for∃ a', ... ∧ a' = a ∧ ...#22273)As-Yet Unported mathlib3 Tactics