Skip to content

Commit

Permalink
add skew-symm matrix Schuberts
Browse files Browse the repository at this point in the history
  • Loading branch information
mgacummings committed Jun 2, 2024
1 parent c616b00 commit f5950a4
Showing 1 changed file with 76 additions and 4 deletions.
80 changes: 76 additions & 4 deletions benchmarkIdeals.m2
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,6 @@ time radical(I, Strategy=>CompleteIntersection);
-- approx. avg. time for Strategy=>CompleteIntersection: at most 0.001s





restart


Expand Down Expand Up @@ -69,7 +66,82 @@ time radical I


------------------------------------------------------------------------------------------
-- kernel of a map from a polynomial ring k[x_1..x_n] to a ring of the form
-- Skew-symmetric matrix Schubert varieties are exactly matrix Schubert varieties
-- with the underlying generic matrix replaced by a generic skew-symmetric matrix.
-- The ideal constructed in this way is in general not radical.
-- Reference: Eric Marberg and Brendan Pawlowski. Groebner geometry for skew-symmetric
-- matrix Schubert varieties.
------------------------------------------------------------------------------------------

-- two remarks:
-- 1) skew-symmetric matrix Schuberts only make sense for permutations that are
-- fixed-point-free involutions, defined in the method isFPFInv
-- 2) there are no fixed-point-free involutions in S_n for odd n, so we restrict to even n

restart

needsPackage "MatrixSchubert"

isFPFInv = w -> (
-- returns true iff the permutation w (a list) is a Fixed-Point-Free Involution
-- def: w is fixed-point-free iff w(i) never equals i
-- def: w is an involution iff w^2 = id
-- so w is a fixed-point-free involution if its permutation matrix is symmetric with 0's on the diagonal
n := #w;
wMatrix := map(ZZ^n, n, (i,j) -> if w#j == i+1 then 1 else 0);

(wMatrix == transpose wMatrix) and not any(w, i -> i == w#(i-1))
)


skewSymmEssentialSet = w -> (
-- the usual essential set, but only the (i, j) for which i < j
D := select(rotheDiagram w, L -> (L_0 < L_1)); -- the skew-symmetric diagram
select(D, L -> ( not( isMember((L_0+1, L_1), D) or isMember((L_0, L_1+1), D) )))
)


skewSymmDetIdeal = (R, w) -> (
-- returns the skew-symmetric matrix Schubert determinantal ideal
-- the radical of this ideal defines the skew-symmetric matrix Schubert variety

n := #w;
M := genericSkewMatrix(R, n);

-- get the essential set and re-index
essSet := apply(skewSymmEssentialSet w, L -> (L_0 - 1, L_1 - 1));

-- find the determinantal ideal
ranks := rankTable w;
ideal apply(essSet, L -> (
row := L_0;
col := L_1;
r := ranks_(row, col);

minors(r+1, M^(toList(0..row))_(toList(0..col)))
)
)
)


R = QQ[x_1..x_100];
n = 8; -- n must be even
Sn = permutations toList (1..n);
fpfInvs = select(Sn, isFPFInv);

for w in fpfInvs do (
I := skewSymmDetIdeal(R, w);
time radical(I, Strategy=>Decompose);
)


-- avg. approx. time for Strategy=>Decompose: most are a fraction of a second (between 0.1s and 0.5s), some are quicker, a couple are 20-30s
-- assumptions not met for CompleteIntersection method



------------------------------------------------------------------------------------------
-- KERNEL of a map from a polynomial ring k[x_1..x_n] to a ring of the form
-- k[t^S, x^[p]], where S is a numerical semigroup and x^[p] is the ideal of pth-powers
-- of some variables
------------------------------------------------------------------------------------------
Expand Down

0 comments on commit f5950a4

Please sign in to comment.