function Max(x)
max := 0; L := [];
for i := 1 to x do
P2<x,y,z> := ProjectiveSpace(Rationals(),2);
C_i := Curve(P2, x^3+y^3-i*z^3);
E_i, C_itoE_i := EllipticCurve(C_i);
gen := Generators(E_i);
if max eq #gen then
max := #gen;
end if;
end for;
return max;
end function;
Когда я запускаю это (Max(100)) он говорит мне, что max = 0. Однако я знаю, что #gen = 1 и 2 в разных местах и, следовательно, #gen > 0. У меня возникли трудности с локализацией max. Он считает max вне операторов if и for отличным от max внутри операторов for и if и, таким образом, не обновляет max. Я не уверен, как в синтаксисе magma CAS я могу исправить это. Может ли кто-нибудь помочь мне понять синтаксис Magma в отношении этого аспекта? Я попытался поставить локальный макс; внутри цикла и операторов if, но дал мне синтаксическую ошибку.