# SageMath code for working with elliptic curve 1728.k1


# Define the curve: 
E = EllipticCurve([0, 0, 0, -108, 1296])

# Torsion subgroup: 
E.torsion_subgroup().gens()

# Integral points: 
E.integral_points()

# Conductor: 
E.conductor().factor()

# Discriminant: 
E.discriminant().factor()

# j-invariant: 
E.j_invariant().factor()

# Rank: 
E.rank()

# Regulator: 
E.regulator()

# Real Period: 
E.period_lattice().omega()

# Tamagawa numbers: 
E.tamagawa_numbers()

# Torsion order: 
E.torsion_order()

# Order of Sha: 
E.sha().an_numerical()

# Special L-value: 
r = E.rank();
E.lseries().dokchitser().derivative(1,r)/r.factorial()

# q-expansion of modular form: 
E.q_eigenform(20)

# Modular degree: 
E.modular_degree()

# Local data: 
E.local_data()

# mod p Galois image: 
rho = E.galois_representation(); [rho.image_type(p) for p in rho.non_surjective()]

# p-adic regulator: 
[E.padic_regulator(p) for p in primes(5,20) if E.conductor().valuation(p)<2]