

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



poss:=aR*bR*bU*cU*dU*aU*aR*bR*bU*bU*bL*aL*aD*dD*cD*bD*bL*aL*
aR*bD*cL*dU*aR*bR*bU*cU*dU*aU*aR*bR*bU*bU*bL*aL*aD*dD*cD*bD*bL*aL*dD*cR*bU*aL*
aD*bL*cU*dR*aR*bR*bU*cU*dU*aU*aR*bR*bU*bU*bL*aL*aD*dD*cD*bD*bL*aL*dL*cD*bR*aU*
aL*bL*bD*cD*dD*aD*aL*bL*bD*bD*bR*aR*aU*dU*cU*bU*bR*aR;





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




Read("twpermited.txt");

target:=Intersection(grp1,grp2);
M_target:=[];
for x in M do
	if ConjugateGroup(target,x)=target then AddSet(M_target,x);fi;
od;
M_target:=Group(M_target);
rmt:=RightTransversal(M,M_target);

pos_dir:=[];
for x in [1..4] do
	pos_dir[x]:=rmt[x]*poss*rmt[x]^-1;
od;
coord_h:=[];
coord_n:=[];
symt:=[];


for zz in [1..4] do

	can1:=CanonicalRightCosetElement(grp1,pos_dir[zz]);
	can2:=CanonicalRightCosetElement(grp2,pos_dir[zz]);
	can1:=PositionSet(set_11,can1);
	can2:=PositionSet(set_12,can2);

	coord_h[zz]:=A[32+3][can1];
	coord_n[zz]:=sm_12[A[1][can1]][can2];
	symt[zz]:=A[1][can1];


od;


for z in [1..Size(permited2)] do
	if Size(permited2[z])=1 then permited_start:=z;fi;
od;


 
OutputLogTo(Concatenation(path,"coordinates.txt"));
Print("#define COORD_11                 ",coord_h[1],"\n");
Print("#define COORD_12                 ",coord_n[1],"\n");
Print("#define SYM_1			    ",Position(setm,setm[symt[1]]^-1),"\n");
Print("#define COORD_21                 ",coord_h[2],"\n");
Print("#define COORD_22                 ",coord_n[2],"\n");
Print("#define SYM_2                    ",Position(setm,setm[symt[2]]^-1),"\n");
Print("#define COORD_31                 ",coord_h[3],"\n");
Print("#define COORD_32                 ",coord_n[3],"\n");
Print("#define SYM_3                    ",Position(setm,setm[symt[3]]^-1),"\n");
Print("#define COORD_41                 ",coord_h[4],"\n");
Print("#define COORD_42                 ",coord_n[4],"\n");
Print("#define SYM_4                    ",Position(setm,setm[symt[4]]^-1),"\n");
Print("#define N_FOLLOW 		    ",Size(twist_on_permited[1]),"\n");
Print("#define FOLLOW_START		    ",permited_start,"\n");
OutputLogTo();

OutputLogTo(Concatenation(path,"follow.txt"));
for x in [1..16] do
	for y in [1..Size(permited2)] do
		Print(twist_on_permited[x][y],"\n");
	od;
od;
OutputLogTo();
















