Skip to content

[Merged by Bors] - chore: remove unused Decidable* instances in theorem types#31831

Closed
thorimur wants to merge 5 commits intoleanprover-community:masterfrom
thorimur:remove-unused-decidable-instances
Closed

[Merged by Bors] - chore: remove unused Decidable* instances in theorem types#31831
thorimur wants to merge 5 commits intoleanprover-community:masterfrom
thorimur:remove-unused-decidable-instances

Conversation

@thorimur
Copy link
Copy Markdown
Contributor

@thorimur thorimur commented Nov 19, 2025

This PR removes Decidable* instances that are not used by the remainder of a theorem's type and so can be replaced by classical in the proof (found by the #31142). This allows us to turn on the unusedDecidableInType linter, which is done in #31747.

Notes:

  • We rearrange the order of theorems slightly in Mathlib/Combinatorics/SimpleGraph/Bipartite.lean in order to put the ones that do require DecidableRel in a section.
  • lean4#5565 forces us to change two instances to @[instance] theorem because of a failure in omit. We preserve the autogenerated name here.

Open in Gitpod

@github-actions
Copy link
Copy Markdown

github-actions bot commented Nov 19, 2025

PR summary 6ff93aa9da

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ instIsLeftAdjointSubtypeMemSubgroupCoindFunctorSubtype
+ instIsRightAdjointSubtypeMemSubgroupIndFunctorSubtype
- instance : (coindFunctor k S.subtype).IsLeftAdjoint
- instance : (indFunctor k S.subtype).IsRightAdjoint

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@thorimur thorimur added the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Nov 19, 2025
@github-actions github-actions bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Nov 20, 2025
@kim-em
Copy link
Copy Markdown
Contributor

kim-em commented Nov 20, 2025

bors merge

@ghost ghost added the ready-to-merge This PR has been sent to bors. label Nov 20, 2025
mathlib-bors bot pushed a commit that referenced this pull request Nov 20, 2025
This PR removes `Decidable*` instances that are not used by the remainder of a theorem's type and so can be replaced by `classical` in the proof (found by the  #31142). This allows us to turn on the `unusedDecidableInType` linter, which is done in #31747.

Notes:

- We rearrange the order of theorems slightly in [Mathlib/Combinatorics/SimpleGraph/Bipartite.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-8acbd485d15b1e94a2afaf205ebedba12259361421342c715188192f1b0045f8) in order to put the ones that do require `DecidableRel` in a section.
- [lean4#5565](leanprover/lean4#5595) forces us to change two `instance`s to `@[instance] theorem` because of a failure in `omit`. We preserve the autogenerated name here.

Co-authored-by: thorimur <thomasmurrills@gmail.com>
@kim-em
Copy link
Copy Markdown
Contributor

kim-em commented Nov 20, 2025

bors r-

@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Nov 20, 2025

Canceled.

@ghost ghost removed the ready-to-merge This PR has been sent to bors. label Nov 20, 2025
@kim-em kim-em added the awaiting-author A reviewer has asked the author a question or requested changes. label Nov 20, 2025
@thorimur thorimur removed the awaiting-author A reviewer has asked the author a question or requested changes. label Nov 20, 2025
@sgouezel
Copy link
Copy Markdown
Contributor

bors r+
Thanks!

@ghost ghost added the ready-to-merge This PR has been sent to bors. label Nov 20, 2025
mathlib-bors bot pushed a commit that referenced this pull request Nov 20, 2025
This PR removes `Decidable*` instances that are not used by the remainder of a theorem's type and so can be replaced by `classical` in the proof (found by the  #31142). This allows us to turn on the `unusedDecidableInType` linter, which is done in #31747.

Notes:

- We rearrange the order of theorems slightly in [Mathlib/Combinatorics/SimpleGraph/Bipartite.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-8acbd485d15b1e94a2afaf205ebedba12259361421342c715188192f1b0045f8) in order to put the ones that do require `DecidableRel` in a section.
- [lean4#5565](leanprover/lean4#5595) forces us to change two `instance`s to `@[instance] theorem` because of a failure in `omit`. We preserve the autogenerated name here.

Co-authored-by: thorimur <thomasmurrills@gmail.com>
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Nov 20, 2025

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title chore: remove unused Decidable* instances in theorem types [Merged by Bors] - chore: remove unused Decidable* instances in theorem types Nov 20, 2025
@mathlib-bors mathlib-bors bot closed this Nov 20, 2025
mathlib-bors bot pushed a commit that referenced this pull request Nov 29, 2025
This PR turns on the `unusedDecidableInType` syntax linter (#31142) after fixing the remaining violations in #31831, #31934, and #32153.

This also imports the linter into Mathlib.Init and adds the linter to the Mathlib standard set. Given that classicality is embedded in Lean, this is probably the behavior downstream repos who use the mathlib standard set want; if they are specifically constructive repos, the linter can always be turned off in the lakefile.

We exempt the entirety of [Mathlib/Data/Fintype/Quotient.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-9591d2f3828bee189ea954bc33586ce451536bf00792362f7cdca4f5a8551207), [Mathlib/Order/Heyting/Regular.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-af85d99e5d2f5561fe837f662f179c58f1ebe2a4ed0432a15260199883850c50), [Mathlib/Logic/Encodable/Basic.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-db01c9a2d4726fe7ca0e6eb18a7cd485b5a9c6b26ba422dfbe501dcebef3cf77) and a declaration in [Mathlib/Computability/Halting.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-d47323ee8b4b2321052b4be93715f8b2f3f840f76ec441d8bf75c834b8665b32) since constructivity is desired there. We also exempt `dec_em'`, which is a variant of `Decidable.em` but with the disjuncts reversed.

Many prior violations have already been fixed through the use of #10235, hence the small number of violations picked up by the syntax linter.

Co-authored-by: thorimur <thomasmurrills@gmail.com>
Co-authored-by: Michael Rothgang <rothgang@math.uni-bonn.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants