--This package includes scripts for computations involving central --three arrangements, i.e. configurations of lines in the projective --plane. The first module consists of a pair of scripts for computations --involving the module of derivations of such an arrangement. All the --examples here may be found in survey paper of Suciu: math.AG/0010105. --Last modified to work with M2 version 0.9.2 --Supported in part by NSF grant DMS 0311996 --HKS --Examples: s0 = matrix{{1,0,0},{0,1,0},{0,0,1}} --the three coordinate lines. s1 = matrix{{1,0,0},{0,1,0},{0,0,1},{0,1,-1},{1,0,-1},{1,1,0},{1,1,-2}} --x2 s2 = matrix{{1,0,0},{0,1,0},{0,0,1},{0,1,-1},{1,0,-1},{1,-1,0},{1,1,-1}}--nonfano diag = (f) ->(R = ring f; map(R^{(rank target f):1}, R^(rank target f), (i,j) -> if i== j then f_(i,0) else 0)) --Take an n by 1 matrix, return the diagonal matrix. JAC = (l) -> (R:=QQ[w_0,w_1,w_2]; v := transpose vars R; forms := (l**R)*v; Q := matrix {{det diag forms}}; J := jacobian Q; map(R^{rank target l-2}, R^(rank source l), (i,j) -> J_(j,0))) --compute the Jacobian matrix. Grading is set to reflect the fact that --the euler derivation has degree 1. As input, expects a matrix whose --rows are the coefficients of the hyperplanes: --EXAMPLE s0 = matrix{{1,0,0},{0,1,0},{0,0,1}} --this gives the coordinate hyperplanes x, y, z. --JAC s0 yields as output the matrix | w_1w_2 w_0w_2 w_0w_1 | freeinfo = (M)->(SYM:=QQ[w_0,w_1,w_2]; v := transpose vars SYM; forms := M*v; Q := matrix {{det diag forms}}; J = jacobian Q; j = map(SYM^{rank target M-2}, SYM^(rank source M), (i,j) -> J_(j,0)); print "res of D^1_0(A)"; rj = res coker mingens kernel j; print betti rj; print rj.dd_0; print rj.dd_1; DA=prune kernel j) --Essentially the same as JAC, except prints out all the interesting --algebraic information. For example, it prints the betti diagram of --the free resolution, as well as the differentials. Grading convention --as in JAC. To see if arrangement is free, just --look at top row of betti diagram. If it is of form 1 n n-1, then --A is free. NOTICE: The module of derivations D(A) decomposes as --Euler derivation DIRECT SUM kernel jacobian; where Euler derivation is --isomorphic to R(-1). So we're only analyzing kernel jacobian in these --scripts. ----------------------------------------------------------------------------------- --Next scripts are for analyzing the cohomology ring, doing the BGG --correspondance, computing Ext modules, etc. Right now this is all --special to the case of 3 arrangements, since the resonance varieties --and Chen ranks only depends on the rank three restriction of the --arrangement. ds = (M)->(P:=M**(ZZ/101[z]); c := rank source P; r := rank target P; out={}; scan(c, i->(c1 = subsets(r,i+2); scan(c1,j->(c2 = submatrix(P,j,); if rank c2 < (i+2) then out = append(out,j))))); out) --ds takes a matrix, and returns a list of the dependent --sets. Rows are hyperplanes, so the OS algebra will have --variables = number of columns. Tested, works HKS. --stupid first line is 'cause rank command doesnt like ZZ. --ds can be called directly, but usually is called from inside --the AEij script. osbd = (L) -> (b1:=#L; b2:=reverse subsets(L,b1-1); b3:=0; b4:=vars R; scan(b1, i->( b3=b3+((-1)^i)*(det(diag transpose submatrix(b4,,b2#i),Strategy=>Cofactor)))); b3) --take a list, e.g. {1,2,3} and return the boundary map of the --corresponding monomial e.g. x_2*x_3-x_1*x_3+x_1*x_2. --Tested, works, HKS osbds = (M)->(I := ideal (matrix{{0}}**R); scan(M, i->(I = I + ideal osbd(i))); ideal mingens I) --Return the relations of the OS algebra. Input: list of dep triples. osbds2 = (M)->(t0=rank source vars R; s1=subsets(t0,4); I := ideal (matrix{{0}}**R); scan(s1, i->(I = I + ideal ((x_(i#1)*x_(i#2)*x_(i#3))-(x_(i#0)*x_(i#2)*x_(i#3))+(x_(i#0)*x_(i#1)*x_(i#3))-(x_(i#0)*x_(i#1)*x_(i#2))))); ideal mingens I) --For line arrangements in P^2, any quadruple is a dependent set. osalg = (M)->(t0=min mingle M; t1=max mingle M; S1= ZZ/31991[a_(t0)..a_(t1)]; S = frac S1; R=S[x_(t0)..x_(t1),SkewCommutative=>true]; J = (osbds M)+(osbds2 M); --print transpose gens J; R/J) --return the OS algebra for a hyperplane arrangement. --This expects matroid input, and throws in --the AUTOMATIC dependencies of which correspond to --truncating down to a LINE arrangement in P^2. qosalg = (M)->(t1=(rank target M)-1; S1= ZZ/3[a_0..a_(t1)]; S = frac S1; R=S[x_0..x_(t1),SkewCommutative=>true]; J = osbds M; qJ = super basis (2, J); print transpose qJ; R/ideal qJ) --return the quadratic OS algebra for a hyperplane arrangement. AEij = (M,i,j,p)->(t0=min mingle M; t1=max mingle M; R=ZZ/p[x_(t0)..x_(t1),SkewCommutative=>true]; OS = mingens osbds(M); u3 = res (coker OS, DegreeLimit=>i, LengthLimit=>j); print "Resolution of OS over E"; print betti u3) --THIS IS FIRST MAIN SCRIPT: Compute the resolution of the Orlik-Solomon --algebra A over the exterior algebra E and quadratic OS over E. Input --parameters are: --M a matroid of the dependent sets --i a bound on the degree of the syzygies computed --j a bound on the length of the resolution (res of A over E is INFINITE) --p the characteristic of the ground field. --EXAMPLE-- --typing ds s4 returns a list of the form --{{1, 2, 3}, {0, 2, 4}, {0, 1, 5}, {3, 4, 6}, {2, 5, 6}, {0, 1, 2, 3}.... --reflecting the fact that the hyperplanes (whose actual equations are --given by the s4 matrix) have e.g. hyperplanes {0, 2, 4} intersecting in --codimension two, etc. This is the matroid data, which gets fed into AEij. --for example, entering the command --AEij(ds s4, 4,4, 31991) --yields output --Resolution of OS over E --total: 1 5 25 91 255 -- 0: 1 . . . . -- 1: . 5 10 15 20 -- 2: . . 15 76 235 --reflecting the fact that A is a quotient of E by an ideal generated by 5 quadrics, --with 10 linear syzygies and 15 quadratic syzygies on those generators, etc..... kAij = (M,i,j,p)->(t0=min mingle M; t1=max mingle M; R=ZZ/p[x_(t0)..x_(t1),SkewCommutative=>true]; OS = mingens osbds(M); R1=R/ideal OS; rout = res (coker vars R1, DegreeLimit=>i, LengthLimit=>j); print "Resolution of k over OS"; print betti rout) --Same script as above, except computes the resolution of the residue field --k over the Orlik-Solomon algebra A ------------------------------------------------------------------------------------------ --The above are the basic commands for the cohomology ring. Next portion --is for the BGG correspondence. oshom = (M)->(A=osalg M; out={}; t4=4; --THIS IS SPECIAL FOR line arrangements in P^2. f = map(A^1,A^{-1},(vars R * transpose vars S1)**A); scan(t4, i->(out=append(out, entries inducedMap(image super basis(i+1,target f), image super basis(i+1,source f), f)))); out) --this version of oshom returns a list of lists, with the ith element --the list version of the matrix from OS_i->OS_{i+1} EPY = (M)->(osmaps = oshom M; zs1 = ideal (matrix{{0}}**S1); zs2 = ideal (matrix{{1}}**S1); out={}; s = map(S,A,vars S); sprime = map(S1,S,vars S1); f0=sprime(s(matrix osmaps#2)); FA = coker f0**S1^{3}) --This script computes the maps in the Eisenbud-Popescu-Yuzvinsky --complex of Corollay 3.2 of their paper (Transactions of the A.M.S., 2003). --FOR LINE ARRANGEMENTS in P^2. The output FA is the cokernel --of f0, and the d_1 differential is called f1. R1info = (M)->(A1 = EPY(M); E2 = Ext^2(A1,S1); print "Components of the resonance variety"; P = primaryDecomposition annihilator E2; scan(P, i->(print i, print hilbertPolynomial coker gens i))) --this script computes the components (and Hilbert Polynomials) of the resonance --varieties. For example, the braid arrangement corresponds to a graphic arrangement --of a complete graph. The arrangement of 6 hyperplanes in P^2 corresponding to K4 --has 4 local components to resonance, and one non-local component, corresponding to --the 2 extra linear first syzygies. --the command "R1info K4" produces output --Components of the resonance variety -- --ideal (a , a , a , a + a + a ) -- 5 2 1 0 3 4 --P -- 1 --ideal (a , a + a + a , a , a ) -- 4 2 3 5 1 0 --P -- 1 --ideal (a , a , a , a + a + a ) -- 5 4 3 0 1 2 --P -- 1 --ideal (a , a , a + a + a , a ) -- 3 2 1 4 5 0 --P -- 1 --ideal (a + a + a , a - a , a + a + a , a - a ) -- 3 4 5 2 4 1 4 5 0 5 --P -- 1 --the command "AEij(K4, 4,4,31991)" produces output --Resolution of OS over E --total: 1 4 10 21 45 -- 0: 1 . . . . -- 1: . 4 10 15 20 -- 2: . . . 6 25 --the key idea of BGG is that the 10 in the resolution "is" 5*2, where 5 is the number of --projective lines (P_1) in the first resonance variety. For more, see Schenck/Suciu, math.AC/0502438 ----------EXAMPLES (all are dependent sets of matroids--IF USER wishes to input actual----------- -------------------equations, it is necessary to convert them using the ds script---------------- -------------------these examples all appear in the survey paper of Suciu: math.AG/0010105------- K4= {{0,1,2},{0,3,4},{2,3,5},{1,4,5}}|subsets({0,1,2,3,4,5},4) x3={{0,2,4},{1,2,5},{3,4,5}}|subsets({0,1,2,3,4,5},4) x2={{1,3,6},{2,4,5},{0,1,2},{0,3,4},{0,5,6}}|subsets({0,1,2,3,4,5},4) nonfano={{1, 2, 3}, {0, 2, 4}, {0, 1, 5}, {3, 4, 5}, {0, 3, 6}, {1, 4, 6}}|subsets({0,1,2,3,4,6},4) B3 = {{0,3,6},{1,4,6},{0,1,8},{3,4,8},{1,2,3},{1,2,5},{1,3,5},{0,2,4},{0,2,7},{0,4,7},{5,6,7},{5,6,8},{5,7,8}}