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

feat: partial inhabitation uses local Inhabited instances created from parameters #5821

Merged
merged 1 commit into from
Oct 23, 2024

Conversation

kmill
Copy link
Collaborator

@kmill kmill commented Oct 23, 2024

Rather than having a special pass where mkInhabitantFor uses the assumption tactic, it creates Inhabited instances for each parameter and just searches for an Inhabited/Nonempty instance for the return type.

This makes examples like the following work:

partial def f (x : X) : Bool × X := ...

Removes the strategy where it looks for Inhabited/Nonempty instances for every suffix of the signature.

This is a follow-up to #5780. Motivated by Zulip.

… from parameters

Rather than having a special pass where `mkInhabitantFor` uses the `assumption` tactic, it creates `Inhabited` instances for each parameter and just searches for an `Inhabited` instance for the return type.

This makes examples like the following work:
```lean
partial def f (x : X) : Bool × X := ...
```
@github-actions github-actions bot added the toolchain-available A toolchain is available for this PR, at leanprover/lean4-pr-releases:pr-release-NNNN label Oct 23, 2024
leanprover-community-mathlib4-bot added a commit to leanprover-community/batteries that referenced this pull request Oct 23, 2024
leanprover-community-mathlib4-bot added a commit to leanprover-community/mathlib4 that referenced this pull request Oct 23, 2024
@leanprover-community-bot leanprover-community-bot added the builds-mathlib CI has verified that Mathlib builds against this PR label Oct 23, 2024
@leanprover-community-bot
Copy link
Collaborator

Mathlib CI status (docs):

@kmill kmill added this pull request to the merge queue Oct 23, 2024
Merged via the queue into leanprover:master with commit 249530f Oct 23, 2024
17 checks passed
kmill added a commit to kmill/lean4 that referenced this pull request Oct 25, 2024
Since `partial` inhabitation is stronger in leanprover#5821, this private instance is no longer needed.
github-merge-queue bot pushed a commit that referenced this pull request Oct 25, 2024
Since `partial` inhabitation is stronger in #5821, this private instance
is no longer needed.
tobiasgrosser pushed a commit to opencompl/lean4 that referenced this pull request Oct 27, 2024
… from parameters (leanprover#5821)

Rather than having a special pass where `mkInhabitantFor` uses the
`assumption` tactic, it creates `Inhabited` instances for each parameter
and just searches for an `Inhabited`/`Nonempty` instance for the return
type.

This makes examples like the following work:
```lean
partial def f (x : X) : Bool × X := ...
```

Removes the strategy where it looks for `Inhabited`/`Nonempty` instances
for every suffix of the signature.

This is a follow-up to leanprover#5780. Motivated [by
Zulip](https://leanprover.zulipchat.com/#narrow/channel/113489-new-members/topic/Why.20return.20type.20of.20partial.20function.20MUST.20.60inhabited.60.3F/near/477905312).
tobiasgrosser pushed a commit to opencompl/lean4 that referenced this pull request Oct 27, 2024
Since `partial` inhabitation is stronger in leanprover#5821, this private instance
is no longer needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
builds-mathlib CI has verified that Mathlib builds against this PR toolchain-available A toolchain is available for this PR, at leanprover/lean4-pr-releases:pr-release-NNNN
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants