generators.ET0LTreeGrammar("EDT0L variant"):
(
  { K, SQ1, SQ2 },
  { inv:1, o:8, K1:4, K2:3, sq:4, -:0, background:0, .:2, kite:0, square1:0,
    c0-0:1, c001:1, c051:1, c100:1, c150:1, c010:1, c101:1 },
  {
    {
      K -> K1[c001[K],c100[K],c100[SQ1],c0-0[SQ2]],
      SQ1 -> sq[c001[SQ1],c001[SQ1],c100[SQ1],c100[SQ1]],
      SQ2 -> sq[c101[SQ2],c051[SQ2],c150[SQ2],c010[SQ2]]
    },
    {
      K -> K2[c100[K],c010[K],inv[K]],
      SQ1 -> sq[c001[SQ1],c001[SQ1],c100[SQ1],c100[SQ1]],
      SQ2 -> sq[c101[SQ2],c051[SQ2],c150[SQ2],c010[SQ2]]
    },
    {
      K -> K2[c100[K],c010[K],-],
      SQ1 -> sq[c001[SQ1],c001[SQ1],c100[SQ1],c100[SQ1]],
      SQ2 -> sq[c101[SQ2],c051[SQ2],c150[SQ2],c010[SQ2]]
    },
    {
      K -> kite,
      SQ1 -> square1,
      SQ2 -> square1
    }
  },
  (background . o[K,K,K,K,K,K,K,K])
)
