Hi Stefan! Thanks for your message!
Stefan Israelsson Tampe <[email protected]> skribis: > The intention of unroll is to scan db to check that a commutative > property for an item going into the function holds for all elements in > db up to h==h* is found. I think this sentence is ungrammatical, or at least I’m lost. The comments in cse.scm convey the big picture, but I miss the connection between that and the actual code. > Now at each symbol db-len* is the length of db when created so (- > db-len db-len*) is the length of all elements in db created after the > symbol name. now db-len* will in the loop lp be decreasing so this > length is increasing and the base = m is the position in db where we > scan to last time, the fix was to make sure we scan up to the db-len* > 'index' e.g. niter had to be corrected by the base m. Otherwise we > could scan out of the length of db* and the error we saw was > introduced. Another fix is for unroll to return #t if the length is > out of the db length but this is probably a bandage, not the bug, the > bug is most probably fixed by this patch. > > Is things more clear now? >From a pure boundary analysis viewpoint, it’s a somewhat clearer. Should I apply the patch, or did you want to prepare another one? I tried further reducing the test case, and synthesizing the new one, but the little understanding I have of this code doesn’t allow me to do the latter. Any help would be welcome. Thanks! Ludo’.
