Instances For
Instances For
Instances For
Assemble the RecArgInfo for the ith parameter in the parameter list xs. This performs
various sanity checks on the parameter (is it even of inductive type etc).
Instances For
Collects the RecArgInfos for one function, and returns a report for why the others were not
considered.
The xs are the fixed parameters, value the body with the fixed prefix instantiated.
Takes the optional user annotation into account (termMeasure?). If this is given and the measure
is unsuitable, throw an error.
Instances For
Reorders the RecArgInfos of one function to put arguments that are indices of other arguments
last.
See issue #837 for an example where we can show termination using the index of an inductive family, but
we don't get the desired definitional equalities.
Instances For
Given the RecArgInfos of all the recursive functions, find the inductive groups to consider.
Instances For
Filters the recArgInfos by those that describe an argument that's part of the recursive inductive
group group.
Because of nested inductives this function has the ability to change the recArgInfo.
Consider
inductive Tree where | node : List Tree → Tree
then when we look for arguments whose type is part of the group Tree, we want to also consider
the argument of type List Tree, even though that argument’s RecArgInfo refers to initially to
List.
Instances For
A candidate argument combination to try for structural recursion.
- group : IndGroupInst
- comb : Array RecArgInfo
Instances For
Result of findRecArgCandidates: candidate combinations and a diagnostic report.
- candidates : Array RecArgCandidate
- report : MessageData
Instances For
Precompute all candidate argument combinations for structural recursion.
This performs the analysis that may need function axioms in the environment
(via isDefEq, inferType, etc.) but does not run the callback that
attempts to eliminate mutual recursion.
Instances For
Try each candidate argument combination for structural recursion.
Uses commitIfNoEx to backtrack on failure.