public EnumSort(EnumDef def, Z3Provider z3p)
 {
     this.z3p = z3p;
     this.name = def.id.text;
     this.sort = z3p.MkEnumSort(def.id.text, def.elems.ToArray());
 }
 //Generate Z3 sorts from enum definition
 private static bool GenerateEnumSort(EnumDef def, FastTransducerInstance fti)
 {
     fti.enums.Add(new EnumSort(def, z3p));
     return true;
 }
 //Generate the C# corresponding to one enum
 private static bool GenerateEnum(EnumDef def, StringBuilder sb)
 {
     sb.Append("public enum " + def.id.text + " {");
     foreach (var elem in def.elems)
     {
         if (def.elems.First().Equals(elem))
         {
             sb.Append(elem);
         }
         else
         {
             sb.Append(", " + elem);
         }
     }
     sb.AppendLine("}");
     sb.AppendLine();
     return true;
 }