lean4-htt/tests/pkg/module/Module
Joachim Breitner ac9a1cb415
feat: add @[backward_defeq] attribute and local useBackward simp option (#13492)
This PR introduces stricter inference for the `@[defeq]` attribute and a
companion `@[backward_defeq]` attribute that preserves the pre-PR
behavior
as an opt-in.

### What changed

* `@[defeq]` is now inferred only when the equation holds at
  `.instances` transparency (the transparency `dsimp` operates at).
* `@[backward_defeq]` is the old set: every theorem whose `rfl` proof
the legacy inference would have accepted is tagged `@[backward_defeq]`,
  so `defeq ⊆ backward_defeq` holds by construction.
* The option `backward.defeqAttrib.useBackward` (default `false`) makes
  `dsimp` also use `@[backward_defeq]` theorems, restoring the pre-PR
  behavior for a specific proof or file.
* The option is eqn-affecting: its value at the point of a function's
  definition is recorded so that the equation lemmas later generated for
  that function use the same value, regardless of the ambient option at
  the use site.

### Mathlib adaption

A companion adaption branch (`lean-pr-testing-backward-defeq-attrib` on
mathlib4) builds cleanly against this PR and passes `lake test` without
warnings. Most adaption changes are scoped
`set_option backward.defeqAttrib.useBackward true in` additions on the
failing declarations; a small number of files needed proof-level edits
where the stored form of a `dsimp%`/`@[reassoc]`/`@[elementwise]`
/`@[simps]`/`@[to_app]`-generated lemma had drifted under the stricter
regime.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 10:07:59 +00:00
..
Basic.lean feat: add @[backward_defeq] attribute and local useBackward simp option (#13492) 2026-04-27 10:07:59 +00:00
Basic2.lean fix: import-merging theorems under the module system (#10556) 2025-09-26 13:02:51 +00:00
ConflictingImported.lean fix: import-merging theorems under the module system (#10556) 2025-09-26 13:02:51 +00:00
Imported.lean feat: move instance-class check to declaration site (#12325) 2026-03-06 03:23:27 +00:00
ImportedAll.lean feat: add @[backward_defeq] attribute and local useBackward simp option (#13492) 2026-04-27 10:07:59 +00:00
ImportedAllImportedAll.lean fix: privacy checks and import all (#10550) 2025-09-26 13:26:10 +00:00
ImportedAllPrivateImported.lean chore: avoid confusing public import all combination (#10051) 2025-08-22 12:04:42 +00:00
ImportedImportedAll.lean feat: make private the default in module (#9044) 2025-06-28 16:30:53 +00:00
ImportedPrivateImported.lean fix: namespace used in private import and current module vanishes dowstream (#12840) 2026-03-20 13:27:26 +00:00
MetaImported.lean fix: mark failed compilations as noncomputable (#12625) 2026-02-23 09:18:21 +00:00
NonModule.lean feat: add @[backward_defeq] attribute and local useBackward simp option (#13492) 2026-04-27 10:07:59 +00:00
PrivateImported.lean fix: namespace used in private import and current module vanishes dowstream (#12840) 2026-03-20 13:27:26 +00:00