`Class/Declare`(
 "KR_subfield",
 "An instance of this class represents a subfield of the field $KR$ of functions on $EX^*$ generated by the functions $x_i$ and $r_i$",

 ["Field","stabiliser"::list,"The list of elements of the group $G_{64}$ that act as the identity on this subfield"],
 ["Field","generating_sets"::list,"A list of generating sets for the subfield"],
 ["Field","conversion_rules"::table,"In the $(i,j)$ slot this should have a list of equations expressing the elements of generating set $i$ in terms of generating set $j$.  The $(i,i)$ slots can be left unset."],

 ["Method","check_stabiliser","",
  proc(this)
   local A,B,F,a,T,err,H;

   A := {op(map(op,this["generating_sets"]))};
   F := table():

   for a in A do
    for T in G64 do
     err := simplify(act_AT[T](a) - a);
     F[a,T] := evalb(err = 0);
    od;
   od;

   for a in A do
    for T in this["stabiliser"] do 
     if not(F[a,T]) then
      printf("%A is not fixed by %A\n",a,T);
      return false;
     fi;
    od;
   od;

   for B in this["generating_sets"] do
    H := sort(select(T -> (map(a -> F[a,T],{op(B)}) = {true}),G64));
    if H <> this["stabiliser"] then
     printf("stabiliser(%A) = %A\n",B,H);
     return false;
    fi;
   od:

   return true;
  end
 ],

 ["Method","check_conversion","",
  proc(this)
   local i,j,n,A,B,C,R,E,e,err;

   A := this["generating_sets"];
   n := nops(A);
   R := eval(this["conversion_rules"]);
   for i from 1 to n do
    for j from 1 to n do
     if i <> j then
      B := A[i]; 
      C := A[j];
      E := R[i,j];
      if not(type(E,list(equation))) then
       printf("rule (%d,%d) is not a list of equations \n",i,j);
       return false;
      fi;
      if {op(map(lhs,E))} <> {op(B)} then
       printf("rule (%d,%d) is not a list of equations for generating set %d\n",i,j,i);
       return false;
      fi;
      if indets({op(map(rhs,E))}) minus {op(C)} <> {} then
       printf("rule (%d,%d) does not express generating set %d in terms of generating set %d\n",i,j,i,j);
       return false;
      fi;

      for e in E do 
       if not(galois_check_zero(lhs(e) - rhs(e))) then
        printf("in rule (%d,%d), equation %A is incorrect\n",i,j,e);
        return false;
       fi;
      od;
     fi;
    od;
   od;

   return true;
  end
 ],

 ["Method","check","",
  proc(this)
   this["check_stabiliser"] and this["check_conversion"];
  end
 ]
):

KR_subfields := table():

######################################################################

KR_subfields[ 1] := `new/KR_subfield`():
KR_subfields[ 1]["stabiliser"] := G64_subgroup_generated_by({LL,M,N,A1,A2});
KR_subfields[ 1]["generating_sets"] := [[z[1],y[2]],[s[7],s[8]],[s[5],s[6],s[7],s[8]]];
CR := table():
CR[1,2] := [z[1] = zs[1],y[2] = ys[2]];
CR[1,3] := [z[1] = zs[1],y[2] = ys[2]];
CR[2,1] := subs(y[1] = sqrt(z[1]),[s[7] = sx[7],s[8] = sx[8]]);
CR[2,3] := [s[7] = s[7], s[8] = s[8]];
CR[3,1] := subs(y[1] = sqrt(z[1]),[s[5] = sx[5], s[6] = sx[6], s[7] = sx[7],s[8] = sx[8]]);
CR[3,2] := [op(solve(s_rels[2],{s[5]})),op(solve(s_rels[3],{s[6]})),s[7] = s[7],s[8] = s[8]];
KR_subfields[1]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[ 2] := `new/KR_subfield`():
KR_subfields[ 2]["stabiliser"] := G64_subgroup_generated_by({LL,M,N,A1});
KR_subfields[ 2]["generating_sets"] := [[z[1],y[2],r[2]],[s[2],s[7]],[s[2],s[8]],[s[2],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,4] := [z[1] = zs[1],y[2] = ys[2],r[2] = rs[2]];
CR[1,2] := factor(subs(s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2),subs(solve(s_rels[2],{s[8]}),CR[1,4])));
CR[1,3] := factor(subs(s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2),subs(solve(s_rels[2],{s[7]}),CR[1,4])));
CR[2,1] := subs(y[1] = sqrt(z[1]),[s[2] = sx[2],s[7] = sx[7]]);
CR[2,3] := [s[2] = s[2],s[7] = factor(subs(s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2),solve(s_rels[2],s[7])))];
CR[2,4] := [s[2] = s[2],s[7] = s[7]];
CR[3,1] := subs(y[1] = sqrt(z[1]),[s[2] = sx[2],s[8] = sx[8]]);
CR[3,2] := [s[2] = s[2],s[8] = factor(subs(s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2),solve(s_rels[2],s[8])))];
CR[3,4] := [s[2] = s[2],s[8] = s[8]];
CR[4,1] := subs(y[1] = sqrt(z[1]),[seq(s[i] = sx[i],i in [2,5,6,7,8])]);
CR[4,2] := [s[2] = s[2], s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2), s[6] = (s[2]/2 + 1/s[2]/2 - 2), s[7] = s[7],
            s[8] = factor(subs(s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2),solve(s_rels[2],s[8])))];
