Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Type checking for dependent Koika functions
The default type checker only tries to construct the checked term by using
vm_compute
. However, when a Koika function depends on some variable, says
, this check will get stuck on a term likeforall s, ... EqDec.ec_dec s s ...
. This equality is rather computed than proven, but for this computation it is necessary to know the exact value of s.To circumvent this problem (and it is really more a workaround than a solution), I built a tactic, that carefully computes the type leaving
eq_dec
occurrences untouched. These occurrences are then (if possible) rewritten with a proof.This workaround is incorporated into the normal type checking algorithm as a fallback, in other words, the type checker will first try to construct the term using
vm_compute
(which should be faster) and only if this fails it will try to compute it using the new tactic.