# searchUlrich -- searching an Ulrich module of smallest possible rank

## Synopsis

• Usage:
Ulr = searchUlrich(M,S)
• Inputs:
• M, an instance of the type CliffordModule,
• S, a ring, a polynomial ring in x_0..y_{(g-1)},z_1,z_2,s,t
• Outputs:
• Ulr, , a module on S supported on x_0..y_{(g-1)},z_1,z_2

## Description

M is assumed to be a Clifford module with a Morita bundle F_u, i.e., associated to a maximal isotropic subspace u.

Let G be a coherent sheaf on a hyperelliptic curve E, and N be the corresponding module over CI=P/ideal(q1,q2). Using the Tate resolution of u in a complete intersection of 2 quadrics, one can compute the graded Betti numbers of N by the rank of cohomology groups of G twisted by the Morita bundle F_u. In particular, an Ulrich module on CI corresponds to a sheaf G on E such that G \otimes F_u is an Ulrich bundle on E.

From this perspective, Eisenbud and Schreyer conjectured that it is the case when G is a general vector bundle of rank \ge 2 of suitable degree.

searchUlrich looks for a candidate G of rank 2 on E and returns a module on S supported on a CI V(q_1,q_2) \subset PP^{2g+1}.

 i1 : kk=ZZ/101; i2 : g=2; i3 : rNP=randNicePencil(kk,g); i4 : S=rNP.qqRing; i5 : R=rNP.baseRing; i6 : qq=rNP.quadraticForm; i7 : qs=apply(2,i->diff(S_(2*g+2+i),qq)) 2 2 2 o7 = {x y + x y - z , 35x + 39x x - 40x - 13x y + 44x y + 39x y - 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 ------------------------------------------------------------------------ 2 37x y - 30x z + 42x z + 29y z + 48y z - 44z + x z - 43x z - 1 1 0 1 1 1 0 1 1 1 1 0 2 1 2 ------------------------------------------------------------------------ 2 6y z + 23y z + 31z z - 38z } 0 2 1 2 1 2 2 o7 : List i8 : Mu1=rNP.matFactu1; 8 8 o8 : Matrix S <--- S i9 : Mu2=rNP.matFactu2; 8 8 o9 : Matrix S <--- S i10 : M=cliffordModule(Mu1,Mu2,R) o10 = CliffordModule{...6...} o10 : CliffordModule i11 : elapsedTime Ulr = searchUlrich(M,S); -- 0.968326 seconds elapsed i12 : betti res Ulr 0 1 2 o12 = total: 8 16 8 0: 8 16 8 o12 : BettiTally i13 : ann Ulr == ideal qs o13 = true

## Caveat

searchUlrich uses the method randomLineBundle, so the ground field kk has to be finite.