clear;
q:=RandomPrime(50);
Fq:=GF(q);
a:=Random(Fq); b:=Random(Fq);
E:=EllipticCurve([Fq|a,b]);
F<x,y>:=FunctionField(E);

DBL:=function(P);
	xP:=P[1]; yP:=P[2];
	lambda:=(3*xP^2+a)/(2*yP); 
	nu:=yP-lambda*xP;
	return F!(y-(lambda*x+nu));
end function;

ADD:=function(P,Q);
	xP:=P[1]; yP:=P[2];
	xQ:=Q[1]; yQ:=Q[2];
	lambda:=(yQ-yP)/(xQ-xP);
	nu:=yP-lambda*xP;
	return F!(y-(lambda*x+nu));
end function;

P:=Random(E); Q:=Random(E); R:=Random(E);

l:=ADD(P,Q);
Support(Divisor(l));

ld:=DBL(R);
Support(Divisor(ld));

lquot:=l/ld;
Support(Divisor(lquot));



