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/i311mod32ns.txt"];

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

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

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

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

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

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

id4bstep1[a_,b_,c_,d_,e_,f_] := I311[a,b,c,d,e,f] - I311[f,c,b,d,e,a]
id4bstr[a_,b_,c_,d_,e_,f_] := id4bstep1[a,b,c,d,e,f] + id4bstep1[a,b,c,e,d,f]

id5unstr[a_,b_,c_,d_,e_,f_] := I311[a,b,c,d,e,f]+I311[a,c,e,f,d,b]+I311[a,d,f,c,b,e]+I311[a,e,c,f,b,d]+I311[a,f,d,c,e,b];

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

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

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

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

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

id4bstrtbl = id4bstr@@@Permutations[{a,b,c,d,e,f}]/.I311->lookupI311//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id5unstrtbl = id5unstr@@@Permutations[{a,b,c,d,e,f}]/.I311->lookupI311//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

id5bunstrtbl = id5bunstr@@@Permutations[{a,b,c,d,e,f}]/.I311->lookupI311//Union//RowReduce//DeleteCases[#,el_/;VectorQ[el,#==0&]]&;

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

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

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

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

Length/@{id2tbl,id2btbl,id4strtbl,id4bstrtbl, id5unstrtbl, id5bunstrtbl,id8strtbl}

Join[gpns,id2tbl,id2btbl,id4strtbl,id4bstrtbl, id5unstrtbl, id5bunstrtbl, id8strtbl]//MatrixRank

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

subsets = Subsets[Hold[id2tbl,id2btbl,id4strtbl,id4bstrtbl, id5unstrtbl, id5bunstrtbl,id8strtbl], {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

basis//ColumnForm