leanprover-community / leanprover-community/mathlib4
tactic porting tracking issue
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 4.2k
- Forks
- 1.7k
- PR merge metrics
- No merged PRs in 30d
Description
This issue parallels the content of Mathlib/Mathport/Syntax.lean, tracking the remaining work to port mathlib3 tactics to mathlib4, but also contains "ephemeral" information that does not belong in that file.
Primarily, this issue contains a list of tactics (or groups of tactics), along with any relevant information about work-in-progress (e.g. people who've "claimed" a tactic, PRs, abandoned work, etc). Some "claims" are probably out-of-date. Feel free to remove yourself from anything here without explanation!
We hope that everyone will edit this freely to try to keep it up to date.
Currently this is in the same order as Syntax.lean (although with tactics we might skip or only "stub" deferred to the end), but it may be worthwhile to turn this into a prioritised list.
🔹 – unclaimed
◼️ – claimed
☑️ – PR'd, unneeded, or otherwise done
E: Easy. It's a simple macro in terms of existing things,
or an elab tactic for which we have many similar examples. Example: left
M: Medium. An elab tactic, not too hard, perhaps a 100-200 lines file. Example: have
N: Possibly requires new mechanisms in lean 4, some investigation required
B: Hard, because it is a big and complicated tactic
S: Possibly easy, because we can just stub it out or replace with something else
?: uncategorized
- 🔹
Nparameter- there is a proposal in terms of nullary typeclasses
- ☑️
Sabstract- ported in core as
as_aux_lemma
- ported in core as
- ☑️
Bcc- @Komyyy PR'd as #5938
- 🔹
Munfold_projs- there are some porting notes that should be reviewed, to decide if we're just missing simp lemmas, or really want this tactic
- 🔹
Ntry_for- Started by @bollu, but leanprover/lean4#1364 stalled. @bollu is no longer working on it
- ☑️
Sclean- @mkaratarakis PR'd as #5909
- ☑️
Srefine_struct- Use
refine'with built-in..syntax, e.g.refine' { x := 0, y := 1 .. }
- Use
- 🔹
Mmatch_hyp - 🔹
Nfield/Shave_field/Sapply_field - 🔹
Mh_generalize - ☑️
Mcongrm- #2544
- ☑️
Eac_change- @Komyyy PR'd as #5869
- 🔹
Mdecide! - 🔹
Mdelta_instance - 🔹
Mgeneralizes - ☑️
Bitauto- @digama0 PR'd as #9398
- 🔹
Bobviously - 🔹
Massoc_rw - 🔹
Sdsimp_result/Nsimp_result - 🔹
Mtrunc_cases - 🔹
Eapply_normed - ◼️
Mmono- A quick version is PR'd as #1740
- @thorimur is working on the full version
- 🔹
Bac_mono - 🔹
Munfold_cases - 🔹
Bequiv_rw - ☑️
Nnth_rw- PR'd as #823, although this doesn't actually reproduce the mathlib3 behaviour
- ☑️
Mcompute_degree_le- @adomani PR'd as
#5882#6221
- @adomani PR'd as
- 🔹
Mpadic_index_simp - ☑️
EuniqueDiffWithinAt_Ici_Iic_univ - ☑️
Mghost_fun_tac - ☑️
Mghost_calc - ☑️
Minit_ring - ☑️
Eghost_simp - ☑️
Ewitt_truncate_fun_tac - ☑️
Mpure_coherence/Mcoherence - 🔹 (
convmode)E[norm_num][norm_num-conv] /E[norm_num1][norm_num1-conv]@bollu claimed thisis no longer working on it
- ☑️ (attribute)
?protect_proj- Not needed because
protectedcan be used for constructors.
- Not needed because
- ☑️ (attribute)
Mnotation_class - ◼️ (attribute)
Mmono- A quick version is PR'd as #1740
- @thorimur is working on the full version
- ☑️
Nadd_tactic_doc- @lakesare PR'd as #639
- 🔹 (command)
Nmk_simp_attribute - ☑️ (command)
Madd_hint_tactic@Komyyy PR'd as #5363- @semorrison PR'd as #8363 and renamed to
register_hint
- 🔹 (command)
Ndef_replacer - 🔹 (command)
Mreassoc_axiom
We then have a number of tactics and commands for which mere stubs will suffice for the port. Sometimes this is because the tactic is only used during development (but not in PRs to mathlib), other times because it is not used at all anymore in mathlib.
- 🔹 (attribute)
Sintro/Sintro! - 🔹
Spropagate_tags- PR'd as #258 (abandoned?)
- 🔹
?quote/?pquote/?ppquote - 🔹
Smapply - 🔹
Sdestruct - 🔹
Srsimp - ☑️
Scomp_val- Use
decide.
- Use
- 🔹
Sasync - 🔹
Scontinue - ☑️
Sextract_goal- @robertylewis claimed this.
- @adomani PR'd as #4595
- 🔹
Srevert_deps - 🔹
Srevert_after - ☑️
Srevert_target_deps- PR'd as #333
- 🔹
Srcases? - 🔹
Srintro? - ☑️
Shint@Komyyy PR'd as #5363- @semorrison PR'd as #8363
- 🔹
Sclarify/Ssafe/Sfinish - 🔹
Scases''/Sinduction'' - 🔹
Spretty_cases - 🔹
Ssuggest - ☑️
Somega - 🔹
Stransport - ☑️
Srw_search- @semorrison PR'd as #6120
- ☑️
Smk_decorations - ☑️
Smv_bisim - @Komyyy PR'd as #2444
- 🔹
Ssubtype_instance - 🔹
Selide/Sunelide - ☑️
Sguard_tags- PR'd as #258
- 🔹
Sguard_proof_term - ☑️
Sfail_if_success - ☑️ (command)
Ssetup_tactic_parser- This command is not needed because
?and*notations for sytaxes are available without a command.
- This command is not needed because
- 🔹 (command)
S#list_unused_decls - ☑️ (command)
S#simp - ☑️ (command)
S#where - ☑️ (command)
S#sample
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the unclaimed entries in Mathlib/Mathport/Syntax.lean with this tracker, then review the linked tactic references and any recorded porting notes for one specific item. Done means completing or stubbing that tactic as appropriate and updating its status and notes here.
Written by the indexing model from the issue text.
Assessment
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100