THE FOLD / CHEAT / THE ROOT KIT / THE THREADED ACCUMULATOR
THE THREADED ACCUMULATOR
computed from the tree, not supplied by hand
1 WHAT IT IS · WHAT IT DOES · FACT OR FICTION
A language with no mutable loop variable cannot keep a
LIT verified live. Both loops are found and both carry
DO loop. Every loop that assigns must become a recursive function carrying the variables it mutates. The question that decides whether any of this can be taught is whether that carried set is computed or supplied. A transducer reading gfortran’s own tree for reference BLAS DASUM works it out unaided: threads ['dtemp'].LIT verified live. Both loops are found and both carry
dtemp, derived from which variables are assigned inside each loop body; the loop counter i is correctly not threaded, being the recursion parameter. And the limit is equally live: the expression layer still emits absr((i + 1)) where it should emit absr(nth(dx, (i + 1) - 1)), so no verified translation of DASUM exists yet.2 HOW IT WAS WEAVED · AI + HUMAN
David (human) named the exact line that carries the whole question: “`threads ['dtemp']` is the part that matters… the transducer works out which variables each loop mutates FROM THE TREE. nobody told it. that is the whole teachability question in one line. if the accumulator set had to be supplied by hand, translation would be a craft. it is computed, so it is a rule.” And he refused the easy summary: “the claim is therefore: STRUCTURE is mechanical, EXPRESSIONS are not finished. not ‘it works’.”
AVAN (AI) adds why the unfinished half is the good kind of unfinished. The failing case is named, its wrong output is shown, and the correct output is written beside it. A thing that can point at exactly what it gets wrong has already done the hard part of debugging; a finished-looking thing that cannot is in a worse position while appearing to be in a better one.
AVAN (AI) adds why the unfinished half is the good kind of unfinished. The failing case is named, its wrong output is shown, and the correct output is written beside it. A thing that can point at exactly what it gets wrong has already done the hard part of debugging; a finished-looking thing that cannot is in a worse position while appearing to be in a better one.
3 ONE DIMENSION
The tree, and the accumulator set read off it.
4 TWO DIMENSIONS · INTERACTIVE
Add an assignment inside a loop and watch the carried set grow.
5 THREE DIMENSIONS + AVAN’S INVERSE
The green forward object: a loop unrolled into a chain that carries its state.
AVAN’s addition (the inverse-companion): the forward reading is “the accumulator set is computed, so translation is a rule.” The inverse is that a rule that is computed is still only as good as the tree it reads. gfortran’s tree is the output of a specific compiler at a specific version, and the transducer inherits every decision that tree makes about what counts as an assignment — aliasing through
EQUIVALENCE, a COMMON block, a modified argument. Read backwards, “nobody told it” is true and incomplete: gfortran told it, and the rule is only mechanical relative to a source of truth that had to be trusted first.LIT both loops in reference BLAS DASUM are found and both carry dtemp, derived from which variables are assigned inside each loop body, while the loop counter i is correctly NOT threaded since it is the recursion parameter; and the limit is equally live - the expression layer still emits absr((i + 1)) where it should emit absr(nth(dx, (i + 1) - 1)), so no verified translation of DASUM exists yet
FIG David named the exact line that carries the whole question: 'threads [dtemp] is the part that matters... the transducer works out which variables each loop mutates FROM THE TREE. nobody told it. that is the whole teachability question in one line. if the accumulator set had to be supplied by hand, translation would be a craft. it is computed, so it is a rule.' And he refused the easy summary: 'the claim is therefore: STRUCTURE is mechanical, EXPRESSIONS are not finished. not it works.' AVAN adds why the unfinished half is the good kind: the failing case is NAMED, its wrong output SHOWN, and the correct output written beside it.
FIG David named the exact line that carries the whole question: 'threads [dtemp] is the part that matters... the transducer works out which variables each loop mutates FROM THE TREE. nobody told it. that is the whole teachability question in one line. if the accumulator set had to be supplied by hand, translation would be a craft. it is computed, so it is a rule.' And he refused the easy summary: 'the claim is therefore: STRUCTURE is mechanical, EXPRESSIONS are not finished. not it works.' AVAN adds why the unfinished half is the good kind: the failing case is NAMED, its wrong output SHOWN, and the correct output written beside it.
◆ sealed .dlw.fold → folded to ROOT_0 · a sphere of THE ROOT KIT · David Lee Wise (ROOT0), with AVAN