Skip to content

Conversation

isovector
Copy link
Collaborator

This PR changes the behavior of the homo tactic, ensuring that it is total and well-typed to apply. Before, it would just automatically fill in the data constructors, regardless of whether they were the right type. The new logic is to check which data constructors are possible in the domain, and which in the codomain, and to subtract the latter from the former. If this set is non-empty, it means either the thing won't type check, or that due to some GADT equalities, it's impossible to map some constructors. Either way, the tactic should fail, and does now.

Fixes #565

@pepeiborra pepeiborra added the merge me Label to trigger pull request merge label Jun 23, 2021
@mergify mergify bot merged commit b4deb4a into haskell:master Jun 25, 2021
jneira pushed a commit to jneira/haskell-language-server that referenced this pull request Jun 25, 2021
…omain (haskell#1968)

* Ensure homomorphism covers the entire codomain

* Add tests

* Add the same logic to lambda case homomorphism

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
@isovector isovector deleted the homo-must-typecheck branch July 19, 2021 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge me Label to trigger pull request merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tactics plugin generates ill-typed term

2 participants