from sage.all import PolynomialRing, ZZ

pr = PolynomialRing(ZZ, ('a', 'b', 'X1', 'X2', 'Y1', 'Y2'), 6)
a, b, X1, X2, Y1, Y2 = pr.gens()
ZZ1, ZZZ1, ZZ2, ZZZ2 = 1, 1, 1, 1
b2 = 2 * b
b4 = 4 * b
half = 1 / 2
Z1, Z2 = 1, 1
formula = {}
ZZ1 = Z1 ** 2
formula['ZZ1'] = ZZ1
ZZZ1 = Z1 * ZZ1
formula['ZZZ1'] = ZZZ1
ZZ2 = Z2 ** 2
formula['ZZ2'] = ZZ2
ZZZ2 = Z2 * ZZ2
formula['ZZZ2'] = ZZZ2
A = X1 * ZZ2
formula['A'] = A
t0 = X2 * ZZ1
formula['t0'] = t0
B = t0 - A
formula['B'] = B
c = Y1 * ZZZ2
formula['c'] = c
t1 = Y2 * ZZZ1
formula['t1'] = t1
d = t1 - c
formula['d'] = d
e = B ** 2
formula['e'] = e
f = B * e
formula['f'] = f
g = A * e
formula['g'] = g
h = Z1 * Z2
formula['h'] = h
t2 = 2 * g
formula['t2'] = t2
f2g = t2 + f
formula['f2g'] = f2g
t3 = d ** 2
formula['t3'] = t3
X3 = t3 - f2g
formula['X3'] = X3
Z3 = B * h
formula['Z3'] = Z3
gx = g - X3
formula['gx'] = gx
t4 = c * f
formula['t4'] = t4
t5 = d * gx
formula['t5'] = t5
Y3 = t5 - t4
formula['Y3'] = Y3
