cr[a_,b_,c_,Inf]:=(a-c)/(b-c);
cr[a_,b_,Inf,d_]:=(b-d)/(a-d);
cr[a_,Inf,c_,d_]:=(a-c)/(a-d);
cr[Inf,b_,c_,d_]:=(b-d)/(b-c);

cr[a_,b_,c_,d_]:=(a-c) (b-d)/((a-d) (b-c));
cr[a_,b_,c_,d_,e_]:={cr[a,b,c,d],cr[a,b,c,e]};
cr[a_,b_,c_,d_,e_,f_]:={cr[a,b,c,d],cr[a,b,c,e],cr[a,b,c,f]};

argsinit3 = Permutations[{a,b,c,d,e,f}];
argsinit2 = Permutations[{a,b,c,d,e,f}][[All,1;;5]];

(* --------- *)

gpns = Get[NotebookDirectory[]<> "depth3ns/i221mod32ns.txt"];

basgen[i_,n_] := Table[If[k==i,1,0],{k,1,n}];

lookupI221[l___]:=basgen[Position[argsinit3,{l}][[1,1]],Length[argsinit3]];

(* ---------- *)

id2[a_,b_,c_,d_,e_,f_] := -I221[a,b,c,d,e,f]+I221[a,b,c,f,e,d];

id2b[a_,b_,c_,d_,e_,f_] :=  I221[e,f,c,d,a,b]-I221[f,e,c,d,a,b];

id4step1[a_,b_,c_,d_,e_,f_] := I221[a,b,c,d,e,f] - I221[a,b,e,d,c,f]
id4str[a_,b_,c_,d_,e_,f_] := id4step1[a,b,c,d,e,f] + id4step1[f, d, c, b, e, a]

id6step1[a_,b_,c_,d_,e_,f_] := I221[a,b,c,d,e,f] + I221[a,b,d,f,e,c] + I221[a,b,f,c,e,d];
id6str[a_,b_,c_,d_,e_,f_] := id6step1[a,b,c,d,e,f] - id6step1[a,b,e,d,c,f];

id6unstr[a_,b_,c_,d_,e_,f_] := I221[a,b,e,d,c,f]+I221[a,c,b,d,f,e]+I221[c,b,a,f,d,e]-I221[e,d,f,c,b,a]-I221[f,d,c,b,e,a]-I221[f,e,d,c,a,b];

(* id8[a_,b_,c_,d_,e_,f_] := I221[a,b,c,d,e,f]-I221[a,b,c,e,d,f]-I221[a,c,b,d,e,f]+I221[a,c,b,e,d,f]-I221[f,d,e,b,c,a]+I221[f,d,e,c,b,a]+I221[f,e,d,b,c,a]-I221[f,e,d,c,b,a];

id8step1[a_,b_,c_,d_,e_,f_] := I221[a,b,c,d,e,f] - I221[f,e,d,c,b,a];
id8step2[a_,b_,c_,d_,e_,f_] := id8step1[a,b,c,d,e,f] - id8step1[a,c,b,d,e,f];
id8str[a_,b_,c_,d_,e_,f_] := id8step2[a,b,c,d,e,f] - id8step2[a,b, c,e, d,f];

id8bstep1[a_,b_,c_,d_,e_,f_] := I221[a,b,c,d,e,f] + I221[a,b,c,d,f,e]
id8bstep2[a_,b_,c_,d_,e_,f_] := id8bstep1[a,b,c,d,e,f] - id8bstep1[a,b,d,c,e,f];
id8bstr[a_,b_,c_,d_,e_,f_] := id8bstep2[a,b,c,d,e,f] + id8bstep2[e,f,c,d,a,b];

id10unstr[a_,b_,c_,d_,e_,f_] := -I221[a,b,c,e,d,f]+I221[a,b,d,c,f,e]-I221[a,b,d,e,c,f]+I221[a,d,b,c,e,f]-I221[a,d,b,e,c,f]+I221[f,c,e,b,d,a]-I221[f,c,e,d,b,a]+I221[f,e,c,b,d,a]-I221[f,e,c,d,a,b]+I221[f,e,d,b,c,a];

id15str[a_,b_,c_,d_,e_,f_] := id6step1[a,b,c,d,e,f] + id6step1[a,c,d,e,f,b] + id6step1[a,d,e,f,b,c] + id6step1[a,e,f,b,c,d] + id6step1[a,f,b,c,d,e]

(* --------- *)

id2tbl = id2@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id2btbl = id2b@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id4strtbl = id4str@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id6strtbl = id6str@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id6unstrtbl = id6unstr@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id8strtbl = id8str@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id8bstrtbl = id8bstr@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id10unstrtbl = id10unstr@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id15strtbl = id15str@@@Permutations[{a,b,c,d,e,f}]/.I221->lookupI221//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

Length/@{id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl}

Join[gpns,id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl, id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

(* ------ *)

Join[id2tbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2btbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id6strtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id6unstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id8strtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

(* -------- *)

Join[ id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6strtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl,  id8bstrtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl,id10unstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl, id15strtbl]//MatrixRank

Join[id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl]//MatrixRank

(* --------- *)

subsets=Subsets[Hold[id2tbl, id2btbl, id4strtbl, id6strtbl, id6unstrtbl, id8strtbl, id8bstrtbl,id10unstrtbl, id15strtbl],{1,Infinity}];

ranks=MatrixRank[Join[Release[#]]]&/@subsets

pos=Position[ranks,687]//Flatten

basis={subsets[[pos[[1]]]]};
For[i=1,i≤Length[pos],i++,
If[VectorQ[basis,Intersection[#,subsets[[pos[[i]]]]]=!=Union[#]&],
AppendTo[basis,subsets[[pos[[i]]]]]
]
];

basis//ColumnForm