all results must track curtails
- done
when merging two results that have curtails for the same combinator, use the smaller curtail
- done
- actually, shouldn't this be the opposite, given that curtails stand for the highest level that a result is valid at?
when updating a result, replace the curtails with the leftrec level for the current context
- done
ignore a previous result when the current leftrec level is less than the previous result curtail level for even one of the curtails
- done
the function to check if reusable needs to take into account a +1 for the combinator being currently memoized
- done
when depth of a curtail is less than or equal to remaining tokens of input after the furthest finish of a result, that curtail can be deleted?
when depth of curtail plus remaining tokens after furthest finish of a result is less than or equal to total input tokens plus one, curtail can be deleted from a result
when depth of curtail plus remaining tokens after furthest finish of a result is less than or equal to remaining tokens at the start of a result, then curtail can be deleted from result, because in that case it is no longer possible for curtail to happen due to excessive combinator recursion