generators.tdTransducer:
( { a:0, b:0, c:1, h:2, v:2, S:0 },
  { a:0, b:0, c:1, h:2, v:2, "...":0 },
  { ext, ab, cp, rot },
  { ext[a] -> a,
    ext[b] -> b,
    ext[c[x1]] -> c[ab[x1]],
    ext[c[x1]] -> c[rot[x1]],
    ext[h[x1,x2]] -> h[ab[x1],ab[x2]],
    ext[h[x1,x2]] -> h[cp[x1],ab[x2]],
    ext[h[x1,x2]] -> h[ab[x1],cp[x2]],
    ext[h[x1,x2]] -> h[cp[x1],cp[x2]],
    ext[v[x1,x2]] -> v[ab[x1],ab[x2]],
    ext[v[x1,x2]] -> v[cp[x1],ab[x2]],
    ext[v[x1,x2]] -> v[ab[x1],cp[x2]],
    ext[v[x1,x2]] -> v[cp[x1],cp[x2]],
  
    ab[c[x1]] -> c[ab[x1]],
    ab[c[x1]] -> c[rot[x1]],
    ab[h[x1,x2]] -> h[ab[x1],ab[x2]],
    ab[h[x1,x2]] -> h[cp[x1],ab[x2]],
    ab[h[x1,x2]] -> h[ab[x1],cp[x2]],
    ab[v[x1,x2]] -> v[ab[x1],ab[x2]],
    ab[v[x1,x2]] -> v[cp[x1],ab[x2]],
    ab[v[x1,x2]] -> v[ab[x1],cp[x2]],
    
    cp[a] -> a,
    cp[b] -> b,
    cp[h[x1,x2]] -> h[cp[x1],cp[x2]],
    cp[v[x1,x2]] -> v[cp[x1],cp[x2]],
    
    rot[a] -> a,
    rot[b] -> b,
    rot[h[x1,x2]] -> v[rot[x1],rot[x2]],
    rot[v[x1,x2]] -> h[rot[x2],rot[x1]],
    
    % extension for convenience
    ext[S] -> "...",
    cp[S]  -> "...",
    rot[S] -> "..."

  },
  ext )
