-- -*- M2-comint -*- hash: 582042087808947422

i1 : kk = ZZ/32003 --Our base field

o1 = kk

o1 : QuotientRing

i2 : R = kk[x_1 .. x_8]

o2 = R

o2 : PolynomialRing

i3 : M = genericMatrix(R,x_1,2,4) -- A generic 2x4 matrix in the x_i

o3 = | x_1 x_3 x_5 x_7 |
     | x_2 x_4 x_6 x_8 |

             2      4
o3 : Matrix R  <-- R

i4 : I = minors(2,M) -- The ideal of 2x2 minors of M

o4 = ideal (- x x  + x x , - x x  + x x , - x x  + x x , - x x  + x x , -
               2 3    1 4     2 5    1 6     4 5    3 6     2 7    1 8   
     ------------------------------------------------------------------------
     x x  + x x , - x x  + x x )
      4 7    3 8     6 7    5 8

o4 : Ideal of R

i5 : P5 = kk[p_0 .. p_5] -- The coordinate ring of PP^5

o5 = P5

o5 : PolynomialRing

i6 : f = map(R,P5, gens I) -- The Plücker map for GG(1,3)

o6 = map (R, P5, {- x x  + x x , - x x  + x x , - x x  + x x , - x x  + x x , - x x  + x x , - x x  + x x })
                     2 3    1 4     2 5    1 6     4 5    3 6     2 7    1 8     4 7    3 8     6 7    5 8

o6 : RingMap R <-- P5

i7 : J = saturate ker f -- The ideal of GG(1,3) in PP^3

o7 = ideal(p p  - p p  + p p )
            2 3    1 4    0 5

o7 : Ideal of P5

i8 : kk = ZZ/32003

o8 = kk

o8 : QuotientRing

i9 : pluckerIdeal = (k,n) -> (
       assert (k <= n);
       N := k*n; --number of variables in our generic matrix
       R := kk[x_1 .. x_N];
       M := genericMatrix(R,x_1,k,n); --the generic k-by-n matrix
       s := binomial(n,k) - 1; --the dimension of PP(Wedge^k(kk^n))
       Ps = kk[p_0 .. p_s];
       f := map(R,Ps, gens minors(k,M)); --the Plücker map
       J = saturate ker f) --the kernel of the Plücker map is the ideal we want

o9 = pluckerIdeal

o9 : FunctionClosure

i10 : pluckerIdeal(2,4)

o10 = ideal(p p  - p p  + p p )
             2 3    1 4    0 5

o10 : Ideal of Ps

i11 : Grassmannian(1,4)

o11 = ideal (p   p    - p   p    + p   p   , p   p    - p   p    + p   p   ,
              2,3 1,4    1,3 2,4    1,2 3,4   2,3 0,4    0,3 2,4    0,2 3,4 
      -----------------------------------------------------------------------
      p   p    - p   p    + p   p   , p   p    - p   p    + p   p   ,
       1,3 0,4    0,3 1,4    0,1 3,4   1,2 0,4    0,2 1,4    0,1 2,4 
      -----------------------------------------------------------------------
      p   p    - p   p    + p   p   )
       1,2 0,3    0,2 1,3    0,1 2,3

o11 : Ideal of ZZ[p   ..p   , p   , p   , p   , p   , p   , p   , p   , p   ]
                   0,1   0,2   1,2   0,3   1,3   2,3   0,4   1,4   2,4   3,4

i12 : grass = (k,n) -> flagBundle({k,n-k}) --In Schubert, we build Grassmannians as special cases

o12 = grass

o12 : FunctionClosure

i13 : G = grass(2,4) -- Our favorite GG(1,3)

o13 = G

o13 : a flag bundle with subquotient ranks {2:2}

i14 : (S,Q) = G.Bundles -- S is the universal subbundle, Q is the universal quotient bundle

o14 = (S, Q)

o14 : Sequence

i15 : S -- Schubert tells us that S is an abstract sheaf of rank 2

o15 = S

o15 : an abstract sheaf of rank 2 on G

i16 : Q -- And so is Q.

o16 = Q

o16 : an abstract sheaf of rank 2 on G

i17 : 
