=begin # sample-geometry07.rb require "algebra" R = MPolynomial(Rational) m, b, a = R.vars("mba") K = LocalizedRing(R) a0, b0, m0 = K[a], K[b], K[m] M = SquareMatrix(K, 3) l0, l1, l2 = M[[0, 1, 0], [1, 1, -1], [1, 0, 0]] m4 = M[[a0, 1, -a0], [1, b0, -b0], [m0, -1, 0]] m40 = m4.dup; m40.set_row(0, l0) m41 = m4.dup; m41.set_row(1, l1) m42 = m4.dup; m42.set_row(2, l2) def mdet(m, i) i = i % 3 m.minor(i, 2).determinant * (-1) ** i end def tris(m, i) pts = [0, 1, 2] - [i] (m.determinant)**2 / mdet(m, pts[0]) / mdet(m, pts[1]) end u0 = (tris(m4, 0) - tris(m40, 0)).numerator u1 = (tris(m4, 1) - tris(m41, 1)).numerator u2 = (tris(m4, 2) - tris(m42, 2)).numerator puts [u0, u1, u2] puts [u0, u1, u2].each do |um| p um.factorize end puts x = u0 / a / (m*b+1) y = u1 / (m+a) / (b-1) z = u2 / (-b*a+1) p x p y p z puts gb = Groebner.basis([x, y, z]) puts gb puts gb.each do |v| p v.factorize end #(-1)(-mb + m + ba^3 + ba^2 - ba - a^2) #(-1)(-ma + m + ba^2 - a^2) #(-1)(b + a - 1)(-ba + 1)(a) #(-1)(-ba + 1)(a)(a^2 + a - 1) # => a = -1/2 + \sqrt{5}/2 ((<_|CONTENTS>)) =end