Review the grammar rules and the word-sequence and transformation catalogues for thoroughness
Time the smart expander on expressions of moderate complexity. (We might start with the early favorite from testMain.sh, fo=cTI+mS.) If speedup seems in order, optimize the repeated tree traversals by marking the "fixed-type" nodes as such, leaf nodes first, instead of figuring them out every time. Also, take fuller advantage of the type-based equivalence classes by performing lookahead marking on all choice lists (a.k.a. coordinates), not just the active list, whenever a feasible choice-vector is found.
Review code for aptness of variable names and comments
testMain.sh
,fo=cTI+mS
.) If speedup seems in order, optimize the repeated tree traversals by marking the "fixed-type" nodes as such, leaf nodes first, instead of figuring them out every time. Also, take fuller advantage of the type-based equivalence classes by performing lookahead marking on all choice lists (a.k.a. coordinates), not just the active list, whenever a feasible choice-vector is found.