# Homework 17 Pat Devlin.  25-March-2012. #

# ***
#
###       I would like this assignment to be private      ###
#   (It should work, but it seems to have some minor bug)   #
# ***



P=Primes()
var('x1,x2,x3')

# 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)))
	return L[Lst.index(max(Lst))]
	


def Di(L):
	Lst = []
	for i in range(1, len(L)):
		Lst.append(L[i]-L[i-1])
	return Lst
	


def IsPol(L):
	L1=L
	for k in range(1, len(L)-1):
		L1=Di(L1)
		if set(L1)==set([0]):
			return k-1
	
	return "FAIL"
	

def GuessPol(L, x):
	n = IsPol(L)
	if (n == "FAIL"):
		return "FAIL"
	
	A = list(var('a_%d' % i) for i in range(n+1))
	P=0
	for i in range(len(A)):
		P+=(x**i) * A[i]
	
	eqns = list(L[i] == P.substitute(x=i) for i in range(len(L)))
	s = solve(eqns, A)
	if(s == []):
		return "FAIL"
	return P.substitute(s)

