# randomLineBundle -- a random line bundle on the hyperelliptic curve

## Synopsis

• Usage:
L=randomLineBundle(f)
Ld=randomLineBundle(d,f)
• Inputs:
• f, , the hyperelliptic branch equation of a CliffordModule.
• d, an integer,
• Outputs:

## Description

Chooses a random line bundle on the hyperelliptic curve E of genus g given by the equation y^2-(-1)^{g}*f, where f is the branch equation of degree (2g+2). Input with an integer d gives a random line bundle of degree d on E.

Note that a line bundle on E is given by the y-action which is represented by a traceless 2x2 matrix

b c

a -b

whose determinant equals to (-1)^{g}*f. We find such a matrix over a finite ground field by picking randomly b, a homogeneous form of degree (g+1), since the binary form b^2 + (-1)^{g}*f frequently factors.

 i1 : kk=ZZ/101; i2 : g=1; i3 : rNP=randNicePencil(kk,g); i4 : cM=cliffordModule(rNP.matFact1,rNP.matFact2,rNP.baseRing); i5 : f=cM.hyperellipticBranchEquation 3 2 2 3 4 o5 = - 12s t - 50s t - 16s*t + 47t o5 : kk[s, t] i6 : L=randomLineBundle(f) o6 = VectorBundleOnE{...1...} o6 : VectorBundleOnE i7 : degOnE L o7 = -1 i8 : m=L.yAction o8 = {-2} | 39s2+21st+34t2 44s3-34s2t+7st2+2t3 | {-1} | 32s+t -39s2-21st-34t2 | 2 2 o8 : Matrix (kk[s, t]) <--- (kk[s, t]) i9 : (m)^2_(0,0)+(-1)^g*f==0 o9 = true i10 : L0=randomLineBundle(0,f) o10 = VectorBundleOnE{...1...} o10 : VectorBundleOnE i11 : degOnE L0 o11 = 0 i12 : orderInPic L0 o12 = 37

## Caveat

The ground field kk has to be finite.

• vectorBundleOnE -- creates a VectorBundleOnE, represented as a matrix factorization
• VectorBundleOnE -- vector bundle on a hyperelliptic curve E
• degOnE -- degree of a vector bundle on E
• orderInPic -- order of a line bundle of degree 0 in Pic(E)

## Ways to use randomLineBundle :

• "randomLineBundle(RingElement)"
• "randomLineBundle(ZZ,RingElement)"

## For the programmer

The object randomLineBundle is .