The current version of Kranc cannot digest the current version of McLachlan. The problem is with enforcing the trace A constraint, where the variable At_ij is both read and written -- Kranc does not emit the statement that reads the local variable from the grid function.
The enclosed patch corrects this. It is somewhat lengthy and not entirely elegant:
Output assignments for all temporaries, not only for those that are only used in the RHS. If a temporary is used in a LHS, it may still need to be loaded from a grid function.
Add a somewhat complex logic to ensure that each temporary and shortcut is declared only once.
When declaring temporaries, do not declare them as constant, because they may change.
-erik