let N: int = 4;

// a block machine which performs addition
namespace Add(N);
    col witness A;
    col witness B;
    col witness C;
    A + B = C;

// a machine which calls `Add` every other row on made up inputs
namespace Main(N);
    col fixed a(i) { (i + 13) & 0xffffffff };
    col fixed b(i) { ((i + 19) * 17) & 0xffffffff };
    col witness c;

    // only make a call every other row, otherwise set `c` to 0
    // we do this to prevent running out of blocks in `Add`
    col fixed CALL = [1, 0]*;
    (1 - CALL) * c = 0;

    CALL $ [a, b, c] in [Add::A, Add::B, Add::C];

