#John Kim #Use whatever you like P = Primes() var('x1,x2,x3') var('x') #Definition of the function def multivariate_leading_term(f): Lst = [] L = list(f.iterator()) for i in L: Lst.append((i/i.substitute(x1=1,x2=1,x3=1)).substitute(x1=P.unrank(0),x2 =P.unrank(1),x3=P.unrank(2))) ind=Lst.index(max(Lst)) return L[ind] def Di(L): Diff=[] for i in range(len(L)-1): Diff.append(L[i+1]-L[i]) return Diff def IsPol(L): Diff=L for i in range(len(L)-4): Diff=Di(Diff) if set(Diff)==set([0]): return i return 'FAIL' def GuessPol(L): deg=IsPol(L) if deg=='FAIL': return 'FAIL' a=list(var('a_%d' % i) for i in range(deg+1)) P=sum(a[k]*x^k for k in range(deg+1)) eq=list(P.substitute(x=i)==L[i] for i in range(len(L))) sol=solve(eq,a,solution_dict=True) return P.substitute(sol[0])