pivots[A_]:=Flatten[FirstPosition[1]/@Transpose[A]]

pMatrix[n_]:=Table[
Which[i==2&&j==1||i==1&&j==2,-1/2,
i==j&&i>2,1,
True,0],{i, n},{j,n}]

gramMatrix[W_]:=Simplify[Transpose[W].pMatrix[Length[W]].W]

linearRelationsMatrix[G_]:=RowReduce[G][[1;;MatrixRank[G]]]//Transpose

linearRelations[L_]:=Select[
Table[Equal[(Subscript[b, i]),L[[i]].Table[(Subscript[b, i]),{i,pivots[L]}]],{i,Length[L]}],Not[BooleanQ[#]]&]

linearRelationsFromW=linearRelations@*linearRelationsMatrix@*gramMatrix;

inverseLinearRelations[G_]:=Table[If[i==#,1,0],{i,Length[G[[1]]]}]&/@Flatten[FirstPosition[#,1]&/@(RowReduce[G]//Select[Not[AllTrue[#,#==0&]]&])]

quadraticFormMatrix[G_,L_]:=Inverse[Table[G[[i, j]],{i,pivots[L]},{j,pivots[L]}]]

quadraticForm[Q_,L_]:=Module[{v=Table[(Subscript[b, i]),{i,pivots[L]}]},Simplify[v.Q.v==0]]

quadform[W_]:=Module[{G=gramMatrix[W]},Module[{L=linearRelationsMatrix[G]},quadraticForm[quadraticFormMatrix[G,L],L]]]

quadformFromG[G_]:=Module[{L=linearRelationsMatrix[G]},quadraticForm[quadraticFormMatrix[G,L],L]]

getAlphasFromGext[Gext_,n_]:=Gext[[n+1;;-1,1;;n]]

generators[Gext_,n_]:=Block[{alphas,BigQ,G,Q,L,Li},
alphas=getAlphasFromGext[Gext,n];
G=Gext[[1;;n,1;;n]];
L=linearRelationsMatrix[G];
Q=quadraticFormMatrix[G,L];
Li=inverseLinearRelations[G];
BigQ=Transpose[Li].Q.Li;
alphas=Table[{#}&/@alpha,{alpha,alphas}];
(IdentityMatrix[n]-2(#.Transpose[#]).BigQ)&/@alphas]

G=gramMatrix[W]

sigmas=findGeneratorsFromG[G]

MatrixForm[L=linearRelationsMatrix[G]]

MatrixForm[Li=inverseLinearRelations[G]]

L.Li.{-1,2,4,10,12,15}

L.Li//MatrixForm

Li.L//MatrixForm

sigmas=generators[({{1, -1, -1, -1, -1, -3, 0, 0, 0, -2Sqrt[2], -2Sqrt[2], 0, -2Sqrt[2], -2Sqrt[2]}, {-1, 1, -1, -3, -1, -1, 0, -2Sqrt[2], -2Sqrt[2], -2Sqrt[2], 0, 0, -2Sqrt[2], 0}, {-1, -1, 1, -1, -3, -1, 0, -2Sqrt[2], 0, 0, 0, -2Sqrt[2], -2Sqrt[2], -2Sqrt[2]}, {-1, -3, -1, 1, -1, -1, -2Sqrt[2], 0, 0, 0, -2Sqrt[2], -2Sqrt[2], 0, -2Sqrt[2]}, {-1, -1, -3, -1, 1, -1, -2Sqrt[2], 0, -2Sqrt[2], -2Sqrt[2], -2Sqrt[2], 0, 0, 0}, {-3, -1, -1, -1, -1, 1, -2Sqrt[2], -2Sqrt[2], -2Sqrt[2], 0, 0, -2Sqrt[2], 0, 0}, {0, 0, 0, -2Sqrt[2], -2Sqrt[2], -2Sqrt[2], 1, -3, -1, -3, -1, -1, -5, -3}, {0, -2Sqrt[2], -2Sqrt[2], 0, 0, -2Sqrt[2], -3, 1, -1, -3, -5, -1, -1, -3}, {0, -2Sqrt[2], 0, 0, -2Sqrt[2], -2Sqrt[2], -1, -1, 1, -1, -3, -3, -3, -5}, {-2Sqrt[2], -2Sqrt[2], 0, 0, -2Sqrt[2], 0, -3, -3, -1, 1, -1, -5, -1, -3}, {-2Sqrt[2], 0, 0, -2Sqrt[2], -2Sqrt[2], 0, -1, -5, -3, -1, 1, -3, -3, -1}, {0, 0, -2Sqrt[2], -2Sqrt[2], 0, -2Sqrt[2], -1, -1, -3, -5, -3, 1, -3, -1}, {-2Sqrt[2], -2Sqrt[2], -2Sqrt[2], 0, 0, 0, -5, -1, -3, -1, -3, -3, 1, -1}, {-2Sqrt[2], 0, -2Sqrt[2], -2Sqrt[2], 0, 0, -3, -3, -5, -3, -1, -1, -1, 1}}),6]

Print[MatrixForm[#]]&/@sigmas;

sigmas[[5]].{2,2,7,4,-1,4}

allData[G_]:={quadformFromG[G],linearRelations[linearRelationsMatrix[G]]}

Not my code; no clue how it works

nextCandidate[s_,t_,adj_]:=Block[{length,pos},length=Length[adj];
pos=Mod[Position[adj,s][[1,1]]+1,length,1];
{t,adj[[pos]]}];

FindFace[g_?PlanarGraphQ]:=Block[{emb},emb=GraphEmbedding[g,"PlanarEmbedding"];
FindFace[g,emb]];

FindFace[g_?PlanarGraphQ,emb_]:=Block[{m,orderings,pAdj,rightF,s,t,initial,face},m=AdjacencyMatrix[g];
Table[pAdj[v]=SortBy[Pick[VertexList[g],m[[v]],1],ArcTan@@(emb[[v]]-emb[[#]])&],{v,VertexList[g]}];
rightF[_]:=False;
Reap[Table[If[!rightF[e],s=e[[1]];
t=e[[2]];
initial=s;
face={s};
While[t=!=initial,rightF[UndirectedEdge[s,t]]=True;
{s,t}=nextCandidate[s,t,pAdj[t]];
face=Join[face,{s}];];
Sow[face];],{e,EdgeList[g]}]][[2,1]]]

MatrixForm[W=({{2, 2, -1, 7, 4, 4}, {0, 0, 1, 1, 2, 2}, {0, 0, 0, 2Sqrt[2], 2Sqrt[2], 2Sqrt[2]}, {1, -1, 0, 0, 1, -1}})]

bt=2(2+Sqrt[3])
b=1/(2+Sqrt[3])

W = ({{2, 2, 2, 2, 2, 2, 2, 2, bt, bt, bt, bt, bt, bt, bt, bt}, {1, 1, 1, 1, 1, 1, 1, 1, b, b, b, b, b, b, b, b}, {1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1}, {1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1}, {1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1}})

b=.;bt=.

MatrixForm[G=gramMatrix[W]]

linearRelationsMatrix[G]//pivots

linearRelationsMatrix[G]//linearRelations//Column

(Q=quadraticFormMatrix[G,linearRelationsMatrix[G]])//MatrixForm

quadraticForm[Q,linearRelationsMatrix[G]]

Table[G[[i,j]],{i,pivots[linearRelationsMatrix[G]]},{j,pivots[linearRelationsMatrix[G]]}]//MatrixForm

quadform[W]//Expand

AdjacencyGraph[If[#==-1,1,0]&/@#&/@G]

quadformFromG[G]

(Subscript[G, triangular bipyramidal])=({{1, -1, -1, -1, -7}, {-1, 1, -1, -1, -1}, {-1, -1, 1, -1, -1}, {-1, -1, -1, 1, -1}, {-7, -1, -1, -1, 1}})

quadformFromG[(Subscript[G, triangular bipyramidal])]

linearRelations[linearRelationsMatrix[(Subscript[G, triangular bipyramidal])]]//Column

(Subscript[G, 6v7f2])=({{1, -1, -5, -1, -1, -1}, {-1, 1, -1, -1, -5, -1}, {-5, -1, 1, -1, -7, -1}, {-1, -1, -1, 1, -1, ((-5)/3)}, {-1, -5, -7, -1, 1, -1}, {-1, -1, -1, ((-5)/3), -1, 1}})

quadformFromG[(Subscript[G, 6v7f2])]

linearRelations[linearRelationsMatrix[(Subscript[G, 6v7f2])]]//Column

quadformFromG[({{1, -1, -1, -1}, {-1, 1, -1, -1}, {-1, -1, 1, -1}, {-1, -1, -1, 1}})]

(Subscript[G, hexagonal pyramid])=({{1, -1, -5, -7, -5, -1, -1}, {-1, 1, -1, -5, -7, -5, -1}, {-5, -1, 1, -1, -5, -7, 1}, {-7, -5, -1, 1, -1, -5, -1}, {-5, -7, -5, -1, 1, -1, -1}, {-1, -5, -7, -5, -1, 1, -1}, {-1, -1, -1, -1, -1, -1, 1}})

allData[(Subscript[G, hexagonal pyramid])][[1]]//Expand

allData[(Subscript[G, hexagonal pyramid])][[2]]//Column

W=({{2, 2, -1, 7, 4, 4}, {0, 0, 1, 1, 2, 2}, {0, 0, 0, 2Sqrt[2], 2Sqrt[2], 2Sqrt[2]}, {1, -1, 0, 0, 1, -1}})

G=gramMatrix[W];

G

G=({{1, -3, -1, -3, -1, -1, -5, -3}, {-3, 1, -1, -3, -5, -1, -1, -3}, {-1, -1, 1, -1, -3, -3, -3, -5}, {-3, -3, -1, 1, -1, -5, -1, -3}, {-1, -5, -3, -1, 1, -3, -3, -1}, {-1, -1, -3, -5, -3, 1, -3, -1}, {-5, -1, -3, -1, -3, -3, 1, -1}, {-3, -3, -5, -3, -1, -1, -1, 1}})

linearRelationsMatrix[G]//MatrixForm

g=PlanarGraph[AdjacencyGraph[If[#==-1,1,0]&/@#&/@G,VertexLabels->"Name"]]

faces=FindFace[g]

findGenerators[faces_,vertices_,G_]:=Table[Block[{face,otherVertex,verticesOnFace,allVertices,Gp,P,Gnew,L,Q,Qform,sol1,sol2,sols,coeff,coeffTable,small,Li,P2},
face=faces[[i]];
verticesOnFace=Sort[RandomSample[face,3]];
otherVertex=RandomChoice[Select[vertices,Not[MemberQ[face,#]]&]];
allVertices=Append[verticesOnFace,otherVertex];
P=Transpose[IdentityMatrix[Length[vertices]][[#]]&/@DeleteDuplicates[Join[allVertices,vertices]]];
Gnew=Transpose[P].G.P;
L=linearRelationsMatrix[Gnew];
Gp=Table[G[[i,j]],{i,allVertices},{j,allVertices}];
Q=Inverse[Gp];
Qform=(#.Q.#&[Table[(Subscript[b, j]),{j,allVertices}]])==0;
sols=Expand[FullSimplify[Total[#[[1]][[2]]&/@Solve[Qform,(Subscript[b, otherVertex])]]]];
coeff=Table[sols/.Table[(Subscript[b, i])->If[i==curr,1,0],{i,allVertices}],{curr,allVertices}];
small=IdentityMatrix[Length[allVertices]];
small[[-1]]=Table[If[j==4,-1,If[MemberQ[verticesOnFace,allVertices[[j]]],coeff[[j]],0]],{j,Length[allVertices]}];
Li=Table[Table[If[j==k,1,0],{j,Length[vertices]}],{k,allVertices}];
P2=Table[If[j==k,1,0],{j,Length[vertices]},{k,DeleteDuplicates[Join[allVertices,vertices]]}];
P2.L.small.Li
],{i,Length[faces]}]

findGeneratorsFromG[G_]:=findGenerators[FindFace[PlanarGraph[AdjacencyGraph[If[#==-1,1,0]&/@#&/@G,VertexLabels->"Name"]]],Range[Length[G]],G]

Print[MatrixForm[#]]&/@findGeneratorsFromG[G]