Prob #1 with(plots): Diag:=proc(a,b) local i,P,Q,R,PQ,curve,Points,Labels: P:=RP(a,b): Q:=RP(a,b): R:=simplify(AE(a,b,P,P)): PQ:=simplify(AE(a,b,R,R)): curve:=implicitplot(y^2=x^3+a*x+b): Points:=plot([P,Q,R,PQ], style=point, color=blue, symbol=solid circle, symbol size=12): Labels:=textplot([[P[],"A"],[Q[],"B"],[R[],"C"],[PQ[],"A+B"]], font=[times,16], align={left,above}): display(curve,Points,Labels): end: Prob #2 IntSol:=proc(a,b,K) local x,y,S: S:={}: for x from -K to K do y:=sqrt(x^3+a*x+b): if type(y,integer) then S:=S union {[x,y]}: fi: od: S: end: Test run a:=1: b:=2: IntSol(a,b,10000); {[-1, 0], [1, 2]} a:=2: b:=2: IntSol(a,b,10000); {} a:=2: b:=3: IntSol(a,b,10000); {[-1, 0], [3, 6]} Prob #3 SolChain:=proc(a,b,S1,S2,K) local L,i: L:=[S1,S2]: for i from 1 to K do L := [op(L), AddE(a,b,L[-2],L[-1])]: od: L: end: Test run Cannot get infinite solutions this way a:=2: b:=3: P,Q := op(IntSol(a,b,1000)); L1:=SolChain(a,b,P,Q,10); L2:=SolChain(a,b,P,Q,100); L1 minus L2; P, Q := [-1, 0], [3, 6] / [-193101 -53536482] [1 -15] L1 := { [-1, 0], [3, 6], [-------, ---------], [-, ---], \ [207025 94196375 ] [4 8 ] [599 -15420]\ [---, ------] } [121 1331 ]/ / [-193101 -53536482] [1 -15] L2 := { [-1, 0], [3, 6], [-------, ---------], [-, ---], \ [207025 94196375 ] [4 8 ] [599 -15420]\ [---, ------] } [121 1331 ]/ {} a:=2: b:=3: P:=RP(a,b); Q:=RP(a,b); L1:=SolChain(a,b,P,Q,20): L2:=SolChain(a,b,P,Q,30): L1 minus L2; [81 5151441^ (1/2)] P := [---, ---- ] [100 1000 ] [183 3 (1420943)^ (1/2)] Q := [--- , ---- ] [100 1000 ] {}