CR[4,3] := [s[2] = s[2], s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2), s[6] = (s[2]/2 + 1/s[2]/2 - 2), s[8] = s[8],
            s[7] = factor(subs(s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2),solve(s_rels[2],s[7])))];
KR_subfields[2]["conversion_rules"] := eval(CR):


######################################################################

KR_subfields[ 3] := `new/KR_subfield`():
KR_subfields[ 3]["stabiliser"] := G64_subgroup_generated_by({LL,M,N,A2});
KR_subfields[ 3]["generating_sets"] := [[z[1],y[2],r[1]],[s[1],s[7]],[s[1],s[8]],[s[1],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,4] := [z[1] = zs[1],y[2] = ys[2],r[1] = rs[1]];
CR[1,2] := factor(subs(s[5] = (s[1]/2 + 1/s[1]/2 - 2),subs(solve(s_rels[2],{s[8]}),CR[1,4])));
CR[1,3] := factor(subs(s[5] = (s[1]/2 + 1/s[1]/2 - 2),subs(solve(s_rels[2],{s[7]}),CR[1,4])));
CR[2,1] := subs(y[1] = sqrt(z[1]),[s[1] = sx[1],s[7] = sx[7]]);
CR[2,3] := [s[1] = s[1],s[7] = factor(subs(s[5] = (s[1]/2 + 1/s[1]/2 - 2),solve(s_rels[2],s[7])))];
CR[2,4] := [s[1] = s[1],s[7] = s[7]];
CR[3,1] := subs(y[1] = sqrt(z[1]),[s[1] = sx[1],s[8] = sx[8]]);
CR[3,2] := [s[1] = s[1],s[8] = factor(subs(s[5] = (s[1]/2 + 1/s[1]/2 - 2),solve(s_rels[2],s[8])))];
CR[3,4] := [s[1] = s[1],s[8] = s[8]];
CR[4,1] := subs(y[1] = sqrt(z[1]),[seq(s[i] = sx[i],i in [1,5,6,7,8])]);
CR[4,2] := [s[1] = s[1], s[5] = (s[1]/2 + 1/s[1]/2 - 2), s[6] = 1/(s[1]/2 + 1/s[1]/2 - 2), s[7] = s[7],
            s[8] = factor(subs(s[5] = (s[1]/2 + 1/s[1]/2 - 2),solve(s_rels[2],s[8])))];
CR[4,3] := [s[1] = s[1], s[5] = (s[1]/2 + 1/s[1]/2 - 2), s[6] = 1/(s[1]/2 + 1/s[1]/2 - 2), s[8] = s[8],
            s[7] = factor(subs(s[5] = (s[1]/2 + 1/s[1]/2 - 2),solve(s_rels[2],s[7])))];
KR_subfields[ 3]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[ 4] := `new/KR_subfield`():
KR_subfields[ 4]["stabiliser"] := G64_subgroup_generated_by({LL,MA1,N,A2});
KR_subfields[ 4]["generating_sets"] := [[s[3],s[5]],[s[3],s[6]],[s[3],s[5],s[6],s[7],s[8]]];
CR := table():
CR[1,2] := [s[3] = s[3],s[5] = 1/s[6]];
CR[1,3] := [s[3] = s[3],s[5] = s[5]];
CR[2,1] := [s[3] = s[3],s[6] = 1/s[5]];
CR[2,3] := [s[3] = s[3],s[6] = s[6]];
CR[3,1] := [s[3] = s[3],s[5] = s[5],s[6] = 1/s[5],s[7] = s[3]/2 + 1/s[3]/2,
            s[8] = -(2*(s[3]^2*s[5]+s[3]^2-s[3]*s[5]+s[3]+s[5]+1))/(s[3]^2*s[5]-s[3]^2-4*s[3]*s[5]-4*s[3]+s[5]-1)];
CR[3,2] := [s[3] = s[3],s[5] = 1/s[6],s[6] = s[6],s[7] = s[3]/2 + 1/s[3]/2,
            s[8] =  (2*(s[3]^2*s[6]+s[3]^2+s[3]*s[6]-s[3]+s[6]+1))/(s[3]^2*s[6]-s[3]^2+4*s[3]*s[6]+4*s[3]+s[6]-1)];
KR_subfields[ 4]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[ 5] := `new/KR_subfield`():
KR_subfields[ 5]["stabiliser"] := G64_subgroup_generated_by({LL,MA2,N,A1});
KR_subfields[ 5]["generating_sets"] := [[s[4],s[5]],[s[4],s[6]],[s[4],s[5],s[6],s[7],s[8]]];
CR := table():
CR[1,2] := [s[4] = s[4],s[5] = 1/s[6]];
CR[1,3] := [s[4] = s[4],s[5] = s[5]];
CR[2,1] := [s[4] = s[4],s[6] = 1/s[5]];
CR[2,3] := [s[4] = s[4],s[6] = s[6]];
CR[3,1] := [s[4] = s[4],s[5] = s[5],s[6] = 1/s[5],s[8] = s[4]/2 + 1/s[4]/2,
            s[7] =  (2*(s[4]^2*s[5]+s[4]^2+s[4]*s[5]-s[4]+s[5]+1))/(s[4]^2*s[5]-s[4]^2+4*s[4]*s[5]+4*s[4]+s[5]-1)];
CR[3,2] := [s[4] = s[4],s[5] = 1/s[6],s[6] = s[6],s[8] = s[4]/2 + 1/s[4]/2,
            s[7] = -(2*(s[4]^2*s[6]+s[4]^2-s[4]*s[6]+s[4]+s[6]+1))/(s[4]^2*s[6]-s[4]^2-4*s[4]*s[6]-4*s[4]+s[6]-1)];
KR_subfields[ 5]["conversion_rules"] := eval(CR):
KR_subfields[ 5]["check_stabiliser"];
KR_subfields[ 5]["check_conversion"];

######################################################################

KR_subfields[ 6] := `new/KR_subfield`():
KR_subfields[ 6]["stabiliser"] := G64_subgroup_generated_by({LL,N,A2});
KR_subfields[ 6]["generating_sets"] := [[y[1],r[1]],[y[1],y[2],r[1]],[s[1],s[3]],[s[1],s[3],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,2] := [y[1] = y[1],r[1] = r[1]];
CR[1,3] := [y[1] = ys[1],r[1] = rs[1]];
CR[1,4] := [y[1] = ys[1],r[1] = rs[1]];
CR[2,1] := [y[1] = y[1],y[2] = y2r[1],r[1] = r[1]];
CR[2,3] := [y[1] = ys[1],y[2] = (sqrt(2) - (s[1]+1)^2/(s[1]-1)^2/sqrt(2)),r[1] = rs[1]];
CR[2,4] := [y[1] = ys[1],y[2] = ys[2],r[1] = rs[1]];
CR[3,1] := [s[1] = sx[1],s[3] = sx[3]];
CR[3,2] := [s[1] = sx[1],s[3] = sx[3]];
CR[3,4] := [s[1] = s[1],s[3] = s[3]];
CR[4,1] := subs(y[2] = y2r[1],[seq(s[i] = sx[i],i in [1,3,5,6,7,8])]);
CR[4,2] := [seq(s[i] = sx[i],i in [1,3,5,6,7,8])];
CR[4,3] := [s[1] = s[1], s[3] = s[3],
            s[5] = (s[1]/2 + 1/s[1]/2 - 2), s[6] = 1/(s[1]/2 + 1/s[1]/2 - 2),
            s[7] = s[3]/2 + 1/s[3]/2, 
            s[8] = -(2*(s[1]^2*s[3]^2-s[1]^2*s[3]-2*s[1]*s[3]^2+s[1]^2+6*s[1]*s[3]+s[3]^2-2*s[1]-s[3]+1))/
                     (s[1]^2*s[3]^2-4*s[1]^2*s[3]-6*s[1]*s[3]^2+s[1]^2+8*s[1]*s[3]+s[3]^2-6*s[1]-4*s[3]+1)
           ];
KR_subfields[ 6]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[ 7] := `new/KR_subfield`():
KR_subfields[ 7]["stabiliser"] := G64_subgroup_generated_by({LL,N,A1});
KR_subfields[ 7]["generating_sets"] := [[y[1],r[2]],[y[1],y[2],r[2]],[s[2],s[4]],[s[2],s[4],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,2] := [y[1] = y[1],r[2] = r[2]];
CR[1,3] := [y[1] = act_AT[L](ys[1]),r[2] = rs[2]];
CR[1,4] := [y[1] = act_AT[L](ys[1]),r[2] = rs[2]];
CR[2,1] := [y[1] = y[1],y[2] = y2r[2],r[2] = r[2]];
CR[2,3] := [y[1] = act_AT[L](ys[1]),y[2] = -(sqrt(2) - (s[2]+1)^2/(s[2]-1)^2/sqrt(2)),r[2] = rs[2]];
CR[2,4] := [y[1] = act_AT[L](ys[1]),y[2] = ys[2],r[2] = rs[2]];
CR[3,1] := [s[2] = sx[2],s[4] = sx[4]];
CR[3,2] := [s[2] = sx[2],s[4] = sx[4]];
CR[3,4] := [s[2] =  s[2],s[4] =  s[4]];
CR[4,1] := subs(y[2] = y2r[2],[seq(s[i] = sx[i],i in [2,4,5,6,7,8])]);
CR[4,2] := [seq(s[i] = sx[i],i in [2,4,5,6,7,8])];
CR[4,3] := [s[2] = s[2], s[4] = s[4],
            s[5] = 1/(s[2]/2 + 1/s[2]/2 - 2), s[6] = (s[2]/2 + 1/s[2]/2 - 2),
            s[8] = s[4]/2 + 1/s[4]/2, 
            s[7] = -(2*(s[2]^2*s[4]^2-s[2]^2*s[4]-2*s[2]*s[4]^2+s[2]^2+6*s[2]*s[4]+s[4]^2-2*s[2]-s[4]+1))/
                     (s[2]^2*s[4]^2-4*s[2]^2*s[4]-6*s[2]*s[4]^2+s[2]^2+8*s[2]*s[4]+s[4]^2-6*s[2]-4*s[4]+1)
           ];
KR_subfields[ 7]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[ 8] := `new/KR_subfield`():
KR_subfields[ 8]["stabiliser"] := G64_subgroup_generated_by({N,A2});
KR_subfields[ 8]["generating_sets"] := [[y[1],x[1],r[1]],[y[1],y[2],x[1],r[1]],[t[1],t[3]],[t[1],t[3],s[1],s[3],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,2] := [y[1] = y[1],x[1] = x[1],r[1] = r[1]];
CR[1,3] := [y[1] = yt[1],x[1] = xt[1],r[1] = rt[1]];
CR[1,4] := [y[1] = yt[1],x[1] = xt[1],r[1] = rt[1]];
CR[2,1] := [y[1] = y[1],y[2] = y2r[1],x[1] = x[1],r[1] = r[1]];
CR[2,3] := [y[1] = yt[1],y[2] = (t[1]^2*t[3]^2-6*t[1]*t[3]+1)/(t[1]*t[3]-1)^2/sqrt(2),x[1] = xt[1],r[1] = rt[1]];
CR[2,4] := [y[1] = yt[1],y[2] = (t[1]^2*t[3]^2-6*t[1]*t[3]+1)/(t[1]*t[3]-1)^2/sqrt(2),x[1] = xt[1],r[1] = rt[1]];
CR[3,1] := [t[1] = tx[1],t[3] = tx[3]];
CR[3,2] := [t[1] = tx[1],t[3] = tx[3]];
CR[3,4] := [t[1] = t[1],t[3] = t[3]];
CR[4,1] := [t[1] = tx[1],t[3] = tx[3],op(subs(y[2] = y2r[1],[seq(s[i] = sx[i],i in [1,3,5,6,7,8])]))];
CR[4,2] := [t[1] = tx[1],t[3] = tx[3],seq(s[i] = sx[i],i in [1,3,5,6,7,8])];
CR[4,3] := [t[1] = t[1],t[3] = t[3],s[1] = st[1],s[3] = st[3],s[5] = st[5],s[6] = 1/st[5],s[7] = st[7],
            s[8] = -(2*(t[1]^4*t[3]^2-t[1]^3*t[3]^3+t[1]^2*t[3]^4-2*t[1]^3*t[3]+6*t[1]^2*t[3]^2-2*t[1]*t[3]^3+t[1]^2-t[1]*t[3]+t[3]^2))/
                    (t[1]^4*t[3]^2-4*t[1]^3*t[3]^3+t[1]^2*t[3]^4-6*t[1]^3*t[3]+8*t[1]^2*t[3]^2-6*t[1]*t[3]^3+t[1]^2-4*t[1]*t[3]+t[3]^2)
           ];
KR_subfields[ 8]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[ 9] := `new/KR_subfield`():
KR_subfields[ 9]["stabiliser"] := G64_subgroup_generated_by({LLN,A1});
KR_subfields[ 9]["generating_sets"] := [[y[1],x[2],r[2]],[y[1],y[2],x[2],r[2]],[t[2],t[4]],[t[2],t[4],s[2],s[4],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,2] := [y[1] = y[1],x[2] = x[2],r[2] = r[2]];
CR[1,3] := [y[1] = act_AT[L](yt[1]),x[2] = xt[2],r[2] = rt[2]];
CR[1,4] := [y[1] = act_AT[L](yt[1]),x[2] = xt[2],r[2] = rt[2]];
CR[2,1] := [y[1] = y[1],y[2] = y2r[2],x[2] = x[2],r[2] = r[2]];
CR[2,3] := [y[1] = act_AT[L](yt[1]),y[2] = -(t[2]^2*t[4]^2-6*t[2]*t[4]+1)/(t[2]*t[4]-1)^2/sqrt(2),x[2] = xt[2],r[2] = rt[2]];
CR[2,4] := [y[1] = act_AT[L](yt[1]),y[2] = -(t[2]^2*t[4]^2-6*t[2]*t[4]+1)/(t[2]*t[4]-1)^2/sqrt(2),x[2] = xt[2],r[2] = rt[2]];
CR[3,1] := [t[2] = tx[2],t[4] = tx[4]];
CR[3,2] := [t[2] = tx[2],t[4] = tx[4]];
CR[3,4] := [t[2] = t[2],t[4] = t[4]];
CR[4,1] := [t[2] = tx[2],t[4] = tx[4],op(subs(y[2] = y2r[2],[seq(s[i] = sx[i],i in [2,4,5,6,7,8])]))];
CR[4,2] := [t[2] = tx[2],t[4] = tx[4],seq(s[i] = sx[i],i in [2,4,5,6,7,8])];
CR[4,3] := [t[2] = t[2],t[4] = t[4],s[2] = st[2],s[4] = st[4],s[5] = 1/st[6],s[6] = st[6],s[8] = st[8],
            s[7] = -(2*(t[2]^4*t[4]^2-t[2]^3*t[4]^3+t[2]^2*t[4]^4-2*t[2]^3*t[4]+6*t[2]^2*t[4]^2-2*t[2]*t[4]^3+t[2]^2-t[2]*t[4]+t[4]^2))/
                    (t[2]^4*t[4]^2-4*t[2]^3*t[4]^3+t[2]^2*t[4]^4-6*t[2]^3*t[4]+8*t[2]^2*t[4]^2-6*t[2]*t[4]^3+t[2]^2-4*t[2]*t[4]+t[4]^2)
           ];
KR_subfields[ 9]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[10] := `new/KR_subfield`():
KR_subfields[10]["stabiliser"] := G64_subgroup_generated_by({LL,M,N});
KR_subfields[10]["generating_sets"] := [[z[1],y[2],r[1],r[2]],[s[1],s[2],s[7]],[s[1],s[2],s[8]],[s[1],s[2],s[5],s[6],s[7],s[8]]];

CR := table():
CR[1,2] := [z[1] = 2*(s[1]-1)^2/(s[1]+1)^2*(s[7]-1)/(s[7]+1),y[2] = (s[1]^2-6*s[1]+1)/(s[1]-1)^2/sqrt(2),r[1] = rs[1],r[2] = rs[2]];
CR[1,3] := [z[1] = 2*(s[2]-1)^2/(s[2]+1)^2*(s[8]-1)/(s[8]+1),y[2] = (s[1]^2-6*s[1]+1)/(s[1]-1)^2/sqrt(2),r[1] = rs[1],r[2] = rs[2]];
CR[1,4] := [z[1] = zs[1],y[2] = ys[2],r[1] = rs[1],r[2] = rs[2]];
CR[2,1] := subs(y[1] = sqrt(z[1]),[s[1] = sx[1],s[2] = sx[2],s[7] = sx[7]]);
CR[2,3] := [s[1] = s[1],s[2] = s[2],s[7] = -(2*s[2]^2*s[8]-s[2]^2-4*s[2]*s[8]+6*s[2]+2*s[8]-1)/(s[2]^2*s[8]-2*s[2]^2-6*s[2]*s[8]+4*s[2]+s[8]-2)];
CR[2,4] := [s[1] = s[1],s[2] = s[2],s[7] = s[7]];
CR[3,1] := subs(y[1] = sqrt(z[1]),[s[1] = sx[1],s[2] = sx[2],s[8] = sx[8]]);
CR[3,2] := [s[1] = s[1],s[2] = s[2],s[8] = -(2*s[1]^2*s[7]-s[1]^2-4*s[1]*s[7]+6*s[1]+2*s[7]-1)/(s[1]^2*s[7]-2*s[1]^2-6*s[1]*s[7]+4*s[1]+s[7]-2)];
CR[3,4] := [s[1] = s[1],s[2] = s[2],s[8] = s[8]];
CR[4,1] := subs(y[1] = sqrt(z[1]),[seq(s[i] = sx[i],i in [1,2,5,6,7,8])]);
CR[4,2] := [s[1] = s[1],s[2] = s[2],s[5] = (s[1]/2 + 1/s[1]/2 - 2),s[6] = (s[2]/2 + 1/s[2]/2 - 2),s[7] = s[7],
            s[8] = -(2*s[1]^2*s[7]-s[1]^2-4*s[1]*s[7]+6*s[1]+2*s[7]-1)/(s[1]^2*s[7]-2*s[1]^2-6*s[1]*s[7]+4*s[1]+s[7]-2)];
CR[4,3] := [s[1] = s[1],s[2] = s[2],s[5] = (s[1]/2 + 1/s[1]/2 - 2),s[6] = (s[2]/2 + 1/s[2]/2 - 2),s[8] = s[8],
            s[7] = -(2*s[2]^2*s[8]-s[2]^2-4*s[2]*s[8]+6*s[2]+2*s[8]-1)/(s[2]^2*s[8]-2*s[2]^2-6*s[2]*s[8]+4*s[2]+s[8]-2)];
KR_subfields[10]["conversion_rules"] := eval(CR):

######################################################################

KR_subfields[11] := `new/KR_subfield`():
KR_subfields[11]["stabiliser"] := G64_subgroup_generated_by({M,N});
KR_subfields[11]["generating_sets"] := [[z[1],y[2],x[1],r[1],r[2]],[s[1],s[2],u[1]]];

CR := table():
CR[1,2] := [z[1] = 2*(1-s[1])^2/(1+s[1])^2*(1-4*s[1]/u[1]^2),
            y[2] = (s[1]^2-6*s[1]+1)/(s[1]-1)^2/sqrt(2),
            x[1] = sqrt(8)/(1-1/s[1])/u[1],
            r[1] = rs[1],r[2] = rs[2]];
CR[2,1] := [s[1]=sx[1],s[2]=sx[2],u[1] = -sqrt(8)*x[1]/(1-r[1]^2*z[1])/(1-sqrt(2)*r[1])];
KR_subfields[11]["conversion_rules"] := eval(CR):