Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: LogicPuzzle
Views: 134
EX7.<P,Q,R,S,V,W> = BooleanPolynomialRing(6,order='lex') load('ProbRecurse.py') load('Prob.py') import numpy Prob(0) Prob(1) Prob(P*Q*R) # P and Q and R Prob(P*Q + P + Q) # P or Q Prob(P*Q + P + 1) # if P then Q Prob(P + Q) # P xor Q Prob(P + Q + R) # P xor Q xor R Prob(P + Q + R + S) # etc Pr1 = (P + R + P*R)*(P + Q + P*Q) # premise 1 of exercise 7 Pr2 = 1 + Q*R + Q*R*(1 + V + V*W) # premise 2 of exercise 7 Pr3 = 1 + P + P*S + (1 +P + P*S)*(S + S*W) # premise 3 of exercise 7 Pr4 = 1 + W # not W -- premise 4 of exercise 7 Concl = 1 + V + V*S # conclusion to be proved of exercise 7 Pr1 Pr2 Pr3 Pr4 Concl Prob(Pr1) Prob(Pr2) Prob(Pr3) Prob(Pr4) Prob(Concl) P.parent() P.args() P.base_ring() Idl = ideal(Pr1 + 1, Pr2 + 1, Pr3 + 1, Pr4 + 1, Concl + 0) # assume premises true and conclusion false for indirect proof proof = Idl.groebner_basis() proof ProbRing = Prob(P).parent() ProbRing Prob(P).args() Prob(P).base_ring() PRI = (Prob(P*Q*R + P + Q*R) - 7/10, Prob(Q*R*V*W + Q*R*V + 1) - 1/2, Prob(P*S + P + S*W + S + 1) - 1/3, Prob(W + 1) - 1/2)*ProbRing PRI.groebner_basis() f = Prob(P*Q*R + P + Q*R) x = f.parent().gens() f(1/2,1/2,1/2,1/2,1/2,1/2) ff=RR(f(1/2,1/2,1/2,1/2,1/2,1/2)) -(ff*numpy.log2(ff)+(1-ff)*numpy.log2(1-ff)) pqrs=Prob(P + Q + R + S) pqrs(1/2,1/2,1/2,1/2,0,0) Pr1*Pr2*Pr3*Pr4*(Concl+1) # another indirect proof if 0 Pr1*Pr2*Pr3*Pr4 Prob(Pr1*Pr2*Pr3*Pr4)
0 1 p*q*r -p*q + p + q p*q - p + 1 -2*p*q + p + q 4*p*q*r - 2*p*q - 2*p*r + p - 2*q*r + q + r -8*p*q*r*s + 4*p*q*r + 4*p*q*s - 2*p*q + 4*p*r*s - 2*p*r - 2*p*s + p + 4*q*r*s - 2*q*r - 2*q*s + q - 2*r*s + r + s P*Q*R + P + Q*R Q*R*V*W + Q*R*V + 1 P*S + P + S*W + S + 1 W + 1 S*V + V + 1 -p*q*r + p + q*r q*r*v*w - q*r*v + 1 p*s - p + s*w - s + 1 -w + 1 s*v - v + 1 Boolean PolynomialRing in P, Q, R, S, V, W (P, Q, R, S, V, W) Finite Field of size 2 [1] Multivariate Polynomial Ring in p, q, r, s, v, w over Rational Field (p, q, r, s, v, w) Rational Field [p*q*r - p - q*r + 7/10, p*s - p - 1/2*s + 2/3, p*v - p - 7/10*v + 1, q*r*s - 2/3*q*r - 2/5*s + 1/15, q*r*v - 1, s*v - 5/2*s - 1/6*v + 5/3, w - 1/2] 5/8 0.954434002924965 1/2 0 P*Q*R*S*V*W + P*Q*R*S*V + P*Q*R*S*W + P*Q*R*S + P*Q*R*V*W + P*Q*R*V + P*Q*R*W + P*Q*R + Q*R*S*V*W + Q*R*S*V + Q*R*S*W + Q*R*S + Q*R*V*W + Q*R*V + Q*R*W + Q*R p*q*r*s*v*w - p*q*r*s*v - p*q*r*s*w + p*q*r*s - p*q*r*v*w + p*q*r*v + p*q*r*w - p*q*r - q*r*s*v*w + q*r*s*v + q*r*s*w - q*r*s + q*r*v*w - q*r*v - q*r*w + q*r
(Prob(P + Q + R + S))(1/2,1/2,1/2,1/2,0,0)
1/2
BPR = P.parent#BooleanPolynomialRing(objects^2,'X',order='degrevlex') KDELTA = lambda N, M: BPR(N == M) NOT = lambda A: BPR(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: BPR(1) + A + A*B IFF = lambda A, B: BPR(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: BPR(1) + A*B NOR = lambda A, B: BPR(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([[mylist[i]+NOT(KDELTA(i,j)) for i in range(len(mylist))] for j in range(len(mylist))][k]) for k in range(len(mylist))])
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'P' is not defined
P*IF(P,Q) Prob(P*IF(P,Q))/Prob(IF(P,Q)) (Prob(P*IF(P,Q))/Prob(IF(P,Q)))(1/4,1/2,1/2,1/2,1/2,1/2)
P*Q p*q/(p*q - p + 1) 1/7
x, y, z, lam = var('x, y, z, lam') f = sqrt((x - 1)^2 + (y - 2)^2 +(z - 3)^2) g = 2*x + y - z - 5 h = f - g * lam gradh = h.gradient([x, y, z, lam]) critical = solve([gradh[0] == 0, gradh[1] == 0, gradh[2] == 0, gradh[3] == 0,],x, y, z, lam, solution_dict=True) critical gradh
[{lam: 1/6*sqrt(3)*sqrt(2), z: 7/3, x: 7/3, y: 8/3}] (-2*lam + (x - 1)/sqrt((x - 1)^2 + (y - 2)^2 + (z - 3)^2), -lam + (y - 2)/sqrt((x - 1)^2 + (y - 2)^2 + (z - 3)^2), lam + (z - 3)/sqrt((x - 1)^2 + (y - 2)^2 + (z - 3)^2), -2*x - y + z + 5)
h.gradient([x, y, z, lam])
(-2*lam + (x - 1)/sqrt((x - 1)^2 + (y - 2)^2 + (z - 3)^2), -lam + (y - 2)/sqrt((x - 1)^2 + (y - 2)^2 + (z - 3)^2), lam + (z - 3)/sqrt((x - 1)^2 + (y - 2)^2 + (z - 3)^2), -2*x - y + z + 5)
gradh=(ln(1-x)-ln(x)+lam*(y-1),ln(1-y)-ln(y)+lam*x,1-.5-x*(1-y)) critical = solve([gradh[0] == 0, gradh[1] == 0, gradh[2] == 0,],x, y, lam, solution_dict=True) critical gradh
[{lam*(y - 1) - log(x) + log(-x + 1): 0}, {x*(y - 1) + 0.5: 0}, {lam*x - log(y) + log(-y + 1): 0}] (lam*(y - 1) - log(x) + log(-x + 1), lam*x - log(y) + log(-y + 1), x*(y - 1) + 0.500000000000000)
f=-(x*y*ln(x*y)+x*(1-y)*ln(x*(1-y))+(1-x)*y*ln((1-x)*y)+(1-x)*(1-y)*ln((1-x)*(1-y))) g=1-.5-x+x*y h=f-g*lam gradh=h.gradient([x,y,lam]) critical = solve([gradh[0] == 0, gradh[1] == 0, gradh[2] == 0,],x, y, lam, solution_dict=True) critical
[{-x*y + x - 0.5: 0}, {-lam*x - (x - 1)*log((x - 1)*(y - 1)) + x*log(-x*(y - 1)) + (x - 1)*log(-(x - 1)*y) - x*log(x*y): 0}, {-lam*(y - 1) - (y - 1)*log((x - 1)*(y - 1)) + (y - 1)*log(-x*(y - 1)) + y*log(-(x - 1)*y) - y*log(x*y): 0}]
gradh
(-lam*(y - 1) - (y - 1)*log((x - 1)*(y - 1)) + (y - 1)*log(-x*(y - 1)) + y*log(-(x - 1)*y) - y*log(x*y), -lam*x - (x - 1)*log((x - 1)*(y - 1)) + x*log(-x*(y - 1)) + (x - 1)*log(-(x - 1)*y) - x*log(x*y), -x*y + x - 0.500000000000000)
from operator import add from operator import mul
x, y, z, lam = var('x, y, z, lam') nn=3 binn=[Integer(ii+2**nn).binary()[1:nn+1] for ii in range(2**nn)] binn rbinn=[[ZZ(binn[jj][ii]) for ii in range(len(binn[jj]))] for jj in range(len(binn))] rbinn rrbinn=[reduce(mul,[rbinn[ii][jj]+[x,y,z][jj]*(-1)**rbinn[ii][jj] for jj in range(len(rbinn[ii]))]) for ii in range(len(rbinn))] rrbinn
['000', '001', '010', '011', '100', '101', '110', '111'] [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] [x*y*z, -x*y*(z - 1), -x*(y - 1)*z, x*(y - 1)*(z - 1), -(x - 1)*y*z, (x - 1)*y*(z - 1), (x - 1)*(y - 1)*z, -(x - 1)*(y - 1)*(z - 1)]
rrbinn[0][0]*rrbinn[0][1]
x*y
load('maxentrocond.sage')
<string>:8: DeprecationWarning: using 'degrevlex' in Boolean polynomial rings is deprecated. If needed, reverse the order of variables manually and use 'degneglex' See http://trac.sagemath.org/13849 for details.
H g L gradH gradg gradL critical
-(x - 1)*(y - 1)*log((x - 1)*(y - 1)) + x*(y - 1)*log(-x*(y - 1)) + (x - 1)*y*log(-(x - 1)*y) - x*y*log(x*y) x*y - x + 0.500000000000000 -(x - 1)*(y - 1)*log((x - 1)*(y - 1)) + x*(y - 1)*log(-x*(y - 1)) + (x - 1)*y*log(-(x - 1)*y) - x*y*log(x*y) + (x*y - x + 0.500000000000000)*lam (-log(x) + log(-x + 1), -log(y) + log(-y + 1), 0) (lam*(y - 1.00000000000000), lam*x, x*y - x + 0.500000000000000) (lam*(y - 1.00000000000000) - log(x) + log(-x + 1), lam*x - log(y) + log(-y + 1), x*y - x + 0.500000000000000) [{lam*(y - 1.0) - log(x) + log(-x + 1): 0}, {x*y - x + 0.5: 0}, {lam*x - log(y) + log(-y + 1): 0}]
gradg gradH
(lam*(y - 1.00000000000000), lam*x, x*y - x + 0.500000000000000) [-log(x) + log(-x + 1), -log(y) + log(-y + 1), 0]
load('maxentrocond.sage') H g L gradH gradg gradL critical
-(x - 1)*(y - 1)*log((x - 1)*(y - 1)) + x*(y - 1)*log(-x*(y - 1)) + (x - 1)*y*log(-(x - 1)*y) - x*y*log(x*y) x*y - x + 0.500000000000000 -(x - 1)*(y - 1)*log((x - 1)*(y - 1)) + x*(y - 1)*log(-x*(y - 1)) + (x - 1)*y*log(-(x - 1)*y) - x*y*log(x*y) + (x*y - x + 0.500000000000000)*lam (-log(x) + log(-x + 1), -log(y) + log(-y + 1), 0) (lam*(y - 1.00000000000000), lam*x, x*y - x + 0.500000000000000) (lam*(y - 1.00000000000000) - log(x) + log(-x + 1), lam*x - log(y) + log(-y + 1), x*y - x + 0.500000000000000) [{lam*(y - 1.0) - log(x) + log(-x + 1): 0}, {x*y - x + 0.5: 0}, {lam*x - log(y) + log(-y + 1): 0}]
gradH = [(ln(1-vars[ii])-ln(vars[ii])) for ii in range(len(vars))] gradH.append(0) gradH
[-log(x) + log(-x + 1), -log(y) + log(-y + 1), 0]
gradg
(lam*(y - 1.00000000000000), lam*x, x*y - x + 0.500000000000000)
gradg+vector(gradH)
(lam*(y - 1.00000000000000) - log(x) + log(-x + 1), lam*x - log(y) + log(-y + 1), x*y - x + 0.500000000000000)
ln(1)
0
yfun
y^2 - 2*y + 0.500000000000000
y=var('y') yfun = y**2-2*y+.5 yfun yroot=find_root(yfun == 0,0,1) yroot xroot=.5/(1-yroot) xroot
y^2 - 2*y + 0.500000000000000 0.2928932188134525 0.707106781186548
xr=[xroot,1-xroot];yr=[yroot,1-yroot] xr;yr prsc = [xr[ii]*yr[jj] for ii in range(2) for jj in range(2)];prsc ent=0 for ii in range(len(prsc)): ent = ent - prsc[ii]*ln(prsc[ii])/ln(2) RR(ent)
[0.707106781186548, 0.292893218813452] [0.2928932188134525, 0.7071067811865475] [0.207106781186548, 0.500000000000000, 0.0857864376269049, 0.207106781186547] 1.74485867971294
hx=-RR((xr[0]*ln(xr[0])+xr[1]*ln(xr[1]))/ln(2));hx hy=-RR((yr[0]*ln(yr[0])+yr[1]*ln(yr[1]))/ln(2));hy hx+hy
0.872429339856468 0.872429339856468 1.74485867971294
plot(yfun,(y,0,1))
dy=.05 xroot=.5/(1-yroot-dy) xr=[xroot,1-xroot];yr=[yroot+dy,1-yroot-dy] xr;yr prsc = [xr[ii]*yr[jj] for ii in range(2) for jj in range(2)];prsc ent=0 for ii in range(len(prsc)): ent = ent - prsc[ii]*ln(prsc[ii])/ln(2) RR(ent)
[0.760911337875927, 0.239088662124073] [0.342893218813452, 0.657106781186547] [0.260911337875927, 0.500000000000000, 0.0819818809375253, 0.157106781186547] 1.72108191409896
import numpy import scipy.optimize Pr=.9 def F(s): return [numpy.log(1-s[0])-numpy.log(s[0])-s[2]*(1-s[1]),numpy.log(1-s[1])-numpy.log(s[1])+s[2]*s[0],s[0]*(s[1]-1)+1-Pr] ssoln = scipy.optimize.broyden1(F, [.5,.2,1], f_tol=1e-14) ssoln
array([ 0.31622777, 0.68377223, 2.4386288 ])
gradL (gradL[0])(x=.5,y=.5,lam=3)
(lam*(y - 1.00000000000000) - log(x) + log(-x + 1), lam*x - log(y) + log(-y + 1), x*y - x + 0.500000000000000) -1.50000000000000
def F2(s): tmp=[] for ii in range(len(gradL)): tmp.append((gradL[ii])(x=s[0],y=s[1],lam=s[2])) return tmp
BPR = BooleanPolynomialRing(2,'x',order='degrevlex') NewGens = str(BPR.gens()).lower() NewGens = NewGens[1:len(NewGens) - 1] NewGens vars = var(NewGens) vars ftest=vars[0]^2+vars[1]+1 ftest(1,2)
'x0, x1' (x0, x1) 4
load('maxentrocond2.sage') H g L gradH gradg gradL critical ssoln htt
<string>:8: DeprecationWarning: using 'degrevlex' in Boolean polynomial rings is deprecated. If needed, reverse the order of variables manually and use 'degneglex' See http://trac.sagemath.org/13849 for details.
-(x0 - 1)*(x1 - 1)*log((x0 - 1)*(x1 - 1)) + x0*(x1 - 1)*log(-x0*(x1 - 1)) + (x0 - 1)*x1*log(-(x0 - 1)*x1) - x0*x1*log(x0*x1) x0*x1 - x0 + 0.500000000000000 -(x0 - 1)*(x1 - 1)*log((x0 - 1)*(x1 - 1)) + x0*(x1 - 1)*log(-x0*(x1 - 1)) + (x0 - 1)*x1*log(-(x0 - 1)*x1) - x0*x1*log(x0*x1) + (x0*x1 - x0 + 0.500000000000000)*lam0 (-log(x0) + log(-x0 + 1), -log(x1) + log(-x1 + 1), 0) (lam0*(x1 - 1.00000000000000), lam0*x0, x0*x1 - x0 + 0.500000000000000) (lam0*(x1 - 1.00000000000000) - log(x0) + log(-x0 + 1), lam0*x0 - log(x1) + log(-x1 + 1), x0*x1 - x0 + 0.500000000000000) [{lam0*(x1 - 1.0) - log(x0) + log(-x0 + 1): 0}, {x0*x1 - x0 + 0.5: 0}, {lam0*x0 - log(x1) + log(-x1 + 1): 0}] [0.70710678118654735, 0.29289321881345232, -1.246450480280461] 1.74485867971294
y=var('y') yfun = y**2-2*y+.5 yfun yroot=find_root(yfun == 0,0,1) yroot xroot=.5/(1-yroot) xroot xr=[xroot,1-xroot];yr=[yroot,1-yroot] xr;yr prsc = [xr[ii]*yr[jj] for ii in range(2) for jj in range(2)];prsc ent=0 for ii in range(len(prsc)): ent = ent - prsc[ii]*ln(prsc[ii])/ln(2) RR(ent) hx=-RR((xr[0]*ln(xr[0])+xr[1]*ln(xr[1]))/ln(2));hx hy=-RR((yr[0]*ln(yr[0])+yr[1]*ln(yr[1]))/ln(2));hy hx+hy RR(sqrt(2)/2)
y^2 - 2*y + 0.500000000000000 0.2928932188134525 0.707106781186548 [0.707106781186548, 0.292893218813452] [0.2928932188134525, 0.7071067811865475] [0.207106781186548, 0.500000000000000, 0.0857864376269049, 0.207106781186547] 1.74485867971294 0.872429339856468 0.872429339856468 1.74485867971294 0.707106781186548
plot(yfun,(y,0,1))
ssoln
array([ 0.70710678, 0.29289322, -1.24645048])
tuple(x)
(x0, x1, lam0)
ftest(vector(x))=gradL
Error in lines 1-1 Traceback (most recent call last): File "/projects/5511fe15-8085-4d1d-bdc7-c6bf6c99e693/.sagemathcloud/sage_server.py", line 865, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "<string>", line 1 SyntaxError: can't assign to function call
ftest=(gradL[2]).function(*x) ftest ftest(.5,.5,3)
(x0, x1, lam0) |--> x0*x1 - x0 + 0.500000000000000 0.250000000000000
for ii in range(len(x)): gradL[ii]=(gradL[ii]).function(*x)
natoms
['00', '01', '10', '11']
NOR(P,Q)
P*Q + P + Q + 1
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) Prob(XOR(P,Q)) Prob(UNIQUE([P,Q,R])) Prob(UNIQUE([P,Q,R,S]))
-2*p*q + p + q 3*p*q*r - 2*p*q - 2*p*r + p - 2*q*r + q + r -4*p*q*r*s + 3*p*q*r + 3*p*q*s - 2*p*q + 3*p*r*s - 2*p*r - 2*p*s + p + 3*q*r*s - 2*q*r - 2*q*s + q - 2*r*s + r + s
KDELTA = lambda A, B: A.parent(A == B)
FORALL([P,Q,R])
P*Q*R
P*Q*(P+Q) Prob(P*Q*(P+Q)) Prob(P+Q) Prob(P*Q*(P+Q))/Prob(P+Q) Prob((1+P*Q)*(P+Q))/Prob(P+Q) (1+P*Q)*(P+Q) Prob((P+R)*(Q*S+P)*((P+R)+(Q*S+P))) UNIQUE([P,Q,R])
0 0 -2*p*q + p + q 0 1 P + Q 0 P*Q*R + P + Q + R
myideal=ideal(UNIQUE([P,Q,R])+1) myQR=EX7.quotient_ring(myideal) myQR.gens()
(Q + R + 1, Q, R, S, V, W)
p,q=var('p','q') pcon(p,q)=Prob((P+Q)*P)/Prob(P+Q) pcon pcon(.5,.5) pcon(.25,.7)
(p, q) |--> (p*q - p)/(2*p*q - p - q) 0.500000000000000 0.125000000000000
pcon.gradient() Prob(NOR(P,Q)) mylist=[P,Q,R] [FORALL(C) for C in [[A + NOT(KDELTA(A,B)) for A in mylist] for B in mylist]] [FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]
(p, q) |--> (-(p*q - p)*(2*q - 1)/(2*p*q - p - q)^2 + (q - 1)/(2*p*q - p - q), -(p*q - p)*(2*p - 1)/(2*p*q - p - q)^2 + p/(2*p*q - p - q)) p*q - p - q + 1 [P*Q*R + P*Q + P*R + P, P*Q*R + P*Q + Q*R + Q, P*Q*R + P*R + Q*R + R] [P*Q*R + P*Q + P*R + P, P*Q*R + P*Q + Q*R + Q, P*Q*R + P*R + Q*R + R]
numpy.random.uniform(.1, .9)
0.23296928604967065
load('PuzzlePart.sage')
25 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X24 = R[4,4] REI.gens() = 105
clues;len(clues);QR.gens();len(QR.gens());matrix(BPR, objects, objects, QRG)
[X1*X4*X21 + X4*X21, X14*X22 + X22, X3*X15 + X3, X18*X19*X23 + X19*X23, X17*X22*X23 + X17*X23, X13*X14*X23 + X14*X23, X1*X2*X11 + X2*X11, X1*X3*X16 + X3*X16, X1*X2*X7 + X1*X7, X8*X16 + X16, X13*X14*X19 + X13*X19, X19*X23 + X19, X19*X23*X24 + X19*X23, X2*X10*X12 + X2*X10, X12 + 1, X7*X11 + X11, X10*X15*X17 + X10*X17, X9*X16*X19 + X9*X16, X7*X11 + X7, X2*X3*X13 + X2*X13, X4*X15*X19 + X4*X15, X7*X21*X22 + X7*X21, X7*X8*X13 + X7*X13, X1*X4*X9 + X1*X9, X3*X5*X8 + X3*X5, X10*X20*X22 + X10*X22, X2*X4*X14 + X2*X14, X7*X16*X17 + X7*X16, X13*X17 + X17, X4*X20*X24 + X4*X20, X0 + 1, X1*X3*X8 + X1*X8, X4*X10*X14 + X4*X10, X6*X9*X21 + X9*X21, X4*X20 + X4, X2*X20*X22 + X2*X20, X6*X7*X11 + X7*X11, X5*X10*X11 + X5*X11, X5*X9*X20 + X9*X20, X11*X13*X16 + X13*X16, X8*X9*X19 + X8*X19, X14*X22*X24 + X14*X22, X5*X8*X15 + X8*X15, X4*X5*X9 + X4*X5, X0*X4*X20 + X4*X20, X11*X16*X17 + X11*X17, X2*X3*X17 + X3*X17, X15*X19*X20 + X19*X20, X2*X15*X17 + X2*X15, X13*X17 + X13, X2*X5*X7 + X2*X5, X8*X16 + X8, X9*X21 + X21, X13*X17*X18 + X13*X17, X7*X8*X17 + X8*X17, X6 + 1, X1*X5 + X1, X14*X17*X19 + X14*X17, X12*X14*X22 + X14*X22, X11*X21*X22 + X11*X22, X3*X4*X23 + X4*X23, X3*X15 + X15, X2*X10 + X10, X5*X7*X10 + X7*X10, X7*X9*X22 + X9*X22, X15*X20*X23 + X15*X23, X14*X22 + X14, X4*X20 + X20, X0*X3*X15 + X3*X15, X9*X21*X24 + X9*X21, X1*X10*X11 + X1*X10, X10*X13*X15 + X13*X15, X2*X4*X22 + X4*X22, X7*X9*X14 + X7*X14, X0*X2*X10 + X2*X10, X19*X23 + X23, X8*X16*X18 + X8*X16, X9*X11*X14 + X9*X11, X8*X9*X23 + X9*X23, X16*X19*X21 + X19*X21, X8*X11*X13 + X8*X11, X0*X1*X5 + X1*X5, X3*X20*X23 + X3*X20, X3*X15*X18 + X3*X15, X5*X20*X21 + X5*X21, X7*X11*X12 + X7*X11, X3*X10*X13 + X3*X10, X3*X4*X19 + X3*X19, X10*X14*X20 + X14*X20, X1*X5 + X5, X17*X19*X22 + X19*X22, X2*X10 + X2, X16*X21*X23 + X16*X23, X8*X21*X23 + X8*X21, X1*X20*X21 + X1*X20, X13*X22*X23 + X13*X22, X24 + 1, X18 + 1, X1*X15*X16 + X1*X15, X1*X5*X6 + X1*X5, X11*X14*X21 + X14*X21, X12*X13*X17 + X13*X17, X5*X15*X16 + X5*X16, X9*X21 + X9, X6*X8*X16 + X8*X16] 105 (1, X1, X2, X3, X4, X1, 1, X7, X8, X9, X2, X7, 1, X13, X14, X3, X8, X13, 1, X19, X4, X9, X14, X19, 1) 25 [ 1 X1 X2 X3 X4] [ X1 1 X7 X8 X9] [ X2 X7 1 X13 X14] [ X3 X8 X13 1 X19] [ X4 X9 X14 X19 1]
load('PuzzlePart2.sage')
25 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X24 = R[4,4] REI2.gens() = 105
len(constraints2);constraints2;constraints2[0].parent();QRG2
105 [x2*x10*x12 - x2*x10 + 62203649/193057324, x5*x20*x21 - x5*x21 + 145251550/176756029, x2*x5*x7 - x2*x5 + 13294602/167964109, x13*x17 - x13 + 53752795/116314207, x0*x1*x5 - x1*x5 + 24801404/73211043, x0*x3*x15 - x3*x15 + 22827353/141536662, x3*x4*x19 - x3*x19 + 90536883/153915703, x8*x16*x18 - x8*x16 + 16391305/109369072, x1*x3*x16 - x3*x16 + 1532997/24131747, x14*x17*x19 - x14*x17 + 31242773/119837697, x18*x19*x23 - x19*x23 + 426167851/641636391, x7*x11 - x11 + 7557854/46014365, x10*x15*x17 - x10*x17 + 81770998/164278037, x11*x21*x22 - x11*x22 + 37578567/53745559, x7*x9*x14 - x7*x14 + 15731608/78113873, x8*x9*x19 - x8*x19 + 25425294/105569273, x3*x15 - x15 + 3231321/41224288, x16*x21*x23 - x16*x23 + 70266841/147014939, x10*x20*x22 - x10*x22 + 6873531/23189599, x3*x10*x13 - x3*x10 + 12747995/180417161, x7*x16*x17 - x7*x16 + 72569386/110897241, x7*x9*x22 - x9*x22 + 126605039/241223591, x17*x22*x23 - x17*x23 + 200590648/246390539, x1*x20*x21 - x1*x20 + 42292682/84010945, x14*x22 - x14 + 43757447/229960415, x6 - 69535386/185052941, x12*x14*x22 - x14*x22 + 74882460/194990881, x0*x4*x20 - x4*x20 + 1209941651/1542345415, x3*x4*x23 - x4*x23 + 80457933/112290076, x0*x2*x10 - x2*x10 + 210808211/272813755, x11*x13*x16 - x13*x16 + 43101815/137474056, x11*x14*x21 - x14*x21 + 83581164/157946179, x9*x21 - x9 + 107228941/204234132, x7*x21*x22 - x7*x21 + 132095151/242046925, x11*x16*x17 - x11*x17 + 79038230/98122057, x5*x9*x20 - x9*x20 + 335599798/421644351, x5*x10*x11 - x5*x11 + 66242059/167141062, x19*x23 - x23 + 49039437/126222658, x12 - 268701550/339362021, x8*x9*x23 - x9*x23 + 83354562/127238057, x8*x16 - x16 + 50354431/168064135, x4*x5*x9 - x4*x5 + 67570886/101655503, x8*x16 - x8 + 6724800/79890731, x8*x11*x13 - x8*x11 + 45583496/120448297, x2*x15*x17 - x2*x15 + 9741908/99895239, x15*x19*x20 - x19*x20 + 183435827/258564398, x7*x8*x13 - x7*x13 + 133294783/195762397, x6*x7*x11 - x7*x11 + 274971476/337687067, x10*x13*x15 - x13*x15 + 102094315/197500217, x3*x15 - x3 + 28661302/61727057, x14*x22*x24 - x14*x22 + 42153293/121148350, x13*x17 - x17 + 13153103/112313285, x3*x5*x8 - x3*x5 + 125666262/215356303, x1*x3*x8 - x1*x8 + 2799551/49427694, x4*x20 - x20 + 32491907/244592185, x1*x5*x6 - x1*x5 + 107971821/134584024, x6*x9*x21 - x9*x21 + 115861933/315983587, x18 - 33127973/147643308, x13*x14*x23 - x14*x23 + 121216620/152651173, x1*x5 - x1 + 96817268/144121465, x16*x19*x21 - x19*x21 + 32019023/100189280, x9*x21 - x21 + 25591873/154413949, x13*x14*x19 - x13*x19 + 23330422/114516395, x7*x11*x12 - x7*x11 + 6973063/74296605, x19*x23 - x19 + 42829018/203820483, x1*x5 - x5 + 53894501/196846215, x5*x15*x16 - x5*x16 + 120276253/237142128, x9*x21*x24 - x9*x21 + 80214453/143263319, x3*x20*x23 - x3*x20 + 154620210/260192879, x1*x4*x9 - x1*x9 + 11874187/215284671, x4*x10*x14 - x4*x10 + 75835979/144476735, x17*x19*x22 - x19*x22 + 29299815/116793706, x14*x22 - x22 + 76591445/347969086, x5*x8*x15 - x8*x15 + 29107204/225541941, x7*x11 - x7 + 265870287/418334620, x13*x17*x18 - x13*x17 + 70443531/175528207, x2*x4*x14 - x2*x14 + 14366107/164308973, x5*x7*x10 - x7*x10 + 14187049/138409097, x10*x14*x20 - x14*x20 + 84580334/150319449, x6*x8*x16 - x8*x16 + 56634376/131432223, x1*x10*x11 - x1*x10 + 71072583/147044227, x3*x15*x18 - x3*x15 + 31868003/48399562, x4*x20 - x4 + 47395399/139814408, x1*x2*x11 - x2*x11 + 18518707/123781877, x1*x2*x7 - x1*x7 + 13716435/70088324, x2*x20*x22 - x2*x20 + 143386372/219854821, x9*x11*x14 - x9*x11 + 74236774/133750331, x19*x23*x24 - x19*x23 + 5530867/100656898, x9*x16*x19 - x9*x16 + 10706477/32252722, x24 - 11330596/38802581, x2*x4*x22 - x4*x22 + 45044410/65069701, x13*x22*x23 - x13*x22 + 285205056/341276053, x12*x13*x17 - x13*x17 + 93473574/149323807, x4*x20*x24 - x4*x20 + 48236487/287809139, x1*x15*x16 - x1*x15 + 180928591/251220634, x15*x20*x23 - x15*x23 + 27884830/113267253, x0 - 32632973/39059746, x4*x15*x19 - x4*x15 + 58730901/120827245, x2*x10 - x2 + 40380811/79503558, x2*x3*x17 - x3*x17 + 14295370/174213847, x7*x8*x17 - x8*x17 + 235975366/405753989, x8*x21*x23 - x8*x21 + 2189977952/2593090641, x2*x10 - x10 + 19137668/66803295, x1*x4*x21 - x4*x21 + 39580717/116644552, x2*x3*x13 - x2*x13 + 45759724/102990237] Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24 over Rational Field (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
GB
[1]
load('Puzzle7.sage')
objects = 24 types = 4 rel_classes = 6 576 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X575 = R[23,23] REI.gens() = 13414 A 1st pass type 0 to type 1 [ 0 X7 X7 + 1 0 0 0] [ X30 X31 0 0 0 0] [ X54 X55 X56 X57 X58 0] [ 0 X79 X80 0 X82 0] [ X102 X103 X104 X105 X106 0] [ 0 0 0 0 0 1] type 0 to type 2 [ X12 X13 X14 X15 0 X17] [ 0 0 0 0 1 0] [ X60 X61 X62 X63 0 X65] [ X84 0 0 0 0 X89] [X108 X109 X110 0 0 X113] [X132 X133 X134 X135 0 X137] type 0 to type 3 [ X18 0 X13 0 0 X23] [ 0 0 X30 + 1 X30 0 0] [ X66 X67 X68 X54 0 X71] [X30 + 1 X30 0 0 0 0] [ X114 X115 X116 X102 0 0] [ 0 0 0 0 1 0] type 1 to type 2 [ 0 X30 + 1 0 0 X30 0] [ X180 X181 X182 X183 X31 X185] [ X204 X205 0 X207 0 0] [ X228 0 0 0 0 0] [ X252 0 0 X255 0 0] [ X132 X133 X134 X135 0 X137] type 1 to type 3 [ 0 0 0 1 0 0] [ X186 X187 X181 + X31 0 0 X191] [ X210 X211 X205 0 0 X215] [X133 + X30 X30 + 1 X133 0 0 0] [ X258 X259 0 0 0 X263] [ 0 0 0 0 1 0] type 2 to type 3 [ X306 X307 X308 0 X132 X311] [ 0 0 X133 + X30 X30 + 1 X133 0] [ X354 0 0 0 X134 X359] [ 0 0 0 0 X135 X135 + 1] [ 0 0 X30 + 1 X30 0 0] [ X426 X427 0 0 X137 X431] number of variables left to be determined: 75 REI.gens() = 13469 A 2nd pass type 0 to type 1 [0 0 1 0 0 0] [1 0 0 0 0 0] [0 0 0 0 1 0] [0 1 0 0 0 0] [0 0 0 1 0 0] [0 0 0 0 0 1] type 0 to type 2 [0 1 0 0 0 0] [0 0 0 0 1 0] [0 0 0 1 0 0] [0 0 0 0 0 1] [1 0 0 0 0 0] [0 0 1 0 0 0] type 0 to type 3 [0 0 1 0 0 0] [0 0 0 1 0 0] [0 0 0 0 0 1] [0 1 0 0 0 0] [1 0 0 0 0 0] [0 0 0 0 1 0] type 1 to type 2 [0 0 0 0 1 0] [0 0 0 0 0 1] [0 1 0 0 0 0] [1 0 0 0 0 0] [0 0 0 1 0 0] [0 0 1 0 0 0] type 1 to type 3 [0 0 0 1 0 0] [0 1 0 0 0 0] [0 0 1 0 0 0] [1 0 0 0 0 0] [0 0 0 0 0 1] [0 0 0 0 1 0] type 2 to type 3 [1 0 0 0 0 0] [0 0 1 0 0 0] [0 0 0 0 1 0] [0 0 0 0 0 1] [0 0 0 1 0 0] [0 1 0 0 0 0]
load('PuzzlePart3.sage')
objects = 12 types = 3 rel_classes = 4 144 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X143 = R[11,11] REI.gens() = 1656 A 1st pass type 0 to type 1 [X61 + X62 + X63 + X73 + X74 + X75 + X85 + X86 + X87 X61 + X62 + X63 + 1 X73 + X74 + X75 + 1 X85 + X86 + X87 + 1] [ X61 + X73 + X85 + 1 X61 X73 X85] [ X62 + X74 + X86 + 1 X62 X74 X86] [ X63 + X75 + X87 + 1 X63 X75 X87] type 0 to type 2 [X109 + X110 + X111 + X121 + X122 + X123 + X133 + X134 + X135 X109 + X110 + X111 + 1 X121 + X122 + X123 + 1 X133 + X134 + X135 + 1] [ X109 + X121 + X133 + 1 X109 X121 X133] [ X110 + X122 + X134 + 1 X110 X122 X134] [ X111 + X123 + X135 + 1 X111 X123 X135] type 1 to type 2 [X113 + X114 + X115 + X125 + X126 + X127 + X137 + X138 + X139 X113 + X114 + X115 + 1 X125 + X126 + X127 + 1 X137 + X138 + X139 + 1] [ X113 + X125 + X137 + 1 X113 X125 X137] [ X114 + X126 + X138 + 1 X114 X126 X138] [ X115 + X127 + X139 + 1 X115 X127 X139] number of variables left to be determined: 27
A;stuff2;clues;clues2;len(clues2);R
[ 1 0 0 0 X61 + X62 + X63 + X73 + X74 + X75 + X85 + X86 + X87 X61 + X62 + X63 + 1 X73 + X74 + X75 + 1 X85 + X86 + X87 + 1 X109 + X110 + X111 + X121 + X122 + X123 + X133 + X134 + X135 X109 + X110 + X111 + 1 X121 + X122 + X123 + 1 X133 + X134 + X135 + 1] [ 0 1 0 0 X61 + X73 + X85 + 1 X61 X73 X85 X109 + X121 + X133 + 1 X109 X121 X133] [ 0 0 1 0 X62 + X74 + X86 + 1 X62 X74 X86 X110 + X122 + X134 + 1 X110 X122 X134] [ 0 0 0 1 X63 + X75 + X87 + 1 X63 X75 X87 X111 + X123 + X135 + 1 X111 X123 X135] [ X61 + X62 + X63 + X73 + X74 + X75 + X85 + X86 + X87 X61 + X73 + X85 + 1 X62 + X74 + X86 + 1 X63 + X75 + X87 + 1 1 0 0 0 X113 + X114 + X115 + X125 + X126 + X127 + X137 + X138 + X139 X113 + X114 + X115 + 1 X125 + X126 + X127 + 1 X137 + X138 + X139 + 1] [ X61 + X62 + X63 + 1 X61 X62 X63 0 1 0 0 X113 + X125 + X137 + 1 X113 X125 X137] [ X73 + X74 + X75 + 1 X73 X74 X75 0 0 1 0 X114 + X126 + X138 + 1 X114 X126 X138] [ X85 + X86 + X87 + 1 X85 X86 X87 0 0 0 1 X115 + X127 + X139 + 1 X115 X127 X139] [X109 + X110 + X111 + X121 + X122 + X123 + X133 + X134 + X135 X109 + X121 + X133 + 1 X110 + X122 + X134 + 1 X111 + X123 + X135 + 1 X113 + X114 + X115 + X125 + X126 + X127 + X137 + X138 + X139 X113 + X125 + X137 + 1 X114 + X126 + X138 + 1 X115 + X127 + X139 + 1 1 0 0 0] [ X109 + X110 + X111 + 1 X109 X110 X111 X113 + X114 + X115 + 1 X113 X114 X115 0 1 0 0] [ X121 + X122 + X123 + 1 X121 X122 X123 X125 + X126 + X127 + 1 X125 X126 X127 0 0 1 0] [ X133 + X134 + X135 + 1 X133 X134 X135 X137 + X138 + X139 + 1 X137 X138 X139 0 0 0 1] set([X87, X86, X85, X73, X74, X75, X137, X138, X139, X126, X125, X127, X121, X122, X123, X135, X134, X133, X62, X61, X63, X110, X109, X111, X115, X113, X114]) [X88*X55 + X55, X49*X4*X1 + X49*X4, X109*X21 + X21, X71*X64*X59 + X64*X59, X118*X22*X21 + X118*X21, X64*X53 + X53, X64, X70*X63*X46 + X63*X46, X43*X36*X7 + X36*X7, X105*X33*X32 + X105*X32, X74*X18*X14 + X74*X18, X58*X46*X40 + X58*X40, X119*X111*X47 + X111*X47, X75*X66*X63 + X75*X66, X34*X25*X22 + X25*X22, X139*X138*X90 + X139*X90, X57*X9*X4 + X57*X4, X52*X50*X28 + X50*X28, X81*X76*X57 + X76*X57, X74*X42*X38 + X74*X42, X106*X10*X8 + X106*X8, X115*X114*X90 + X115*X90, X122*X70*X62 + X122*X70, X59*X23*X16 + X59*X16, X108*X21*X12 + X108*X21, X54*X48*X6 + X48*X6, X51*X40 + X51, X118*X110*X34 + X110*X34, X113*X33*X29 + X113*X33, X92*X86*X32 + X86*X32, X142*X71*X70 + X142*X71, X121*X22 + X121, X100*X98*X50 + X100*X50, X45*X36*X9 + X36*X9, X119*X110*X35 + X110*X35, X139*X133*X19 + X133*X19, X60*X41*X36 + X60*X41, X102*X92*X90 + X102*X92, X140*X83*X80 + X140*X83, X77*X74*X62 + X77*X62, X142*X140*X128 + X142*X128, X70*X62*X34 + X62*X34, X141*X11*X9 + X141*X11, X114*X111*X42 + X111*X42, X106*X103*X94 + X103*X94, X58*X50*X34 + X50*X34, X136*X23*X16 + X136*X23, X127*X123*X87 + X127*X87, X41*X38*X29 + X38*X29, X115*X108*X84 + X115*X84, X43*X37*X19 + X37*X19, X143*X142*X131 + X142*X131, X132*X71*X60 + X132*X71, X66*X18*X17 + X66*X17, X141*X136*X57 + X136*X57, X121*X10*X1 + X121*X10, X102*X101*X100 + X103*X101*X100 + X103*X102*X100 + X103*X102*X101 + X100 + X101 + X102 + X103 + 1, X91 + 1, X114*X113*X77 + X114*X77, X127*X58*X55 + X127*X58, X89*X67 + X89, X69*X9*X5 + X69*X5, X31*X7*X2 + X31*X2, X94*X70*X67 + X94*X67, X128*X46*X44 + X128*X46, X113*X69 + X69, X128*X126*X102 + X128*X102, X32*X8*X2 + X32*X2, X79*X74*X31 + X74*X31, X105*X99*X45 + X99*X45, X109*X108*X1 + X108*X1, X127*X70*X67 + X127*X70, X114*X108*X72 + X114*X72, X126*X46*X42 + X126*X46, X73*X42*X37 + X73*X42, X83*X76*X59 + X76*X59, X102*X8*X6 + X102*X8, X23*X12*X11 + X12*X11, X126*X120*X6 + X120*X6, X79*X77*X67 + X77*X67, X37*X36*X12 + X37*X12, X141*X119*X117 + X141*X119, X82*X70*X66 + X82*X66, X87*X79*X75 + X87*X79, X79*X76*X55 + X76*X55, X65 + 1, X69*X45*X41 + X69*X41, X141*X47*X45 + X141*X47, X62*X29*X26 + X62*X29, X41*X29*X27 + X41*X27, X101*X68 + X101, X139*X133*X85 + X139*X85, X38*X15*X14 + X38*X15, X115*X113*X67 + X113*X67, X139*X136*X55 + X136*X55, X99*X92*X87 + X99*X92, X120*X10 + X120, X95*X87*X47 + X87*X47, X64*X29*X28 + X64*X29, X92*X80*X79 + X92*X79, X131*X129*X119 + X129*X119, X92*X89*X68 + X89*X68, X117*X115*X93 + X115*X93, X122*X121*X25 + X122*X25, X83*X75*X47 + X75*X47, X115*X108*X7 + X108*X7, X73*X54*X49 + X73*X54, X131*X47*X46 + X131*X46, X123*X22*X15 + X123*X22, X38*X37*X25 + X38*X25, X47*X11*X3 + X47*X3, X63*X29*X27 + X63*X29, X90*X79 + X90, X124*X70*X64 + X124*X70, X142*X138*X82 + X138*X82, X124*X58*X52 + X124*X58, X102*X100*X76 + X102*X76, X140*X138*X80 + X138*X80, X89*X19*X17 + X89*X19, X50*X28*X26 + X50*X28, X104*X103*X92 + X103*X92, X119, X69*X57*X53 + X69*X53, X95*X35*X31 + X95*X31, X126*X10*X6 + X126*X10, X133*X35*X25 + X133*X35, X112*X109*X16 + X109*X16, X116*X57*X56 + X116*X57, X72*X66*X60 + X72*X66, X119*X113*X71 + X113*X71, X28*X24*X4 + X24*X4, X120*X118*X108 + X120*X118, X26 + 1, X63*X61*X15 + X61*X15, X113*X110*X62 + X113*X62, X127*X121*X85 + X127*X85, X61*X60*X12 + X61*X12, X128*X124*X100 + X128*X100, X137*X35*X29 + X137*X35, X97*X92*X85 + X97*X92, X102*X44*X42 + X102*X44, X102*X101*X66 + X101*X66, X50*X4*X2 + X50*X4, X46*X38*X34 + X38*X34, X134*X132*X2 + X132*X2, X108*X9 + X9, X86*X19*X14 + X86*X19, X122*X106*X98 + X122*X106, X91*X88*X55 + X88*X55, X123*X46 + X46, X43*X31*X27 + X43*X27, X44*X37*X20 + X37*X20, X52*X51*X40 + X51*X40, X42*X30*X27 + X42*X27, X67*X60*X7 + X60*X7, X90*X87*X42 + X87*X42, X67*X64*X55 + X64*X55, X54*X42*X40 + X54*X40, X65*X64*X53 + X64*X53, X80*X44*X42 + X80*X42, X90*X89*X77 + X90*X77, X114*X111*X75 + X114*X75, X25*X24*X1 + X24*X1, X113*X111*X41 + X111*X41, X46*X37*X22 + X37*X22, X93*X69*X67 + X93*X67, X117*X111*X45 + X111*X45, X89*X86*X62 + X89*X62, X27*X24*X3 + X24*X3, X125*X123*X63 + X125*X63, X48*X16*X12 + X48*X16, X127*X122*X86 + X127*X86, X101*X68*X65 + X101*X68, X103*X96*X7 + X96*X7, X103*X68*X67 + X103*X68, X67, X33*X21*X14 + X33*X14, X134*X133*X132 + X135*X133*X132 + X135*X134*X132 + X135*X134*X133 + X132 + X133 + X134 + X135 + 1, X108*X81*X72 + X108*X81, X115*X110*X86 + X115*X86, X88*X67*X64 + X88*X67, X88*X19*X16 + X88*X19, X63*X5*X3 + X63*X5, X63*X62*X38 + X63*X38, X90*X7*X6 + X90*X7, X98*X32 + X32, X15*X12*X3 + X12*X3, X77*X74*X29 + X74*X29, X92*X44*X43 + X92*X43, X86*X31 + X86, X106*X22*X20 + X106*X20, X95*X86*X35 + X86*X35, X140*X59*X56 + X140*X59, X139*X132*X84 + X139*X84, X56*X48*X8 + X48*X8, X28*X16*X14 + X28*X14, X66, X99*X96*X36 + X99*X36, X126*X106*X102 + X126*X106, X28*X4*X2 + X28*X2, X82*X76*X58 + X76*X58, X125*X70 + X70, X130*X121*X22 + X121*X22, X122*X58*X50 + X122*X58, X40*X36*X4 + X36*X4, X112*X57*X52 + X112*X57, X98*X96*X2 + X96*X2, X73*X18 + X73, X12, X50*X48*X24 + X50*X24, X136*X119*X112 + X136*X119, X117 + 1, X74*X30 + X74, X117*X110*X33 + X110*X33, X119*X115*X95 + X115*X95, X74*X73*X72 + X75*X73*X72 + X75*X74*X72 + X75*X74*X73 + X72 + X73 + X74 + X75 + 1, X116*X113*X101 + X116*X101, X57*X49*X21 + X49*X21, X140*X23*X20 + X140*X23, X114*X112*X76 + X114*X76, X111*X105*X99 + X111*X105, X100*X68*X64 + X100*X68, X118*X106*X105 + X118*X105, X92*X8*X7 + X92*X7, X77*X30*X29 + X77*X30, X129*X46*X45 + X129*X46, X97*X20 + X97, X118*X10*X9 + X118*X9, X119*X108*X11 + X108*X11, X76*X54*X52 + X76*X54, X89*X85*X61 + X89*X61, X36, X66*X62*X30 + X62*X30, X106*X70*X68 + X106*X68, X139*X47*X43 + X139*X47, X96*X80*X72 + X96*X80, X115*X93 + X93, X46*X36*X10 + X36*X10, X118*X70*X69 + X118*X69, X112*X105*X100 + X112*X105, X120*X70*X60 + X120*X70, X140*X135*X99 + X140*X99, X116*X111*X99 + X116*X99, X95*X71*X67 + X95*X67, X68*X56*X53 + X68*X53, X129*X127*X115 + X129*X115, X99*X98*X38 + X99*X38, X43*X38*X31 + X38*X31, X64*X17*X16 + X64*X17, X70*X60*X10 + X60*X10, X130*X123*X46 + X123*X46, X120*X22*X12 + X120*X22, X126*X125*X66 + X125*X66, X127*X34*X31 + X127*X34, X112*X110*X28 + X110*X28, X101*X92*X89 + X101*X92, X61*X53*X49 + X61*X53, X130*X122*X34 + X122*X34, X92*X68*X67 + X92*X67, X101*X96*X5 + X96*X5, X69*X64*X57 + X64*X57, X96*X8 + X8, X62*X61*X14 + X61*X14, X102*X80 + X102, X119*X95*X93 + X119*X93, X38*X37*X14 + X37*X14, X77*X66 + X77, X64*X63*X51 + X64*X51, X102*X68*X66 + X102*X68, X85*X55*X49 + X85*X55, X31*X24*X7 + X24*X7, X75*X74*X27 + X74*X27, X67*X63*X43 + X63*X43, X138*X137*X136 + X139*X137*X136 + X139*X138*X136 + X139*X138*X137 + X136 + X137 + X138 + X139 + 1, X95*X47*X43 + X95*X43, X95*X89*X71 + X89*X71, X140*X133*X20 + X133*X20, X45*X37*X21 + X37*X21, X126*X125*X124 + X127*X125*X124 + X127*X126*X124 + X127*X126*X125 + X124 + X125 + X126 + X127 + 1, X64*X61*X16 + X61*X16, X85*X7*X1 + X85*X7, X83*X59*X54 + X83*X54, X90*X85*X73 + X90*X73, X89*X79*X77 + X89*X79, X87*X85*X37 + X87*X37, X101*X97*X17 + X97*X17, X126*X82 + X126, X30*X18*X14 + X30*X14, X49*X40*X37 + X49*X40, X139*X137*X89 + X139*X89, X111*X110*X38 + X111*X38, X143*X137*X71 + X137*X71, X52*X48*X4 + X48*X4, X67*X7*X5 + X67*X5, X119*X116*X107 + X116*X107, X109*X9*X1 + X109*X9, X138*X119*X114 + X138*X119, X139*X134*X86 + X139*X86, X116*X113*X68 + X113*X68, X134*X131*X122 + X134*X131, X142*X119*X118 + X142*X119, X138*X132*X72 + X138*X72, X85*X67*X61 + X85*X67, X95*X90*X83 + X90*X83, X141*X59*X57 + X141*X59, X131*X120*X11 + X120*X11, X141*X136*X112 + X141*X112, X84*X19*X12 + X84*X19, X138*X59*X54 + X138*X59, X113*X21*X17 + X113*X21, X80*X72*X8 + X72*X8, X63*X41 + X63, X110*X21*X14 + X110*X21, X115*X110*X31 + X110*X31, X124*X58 + X124, X86*X85*X14 + X85*X14, X81*X74*X33 + X74*X33, X76*X42*X40 + X76*X42, X101*X20*X17 + X101*X20, X81*X45*X42 + X81*X42, X94*X34*X31 + X94*X31, X138*X134*X74 + X138*X74, X110*X108*X2 + X108*X2, X123*X122*X38 + X123*X38, X44*X8*X3 + X44*X3, X94*X93*X92 + X95*X93*X92 + X95*X94*X92 + X95*X94*X93 + X92 + X93 + X94 + X95 + 1, X57*X33*X28 + X57*X28, X102*X20*X18 + X102*X20, X137*X131*X125 + X137*X131, X141*X132*X9 + X132*X9, X90*X55*X54 + X90*X55, X127*X125*X89 + X127*X89, X41*X17*X15 + X41*X15, X56*X32*X28 + X56*X28, X102*X99*X42 + X99*X42, X112*X9*X4 + X112*X9, X116*X112*X100 + X116*X100, X99*X97*X15 + X97*X15, X124*X10*X4 + X124*X10, X129*X34*X33 + X129*X34, X134*X71*X62 + X134*X71, X55, X74*X6*X2 + X74*X6, X60*X29*X24 + X60*X29, X94*X82*X79 + X94*X79, X140*X47*X44 + X140*X47, X118*X108*X10 + X108*X10, X104*X99*X44 + X99*X44, X111*X108*X3 + X108*X3, X112*X81*X76 + X112*X81, X54, X109*X45*X37 + X109*X45, X106*X102*X82 + X102*X82, X123*X106*X99 + X123*X106, X128*X121*X97 + X128*X97, X134*X35 + X35, X68*X32*X29 + X68*X29, X36*X3*X0 + X36*X3, X107*X95*X92 + X107*X92, X63*X41 + X41, X74*X66*X62 + X74*X66, X53, X77*X6*X5 + X77*X6, X21*X12*X9 + X12*X9, X97*X68*X61 + X97*X68, X61*X17*X13 + X61*X17, X114*X45*X42 + X114*X45, X89*X87*X63 + X89*X63, X77*X75*X63 + X77*X63, X100*X99*X51 + X100*X51, X127*X126*X79 + X126*X79, X97*X56*X49 + X97*X56, X92*X56*X55 + X92*X55, X58*X48*X10 + X48*X10, X99*X44*X39 + X99*X44, X139*X131*X127 + X139*X131, X76*X73*X49 + X76*X49, X77*X42*X41 + X77*X42, X79*X55*X54 + X79*X54, X55*X7*X4 + X55*X4, X94*X22*X19 + X94*X19, X69*X61*X21 + X61*X21, X94*X86*X34 + X86*X34, X92*X90*X80 + X90*X80, X135*X132*X36 + X135*X36, X132*X11*X0 + X132*X11, X119*X23*X21 + X119*X21, X51*X4*X3 + X51*X4, X19*X7*X1 + X19*X1, X134*X95*X86 + X134*X95, X125*X122*X29 + X122*X29, X113*X112*X53 + X112*X53, X103*X8*X7 + X103*X8, X100*X92*X88 + X100*X92, X83*X77*X71 + X77*X71, X73*X72*X12 + X73*X12, X20*X8*X1 + X20*X1, X107*X101*X71 + X101*X71, X88*X55 + X88, X136*X35*X28 + X136*X35, X69*X33*X29 + X69*X29, X14*X12*X2 + X12*X2, X37*X3*X1 + X37*X3, X100*X96*X4 + X96*X4, X92*X84*X8 + X84*X8, X71*X62*X35 + X62*X35, X112*X110*X50 + X112*X50, X123*X94*X87 + X123*X94, X129*X118*X117 + X129*X118, X77*X66*X65 + X77*X66, X77*X76*X53 + X76*X53, X100*X56 + X56, X79*X7*X6 + X79*X6, X130*X124*X58 + X124*X58, X71*X11*X5 + X71*X5, X91*X90*X79 + X90*X79, X100*X44*X40 + X100*X44, X132*X35*X24 + X132*X35, X142*X59*X58 + X142*X59, X94*X87*X46 + X87*X46, X54*X6*X4 + X54*X4, X116*X9*X8 + X116*X9, X107, X121*X22 + X22, X99*X96*X3 + X96*X3, X130*X126*X82 + X126*X82, X114*X109*X73 + X114*X73, X90*X85*X18 + X85*X18, X136*X71*X64 + X136*X71, X60*X53*X48 + X60*X53, X53*X41*X40 + X53*X40, X135*X133*X37 + X135*X37, X100*X56 + X100, X81*X33*X30 + X81*X30, X48*X4*X0 + X48*X4, X110*X57*X50 + X110*X57, X136*X107*X100 + X136*X107, X100*X97*X16 + X97*X16, X68*X63*X44 + X63*X44, X125*X22*X17 + X125*X22, X138*X133*X73 + X138*X73, X126*X70*X66 + X126*X70, X100*X99*X40 + X99*X40, X142*X47*X46 + X142*X47, X63*X60*X36 + X63*X36, X26*X24*X2 + X24*X2, X68*X20*X17 + X68*X17, X127*X94 + X94, X143*X135*X47 + X135*X47, X24*X2 + X24, X105*X93*X92 + X105*X92, X62*X60*X24 + X62*X24, X98*X32 + X98, X101*X98*X62 + X101*X62, X124*X120*X48 + X124*X48, X86*X84*X24 + X86*X24, X116*X111*X44 + X111*X44, X94*X58*X55 + X94*X55, X86*X31 + X31, X89*X84*X5 + X84*X5, X139*X95 + X139, X142*X136*X124 + X142*X124, X126*X125*X77 + X126*X77, X124*X122*X50 + X124*X50, X90*X86*X74 + X90*X74, X123*X122*X27 + X122*X27, X81*X77*X69 + X77*X69, X119*X114*X83 + X114*X83, X27*X25*X15 + X25*X15, X143*X138*X83 + X138*X83, X51*X28*X27 + X51*X28, X103*X99*X87 + X103*X87, X115*X112*X55 + X112*X55, X128*X118*X116 + X128*X118, X75*X72*X3 + X72*X3, X115*X81*X79 + X115*X81, X142*X132*X10 + X132*X10, X103*X92 + X92, X109*X57*X49 + X109*X57, X62*X61*X60 + X63*X61*X60 + X63*X62*X60 + X63*X62*X61 + X60 + X61 + X62 + X63 + 1, X139*X134*X31 + X134*X31, X85*X79*X73 + X85*X79, X72*X42*X36 + X72*X42, X82*X75*X46 + X75*X46, X132*X47*X36 + X132*X47, X126*X94*X90 + X126*X94, X137*X134*X62 + X137*X62, X124*X121*X16 + X121*X16, X16*X4*X1 + X16*X1, X99*X8*X3 + X99*X8, X78*X75*X42 + X75*X42, X121*X46*X37 + X121*X46, X127*X125*X67 + X125*X67, X141*X135*X45 + X135*X45, X125*X124*X53 + X124*X53, X84*X79*X72 + X84*X79, X133*X95*X85 + X133*X95, X75*X42 + X42, X111*X9*X3 + X111*X9, X125*X106*X101 + X125*X106, X89, X140*X107 + X140, X98*X97*X96 + X99*X97*X96 + X99*X98*X96 + X99*X98*X97 + X96 + X97 + X98 + X99 + 1, X115*X45*X43 + X115*X45, X74*X30 + X30, X139*X119*X115 + X139*X119, X129*X106*X105 + X129*X106, X95*X84*X11 + X84*X11, X56*X51*X44 + X51*X44, X99*X44 + X44, X105*X9*X8 + X105*X8, X102*X98*X30 + X98*X30, X23*X11*X1 + X23*X1, X60*X5 + X60, X64*X60*X48 + X64*X48, X141*X139*X115 + X141*X115, X103*X100*X88 + X103*X88, X51*X48*X36 + X51*X36, X110*X109*X25 + X110*X25, X100*X56*X52 + X100*X56, X133*X47*X37 + X133*X47, X94*X85*X22 + X85*X22, X29*X24*X5 + X24*X5, X80*X76*X56 + X76*X56, X134*X132*X24 + X134*X24, X136*X83*X76 + X136*X83, X36*X15*X12 + X36*X15, X87*X86*X38 + X87*X38, X88*X85*X16 + X85*X16, X121*X120*X1 + X120*X1, X141*X134*X110 + X141*X110, X42*X36*X6 + X36*X6, X142*X141*X118 + X141*X118, X141*X134*X33 + X134*X33, X114*X21*X18 + X114*X21, X52 + 1, X46*X10*X3 + X46*X3, X90*X88*X54 + X88*X54, X133*X23 + X133, X135*X59*X51 + X135*X59, X125*X124*X64 + X125*X64, X96*X56*X48 + X96*X56, X104*X97*X20 + X97*X20, X117*X108*X9 + X108*X9, X49*X16*X13 + X49*X16, X81*X21*X18 + X81*X18, X83*X74*X35 + X74*X35, X98*X8*X2 + X98*X8, X66*X54*X53 + X66*X53, X25*X14 + X14, X130*X127*X94 + X127*X94, X73*X18*X13 + X73*X18, X125*X121*X61 + X125*X61, X128*X126*X80 + X126*X80, X44*X20*X15 + X44*X15, X59*X35*X28 + X59*X28, X142*X35*X34 + X142*X35, X65*X62*X29 + X62*X29, X133*X59*X49 + X133*X59, X100*X80*X76 + X100*X80, X113*X109*X17 + X109*X17, X75*X73*X37 + X75*X37, X87*X43*X39 + X87*X43, X128*X125*X68 + X125*X68, X116*X33*X32 + X116*X33, X128*X10*X8 + X128*X10, X83*X71*X66 + X83*X66, X91*X84*X7 + X84*X7, X62*X41*X38 + X62*X41, X136*X59*X52 + X136*X59, X90*X31*X30 + X90*X31, X116*X114*X102 + X116*X102, X97*X20*X13 + X97*X20, X98*X97*X14 + X97*X14, X93*X86*X33 + X86*X33, X142*X136*X58 + X136*X58, X141*X137*X69 + X137*X69, X139*X137*X67 + X137*X67, X111*X57*X51 + X111*X57, X128*X106*X104 + X128*X106, X74*X72*X2 + X72*X2, X49*X48*X1 + X48*X1, X130 + 1, X127*X121*X19 + X121*X19, X53*X50*X29 + X50*X29, X95*X88*X59 + X88*X59, X76*X72*X48 + X76*X48, X72*X30*X24 + X72*X30, X142*X135*X123 + X142*X123, X50*X49*X48 + X51*X49*X48 + X51*X50*X48 + X51*X50*X49 + X48 + X49 + X50 + X51 + 1, X100*X96*X48 + X100*X48, X132*X107*X96 + X132*X107, X85*X84*X12 + X85*X12, X105*X103*X93 + X103*X93, X121*X34*X25 + X121*X34, X135*X47*X39 + X135*X47, X124*X122*X28 + X122*X28, X132*X59*X48 + X132*X59, X129*X94*X93 + X129*X94, X92*X87*X44 + X87*X44, X93*X45*X43 + X93*X43, X37*X15 + X37, X51*X40*X39 + X51*X40, X110*X33*X26 + X110*X33, X133*X132*X1 + X132*X1, X94*X89*X70 + X89*X70, X70*X34*X29 + X70*X29, X82*X46*X42 + X82*X42, X50*X40*X38 + X50*X40, X71*X59*X53 + X71*X53, X141*X83*X81 + X141*X83, X138*X107*X102 + X138*X107, X80*X8*X6 + X80*X6, X124*X82*X76 + X124*X82, X134*X11*X2 + X134*X11, X89*X7*X5 + X89*X7, X54*X18*X16 + X54*X16, X70*X64*X58 + X64*X58, X42*X18*X15 + X42*X15, X59*X47*X40 + X59*X40, X78*X76*X54 + X76*X54, X51*X50*X27 + X50*X27, X126*X121*X18 + X121*X18, X114*X110*X74 + X114*X74, X99*X20*X15 + X99*X20, X110*X81*X74 + X110*X81, X106*X101*X70 + X101*X70, X80*X73*X20 + X73*X20, X86*X79*X74 + X86*X79, X129*X126*X81 + X126*X81, X126*X121*X73 + X126*X73, X76*X74*X28 + X74*X28, X80*X20*X18 + X80*X18, X124*X106*X100 + X124*X106, X111*X81*X75 + X111*X81, X129*X120*X108 + X129*X108, X64*X53*X52 + X64*X53, X133*X83*X73 + X133*X83, X47*X35*X27 + X47*X27, X96*X8*X0 + X96*X8, X45*X21*X15 + X45*X15, X25*X24*X12 + X25*X12, X86*X55*X50 + X86*X55, X118*X94*X93 + X118*X93, X71*X35*X29 + X71*X29, X112*X21*X16 + X112*X21, X139*X11*X7 + X139*X11, X129*X124*X57 + X124*X57, X101*X96*X60 + X101*X60, X80*X74*X32 + X74*X32, X83*X73*X23 + X73*X23, X55*X49*X19 + X49*X19, X87*X85*X15 + X85*X15, X132*X23*X12 + X132*X23, X136*X135*X40 + X135*X40, X84*X67*X60 + X84*X67, X123*X121*X37 + X123*X37, X62*X60*X2 + X60*X2, X54*X30*X28 + X54*X28, X130*X120*X10 + X120*X10, X35*X11*X2 + X35*X2, X123*X46*X39 + X123*X46, X74*X73*X25 + X74*X25, X78*X73*X18 + X73*X18, X123*X58*X51 + X123*X58, X102*X101*X77 + X102*X77, X13 + 1, X137*X132*X5 + X132*X5, X127*X118*X115 + X127*X118, X130*X125*X70 + X125*X70, X117*X112*X57 + X112*X57, X77*X73*X61 + X77*X61, X119*X47*X45 + X119*X45, X103*X102*X90 + X103*X90, X24*X14*X12 + X24*X14, X100*X8*X4 + X100*X8, X71*X60*X11 + X60*X11, X102*X99*X75 + X102*X75, X138*X35*X30 + X138*X35, X105*X57*X56 + X105*X56, X63*X62*X27 + X62*X27, X101*X44*X41 + X101*X44, X88, X50*X28 + X50, X98*X92*X86 + X98*X92, X15*X3*X1 + X15*X1, X105*X100*X57 + X100*X57, X98*X96*X24 + X98*X24, X123*X120*X3 + X120*X3, X93*X81*X79 + X93*X79, X139*X135*X43 + X135*X43, X73*X6*X1 + X73*X6, X105*X81*X80 + X105*X80, X36*X3 + X3, X143*X133*X23 + X133*X23, X129*X58*X57 + X129*X58, X101*X99*X41 + X99*X41, X109*X105*X97 + X109*X105, X62*X17*X14 + X62*X17, X118*X46*X45 + X118*X45, X25*X14*X13 + X25*X14, X97*X44*X37 + X97*X44, X94*X88*X58 + X88*X58, X115*X69*X67 + X115*X69, X135*X47 + X135, X134*X119*X110 + X134*X119, X37*X15 + X15, X0 + 1, X127*X120*X84 + X127*X84, X126*X82*X78 + X126*X82, X94*X90*X82 + X90*X82, X53*X49*X17 + X49*X17, X142*X133*X22 + X133*X22, X57*X45*X40 + X57*X40, X32*X25*X20 + X25*X20, X109*X93*X85 + X109*X93, X103*X101*X89 + X103*X89, X56*X50*X32 + X50*X32, X111*X45*X39 + X111*X45, X127*X22*X19 + X127*X22, X70*X22*X17 + X70*X17, X103*X102*X79 + X102*X79, X92*X85*X20 + X85*X20, X134*X59*X50 + X134*X59, X66*X63*X42 + X63*X42, X75*X18*X15 + X75*X18, X142*X131*X130 + X142*X131, X122*X118*X110 + X122*X118, X120*X34*X24 + X120*X34, X78 + 1, X103*X20*X19 + X103*X20, X40*X37*X16 + X37*X16, X136*X47*X40 + X136*X47, X92*X32*X31 + X92*X31, X117*X113*X69 + X113*X69, X106*X97*X22 + X97*X22, X114*X113*X112 + X115*X113*X112 + X115*X114*X112 + X115*X114*X113 + X112 + X113 + X114 + X115 + 1, X46*X45*X44 + X47*X45*X44 + X47*X46*X44 + X47*X46*X45 + X44 + X45 + X46 + X47 + 1, X77*X73*X17 + X73*X17, X76, X68*X61*X20 + X61*X20, X105*X98*X33 + X98*X33, X143*X136*X59 + X136*X59, X120*X58*X48 + X120*X58, X29*X17*X14 + X29*X14, X68*X8*X5 + X68*X5, X20*X12*X8 + X12*X8, X98*X56*X50 + X98*X56, X101*X100*X53 + X100*X53, X139*X23*X19 + X139*X23, X140*X136*X56 + X136*X56, X120*X94*X84 + X120*X94, X137*X71*X65 + X137*X71, X120*X10 + X10, X62*X29 + X62, X129*X121*X21 + X121*X21, X93*X89*X69 + X89*X69, X89*X88*X53 + X88*X53, X125*X58*X53 + X125*X58, X127*X94*X91 + X127*X94, X141*X138*X114 + X141*X114, X101*X98*X29 + X98*X29, X92*X20*X19 + X92*X19, X24*X2*X0 + X24*X2, X70*X10*X5 + X70*X5, X138*X95*X90 + X138*X95, X131*X125*X71 + X125*X71, X131*X59*X58 + X131*X58, X39*X37*X15 + X37*X15, X124*X123*X51 + X124*X51, X141*X23*X21 + X141*X23, X64*X62*X28 + X62*X28, X136*X131*X124 + X136*X131, X37*X15*X13 + X37*X15, X124*X123*X40 + X123*X40, X122*X121*X14 + X121*X14, X67*X62*X31 + X62*X31, X99*X68*X63 + X99*X68, X143*X141*X119 + X141*X119, X79, X40*X4*X3 + X40*X3, X49*X48*X12 + X49*X12, X96*X20*X12 + X96*X20, X104*X100*X56 + X100*X56, X137*X136*X53 + X136*X53, X103*X92 + X103, X104*X101*X68 + X101*X68, X51*X49*X15 + X49*X15, X107*X83*X80 + X107*X80, X107*X99*X47 + X99*X47, X138*X71*X66 + X138*X71, X129*X10*X9 + X129*X10, X110*X108*X24 + X110*X24, X89*X67 + X67, X114*X81*X78 + X114*X81, X126*X22*X18 + X126*X22, X100*X32*X28 + X100*X32, X127*X123*X43 + X123*X43, X53*X29*X28 + X53*X28, X72*X18*X12 + X72*X18, X122*X120*X24 + X122*X24, X112*X45*X40 + X112*X45, X61*X17 + X17, X31*X25*X19 + X25*X19, X45*X9*X3 + X45*X3, X129, X116*X114*X80 + X114*X80, X137*X135*X41 + X135*X41, X101*X100*X64 + X101*X64, X140*X35*X32 + X140*X35, X76*X18*X16 + X76*X18, X136*X134*X28 + X134*X28, X98*X20*X14 + X98*X20, X131*X107*X106 + X131*X106, X137*X135*X63 + X137*X63, X1, X103*X32*X31 + X103*X32, X121*X94*X85 + X121*X94, X133*X107*X97 + X133*X107, X87*X55*X51 + X87*X55, X53*X5*X4 + X53*X4, X127*X122*X31 + X122*X31, X85*X31*X25 + X85*X31, X129*X121*X109 + X129*X109, X68*X60*X8 + X60*X8, X72*X6 + X72, X55*X51*X43 + X51*X43, X138*X133*X18 + X133*X18, X64*X62*X50 + X64*X50, X142*X133*X121 + X142*X121, X48*X28*X24 + X48*X28, X128*X82*X80 + X128*X82, X135*X47 + X47, X136*X134*X50 + X136*X50, X103*X56*X55 + X103*X56, X90*X43*X42 + X90*X43, X29*X5*X2 + X29*X2, X79*X43*X42 + X79*X42, X83*X72*X11 + X72*X11, X88*X85*X49 + X88*X49, X76*X72*X4 + X72*X4, X108*X93*X84 + X108*X93, X131, X135*X133*X15 + X133*X15, X57*X48*X9 + X48*X9, X72*X54*X48 + X72*X54, X89*X31*X29 + X89*X31, X77*X72*X60 + X77*X60, X118*X114*X82 + X114*X82, X141*X133*X21 + X133*X21, X111*X109*X15 + X109*X15, X88*X86*X28 + X86*X28, X86*X84*X2 + X84*X2, X137*X23*X17 + X137*X23, X123*X121*X15 + X121*X15, X72*X6*X0 + X72*X6, X143*X139*X95 + X139*X95, X70*X69*X68 + X71*X69*X68 + X71*X70*X68 + X71*X70*X69 + X68 + X69 + X70 + X71 + 1, X58*X57*X56 + X59*X57*X56 + X59*X58*X56 + X59*X58*X57 + X56 + X57 + X58 + X59 + 1, X61*X60*X1 + X60*X1, X83*X35*X30 + X83*X30, X140*X107 + X107, X67*X31*X29 + X67*X29, X27*X3*X2 + X27*X2, X97*X96*X1 + X96*X1, X75*X42*X39 + X75*X42, X102*X100*X54 + X100*X54, X122*X120*X2 + X120*X2, X93*X21*X19 + X93*X19, X112*X57 + X57, X140*X138*X102 + X140*X102, X59*X11*X4 + X59*X4, X113*X69 + X113, X135*X71*X63 + X135*X71, X140*X133*X97 + X140*X97, X141*X71*X69 + X141*X71, X110*X109*X108 + X111*X109*X108 + X111*X110*X108 + X111*X110*X109 + X108 + X109 + X110 + X111 + 1, X131*X35*X34 + X131*X34, X116*X115*X92 + X115*X92, X142*X141*X129 + X142*X129, X123*X118*X111 + X123*X118, X124*X34*X28 + X124*X34, X121*X120*X12 + X121*X12, X32*X20*X14 + X32*X14, X139*X71*X67 + X139*X71, X135*X95*X87 + X135*X95, X86*X31*X26 + X86*X31, X126*X34*X30 + X126*X34, X63*X60*X3 + X60*X3, X90*X67*X66 + X90*X67, X133*X71*X61 + X133*X71, X128*X122*X32 + X122*X32, X103*X98*X31 + X98*X31, X93*X9*X7 + X93*X7, X44*X32*X27 + X44*X27, X55*X50*X31 + X50*X31, X121*X118*X109 + X121*X118, X64*X60*X4 + X60*X4, X113*X108*X5 + X108*X5, X88*X79*X76 + X88*X79, X60*X5 + X5, X138*X136*X76 + X138*X76, X62*X29 + X29, X136*X133*X49 + X136*X49, X34*X22*X14 + X34*X14, X115*X21*X19 + X115*X21, X136*X132*X4 + X132*X4, X142*X11*X10 + X142*X11, X75*X42 + X75, X122*X82*X74 + X122*X82, X142*X138*X126 + X142*X126, X106*X94*X92 + X106*X92, X104 + 1, X113*X108*X60 + X113*X60, X39 + 1, X129*X118 + X118, X98*X68*X62 + X98*X68, X53*X51*X41 + X51*X41, X108*X9 + X108, X87*X67*X63 + X87*X67, X66*X42*X41 + X66*X41, X127*X46*X43 + X127*X46, X138*X83 + X83, X136*X59 + X59, X71*X23*X17 + X71*X17, X76*X73*X16 + X73*X16, X139*X95*X91 + X139*X95, X35*X24*X11 + X24*X11, X93*X57*X55 + X93*X55, X103*X98*X86 + X103*X86, X75*X74*X38 + X75*X38, X134*X107*X98 + X134*X107, X14*X2*X1 + X14*X1, X90*X19*X18 + X90*X19, X103*X97*X85 + X103*X85, X91*X89*X67 + X89*X67, X87*X31*X27 + X87*X31, X90*X84*X72 + X90*X72, X114*X81 + X81, X10*X9*X8 + X11*X9*X8 + X11*X10*X8 + X11*X10*X9 + X8 + X9 + X10 + X11 + 1, X118*X111*X46 + X111*X46, X43*X7*X3 + X43*X3, X141*X132*X108 + X141*X108, X80*X32*X30 + X80*X30, X116*X110*X32 + X110*X32, X138*X83*X78 + X138*X83, X116*X108*X96 + X116*X96, X105*X96*X9 + X96*X9, X108*X69*X60 + X108*X69, X127*X120*X7 + X120*X7, X116*X105 + X105, X132*X131*X120 + X132*X131, X138*X136*X54 + X136*X54, X125*X70*X65 + X125*X70, X88*X7*X4 + X88*X7, X140*X71*X68 + X140*X71, X87*X7*X3 + X87*X7, X114*X105*X102 + X114*X105, X138*X132*X6 + X132*X6, X122*X46*X38 + X122*X46, X113*X69*X65 + X113*X69, X135*X134*X38 + X135*X38, X142*X131 + X131, X85*X19*X13 + X85*X19, X22*X10*X1 + X22*X1, X120*X82*X72 + X120*X82, X30*X24*X6 + X24*X6, X89*X87*X41 + X87*X41, X26*X25*X14 + X25*X14, X128*X124*X56 + X124*X56, X141*X135*X111 + X141*X111, X109*X21 + X109, X43*X19*X15 + X43*X15, X137*X11*X5 + X137*X11, X66*X64*X54 + X64*X54, X54*X51*X42 + X51*X42, X142*X140*X106 + X140*X106, X62*X61*X25 + X62*X25, X140*X139*X92 + X139*X92, X128*X125*X101 + X128*X101, X110*X69*X62 + X110*X69, X100*X20*X16 + X100*X20, X118*X34*X33 + X118*X33, X56*X8*X4 + X56*X4, X84*X7*X0 + X84*X7, X107*X35*X32 + X107*X32, X115*X33*X31 + X115*X33, X86*X7*X2 + X86*X7, X46*X22*X15 + X46*X15, X2, X135*X119*X111 + X135*X119, X111*X45 + X111, X59*X49*X23 + X49*X23, X139*X136*X88 + X139*X88, X135*X132*X3 + X132*X3, X138*X131*X126 + X138*X131, X81*X9*X6 + X81*X6, X126*X122*X74 + X126*X74, X113*X45*X41 + X113*X45, X126*X118*X114 + X126*X118, X82*X81*X80 + X83*X81*X80 + X83*X82*X80 + X83*X82*X81 + X80 + X81 + X82 + X83 + 1, X3, X142*X107*X106 + X142*X107, X114*X93*X90 + X114*X93, X98*X32*X26 + X98*X32, X91*X85*X19 + X85*X19, X128, X82*X72*X10 + X72*X10, X131*X11*X10 + X131*X10, X139*X95 + X95, X103*X99*X43 + X99*X43, X116*X109*X20 + X109*X20, X128*X120*X96 + X128*X96, X132*X11 + X132, X98*X97*X25 + X98*X25, X77*X18*X17 + X77*X18, X115*X113*X89 + X115*X89, X123*X82*X75 + X123*X82, X140*X95*X92 + X140*X95, X124*X22*X16 + X124*X22, X127*X106*X103 + X127*X106, X137*X71 + X137, X64*X5*X4 + X64*X5, X125*X70 + X125, X51*X48*X3 + X48*X3, X103*X96*X84 + X103*X84, X116*X109*X97 + X116*X97, X113*X9*X5 + X113*X9, X116*X45*X44 + X116*X45, X85*X43*X37 + X85*X43, X32*X24*X8 + X24*X8, X134*X35*X26 + X134*X35, X129*X125*X69 + X125*X69, X25*X14 + X25, X34*X33*X32 + X35*X33*X32 + X35*X34*X32 + X35*X34*X33 + X32 + X33 + X34 + X35 + 1, X122*X34*X26 + X122*X34, X77*X76*X64 + X77*X64, X89*X43*X41 + X89*X43, X103*X101*X67 + X101*X67, X83*X11*X6 + X83*X6, X53*X17*X16 + X53*X16, X139*X107*X103 + X139*X107, X93*X90*X81 + X90*X81, X139*X135*X87 + X139*X87, X60*X17*X12 + X60*X17, X61*X29*X25 + X61*X29, X50*X49*X14 + X49*X14, X106*X100*X58 + X100*X58, X63*X41*X39 + X63*X41, X67*X19*X17 + X67*X17, X85*X19 + X85, X95*X23*X19 + X95*X19, X51*X40 + X40, X114*X108*X6 + X108*X6, X75*X6*X3 + X75*X6, X93*X85*X21 + X85*X21, X112*X108*X48 + X112*X48, X61*X17 + X61, X95*X83*X79 + X95*X79, X93*X88*X57 + X88*X57, X57*X51*X45 + X51*X45, X141*X137*X113 + X141*X113, X94*X10*X7 + X94*X7, X114*X110*X30 + X110*X30, X91*X86*X31 + X86*X31, X116, X137*X83*X77 + X137*X83, X98*X44*X38 + X98*X44, X101*X97*X61 + X101*X61, X118*X116*X106 + X116*X106, X108*X45*X36 + X108*X45, X126*X120*X72 + X126*X72, X136*X11*X4 + X136*X11, X110*X45*X38 + X110*X45, X141*X140*X116 + X141*X116, X90*X84*X6 + X84*X6, X111*X108*X36 + X111*X36, X129*X120*X9 + X120*X9, X91*X87*X43 + X87*X43, X66*X6*X5 + X66*X5, X77*X66 + X66, X140*X136*X100 + X140*X100, X96*X92*X84 + X96*X92, X125*X34*X29 + X125*X34, X126*X122*X30 + X122*X30, X118, X131*X71*X70 + X131*X70, X74*X30*X26 + X74*X30, X44*X36*X8 + X36*X8, X129*X82*X81 + X129*X82, X79*X67*X66 + X79*X66, X48*X4 + X48, X134*X83*X74 + X134*X83, X63*X17*X15 + X63*X17, X81*X57*X54 + X81*X54, X54*X50*X30 + X50*X30, X47*X23*X15 + X47*X15, X87*X43 + X43, X118*X115*X94 + X115*X94, X132*X95*X84 + X132*X95, X58*X49*X22 + X49*X22, X123*X70*X63 + X123*X70, X135*X23*X15 + X135*X23, X82*X58*X54 + X82*X54, X108*X9*X0 + X108*X9, X59*X50*X35 + X50*X35, X69*X60*X9 + X60*X9, X138*X11*X6 + X138*X11, X116*X105*X104 + X116*X105, X76*X6*X4 + X76*X6, X140*X134*X98 + X140*X98, X138*X134*X30 + X134*X30, X109*X108*X12 + X109*X12, X128*X106 + X128, X111*X21*X15 + X111*X21, X88*X87*X51 + X88*X51, X112*X33*X28 + X112*X33, X107*X98*X35 + X98*X35, X89*X86*X29 + X86*X29, X129*X126*X114 + X129*X114, X143*X134*X35 + X134*X35, X113*X112*X64 + X113*X64, X107*X103*X95 + X103*X95, X133*X23*X13 + X133*X23, X94*X46*X43 + X94*X43, X77*X75*X41 + X75*X41, X25*X2*X1 + X25*X2, X121*X22*X13 + X121*X22, X60*X5*X0 + X60*X5, X71*X61*X23 + X61*X23, X128*X70*X68 + X128*X70, X113*X109*X61 + X113*X61, X86*X85*X25 + X86*X25, X81*X73*X21 + X73*X21, X73*X30*X25 + X73*X30, X106*X82*X80 + X106*X80, X116*X110*X98 + X116*X98, X106, X88*X84*X48 + X88*X48, X142*X95*X94 + X142*X95, X100*X98*X28 + X98*X28, X80*X68*X66 + X80*X66, X105*X102*X81 + X102*X81, X114*X69*X66 + X114*X69, X76*X30*X28 + X76*X30, X105*X97*X21 + X97*X21, X24, X140*X135*X44 + X135*X44, X123*X10*X3 + X123*X10, X129*X123*X111 + X129*X111, X62*X5*X2 + X62*X5, X102*X80 + X80, X141*X133*X109 + X141*X109, X30*X25*X18 + X25*X18, X73*X18 + X18, X131*X95*X94 + X131*X94, X76*X74*X50 + X76*X50, X135*X11*X3 + X135*X11, X120*X106*X96 + X120*X106, X115*X109*X19 + X109*X19, X79*X19*X18 + X79*X18, X38*X36*X2 + X36*X2, X106*X58*X56 + X106*X56, X129*X22*X21 + X129*X22, X30*X29*X28 + X31*X29*X28 + X31*X30*X28 + X31*X30*X29 + X28 + X29 + X30 + X31 + 1, X87*X43 + X87, X67*X43*X41 + X67*X41, X95*X85*X23 + X85*X23, X64*X63*X40 + X63*X40, X105*X69*X68 + X105*X68, X139*X83*X79 + X139*X83, X113*X57*X53 + X113*X57, X82*X34*X30 + X82*X30, X137*X133*X61 + X137*X61, X12*X1 + X12, X105*X101*X69 + X101*X69, X52*X49*X16 + X49*X16, X75*X73*X15 + X73*X15, X130*X128*X106 + X128*X106, X48*X40*X36 + X48*X40, X83*X47*X42 + X83*X42, X133*X131*X121 + X133*X131, X49*X16 + X49, X127*X82*X79 + X127*X82, X59*X48*X11 + X48*X11, X76*X66*X64 + X76*X66, X79*X72*X7 + X72*X7, X35*X23*X14 + X35*X14, X103*X100*X55 + X100*X55, X90*X87*X75 + X90*X75, X115*X105*X103 + X115*X105, X50*X16*X14 + X50*X16, X81*X69*X66 + X81*X66, X119*X11*X9 + X119*X9, X70*X58*X53 + X70*X53, X116*X69*X68 + X116*X69, X106*X96*X10 + X96*X10, X84*X43*X36 + X84*X43, X112*X93*X88 + X112*X93, X96*X8 + X96, X113*X93*X89 + X113*X93, X39*X36*X3 + X36*X3, X108*X33*X24 + X108*X33, X57*X21*X16 + X57*X16, X88*X31*X28 + X88*X31, X63*X61*X37 + X63*X37, X124*X121*X49 + X124*X49, X95*X59*X55 + X95*X55, X76*X54 + X54, X40*X16*X15 + X40*X15, X135*X35*X27 + X135*X35, X140*X137*X68 + X137*X68, X17*X5*X1 + X17*X1, X142*X139*X127 + X142*X127, X129*X128*X116 + X129*X116, X116*X81*X80 + X116*X81, X90*X88*X76 + X90*X76, X87*X86*X27 + X86*X27, X129*X122*X110 + X129*X110, X12*X1*X0 + X12*X1, X138*X135*X42 + X135*X42, X138*X23*X18 + X138*X23, X102*X97*X73 + X102*X73, X75*X72*X36 + X75*X36, X141*X131*X129 + X141*X131, X122*X94*X86 + X122*X94, X124*X94*X88 + X124*X94, X126*X58*X54 + X126*X58, X115*X111*X43 + X111*X43, X120*X46*X36 + X120*X46, X97*X8*X1 + X97*X8, X114*X81 + X114, X134*X35 + X134, X140*X11*X8 + X140*X11, X124*X118*X112 + X124*X118, X18*X6*X1 + X18*X1, X137*X136*X64 + X137*X64, X139*X138*X79 + X138*X79, X140*X139*X103 + X140*X103, X125*X10*X5 + X125*X10, X112*X111*X40 + X111*X40, X68*X44*X41 + X68*X41, X113*X111*X63 + X113*X63, X22*X21*X20 + X23*X21*X20 + X23*X22*X20 + X23*X22*X21 + X20 + X21 + X22 + X23 + 1, X118*X113*X70 + X113*X70, X69*X62*X33 + X62*X33, X49*X16 + X16, X45*X38*X33 + X38*X33, X115*X93*X91 + X115*X93, X42*X6*X3 + X42*X3, X133*X119*X109 + X133*X119, X106*X34*X32 + X106*X32, X79*X31*X30 + X79*X30, X27*X15*X14 + X27*X14, X113*X105*X101 + X113*X105, X41*X5*X3 + X41*X3, X107*X97*X23 + X97*X23, X132*X119*X108 + X132*X119, X41*X37*X17 + X37*X17, X106*X99*X46 + X99*X46, X133*X11*X1 + X133*X11, X97*X20 + X20, X6*X5*X4 + X7*X5*X4 + X7*X6*X4 + X7*X6*X5 + X4 + X5 + X6 + X7 + 1, X128*X106 + X106, X128*X120*X8 + X120*X8, X88*X87*X40 + X87*X40, X17*X12*X5 + X12*X5, X127*X124*X88 + X127*X88, X116*X21*X20 + X116*X21, X123*X46 + X123, X80*X56*X54 + X80*X54, X117*X114*X81 + X114*X81, X102*X96*X72 + X102*X72, X70*X46*X41 + X70*X41, X112*X57 + X112, X65*X63*X41 + X63*X41, X116*X93*X92 + X116*X93, X119*X83*X81 + X119*X81, X127*X10*X7 + X127*X10, X56*X44*X40 + X56*X40, X29*X25*X17 + X25*X17, X38*X36*X24 + X38*X24, X97*X32*X25 + X97*X32, X50*X48*X2 + X48*X2, X127*X94 + X127, X102*X32*X30 + X102*X32, X101*X80*X77 + X101*X80, X111*X93*X87 + X111*X93, X137*X119*X113 + X137*X119, X54*X49*X18 + X49*X18, X131*X23*X22 + X131*X22, X128*X121*X20 + X121*X20, X139*X35*X31 + X139*X35, X58*X34*X28 + X58*X28, X142*X137*X70 + X137*X70, X115*X9*X7 + X115*X9, X122*X121*X120 + X123*X121*X120 + X123*X122*X120 + X123*X122*X121 + X120 + X121 + X122 + X123 + 1, X127*X126*X90 + X127*X90, X141*X138*X81 + X138*X81, X141*X119 + X119, X142*X137*X125 + X142*X125, X142*X83*X82 + X142*X83, X119*X59*X57 + X119*X57, X51*X50*X38 + X51*X38, X119*X109*X23 + X109*X23, X140*X132*X8 + X132*X8, X121*X58*X49 + X121*X58, X103*X97*X19 + X97*X19, X21*X9*X1 + X21*X1, X82*X22*X18 + X82*X18, X128*X94*X92 + X128*X94, X102*X98*X74 + X102*X74, X84*X31*X24 + X84*X31, X18*X17*X16 + X19*X17*X16 + X19*X18*X16 + X19*X18*X17 + X16 + X17 + X18 + X19 + 1, X114*X33*X30 + X114*X33, X39*X38*X27 + X38*X27, X107*X71*X68 + X107*X68, X69*X63*X45 + X63*X45, X117*X109*X21 + X109*X21, X73*X66*X61 + X73*X66, X89*X67*X65 + X89*X67, X114*X109*X18 + X109*X18, X88*X86*X50 + X88*X50, X115*X109*X85 + X115*X85, X138*X47*X42 + X138*X47, X104*X96*X8 + X96*X8, X117*X116*X105 + X116*X105, X89*X55*X53 + X89*X55, X105*X45*X44 + X105*X44, X24*X2 + X2, X110*X33 + X33, X76*X54 + X76, X112*X111*X51 + X112*X51, X58*X10*X4 + X58*X4, X53*X48*X5 + X48*X5, X27, X55*X19*X16 + X55*X16, X78*X74*X30 + X74*X30, X57*X50*X33 + X50*X33, X49*X28*X25 + X49*X28, X64*X61*X49 + X64*X49, X84*X55*X48 + X84*X55, X112*X108*X4 + X108*X4, X77, X103*X92*X91 + X103*X92, X83*X23*X18 + X83*X18, X90*X79*X78 + X90*X79, X103*X44*X43 + X103*X44, X84*X7 + X7, X129*X118 + X129, X135*X107*X99 + X135*X107, X126*X124*X54 + X124*X54, X101*X56*X53 + X101*X56, X44*X38*X32 + X38*X32, X142*X131 + X142, X131*X123*X47 + X123*X47, X136*X95*X88 + X136*X95, X131*X122*X35 + X122*X35, X132*X83*X72 + X132*X83, X129*X127*X93 + X127*X93, X37*X36*X1 + X36*X1, X76*X75*X51 + X76*X51, X42*X37*X18 + X37*X18, X142, X77*X72*X5 + X72*X5, X87*X84*X3 + X84*X3, X125*X121*X17 + X121*X17, X139*X132*X7 + X132*X7, X125*X46*X41 + X125*X46, X105*X21*X20 + X105*X20, X89*X84*X60 + X89*X60, X133*X132*X12 + X133*X12, X129*X122*X33 + X122*X33, X135*X83*X75 + X135*X83, X33*X24*X9 + X24*X9, X101*X8*X5 + X101*X8, X66*X60*X6 + X60*X6, X93*X87*X45 + X87*X45, X104*X98*X32 + X98*X32, X107*X47*X44 + X107*X44, X38, X140*X132*X96 + X140*X96, X42*X41*X40 + X43*X41*X40 + X43*X42*X40 + X43*X42*X41 + X40 + X41 + X42 + X43 + 1, X34*X10*X2 + X34*X2, X133*X23 + X23, X106*X46*X44 + X106*X44, X82*X74*X34 + X74*X34, X70*X61*X22 + X61*X22, X87*X84*X36 + X87*X36, X37, X142*X23*X22 + X142*X23, X130*X129*X118 + X129*X118, X118*X82*X81 + X118*X81, X110*X105*X98 + X110*X105, X109*X69*X61 + X109*X69, X135*X134*X27 + X134*X27, X71*X63*X47 + X63*X47, X36*X3 + X36, X115*X114*X79 + X114*X79, X140*X134*X32 + X134*X32, X76*X75*X40 + X75*X40, X141*X107*X105 + X141*X107, X75*X30*X27 + X75*X30, X85*X84*X1 + X84*X1, X111*X109*X37 + X111*X37, X84*X7 + X84, X46*X34*X27 + X46*X27, X131*X121*X23 + X121*X23, X125*X123*X41 + X123*X41, X38*X3*X2 + X38*X3, X126*X123*X42 + X123*X42, X112*X109*X49 + X112*X49, X55*X31*X28 + X55*X28, X64*X41*X40 + X64*X41, X128*X34*X32 + X128*X34, X137*X95*X89 + X137*X95, X63*X53*X51 + X63*X53, X88*X84*X4 + X84*X4, X141*X140*X105 + X140*X105, X78*X72*X6 + X72*X6, X138*X137*X77 + X138*X77, X141*X119 + X141, X122*X34 + X122, X128*X127*X103 + X128*X103, X51*X49*X37 + X51*X37, X113*X81*X77 + X113*X81, X99*X80*X75 + X99*X80, X101*X99*X63 + X101*X63, X31*X19*X14 + X31*X14, X16*X12*X4 + X12*X4, X128*X123*X44 + X123*X44, X125*X120*X5 + X120*X5, X138*X137*X66 + X137*X66, X116*X108*X8 + X108*X8, X107*X11*X8 + X107*X8, X79*X75*X43 + X75*X43, X88*X43*X40 + X88*X43, X55*X43*X40 + X55*X40, X118*X58*X57 + X118*X57, X36*X27*X24 + X36*X27, X137*X134*X29 + X134*X29, X128*X123*X99 + X128*X99, X82*X73*X22 + X73*X22, X140, X142*X134*X34 + X134*X34, X141*X35*X33 + X141*X35, X61*X41*X37 + X61*X41, X141*X95*X93 + X141*X95, X85*X19 + X19, X124*X46*X40 + X124*X46, X45*X33*X27 + X45*X27, X80*X75*X44 + X75*X44, X109*X33*X25 + X109*X33, X55*X48*X7 + X48*X7, X137*X133*X17 + X133*X17, X68*X62*X32 + X62*X32, X134*X23*X14 + X134*X23, X143*X140*X107 + X140*X107, X143*X132*X11 + X132*X11, X58*X22*X16 + X58*X16, X128*X122*X98 + X128*X98, X107*X59*X56 + X107*X56, X109*X21*X13 + X109*X21, X134*X47*X38 + X134*X47, X87*X19*X15 + X87*X19, X22*X12*X10 + X12*X10, X104*X102*X80 + X102*X80, X97*X96*X12 + X97*X12, X109*X81*X73 + X109*X81, X108*X105*X96 + X108*X105, X127*X124*X55 + X124*X55, X99*X56*X51 + X99*X56, X50*X28 + X28, X115*X112*X88 + X115*X88, X138*X135*X75 + X138*X75, X77*X54*X53 + X77*X54, X15, X118*X112*X58 + X112*X58, X99*X32*X27 + X99*X32, X114*X112*X54 + X112*X54, X93*X84*X9 + X84*X9, X124*X58 + X58, X95*X11*X7 + X95*X7, X136*X133*X16 + X133*X16, X56*X20*X16 + X56*X16, X88*X55*X52 + X88*X55, X75*X54*X51 + X75*X54, X14, X111*X110*X27 + X110*X27, X131*X119*X118 + X131*X118, X140*X137*X101 + X140*X101, X110*X109*X14 + X109*X14, X64*X53 + X64, X125*X122*X62 + X125*X62, X116*X115*X103 + X116*X103, X142*X135*X46 + X135*X46, X122*X22*X14 + X122*X22, X66*X30*X29 + X66*X29, X40*X38*X28 + X38*X28, X114*X9*X6 + X114*X9, X119*X35*X33 + X119*X33, X112*X69*X64 + X112*X69, X100*X97*X49 + X100*X49, X140*X107*X104 + X140*X107, X114*X113*X66 + X113*X66, X98*X80*X74 + X98*X80, X125*X82*X77 + X125*X82, X38*X27*X26 + X38*X27, X126*X124*X76 + X126*X76, X19*X12*X7 + X12*X7, X140*X119*X116 + X140*X119, X136*X135*X51 + X136*X51, X116*X112*X56 + X112*X56, X131*X124*X59 + X124*X59, X129*X124*X112 + X129*X112, X129*X125*X113 + X129*X113, X125*X118*X113 + X125*X118, X107*X102*X83 + X102*X83, X86*X43*X38 + X86*X43, X67*X55*X53 + X67*X53, X121*X106*X97 + X121*X106, X99*X98*X27 + X98*X27, X115*X57*X55 + X115*X57, X18*X12*X6 + X12*X6, X139*X59*X55 + X139*X59, X123*X120*X36 + X123*X36, X115*X93 + X115, X121*X82*X73 + X121*X82, X136*X59 + X136, X28*X25*X16 + X25*X16, X81*X72*X9 + X72*X9, X35*X25*X23 + X25*X23, X62*X53*X50 + X62*X53, X41*X36*X5 + X36*X5, X131*X128*X107 + X128*X107, X128*X22*X20 + X128*X22, X65*X61*X17 + X61*X17, X81*X75*X45 + X75*X45, X69*X21*X17 + X69*X17, X106*X98*X34 + X98*X34, X86*X85*X84 + X87*X85*X84 + X87*X86*X84 + X87*X86*X85 + X84 + X85 + X86 + X87 + 1, X96*X44*X36 + X96*X44, X137*X59*X53 + X137*X59, X93*X33*X31 + X93*X31, X115*X111*X87 + X115*X87, X99*X97*X37 + X99*X37, X33*X9*X2 + X33*X2, X111*X69*X63 + X111*X69, X118*X109*X22 + X109*X22, X125*X94*X89 + X125*X94, X102*X96*X6 + X96*X6, X110*X93*X86 + X110*X93, X102*X80*X78 + X102*X80, X116*X105 + X116, X119*X107*X105 + X119*X105, X120*X10*X0 + X120*X10, X73*X72*X1 + X72*X1, X37*X27*X25 + X37*X27, X25, X90, X128*X127*X92 + X127*X92, X78*X77*X66 + X77*X66, X101*X32*X29 + X101*X32, X131*X126*X83 + X126*X83, X137*X132*X60 + X137*X60, X128*X58*X56 + X128*X58, X142*X134*X122 + X142*X122, X82*X77*X70 + X77*X70, X113*X110*X29 + X110*X29, X141*X139*X93 + X139*X93, X142*X139*X94 + X139*X94, X38*X27 + X27, X126*X123*X75 + X126*X75, X114*X57*X54 + X114*X57, X68*X64*X56 + X64*X56, X108*X57*X48 + X108*X57, X47*X37*X23 + X37*X23, X40*X28*X27 + X40*X27, X86*X67*X62 + X86*X67, X138*X83 + X138, X33*X25*X21 + X25*X21, X102*X97*X18 + X97*X18, X124*X120*X4 + X120*X4, X89*X85*X17 + X85*X17, X140*X131*X128 + X140*X131, X38*X27 + X38, X143 + 1, X136*X132*X48 + X136*X48, X121*X70*X61 + X121*X70, X82*X10*X6 + X82*X6, X61*X5*X1 + X61*X5, X90*X89*X66 + X89*X66, X47*X36*X11 + X36*X11, X125*X120*X60 + X125*X60, X137*X71 + X71, X74*X72*X24 + X74*X24, X74*X73*X14 + X73*X14, X122*X10*X2 + X122*X10, X30*X6*X2 + X30*X2, X110*X33 + X110, X107*X96*X11 + X96*X11, X97*X80*X73 + X97*X80, X134*X133*X25 + X134*X25, X94*X84*X10 + X84*X10, X74*X54*X50 + X74*X54, X65*X60*X5 + X60*X5, X59*X51*X47 + X51*X47, X142*X132*X120 + X142*X120, X47*X38*X35 + X38*X35, X48*X4 + X4, X99*X44 + X99, X131*X83*X82 + X131*X82, X137*X47*X41 + X137*X47, X42*X38*X30 + X38*X30, X103*X80*X79 + X103*X80, X119*X112*X59 + X112*X59, X111*X45 + X45, X110*X9*X2 + X110*X9, X71*X47*X41 + X71*X41, X126*X82 + X82, X105, X119*X71*X69 + X119*X69, X12*X1 + X1, X141, X80*X77*X68 + X77*X68, X34*X24*X10 + X24*X10, X89*X88*X64 + X89*X64, X58*X51*X46 + X51*X46, X111*X33*X27 + X111*X33, X67*X61*X19 + X61*X19, X123*X34*X27 + X123*X34, X50*X49*X25 + X50*X25, X129*X70*X69 + X129*X70, X101*X68 + X68, X72*X6 + X6, X135*X131*X123 + X135*X131, X131*X127*X95 + X127*X95, X90*X79 + X79, X129*X123*X45 + X123*X45, X96*X68*X60 + X96*X68, X107*X100*X59 + X100*X59, X107*X23*X20 + X107*X20, X137*X107*X101 + X137*X107, X66*X61*X18 + X61*X18, X134*X133*X14 + X133*X14, X13*X12*X1 + X12*X1, X102*X56*X54 + X102*X56, X56*X49*X20 + X49*X20, X96*X32*X24 + X96*X32, X79*X73*X19 + X73*X19, X122*X34 + X34, X132*X11 + X11, X51*X16*X15 + X51*X16, X129*X128*X105 + X128*X105, X90*X86*X30 + X86*X30, X92*X88*X56 + X88*X56] [X73*X61 + X73*X62 + X73*X63 + X74*X61 + X74*X62 + X74*X63 + X75*X61 + X75*X62 + X75*X63 + X85*X61 + X85*X62 + X85*X63 + X85*X73 + X85*X74 + X85*X75 + X86*X61 + X86*X62 + X86*X63 + X86*X73 + X86*X74 + X86*X75 + X87*X61 + X87*X62 + X87*X63 + X87*X73 + X87*X74 + X87*X75 + 1, X62*X61 + X63*X61 + X63*X62 + X73*X62 + X73*X63 + X74*X61 + X74*X63 + X74*X73 + X75*X61 + X75*X62 + X75*X73 + X75*X74 + X85*X62 + X85*X63 + X85*X74 + X85*X75 + X86*X61 + X86*X63 + X86*X73 + X86*X75 + X86*X85 + X87*X61 + X87*X62 + X87*X73 + X87*X74 + X87*X85 + X87*X86 + 1, X73*X61 + X85*X61 + X85*X73, X62*X61 + X63*X61 + X63*X62, X74*X62 + X86*X62 + X86*X74, X74*X73 + X75*X73 + X75*X74, X75*X63 + X87*X63 + X87*X75, X86*X85 + X87*X85 + X87*X86, X121*X109 + X121*X110 + X121*X111 + X122*X109 + X122*X110 + X122*X111 + X123*X109 + X123*X110 + X123*X111 + X133*X109 + X133*X110 + X133*X111 + X133*X121 + X133*X122 + X133*X123 + X134*X109 + X134*X110 + X134*X111 + X134*X121 + X134*X122 + X134*X123 + X135*X109 + X135*X110 + X135*X111 + X135*X121 + X135*X122 + X135*X123 + 1, X110*X109 + X111*X109 + X111*X110 + X121*X110 + X121*X111 + X122*X109 + X122*X111 + X122*X121 + X123*X109 + X123*X110 + X123*X121 + X123*X122 + X133*X110 + X133*X111 + X133*X122 + X133*X123 + X134*X109 + X134*X111 + X134*X121 + X134*X123 + X134*X133 + X135*X109 + X135*X110 + X135*X121 + X135*X122 + X135*X133 + X135*X134 + 1, X121*X109 + X133*X109 + X133*X121, X110*X109 + X111*X109 + X111*X110, X122*X110 + X134*X110 + X134*X122, X122*X121 + X123*X121 + X123*X122, X123*X111 + X135*X111 + X135*X123, X134*X133 + X135*X133 + X135*X134, X125*X113 + X125*X114 + X125*X115 + X126*X113 + X126*X114 + X126*X115 + X127*X113 + X127*X114 + X127*X115 + X137*X113 + X137*X114 + X137*X115 + X137*X125 + X137*X126 + X137*X127 + X138*X113 + X138*X114 + X138*X115 + X138*X125 + X138*X126 + X138*X127 + X139*X113 + X139*X114 + X139*X115 + X139*X125 + X139*X126 + X139*X127 + 1, X114*X113 + X115*X113 + X115*X114 + X125*X114 + X125*X115 + X126*X113 + X126*X115 + X126*X125 + X127*X113 + X127*X114 + X127*X125 + X127*X126 + X137*X114 + X137*X115 + X137*X126 + X137*X127 + X138*X113 + X138*X115 + X138*X125 + X138*X127 + X138*X137 + X139*X113 + X139*X114 + X139*X125 + X139*X126 + X139*X137 + X139*X138 + 1, X125*X113 + X137*X113 + X137*X125, X114*X113 + X115*X113 + X115*X114, X126*X114 + X138*X114 + X138*X126, X126*X125 + X127*X125 + X127*X126, X127*X115 + X139*X115 + X139*X127, X138*X137 + X139*X137 + X139*X138] 24 [ X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11] [ X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23] [ X24 X25 X26 X27 X28 X29 X30 X31 X32 X33 X34 X35] [ X36 X37 X38 X39 X40 X41 X42 X43 X44 X45 X46 X47] [ X48 X49 X50 X51 X52 X53 X54 X55 X56 X57 X58 X59] [ X60 X61 X62 X63 X64 X65 X66 X67 X68 X69 X70 X71] [ X72 X73 X74 X75 X76 X77 X78 X79 X80 X81 X82 X83] [ X84 X85 X86 X87 X88 X89 X90 X91 X92 X93 X94 X95] [ X96 X97 X98 X99 X100 X101 X102 X103 X104 X105 X106 X107] [X108 X109 X110 X111 X112 X113 X114 X115 X116 X117 X118 X119] [X120 X121 X122 X123 X124 X125 X126 X127 X128 X129 X130 X131] [X132 X133 X134 X135 X136 X137 X138 X139 X140 X141 X142 X143]
R[11,0];A[11,0] [[Prob(A[x,y])-Prob(R[x,y]) for y in range(12)] for x in range(12)]
X132 X133 + X134 + X135 + 1 [[-x0 + 1, -x1, -x2, -x3, 256*x61*x62*x63*x73*x74*x75*x85*x86*x87 - 128*x61*x62*x63*x73*x74*x75*x85*x86 - 128*x61*x62*x63*x73*x74*x75*x85*x87 - 128*x61*x62*x63*x73*x74*x75*x86*x87 - 128*x61*x62*x63*x73*x74*x85*x86*x87 - 128*x61*x62*x63*x73*x75*x85*x86*x87 - 128*x61*x62*x63*x74*x75*x85*x86*x87 - 128*x61*x62*x73*x74*x75*x85*x86*x87 - 128*x61*x63*x73*x74*x75*x85*x86*x87 - 128*x62*x63*x73*x74*x75*x85*x86*x87 + 64*x61*x62*x63*x73*x74*x75*x85 + 64*x61*x62*x63*x73*x74*x75*x86 + 64*x61*x62*x63*x73*x74*x85*x86 + 64*x61*x62*x63*x73*x75*x85*x86 + 64*x61*x62*x63*x74*x75*x85*x86 + 64*x61*x62*x73*x74*x75*x85*x86 + 64*x61*x63*x73*x74*x75*x85*x86 + 64*x62*x63*x73*x74*x75*x85*x86 + 64*x61*x62*x63*x73*x74*x75*x87 + 64*x61*x62*x63*x73*x74*x85*x87 + 64*x61*x62*x63*x73*x75*x85*x87 + 64*x61*x62*x63*x74*x75*x85*x87 + 64*x61*x62*x73*x74*x75*x85*x87 + 64*x61*x63*x73*x74*x75*x85*x87 + 64*x62*x63*x73*x74*x75*x85*x87 + 64*x61*x62*x63*x73*x74*x86*x87 + 64*x61*x62*x63*x73*x75*x86*x87 + 64*x61*x62*x63*x74*x75*x86*x87 + 64*x61*x62*x73*x74*x75*x86*x87 + 64*x61*x63*x73*x74*x75*x86*x87 + 64*x62*x63*x73*x74*x75*x86*x87 + 64*x61*x62*x63*x73*x85*x86*x87 + 64*x61*x62*x63*x74*x85*x86*x87 + 64*x61*x62*x73*x74*x85*x86*x87 + 64*x61*x63*x73*x74*x85*x86*x87 + 64*x62*x63*x73*x74*x85*x86*x87 + 64*x61*x62*x63*x75*x85*x86*x87 + 64*x61*x62*x73*x75*x85*x86*x87 + 64*x61*x63*x73*x75*x85*x86*x87 + 64*x62*x63*x73*x75*x85*x86*x87 + 64*x61*x62*x74*x75*x85*x86*x87 + 64*x61*x63*x74*x75*x85*x86*x87 + 64*x62*x63*x74*x75*x85*x86*x87 + 64*x61*x73*x74*x75*x85*x86*x87 + 64*x62*x73*x74*x75*x85*x86*x87 + 64*x63*x73*x74*x75*x85*x86*x87 - 32*x61*x62*x63*x73*x74*x75 - 32*x61*x62*x63*x73*x74*x85 - 32*x61*x62*x63*x73*x75*x85 - 32*x61*x62*x63*x74*x75*x85 - 32*x61*x62*x73*x74*x75*x85 - 32*x61*x63*x73*x74*x75*x85 - 32*x62*x63*x73*x74*x75*x85 - 32*x61*x62*x63*x73*x74*x86 - 32*x61*x62*x63*x73*x75*x86 - 32*x61*x62*x63*x74*x75*x86 - 32*x61*x62*x73*x74*x75*x86 - 32*x61*x63*x73*x74*x75*x86 - 32*x62*x63*x73*x74*x75*x86 - 32*x61*x62*x63*x73*x85*x86 - 32*x61*x62*x63*x74*x85*x86 - 32*x61*x62*x73*x74*x85*x86 - 32*x61*x63*x73*x74*x85*x86 - 32*x62*x63*x73*x74*x85*x86 - 32*x61*x62*x63*x75*x85*x86 - 32*x61*x62*x73*x75*x85*x86 - 32*x61*x63*x73*x75*x85*x86 - 32*x62*x63*x73*x75*x85*x86 - 32*x61*x62*x74*x75*x85*x86 - 32*x61*x63*x74*x75*x85*x86 - 32*x62*x63*x74*x75*x85*x86 - 32*x61*x73*x74*x75*x85*x86 - 32*x62*x73*x74*x75*x85*x86 - 32*x63*x73*x74*x75*x85*x86 - 32*x61*x62*x63*x73*x74*x87 - 32*x61*x62*x63*x73*x75*x87 - 32*x61*x62*x63*x74*x75*x87 - 32*x61*x62*x73*x74*x75*x87 - 32*x61*x63*x73*x74*x75*x87 - 32*x62*x63*x73*x74*x75*x87 - 32*x61*x62*x63*x73*x85*x87 - 32*x61*x62*x63*x74*x85*x87 - 32*x61*x62*x73*x74*x85*x87 - 32*x61*x63*x73*x74*x85*x87 - 32*x62*x63*x73*x74*x85*x87 - 32*x61*x62*x63*x75*x85*x87 - 32*x61*x62*x73*x75*x85*x87 - 32*x61*x63*x73*x75*x85*x87 - 32*x62*x63*x73*x75*x85*x87 - 32*x61*x62*x74*x75*x85*x87 - 32*x61*x63*x74*x75*x85*x87 - 32*x62*x63*x74*x75*x85*x87 - 32*x61*x73*x74*x75*x85*x87 - 32*x62*x73*x74*x75*x85*x87 - 32*x63*x73*x74*x75*x85*x87 - 32*x61*x62*x63*x73*x86*x87 - 32*x61*x62*x63*x74*x86*x87 - 32*x61*x62*x73*x74*x86*x87 - 32*x61*x63*x73*x74*x86*x87 - 32*x62*x63*x73*x74*x86*x87 - 32*x61*x62*x63*x75*x86*x87 - 32*x61*x62*x73*x75*x86*x87 - 32*x61*x63*x73*x75*x86*x87 - 32*x62*x63*x73*x75*x86*x87 - 32*x61*x62*x74*x75*x86*x87 - 32*x61*x63*x74*x75*x86*x87 - 32*x62*x63*x74*x75*x86*x87 - 32*x61*x73*x74*x75*x86*x87 - 32*x62*x73*x74*x75*x86*x87 - 32*x63*x73*x74*x75*x86*x87 - 32*x61*x62*x63*x85*x86*x87 - 32*x61*x62*x73*x85*x86*x87 - 32*x61*x63*x73*x85*x86*x87 - 32*x62*x63*x73*x85*x86*x87 - 32*x61*x62*x74*x85*x86*x87 - 32*x61*x63*x74*x85*x86*x87 - 32*x62*x63*x74*x85*x86*x87 - 32*x61*x73*x74*x85*x86*x87 - 32*x62*x73*x74*x85*x86*x87 - 32*x63*x73*x74*x85*x86*x87 - 32*x61*x62*x75*x85*x86*x87 - 32*x61*x63*x75*x85*x86*x87 - 32*x62*x63*x75*x85*x86*x87 - 32*x61*x73*x75*x85*x86*x87 - 32*x62*x73*x75*x85*x86*x87 - 32*x63*x73*x75*x85*x86*x87 - 32*x61*x74*x75*x85*x86*x87 - 32*x62*x74*x75*x85*x86*x87 - 32*x63*x74*x75*x85*x86*x87 - 32*x73*x74*x75*x85*x86*x87 + 16*x61*x62*x63*x73*x74 + 16*x61*x62*x63*x73*x75 + 16*x61*x62*x63*x74*x75 + 16*x61*x62*x73*x74*x75 + 16*x61*x63*x73*x74*x75 + 16*x62*x63*x73*x74*x75 + 16*x61*x62*x63*x73*x85 + 16*x61*x62*x63*x74*x85 + 16*x61*x62*x73*x74*x85 + 16*x61*x63*x73*x74*x85 + 16*x62*x63*x73*x74*x85 + 16*x61*x62*x63*x75*x85 + 16*x61*x62*x73*x75*x85 + 16*x61*x63*x73*x75*x85 + 16*x62*x63*x73*x75*x85 + 16*x61*x62*x74*x75*x85 + 16*x61*x63*x74*x75*x85 + 16*x62*x63*x74*x75*x85 + 16*x61*x73*x74*x75*x85 + 16*x62*x73*x74*x75*x85 + 16*x63*x73*x74*x75*x85 + 16*x61*x62*x63*x73*x86 + 16*x61*x62*x63*x74*x86 + 16*x61*x62*x73*x74*x86 + 16*x61*x63*x73*x74*x86 + 16*x62*x63*x73*x74*x86 + 16*x61*x62*x63*x75*x86 + 16*x61*x62*x73*x75*x86 + 16*x61*x63*x73*x75*x86 + 16*x62*x63*x73*x75*x86 + 16*x61*x62*x74*x75*x86 + 16*x61*x63*x74*x75*x86 + 16*x62*x63*x74*x75*x86 + 16*x61*x73*x74*x75*x86 + 16*x62*x73*x74*x75*x86 + 16*x63*x73*x74*x75*x86 + 16*x61*x62*x63*x85*x86 + 16*x61*x62*x73*x85*x86 + 16*x61*x63*x73*x85*x86 + 16*x62*x63*x73*x85*x86 + 16*x61*x62*x74*x85*x86 + 16*x61*x63*x74*x85*x86 + 16*x62*x63*x74*x85*x86 + 16*x61*x73*x74*x85*x86 + 16*x62*x73*x74*x85*x86 + 16*x63*x73*x74*x85*x86 + 16*x61*x62*x75*x85*x86 + 16*x61*x63*x75*x85*x86 + 16*x62*x63*x75*x85*x86 + 16*x61*x73*x75*x85*x86 + 16*x62*x73*x75*x85*x86 + 16*x63*x73*x75*x85*x86 + 16*x61*x74*x75*x85*x86 + 16*x62*x74*x75*x85*x86 + 16*x63*x74*x75*x85*x86 + 16*x73*x74*x75*x85*x86 + 16*x61*x62*x63*x73*x87 + 16*x61*x62*x63*x74*x87 + 16*x61*x62*x73*x74*x87 + 16*x61*x63*x73*x74*x87 + 16*x62*x63*x73*x74*x87 + 16*x61*x62*x63*x75*x87 + 16*x61*x62*x73*x75*x87 + 16*x61*x63*x73*x75*x87 + 16*x62*x63*x73*x75*x87 + 16*x61*x62*x74*x75*x87 + 16*x61*x63*x74*x75*x87 + 16*x62*x63*x74*x75*x87 + 16*x61*x73*x74*x75*x87 + 16*x62*x73*x74*x75*x87 + 16*x63*x73*x74*x75*x87 + 16*x61*x62*x63*x85*x87 + 16*x61*x62*x73*x85*x87 + 16*x61*x63*x73*x85*x87 + 16*x62*x63*x73*x85*x87 + 16*x61*x62*x74*x85*x87 + 16*x61*x63*x74*x85*x87 + 16*x62*x63*x74*x85*x87 + 16*x61*x73*x74*x85*x87 + 16*x62*x73*x74*x85*x87 + 16*x63*x73*x74*x85*x87 + 16*x61*x62*x75*x85*x87 + 16*x61*x63*x75*x85*x87 + 16*x62*x63*x75*x85*x87 + 16*x61*x73*x75*x85*x87 + 16*x62*x73*x75*x85*x87 + 16*x63*x73*x75*x85*x87 + 16*x61*x74*x75*x85*x87 + 16*x62*x74*x75*x85*x87 + 16*x63*x74*x75*x85*x87 + 16*x73*x74*x75*x85*x87 + 16*x61*x62*x63*x86*x87 + 16*x61*x62*x73*x86*x87 + 16*x61*x63*x73*x86*x87 + 16*x62*x63*x73*x86*x87 + 16*x61*x62*x74*x86*x87 + 16*x61*x63*x74*x86*x87 + 16*x62*x63*x74*x86*x87 + 16*x61*x73*x74*x86*x87 + 16*x62*x73*x74*x86*x87 + 16*x63*x73*x74*x86*x87 + 16*x61*x62*x75*x86*x87 + 16*x61*x63*x75*x86*x87 + 16*x62*x63*x75*x86*x87 + 16*x61*x73*x75*x86*x87 + 16*x62*x73*x75*x86*x87 + 16*x63*x73*x75*x86*x87 + 16*x61*x74*x75*x86*x87 + 16*x62*x74*x75*x86*x87 + 16*x63*x74*x75*x86*x87 + 16*x73*x74*x75*x86*x87 + 16*x61*x62*x85*x86*x87 + 16*x61*x63*x85*x86*x87 + 16*x62*x63*x85*x86*x87 + 16*x61*x73*x85*x86*x87 + 16*x62*x73*x85*x86*x87 + 16*x63*x73*x85*x86*x87 + 16*x61*x74*x85*x86*x87 + 16*x62*x74*x85*x86*x87 + 16*x63*x74*x85*x86*x87 + 16*x73*x74*x85*x86*x87 + 16*x61*x75*x85*x86*x87 + 16*x62*x75*x85*x86*x87 + 16*x63*x75*x85*x86*x87 + 16*x73*x75*x85*x86*x87 + 16*x74*x75*x85*x86*x87 - 8*x61*x62*x63*x73 - 8*x61*x62*x63*x74 - 8*x61*x62*x73*x74 - 8*x61*x63*x73*x74 - 8*x62*x63*x73*x74 - 8*x61*x62*x63*x75 - 8*x61*x62*x73*x75 - 8*x61*x63*x73*x75 - 8*x62*x63*x73*x75 - 8*x61*x62*x74*x75 - 8*x61*x63*x74*x75 - 8*x62*x63*x74*x75 - 8*x61*x73*x74*x75 - 8*x62*x73*x74*x75 - 8*x63*x73*x74*x75 - 8*x61*x62*x63*x85 - 8*x61*x62*x73*x85 - 8*x61*x63*x73*x85 - 8*x62*x63*x73*x85 - 8*x61*x62*x74*x85 - 8*x61*x63*x74*x85 - 8*x62*x63*x74*x85 - 8*x61*x73*x74*x85 - 8*x62*x73*x74*x85 - 8*x63*x73*x74*x85 - 8*x61*x62*x75*x85 - 8*x61*x63*x75*x85 - 8*x62*x63*x75*x85 - 8*x61*x73*x75*x85 - 8*x62*x73*x75*x85 - 8*x63*x73*x75*x85 - 8*x61*x74*x75*x85 - 8*x62*x74*x75*x85 - 8*x63*x74*x75*x85 - 8*x73*x74*x75*x85 - 8*x61*x62*x63*x86 - 8*x61*x62*x73*x86 - 8*x61*x63*x73*x86 - 8*x62*x63*x73*x86 - 8*x61*x62*x74*x86 - 8*x61*x63*x74*x86 - 8*x62*x63*x74*x86 - 8*x61*x73*x74*x86 - 8*x62*x73*x74*x86 - 8*x63*x73*x74*x86 - 8*x61*x62*x75*x86 - 8*x61*x63*x75*x86 - 8*x62*x63*x75*x86 - 8*x61*x73*x75*x86 - 8*x62*x73*x75*x86 - 8*x63*x73*x75*x86 - 8*x61*x74*x75*x86 - 8*x62*x74*x75*x86 - 8*x63*x74*x75*x86 - 8*x73*x74*x75*x86 - 8*x61*x62*x85*x86 - 8*x61*x63*x85*x86 - 8*x62*x63*x85*x86 - 8*x61*x73*x85*x86 - 8*x62*x73*x85*x86 - 8*x63*x73*x85*x86 - 8*x61*x74*x85*x86 - 8*x62*x74*x85*x86 - 8*x63*x74*x85*x86 - 8*x73*x74*x85*x86 - 8*x61*x75*x85*x86 - 8*x62*x75*x85*x86 - 8*x63*x75*x85*x86 - 8*x73*x75*x85*x86 - 8*x74*x75*x85*x86 - 8*x61*x62*x63*x87 - 8*x61*x62*x73*x87 - 8*x61*x63*x73*x87 - 8*x62*x63*x73*x87 - 8*x61*x62*x74*x87 - 8*x61*x63*x74*x87 - 8*x62*x63*x74*x87 - 8*x61*x73*x74*x87 - 8*x62*x73*x74*x87 - 8*x63*x73*x74*x87 - 8*x61*x62*x75*x87 - 8*x61*x63*x75*x87 - 8*x62*x63*x75*x87 - 8*x61*x73*x75*x87 - 8*x62*x73*x75*x87 - 8*x63*x73*x75*x87 - 8*x61*x74*x75*x87 - 8*x62*x74*x75*x87 - 8*x63*x74*x75*x87 - 8*x73*x74*x75*x87 - 8*x61*x62*x85*x87 - 8*x61*x63*x85*x87 - 8*x62*x63*x85*x87 - 8*x61*x73*x85*x87 - 8*x62*x73*x85*x87 - 8*x63*x73*x85*x87 - 8*x61*x74*x85*x87 - 8*x62*x74*x85*x87 - 8*x63*x74*x85*x87 - 8*x73*x74*x85*x87 - 8*x61*x75*x85*x87 - 8*x62*x75*x85*x87 - 8*x63*x75*x85*x87 - 8*x73*x75*x85*x87 - 8*x74*x75*x85*x87 - 8*x61*x62*x86*x87 - 8*x61*x63*x86*x87 - 8*x62*x63*x86*x87 - 8*x61*x73*x86*x87 - 8*x62*x73*x86*x87 - 8*x63*x73*x86*x87 - 8*x61*x74*x86*x87 - 8*x62*x74*x86*x87 - 8*x63*x74*x86*x87 - 8*x73*x74*x86*x87 - 8*x61*x75*x86*x87 - 8*x62*x75*x86*x87 - 8*x63*x75*x86*x87 - 8*x73*x75*x86*x87 - 8*x74*x75*x86*x87 - 8*x61*x85*x86*x87 - 8*x62*x85*x86*x87 - 8*x63*x85*x86*x87 - 8*x73*x85*x86*x87 - 8*x74*x85*x86*x87 - 8*x75*x85*x86*x87 + 4*x61*x62*x63 + 4*x61*x62*x73 + 4*x61*x63*x73 + 4*x62*x63*x73 + 4*x61*x62*x74 + 4*x61*x63*x74 + 4*x62*x63*x74 + 4*x61*x73*x74 + 4*x62*x73*x74 + 4*x63*x73*x74 + 4*x61*x62*x75 + 4*x61*x63*x75 + 4*x62*x63*x75 + 4*x61*x73*x75 + 4*x62*x73*x75 + 4*x63*x73*x75 + 4*x61*x74*x75 + 4*x62*x74*x75 + 4*x63*x74*x75 + 4*x73*x74*x75 + 4*x61*x62*x85 + 4*x61*x63*x85 + 4*x62*x63*x85 + 4*x61*x73*x85 + 4*x62*x73*x85 + 4*x63*x73*x85 + 4*x61*x74*x85 + 4*x62*x74*x85 + 4*x63*x74*x85 + 4*x73*x74*x85 + 4*x61*x75*x85 + 4*x62*x75*x85 + 4*x63*x75*x85 + 4*x73*x75*x85 + 4*x74*x75*x85 + 4*x61*x62*x86 + 4*x61*x63*x86 + 4*x62*x63*x86 + 4*x61*x73*x86 + 4*x62*x73*x86 + 4*x63*x73*x86 + 4*x61*x74*x86 + 4*x62*x74*x86 + 4*x63*x74*x86 + 4*x73*x74*x86 + 4*x61*x75*x86 + 4*x62*x75*x86 + 4*x63*x75*x86 + 4*x73*x75*x86 + 4*x74*x75*x86 + 4*x61*x85*x86 + 4*x62*x85*x86 + 4*x63*x85*x86 + 4*x73*x85*x86 + 4*x74*x85*x86 + 4*x75*x85*x86 + 4*x61*x62*x87 + 4*x61*x63*x87 + 4*x62*x63*x87 + 4*x61*x73*x87 + 4*x62*x73*x87 + 4*x63*x73*x87 + 4*x61*x74*x87 + 4*x62*x74*x87 + 4*x63*x74*x87 + 4*x73*x74*x87 + 4*x61*x75*x87 + 4*x62*x75*x87 + 4*x63*x75*x87 + 4*x73*x75*x87 + 4*x74*x75*x87 + 4*x61*x85*x87 + 4*x62*x85*x87 + 4*x63*x85*x87 + 4*x73*x85*x87 + 4*x74*x85*x87 + 4*x75*x85*x87 + 4*x61*x86*x87 + 4*x62*x86*x87 + 4*x63*x86*x87 + 4*x73*x86*x87 + 4*x74*x86*x87 + 4*x75*x86*x87 + 4*x85*x86*x87 - 2*x61*x62 - 2*x61*x63 - 2*x62*x63 - 2*x61*x73 - 2*x62*x73 - 2*x63*x73 - 2*x61*x74 - 2*x62*x74 - 2*x63*x74 - 2*x73*x74 - 2*x61*x75 - 2*x62*x75 - 2*x63*x75 - 2*x73*x75 - 2*x74*x75 - 2*x61*x85 - 2*x62*x85 - 2*x63*x85 - 2*x73*x85 - 2*x74*x85 - 2*x75*x85 - 2*x61*x86 - 2*x62*x86 - 2*x63*x86 - 2*x73*x86 - 2*x74*x86 - 2*x75*x86 - 2*x85*x86 - 2*x61*x87 - 2*x62*x87 - 2*x63*x87 - 2*x73*x87 - 2*x74*x87 - 2*x75*x87 - 2*x85*x87 - 2*x86*x87 - x4 + x61 + x62 + x63 + x73 + x74 + x75 + x85 + x86 + x87, -4*x61*x62*x63 + 2*x61*x62 + 2*x61*x63 + 2*x62*x63 - x5 - x61 - x62 - x63 + 1, -4*x73*x74*x75 + 2*x73*x74 + 2*x73*x75 + 2*x74*x75 - x6 - x73 - x74 - x75 + 1, -4*x85*x86*x87 + 2*x85*x86 + 2*x85*x87 + 2*x86*x87 - x7 - x85 - x86 - x87 + 1, 256*x109*x110*x111*x121*x122*x123*x133*x134*x135 - 128*x109*x110*x111*x121*x122*x123*x133*x134 - 128*x109*x110*x111*x121*x122*x123*x133*x135 - 128*x109*x110*x111*x121*x122*x123*x134*x135 - 128*x109*x110*x111*x121*x122*x133*x134*x135 - 128*x109*x110*x111*x121*x123*x133*x134*x135 - 128*x109*x110*x111*x122*x123*x133*x134*x135 - 128*x109*x110*x121*x122*x123*x133*x134*x135 - 128*x109*x111*x121*x122*x123*x133*x134*x135 - 128*x110*x111*x121*x122*x123*x133*x134*x135 + 64*x109*x110*x111*x121*x122*x123*x133 + 64*x109*x110*x111*x121*x122*x123*x134 + 64*x109*x110*x111*x121*x122*x133*x134 + 64*x109*x110*x111*x121*x123*x133*x134 + 64*x109*x110*x111*x122*x123*x133*x134 + 64*x109*x110*x121*x122*x123*x133*x134 + 64*x109*x111*x121*x122*x123*x133*x134 + 64*x110*x111*x121*x122*x123*x133*x134 + 64*x109*x110*x111*x121*x122*x123*x135 + 64*x109*x110*x111*x121*x122*x133*x135 + 64*x109*x110*x111*x121*x123*x133*x135 + 64*x109*x110*x111*x122*x123*x133*x135 + 64*x109*x110*x121*x122*x123*x133*x135 + 64*x109*x111*x121*x122*x123*x133*x135 + 64*x110*x111*x121*x122*x123*x133*x135 + 64*x109*x110*x111*x121*x122*x134*x135 + 64*x109*x110*x111*x121*x123*x134*x135 + 64*x109*x110*x111*x122*x123*x134*x135 + 64*x109*x110*x121*x122*x123*x134*x135 + 64*x109*x111*x121*x122*x123*x134*x135 + 64*x110*x111*x121*x122*x123*x134*x135 + 64*x109*x110*x111*x121*x133*x134*x135 + 64*x109*x110*x111*x122*x133*x134*x135 + 64*x109*x110*x121*x122*x133*x134*x135 + 64*x109*x111*x121*x122*x133*x134*x135 + 64*x110*x111*x121*x122*x133*x134*x135 + 64*x109*x110*x111*x123*x133*x134*x135 + 64*x109*x110*x121*x123*x133*x134*x135 + 64*x109*x111*x121*x123*x133*x134*x135 + 64*x110*x111*x121*x123*x133*x134*x135 + 64*x109*x110*x122*x123*x133*x134*x135 + 64*x109*x111*x122*x123*x133*x134*x135 + 64*x110*x111*x122*x123*x133*x134*x135 + 64*x109*x121*x122*x123*x133*x134*x135 + 64*x110*x121*x122*x123*x133*x134*x135 + 64*x111*x121*x122*x123*x133*x134*x135 - 32*x109*x110*x111*x121*x122*x123 - 32*x109*x110*x111*x121*x122*x133 - 32*x109*x110*x111*x121*x123*x133 - 32*x109*x110*x111*x122*x123*x133 - 32*x109*x110*x121*x122*x123*x133 - 32*x109*x111*x121*x122*x123*x133 - 32*x110*x111*x121*x122*x123*x133 - 32*x109*x110*x111*x121*x122*x134 - 32*x109*x110*x111*x121*x123*x134 - 32*x109*x110*x111*x122*x123*x134 - 32*x109*x110*x121*x122*x123*x134 - 32*x109*x111*x121*x122*x123*x134 - 32*x110*x111*x121*x122*x123*x134 - 32*x109*x110*x111*x121*x133*x134 - 32*x109*x110*x111*x122*x133*x134 - 32*x109*x110*x121*x122*x133*x134 - 32*x109*x111*x121*x122*x133*x134 - 32*x110*x111*x121*x122*x133*x134 - 32*x109*x110*x111*x123*x133*x134 - 32*x109*x110*x121*x123*x133*x134 - 32*x109*x111*x121*x123*x133*x134 - 32*x110*x111*x121*x123*x133*x134 - 32*x109*x110*x122*x123*x133*x134 - 32*x109*x111*x122*x123*x133*x134 - 32*x110*x111*x122*x123*x133*x134 - 32*x109*x121*x122*x123*x133*x134 - 32*x110*x121*x122*x123*x133*x134 - 32*x111*x121*x122*x123*x133*x134 - 32*x109*x110*x111*x121*x122*x135 - 32*x109*x110*x111*x121*x123*x135 - 32*x109*x110*x111*x122*x123*x135 - 32*x109*x110*x121*x122*x123*x135 - 32*x109*x111*x121*x122*x123*x135 - 32*x110*x111*x121*x122*x123*x135 - 32*x109*x110*x111*x121*x133*x135 - 32*x109*x110*x111*x122*x133*x135 - 32*x109*x110*x121*x122*x133*x135 - 32*x109*x111*x121*x122*x133*x135 - 32*x110*x111*x121*x122*x133*x135 - 32*x109*x110*x111*x123*x133*x135 - 32*x109*x110*x121*x123*x133*x135 - 32*x109*x111*x121*x123*x133*x135 - 32*x110*x111*x121*x123*x133*x135 - 32*x109*x110*x122*x123*x133*x135 - 32*x109*x111*x122*x123*x133*x135 - 32*x110*x111*x122*x123*x133*x135 - 32*x109*x121*x122*x123*x133*x135 - 32*x110*x121*x122*x123*x133*x135 - 32*x111*x121*x122*x123*x133*x135 - 32*x109*x110*x111*x121*x134*x135 - 32*x109*x110*x111*x122*x134*x135 - 32*x109*x110*x121*x122*x134*x135 - 32*x109*x111*x121*x122*x134*x135 - 32*x110*x111*x121*x122*x134*x135 - 32*x109*x110*x111*x123*x134*x135 - 32*x109*x110*x121*x123*x134*x135 - 32*x109*x111*x121*x123*x134*x135 - 32*x110*x111*x121*x123*x134*x135 - 32*x109*x110*x122*x123*x134*x135 - 32*x109*x111*x122*x123*x134*x135 - 32*x110*x111*x122*x123*x134*x135 - 32*x109*x121*x122*x123*x134*x135 - 32*x110*x121*x122*x123*x134*x135 - 32*x111*x121*x122*x123*x134*x135 - 32*x109*x110*x111*x133*x134*x135 - 32*x109*x110*x121*x133*x134*x135 - 32*x109*x111*x121*x133*x134*x135 - 32*x110*x111*x121*x133*x134*x135 - 32*x109*x110*x122*x133*x134*x135 - 32*x109*x111*x122*x133*x134*x135 - 32*x110*x111*x122*x133*x134*x135 - 32*x109*x121*x122*x133*x134*x135 - 32*x110*x121*x122*x133*x134*x135 - 32*x111*x121*x122*x133*x134*x135 - 32*x109*x110*x123*x133*x134*x135 - 32*x109*x111*x123*x133*x134*x135 - 32*x110*x111*x123*x133*x134*x135 - 32*x109*x121*x123*x133*x134*x135 - 32*x110*x121*x123*x133*x134*x135 - 32*x111*x121*x123*x133*x134*x135 - 32*x109*x122*x123*x133*x134*x135 - 32*x110*x122*x123*x133*x134*x135 - 32*x111*x122*x123*x133*x134*x135 - 32*x121*x122*x123*x133*x134*x135 + 16*x109*x110*x111*x121*x122 + 16*x109*x110*x111*x121*x123 + 16*x109*x110*x111*x122*x123 + 16*x109*x110*x121*x122*x123 + 16*x109*x111*x121*x122*x123 + 16*x110*x111*x121*x122*x123 + 16*x109*x110*x111*x121*x133 + 16*x109*x110*x111*x122*x133 + 16*x109*x110*x121*x122*x133 + 16*x109*x111*x121*x122*x133 + 16*x110*x111*x121*x122*x133 + 16*x109*x110*x111*x123*x133 + 16*x109*x110*x121*x123*x133 + 16*x109*x111*x121*x123*x133 + 16*x110*x111*x121*x123*x133 + 16*x109*x110*x122*x123*x133 + 16*x109*x111*x122*x123*x133 + 16*x110*x111*x122*x123*x133 + 16*x109*x121*x122*x123*x133 + 16*x110*x121*x122*x123*x133 + 16*x111*x121*x122*x123*x133 + 16*x109*x110*x111*x121*x134 + 16*x109*x110*x111*x122*x134 + 16*x109*x110*x121*x122*x134 + 16*x109*x111*x121*x122*x134 + 16*x110*x111*x121*x122*x134 + 16*x109*x110*x111*x123*x134 + 16*x109*x110*x121*x123*x134 + 16*x109*x111*x121*x123*x134 + 16*x110*x111*x121*x123*x134 + 16*x109*x110*x122*x123*x134 + 16*x109*x111*x122*x123*x134 + 16*x110*x111*x122*x123*x134 + 16*x109*x121*x122*x123*x134 + 16*x110*x121*x122*x123*x134 + 16*x111*x121*x122*x123*x134 + 16*x109*x110*x111*x133*x134 + 16*x109*x110*x121*x133*x134 + 16*x109*x111*x121*x133*x134 + 16*x110*x111*x121*x133*x134 + 16*x109*x110*x122*x133*x134 + 16*x109*x111*x122*x133*x134 + 16*x110*x111*x122*x133*x134 + 16*x109*x121*x122*x133*x134 + 16*x110*x121*x122*x133*x134 + 16*x111*x121*x122*x133*x134 + 16*x109*x110*x123*x133*x134 + 16*x109*x111*x123*x133*x134 + 16*x110*x111*x123*x133*x134 + 16*x109*x121*x123*x133*x134 + 16*x110*x121*x123*x133*x134 + 16*x111*x121*x123*x133*x134 + 16*x109*x122*x123*x133*x134 + 16*x110*x122*x123*x133*x134 + 16*x111*x122*x123*x133*x134 + 16*x121*x122*x123*x133*x134 + 16*x109*x110*x111*x121*x135 + 16*x109*x110*x111*x122*x135 + 16*x109*x110*x121*x122*x135 + 16*x109*x111*x121*x122*x135 + 16*x110*x111*x121*x122*x135 + 16*x109*x110*x111*x123*x135 + 16*x109*x110*x121*x123*x135 + 16*x109*x111*x121*x123*x135 + 16*x110*x111*x121*x123*x135 + 16*x109*x110*x122*x123*x135 + 16*x109*x111*x122*x123*x135 + 16*x110*x111*x122*x123*x135 + 16*x109*x121*x122*x123*x135 + 16*x110*x121*x122*x123*x135 + 16*x111*x121*x122*x123*x135 + 16*x109*x110*x111*x133*x135 + 16*x109*x110*x121*x133*x135 + 16*x109*x111*x121*x133*x135 + 16*x110*x111*x121*x133*x135 + 16*x109*x110*x122*x133*x135 + 16*x109*x111*x122*x133*x135 + 16*x110*x111*x122*x133*x135 + 16*x109*x121*x122*x133*x135 + 16*x110*x121*x122*x133*x135 + 16*x111*x121*x122*x133*x135 + 16*x109*x110*x123*x133*x135 + 16*x109*x111*x123*x133*x135 + 16*x110*x111*x123*x133*x135 + 16*x109*x121*x123*x133*x135 + 16*x110*x121*x123*x133*x135 + 16*x111*x121*x123*x133*x135 + 16*x109*x122*x123*x133*x135 + 16*x110*x122*x123*x133*x135 + 16*x111*x122*x123*x133*x135 + 16*x121*x122*x123*x133*x135 + 16*x109*x110*x111*x134*x135 + 16*x109*x110*x121*x134*x135 + 16*x109*x111*x121*x134*x135 + 16*x110*x111*x121*x134*x135 + 16*x109*x110*x122*x134*x135 + 16*x109*x111*x122*x134*x135 + 16*x110*x111*x122*x134*x135 + 16*x109*x121*x122*x134*x135 + 16*x110*x121*x122*x134*x135 + 16*x111*x121*x122*x134*x135 + 16*x109*x110*x123*x134*x135 + 16*x109*x111*x123*x134*x135 + 16*x110*x111*x123*x134*x135 + 16*x109*x121*x123*x134*x135 + 16*x110*x121*x123*x134*x135 + 16*x111*x121*x123*x134*x135 + 16*x109*x122*x123*x134*x135 + 16*x110*x122*x123*x134*x135 + 16*x111*x122*x123*x134*x135 + 16*x121*x122*x123*x134*x135 + 16*x109*x110*x133*x134*x135 + 16*x109*x111*x133*x134*x135 + 16*x110*x111*x133*x134*x135 + 16*x109*x121*x133*x134*x135 + 16*x110*x121*x133*x134*x135 + 16*x111*x121*x133*x134*x135 + 16*x109*x122*x133*x134*x135 + 16*x110*x122*x133*x134*x135 + 16*x111*x122*x133*x134*x135 + 16*x121*x122*x133*x134*x135 + 16*x109*x123*x133*x134*x135 + 16*x110*x123*x133*x134*x135 + 16*x111*x123*x133*x134*x135 + 16*x121*x123*x133*x134*x135 + 16*x122*x123*x133*x134*x135 - 8*x109*x110*x111*x121 - 8*x109*x110*x111*x122 - 8*x109*x110*x121*x122 - 8*x109*x111*x121*x122 - 8*x110*x111*x121*x122 - 8*x109*x110*x111*x123 - 8*x109*x110*x121*x123 - 8*x109*x111*x121*x123 - 8*x110*x111*x121*x123 - 8*x109*x110*x122*x123 - 8*x109*x111*x122*x123 - 8*x110*x111*x122*x123 - 8*x109*x121*x122*x123 - 8*x110*x121*x122*x123 - 8*x111*x121*x122*x123 - 8*x109*x110*x111*x133 - 8*x109*x110*x121*x133 - 8*x109*x111*x121*x133 - 8*x110*x111*x121*x133 - 8*x109*x110*x122*x133 - 8*x109*x111*x122*x133 - 8*x110*x111*x122*x133 - 8*x109*x121*x122*x133 - 8*x110*x121*x122*x133 - 8*x111*x121*x122*x133 - 8*x109*x110*x123*x133 - 8*x109*x111*x123*x133 - 8*x110*x111*x123*x133 - 8*x109*x121*x123*x133 - 8*x110*x121*x123*x133 - 8*x111*x121*x123*x133 - 8*x109*x122*x123*x133 - 8*x110*x122*x123*x133 - 8*x111*x122*x123*x133 - 8*x121*x122*x123*x133 - 8*x109*x110*x111*x134 - 8*x109*x110*x121*x134 - 8*x109*x111*x121*x134 - 8*x110*x111*x121*x134 - 8*x109*x110*x122*x134 - 8*x109*x111*x122*x134 - 8*x110*x111*x122*x134 - 8*x109*x121*x122*x134 - 8*x110*x121*x122*x134 - 8*x111*x121*x122*x134 - 8*x109*x110*x123*x134 - 8*x109*x111*x123*x134 - 8*x110*x111*x123*x134 - 8*x109*x121*x123*x134 - 8*x110*x121*x123*x134 - 8*x111*x121*x123*x134 - 8*x109*x122*x123*x134 - 8*x110*x122*x123*x134 - 8*x111*x122*x123*x134 - 8*x121*x122*x123*x134 - 8*x109*x110*x133*x134 - 8*x109*x111*x133*x134 - 8*x110*x111*x133*x134 - 8*x109*x121*x133*x134 - 8*x110*x121*x133*x134 - 8*x111*x121*x133*x134 - 8*x109*x122*x133*x134 - 8*x110*x122*x133*x134 - 8*x111*x122*x133*x134 - 8*x121*x122*x133*x134 - 8*x109*x123*x133*x134 - 8*x110*x123*x133*x134 - 8*x111*x123*x133*x134 - 8*x121*x123*x133*x134 - 8*x122*x123*x133*x134 - 8*x109*x110*x111*x135 - 8*x109*x110*x121*x135 - 8*x109*x111*x121*x135 - 8*x110*x111*x121*x135 - 8*x109*x110*x122*x135 - 8*x109*x111*x122*x135 - 8*x110*x111*x122*x135 - 8*x109*x121*x122*x135 - 8*x110*x121*x122*x135 - 8*x111*x121*x122*x135 - 8*x109*x110*x123*x135 - 8*x109*x111*x123*x135 - 8*x110*x111*x123*x135 - 8*x109*x121*x123*x135 - 8*x110*x121*x123*x135 - 8*x111*x121*x123*x135 - 8*x109*x122*x123*x135 - 8*x110*x122*x123*x135 - 8*x111*x122*x123*x135 - 8*x121*x122*x123*x135 - 8*x109*x110*x133*x135 - 8*x109*x111*x133*x135 - 8*x110*x111*x133*x135 - 8*x109*x121*x133*x135 - 8*x110*x121*x133*x135 - 8*x111*x121*x133*x135 - 8*x109*x122*x133*x135 - 8*x110*x122*x133*x135 - 8*x111*x122*x133*x135 - 8*x121*x122*x133*x135 - 8*x109*x123*x133*x135 - 8*x110*x123*x133*x135 - 8*x111*x123*x133*x135 - 8*x121*x123*x133*x135 - 8*x122*x123*x133*x135 - 8*x109*x110*x134*x135 - 8*x109*x111*x134*x135 - 8*x110*x111*x134*x135 - 8*x109*x121*x134*x135 - 8*x110*x121*x134*x135 - 8*x111*x121*x134*x135 - 8*x109*x122*x134*x135 - 8*x110*x122*x134*x135 - 8*x111*x122*x134*x135 - 8*x121*x122*x134*x135 - 8*x109*x123*x134*x135 - 8*x110*x123*x134*x135 - 8*x111*x123*x134*x135 - 8*x121*x123*x134*x135 - 8*x122*x123*x134*x135 - 8*x109*x133*x134*x135 - 8*x110*x133*x134*x135 - 8*x111*x133*x134*x135 - 8*x121*x133*x134*x135 - 8*x122*x133*x134*x135 - 8*x123*x133*x134*x135 + 4*x109*x110*x111 + 4*x109*x110*x121 + 4*x109*x111*x121 + 4*x110*x111*x121 + 4*x109*x110*x122 + 4*x109*x111*x122 + 4*x110*x111*x122 + 4*x109*x121*x122 + 4*x110*x121*x122 + 4*x111*x121*x122 + 4*x109*x110*x123 + 4*x109*x111*x123 + 4*x110*x111*x123 + 4*x109*x121*x123 + 4*x110*x121*x123 + 4*x111*x121*x123 + 4*x109*x122*x123 + 4*x110*x122*x123 + 4*x111*x122*x123 + 4*x121*x122*x123 + 4*x109*x110*x133 + 4*x109*x111*x133 + 4*x110*x111*x133 + 4*x109*x121*x133 + 4*x110*x121*x133 + 4*x111*x121*x133 + 4*x109*x122*x133 + 4*x110*x122*x133 + 4*x111*x122*x133 + 4*x121*x122*x133 + 4*x109*x123*x133 + 4*x110*x123*x133 + 4*x111*x123*x133 + 4*x121*x123*x133 + 4*x122*x123*x133 + 4*x109*x110*x134 + 4*x109*x111*x134 + 4*x110*x111*x134 + 4*x109*x121*x134 + 4*x110*x121*x134 + 4*x111*x121*x134 + 4*x109*x122*x134 + 4*x110*x122*x134 + 4*x111*x122*x134 + 4*x121*x122*x134 + 4*x109*x123*x134 + 4*x110*x123*x134 + 4*x111*x123*x134 + 4*x121*x123*x134 + 4*x122*x123*x134 + 4*x109*x133*x134 + 4*x110*x133*x134 + 4*x111*x133*x134 + 4*x121*x133*x134 + 4*x122*x133*x134 + 4*x123*x133*x134 + 4*x109*x110*x135 + 4*x109*x111*x135 + 4*x110*x111*x135 + 4*x109*x121*x135 + 4*x110*x121*x135 + 4*x111*x121*x135 + 4*x109*x122*x135 + 4*x110*x122*x135 + 4*x111*x122*x135 + 4*x121*x122*x135 + 4*x109*x123*x135 + 4*x110*x123*x135 + 4*x111*x123*x135 + 4*x121*x123*x135 + 4*x122*x123*x135 + 4*x109*x133*x135 + 4*x110*x133*x135 + 4*x111*x133*x135 + 4*x121*x133*x135 + 4*x122*x133*x135 + 4*x123*x133*x135 + 4*x109*x134*x135 + 4*x110*x134*x135 + 4*x111*x134*x135 + 4*x121*x134*x135 + 4*x122*x134*x135 + 4*x123*x134*x135 + 4*x133*x134*x135 - 2*x109*x110 - 2*x109*x111 - 2*x110*x111 - 2*x109*x121 - 2*x110*x121 - 2*x111*x121 - 2*x109*x122 - 2*x110*x122 - 2*x111*x122 - 2*x121*x122 - 2*x109*x123 - 2*x110*x123 - 2*x111*x123 - 2*x121*x123 - 2*x122*x123 - 2*x109*x133 - 2*x110*x133 - 2*x111*x133 - 2*x121*x133 - 2*x122*x133 - 2*x123*x133 - 2*x109*x134 - 2*x110*x134 - 2*x111*x134 - 2*x121*x134 - 2*x122*x134 - 2*x123*x134 - 2*x133*x134 - 2*x109*x135 - 2*x110*x135 - 2*x111*x135 - 2*x121*x135 - 2*x122*x135 - 2*x123*x135 - 2*x133*x135 - 2*x134*x135 - x8 + x109 + x110 + x111 + x121 + x122 + x123 + x133 + x134 + x135, -4*x109*x110*x111 + 2*x109*x110 + 2*x109*x111 + 2*x110*x111 - x9 - x109 - x110 - x111 + 1, -4*x121*x122*x123 + 2*x121*x122 + 2*x121*x123 + 2*x122*x123 - x10 - x121 - x122 - x123 + 1, -4*x133*x134*x135 + 2*x133*x134 + 2*x133*x135 + 2*x134*x135 - x11 - x133 - x134 - x135 + 1], [-x12, -x13 + 1, -x14, -x15, -4*x61*x73*x85 + 2*x61*x73 + 2*x61*x85 + 2*x73*x85 - x16 - x61 - x73 - x85 + 1, -x17 + x61, -x18 + x73, -x19 + x85, -4*x109*x121*x133 + 2*x109*x121 + 2*x109*x133 + 2*x121*x133 - x20 - x109 - x121 - x133 + 1, -x21 + x109, -x22 + x121, -x23 + x133], [-x24, -x25, -x26 + 1, -x27, -4*x62*x74*x86 + 2*x62*x74 + 2*x62*x86 + 2*x74*x86 - x28 - x62 - x74 - x86 + 1, -x29 + x62, -x30 + x74, -x31 + x86, -4*x110*x122*x134 + 2*x110*x122 + 2*x110*x134 + 2*x122*x134 - x32 - x110 - x122 - x134 + 1, -x33 + x110, -x34 + x122, -x35 + x134], [-x36, -x37, -x38, -x39 + 1, -4*x63*x75*x87 + 2*x63*x75 + 2*x63*x87 + 2*x75*x87 - x40 - x63 - x75 - x87 + 1, -x41 + x63, -x42 + x75, -x43 + x87, -4*x111*x123*x135 + 2*x111*x123 + 2*x111*x135 + 2*x123*x135 - x44 - x111 - x123 - x135 + 1, -x45 + x111, -x46 + x123, -x47 + x135], [256*x61*x62*x63*x73*x74*x75*x85*x86*x87 - 128*x61*x62*x63*x73*x74*x75*x85*x86 - 128*x61*x62*x63*x73*x74*x75*x85*x87 - 128*x61*x62*x63*x73*x74*x75*x86*x87 - 128*x61*x62*x63*x73*x74*x85*x86*x87 - 128*x61*x62*x63*x73*x75*x85*x86*x87 - 128*x61*x62*x63*x74*x75*x85*x86*x87 - 128*x61*x62*x73*x74*x75*x85*x86*x87 - 128*x61*x63*x73*x74*x75*x85*x86*x87 - 128*x62*x63*x73*x74*x75*x85*x86*x87 + 64*x61*x62*x63*x73*x74*x75*x85 + 64*x61*x62*x63*x73*x74*x75*x86 + 64*x61*x62*x63*x73*x74*x85*x86 + 64*x61*x62*x63*x73*x75*x85*x86 + 64*x61*x62*x63*x74*x75*x85*x86 + 64*x61*x62*x73*x74*x75*x85*x86 + 64*x61*x63*x73*x74*x75*x85*x86 + 64*x62*x63*x73*x74*x75*x85*x86 + 64*x61*x62*x63*x73*x74*x75*x87 + 64*x61*x62*x63*x73*x74*x85*x87 + 64*x61*x62*x63*x73*x75*x85*x87 + 64*x61*x62*x63*x74*x75*x85*x87 + 64*x61*x62*x73*x74*x75*x85*x87 + 64*x61*x63*x73*x74*x75*x85*x87 + 64*x62*x63*x73*x74*x75*x85*x87 + 64*x61*x62*x63*x73*x74*x86*x87 + 64*x61*x62*x63*x73*x75*x86*x87 + 64*x61*x62*x63*x74*x75*x86*x87 + 64*x61*x62*x73*x74*x75*x86*x87 + 64*x61*x63*x73*x74*x75*x86*x87 + 64*x62*x63*x73*x74*x75*x86*x87 + 64*x61*x62*x63*x73*x85*x86*x87 + 64*x61*x62*x63*x74*x85*x86*x87 + 64*x61*x62*x73*x74*x85*x86*x87 + 64*x61*x63*x73*x74*x85*x86*x87 + 64*x62*x63*x73*x74*x85*x86*x87 + 64*x61*x62*x63*x75*x85*x86*x87 + 64*x61*x62*x73*x75*x85*x86*x87 + 64*x61*x63*x73*x75*x85*x86*x87 + 64*x62*x63*x73*x75*x85*x86*x87 + 64*x61*x62*x74*x75*x85*x86*x87 + 64*x61*x63*x74*x75*x85*x86*x87 + 64*x62*x63*x74*x75*x85*x86*x87 + 64*x61*x73*x74*x75*x85*x86*x87 + 64*x62*x73*x74*x75*x85*x86*x87 + 64*x63*x73*x74*x75*x85*x86*x87 - 32*x61*x62*x63*x73*x74*x75 - 32*x61*x62*x63*x73*x74*x85 - 32*x61*x62*x63*x73*x75*x85 - 32*x61*x62*x63*x74*x75*x85 - 32*x61*x62*x73*x74*x75*x85 - 32*x61*x63*x73*x74*x75*x85 - 32*x62*x63*x73*x74*x75*x85 - 32*x61*x62*x63*x73*x74*x86 - 32*x61*x62*x63*x73*x75*x86 - 32*x61*x62*x63*x74*x75*x86 - 32*x61*x62*x73*x74*x75*x86 - 32*x61*x63*x73*x74*x75*x86 - 32*x62*x63*x73*x74*x75*x86 - 32*x61*x62*x63*x73*x85*x86 - 32*x61*x62*x63*x74*x85*x86 - 32*x61*x62*x73*x74*x85*x86 - 32*x61*x63*x73*x74*x85*x86 - 32*x62*x63*x73*x74*x85*x86 - 32*x61*x62*x63*x75*x85*x86 - 32*x61*x62*x73*x75*x85*x86 - 32*x61*x63*x73*x75*x85*x86 - 32*x62*x63*x73*x75*x85*x86 - 32*x61*x62*x74*x75*x85*x86 - 32*x61*x63*x74*x75*x85*x86 - 32*x62*x63*x74*x75*x85*x86 - 32*x61*x73*x74*x75*x85*x86 - 32*x62*x73*x74*x75*x85*x86 - 32*x63*x73*x74*x75*x85*x86 - 32*x61*x62*x63*x73*x74*x87 - 32*x61*x62*x63*x73*x75*x87 - 32*x61*x62*x63*x74*x75*x87 - 32*x61*x62*x73*x74*x75*x87 - 32*x61*x63*x73*x74*x75*x87 - 32*x62*x63*x73*x74*x75*x87 - 32*x61*x62*x63*x73*x85*x87 - 32*x61*x62*x63*x74*x85*x87 - 32*x61*x62*x73*x74*x85*x87 - 32*x61*x63*x73*x74*x85*x87 - 32*x62*x63*x73*x74*x85*x87 - 32*x61*x62*x63*x75*x85*x87 - 32*x61*x62*x73*x75*x85*x87 - 32*x61*x63*x73*x75*x85*x87 - 32*x62*x63*x73*x75*x85*x87 - 32*x61*x62*x74*x75*x85*x87 - 32*x61*x63*x74*x75*x85*x87 - 32*x62*x63*x74*x75*x85*x87 - 32*x61*x73*x74*x75*x85*x87 - 32*x62*x73*x74*x75*x85*x87 - 32*x63*x73*x74*x75*x85*x87 - 32*x61*x62*x63*x73*x86*x87 - 32*x61*x62*x63*x74*x86*x87 - 32*x61*x62*x73*x74*x86*x87 - 32*x61*x63*x73*x74*x86*x87 - 32*x62*x63*x73*x74*x86*x87 - 32*x61*x62*x63*x75*x86*x87 - 32*x61*x62*x73*x75*x86*x87 - 32*x61*x63*x73*x75*x86*x87 - 32*x62*x63*x73*x75*x86*x87 - 32*x61*x62*x74*x75*x86*x87 - 32*x61*x63*x74*x75*x86*x87 - 32*x62*x63*x74*x75*x86*x87 - 32*x61*x73*x74*x75*x86*x87 - 32*x62*x73*x74*x75*x86*x87 - 32*x63*x73*x74*x75*x86*x87 - 32*x61*x62*x63*x85*x86*x87 - 32*x61*x62*x73*x85*x86*x87 - 32*x61*x63*x73*x85*x86*x87 - 32*x62*x63*x73*x85*x86*x87 - 32*x61*x62*x74*x85*x86*x87 - 32*x61*x63*x74*x85*x86*x87 - 32*x62*x63*x74*x85*x86*x87 - 32*x61*x73*x74*x85*x86*x87 - 32*x62*x73*x74*x85*x86*x87 - 32*x63*x73*x74*x85*x86*x87 - 32*x61*x62*x75*x85*x86*x87 - 32*x61*x63*x75*x85*x86*x87 - 32*x62*x63*x75*x85*x86*x87 - 32*x61*x73*x75*x85*x86*x87 - 32*x62*x73*x75*x85*x86*x87 - 32*x63*x73*x75*x85*x86*x87 - 32*x61*x74*x75*x85*x86*x87 - 32*x62*x74*x75*x85*x86*x87 - 32*x63*x74*x75*x85*x86*x87 - 32*x73*x74*x75*x85*x86*x87 + 16*x61*x62*x63*x73*x74 + 16*x61*x62*x63*x73*x75 + 16*x61*x62*x63*x74*x75 + 16*x61*x62*x73*x74*x75 + 16*x61*x63*x73*x74*x75 + 16*x62*x63*x73*x74*x75 + 16*x61*x62*x63*x73*x85 + 16*x61*x62*x63*x74*x85 + 16*x61*x62*x73*x74*x85 + 16*x61*x63*x73*x74*x85 + 16*x62*x63*x73*x74*x85 + 16*x61*x62*x63*x75*x85 + 16*x61*x62*x73*x75*x85 + 16*x61*x63*x73*x75*x85 + 16*x62*x63*x73*x75*x85 + 16*x61*x62*x74*x75*x85 + 16*x61*x63*x74*x75*x85 + 16*x62*x63*x74*x75*x85 + 16*x61*x73*x74*x75*x85 + 16*x62*x73*x74*x75*x85 + 16*x63*x73*x74*x75*x85 + 16*x61*x62*x63*x73*x86 + 16*x61*x62*x63*x74*x86 + 16*x61*x62*x73*x74*x86 + 16*x61*x63*x73*x74*x86 + 16*x62*x63*x73*x74*x86 + 16*x61*x62*x63*x75*x86 + 16*x61*x62*x73*x75*x86 + 16*x61*x63*x73*x75*x86 + 16*x62*x63*x73*x75*x86 + 16*x61*x62*x74*x75*x86 + 16*x61*x63*x74*x75*x86 + 16*x62*x63*x74*x75*x86 + 16*x61*x73*x74*x75*x86 + 16*x62*x73*x74*x75*x86 + 16*x63*x73*x74*x75*x86 + 16*x61*x62*x63*x85*x86 + 16*x61*x62*x73*x85*x86 + 16*x61*x63*x73*x85*x86 + 16*x62*x63*x73*x85*x86 + 16*x61*x62*x74*x85*x86 + 16*x61*x63*x74*x85*x86 + 16*x62*x63*x74*x85*x86 + 16*x61*x73*x74*x85*x86 + 16*x62*x73*x74*x85*x86 + 16*x63*x73*x74*x85*x86 + 16*x61*x62*x75*x85*x86 + 16*x61*x63*x75*x85*x86 + 16*x62*x63*x75*x85*x86 + 16*x61*x73*x75*x85*x86 + 16*x62*x73*x75*x85*x86 + 16*x63*x73*x75*x85*x86 + 16*x61*x74*x75*x85*x86 + 16*x62*x74*x75*x85*x86 + 16*x63*x74*x75*x85*x86 + 16*x73*x74*x75*x85*x86 + 16*x61*x62*x63*x73*x87 + 16*x61*x62*x63*x74*x87 + 16*x61*x62*x73*x74*x87 + 16*x61*x63*x73*x74*x87 + 16*x62*x63*x73*x74*x87 + 16*x61*x62*x63*x75*x87 + 16*x61*x62*x73*x75*x87 + 16*x61*x63*x73*x75*x87 + 16*x62*x63*x73*x75*x87 + 16*x61*x62*x74*x75*x87 + 16*x61*x63*x74*x75*x87 + 16*x62*x63*x74*x75*x87 + 16*x61*x73*x74*x75*x87 + 16*x62*x73*x74*x75*x87 + 16*x63*x73*x74*x75*x87 + 16*x61*x62*x63*x85*x87 + 16*x61*x62*x73*x85*x87 + 16*x61*x63*x73*x85*x87 + 16*x62*x63*x73*x85*x87 + 16*x61*x62*x74*x85*x87 + 16*x61*x63*x74*x85*x87 + 16*x62*x63*x74*x85*x87 + 16*x61*x73*x74*x85*x87 + 16*x62*x73*x74*x85*x87 + 16*x63*x73*x74*x85*x87 + 16*x61*x62*x75*x85*x87 + 16*x61*x63*x75*x85*x87 + 16*x62*x63*x75*x85*x87 + 16*x61*x73*x75*x85*x87 + 16*x62*x73*x75*x85*x87 + 16*x63*x73*x75*x85*x87 + 16*x61*x74*x75*x85*x87 + 16*x62*x74*x75*x85*x87 + 16*x63*x74*x75*x85*x87 + 16*x73*x74*x75*x85*x87 + 16*x61*x62*x63*x86*x87 + 16*x61*x62*x73*x86*x87 + 16*x61*x63*x73*x86*x87 + 16*x62*x63*x73*x86*x87 + 16*x61*x62*x74*x86*x87 + 16*x61*x63*x74*x86*x87 + 16*x62*x63*x74*x86*x87 + 16*x61*x73*x74*x86*x87 + 16*x62*x73*x74*x86*x87 + 16*x63*x73*x74*x86*x87 + 16*x61*x62*x75*x86*x87 + 16*x61*x63*x75*x86*x87 + 16*x62*x63*x75*x86*x87 + 16*x61*x73*x75*x86*x87 + 16*x62*x73*x75*x86*x87 + 16*x63*x73*x75*x86*x87 + 16*x61*x74*x75*x86*x87 + 16*x62*x74*x75*x86*x87 + 16*x63*x74*x75*x86*x87 + 16*x73*x74*x75*x86*x87 + 16*x61*x62*x85*x86*x87 + 16*x61*x63*x85*x86*x87 + 16*x62*x63*x85*x86*x87 + 16*x61*x73*x85*x86*x87 + 16*x62*x73*x85*x86*x87 + 16*x63*x73*x85*x86*x87 + 16*x61*x74*x85*x86*x87 + 16*x62*x74*x85*x86*x87 + 16*x63*x74*x85*x86*x87 + 16*x73*x74*x85*x86*x87 + 16*x61*x75*x85*x86*x87 + 16*x62*x75*x85*x86*x87 + 16*x63*x75*x85*x86*x87 + 16*x73*x75*x85*x86*x87 + 16*x74*x75*x85*x86*x87 - 8*x61*x62*x63*x73 - 8*x61*x62*x63*x74 - 8*x61*x62*x73*x74 - 8*x61*x63*x73*x74 - 8*x62*x63*x73*x74 - 8*x61*x62*x63*x75 - 8*x61*x62*x73*x75 - 8*x61*x63*x73*x75 - 8*x62*x63*x73*x75 - 8*x61*x62*x74*x75 - 8*x61*x63*x74*x75 - 8*x62*x63*x74*x75 - 8*x61*x73*x74*x75 - 8*x62*x73*x74*x75 - 8*x63*x73*x74*x75 - 8*x61*x62*x63*x85 - 8*x61*x62*x73*x85 - 8*x61*x63*x73*x85 - 8*x62*x63*x73*x85 - 8*x61*x62*x74*x85 - 8*x61*x63*x74*x85 - 8*x62*x63*x74*x85 - 8*x61*x73*x74*x85 - 8*x62*x73*x74*x85 - 8*x63*x73*x74*x85 - 8*x61*x62*x75*x85 - 8*x61*x63*x75*x85 - 8*x62*x63*x75*x85 - 8*x61*x73*x75*x85 - 8*x62*x73*x75*x85 - 8*x63*x73*x75*x85 - 8*x61*x74*x75*x85 - 8*x62*x74*x75*x85 - 8*x63*x74*x75*x85 - 8*x73*x74*x75*x85 - 8*x61*x62*x63*x86 - 8*x61*x62*x73*x86 - 8*x61*x63*x73*x86 - 8*x62*x63*x73*x86 - 8*x61*x62*x74*x86 - 8*x61*x63*x74*x86 - 8*x62*x63*x74*x86 - 8*x61*x73*x74*x86 - 8*x62*x73*x74*x86 - 8*x63*x73*x74*x86 - 8*x61*x62*x75*x86 - 8*x61*x63*x75*x86 - 8*x62*x63*x75*x86 - 8*x61*x73*x75*x86 - 8*x62*x73*x75*x86 - 8*x63*x73*x75*x86 - 8*x61*x74*x75*x86 - 8*x62*x74*x75*x86 - 8*x63*x74*x75*x86 - 8*x73*x74*x75*x86 - 8*x61*x62*x85*x86 - 8*x61*x63*x85*x86 - 8*x62*x63*x85*x86 - 8*x61*x73*x85*x86 - 8*x62*x73*x85*x86 - 8*x63*x73*x85*x86 - 8*x61*x74*x85*x86 - 8*x62*x74*x85*x86 - 8*x63*x74*x85*x86 - 8*x73*x74*x85*x86 - 8*x61*x75*x85*x86 - 8*x62*x75*x85*x86 - 8*x63*x75*x85*x86 - 8*x73*x75*x85*x86 - 8*x74*x75*x85*x86 - 8*x61*x62*x63*x87 - 8*x61*x62*x73*x87 - 8*x61*x63*x73*x87 - 8*x62*x63*x73*x87 - 8*x61*x62*x74*x87 - 8*x61*x63*x74*x87 - 8*x62*x63*x74*x87 - 8*x61*x73*x74*x87 - 8*x62*x73*x74*x87 - 8*x63*x73*x74*x87 - 8*x61*x62*x75*x87 - 8*x61*x63*x75*x87 - 8*x62*x63*x75*x87 - 8*x61*x73*x75*x87 - 8*x62*x73*x75*x87 - 8*x63*x73*x75*x87 - 8*x61*x74*x75*x87 - 8*x62*x74*x75*x87 - 8*x63*x74*x75*x87 - 8*x73*x74*x75*x87 - 8*x61*x62*x85*x87 - 8*x61*x63*x85*x87 - 8*x62*x63*x85*x87 - 8*x61*x73*x85*x87 - 8*x62*x73*x85*x87 - 8*x63*x73*x85*x87 - 8*x61*x74*x85*x87 - 8*x62*x74*x85*x87 - 8*x63*x74*x85*x87 - 8*x73*x74*x85*x87 - 8*x61*x75*x85*x87 - 8*x62*x75*x85*x87 - 8*x63*x75*x85*x87 - 8*x73*x75*x85*x87 - 8*x74*x75*x85*x87 - 8*x61*x62*x86*x87 - 8*x61*x63*x86*x87 - 8*x62*x63*x86*x87 - 8*x61*x73*x86*x87 - 8*x62*x73*x86*x87 - 8*x63*x73*x86*x87 - 8*x61*x74*x86*x87 - 8*x62*x74*x86*x87 - 8*x63*x74*x86*x87 - 8*x73*x74*x86*x87 - 8*x61*x75*x86*x87 - 8*x62*x75*x86*x87 - 8*x63*x75*x86*x87 - 8*x73*x75*x86*x87 - 8*x74*x75*x86*x87 - 8*x61*x85*x86*x87 - 8*x62*x85*x86*x87 - 8*x63*x85*x86*x87 - 8*x73*x85*x86*x87 - 8*x74*x85*x86*x87 - 8*x75*x85*x86*x87 + 4*x61*x62*x63 + 4*x61*x62*x73 + 4*x61*x63*x73 + 4*x62*x63*x73 + 4*x61*x62*x74 + 4*x61*x63*x74 + 4*x62*x63*x74 + 4*x61*x73*x74 + 4*x62*x73*x74 + 4*x63*x73*x74 + 4*x61*x62*x75 + 4*x61*x63*x75 + 4*x62*x63*x75 + 4*x61*x73*x75 + 4*x62*x73*x75 + 4*x63*x73*x75 + 4*x61*x74*x75 + 4*x62*x74*x75 + 4*x63*x74*x75 + 4*x73*x74*x75 + 4*x61*x62*x85 + 4*x61*x63*x85 + 4*x62*x63*x85 + 4*x61*x73*x85 + 4*x62*x73*x85 + 4*x63*x73*x85 + 4*x61*x74*x85 + 4*x62*x74*x85 + 4*x63*x74*x85 + 4*x73*x74*x85 + 4*x61*x75*x85 + 4*x62*x75*x85 + 4*x63*x75*x85 + 4*x73*x75*x85 + 4*x74*x75*x85 + 4*x61*x62*x86 + 4*x61*x63*x86 + 4*x62*x63*x86 + 4*x61*x73*x86 + 4*x62*x73*x86 + 4*x63*x73*x86 + 4*x61*x74*x86 + 4*x62*x74*x86 + 4*x63*x74*x86 + 4*x73*x74*x86 + 4*x61*x75*x86 + 4*x62*x75*x86 + 4*x63*x75*x86 + 4*x73*x75*x86 + 4*x74*x75*x86 + 4*x61*x85*x86 + 4*x62*x85*x86 + 4*x63*x85*x86 + 4*x73*x85*x86 + 4*x74*x85*x86 + 4*x75*x85*x86 + 4*x61*x62*x87 + 4*x61*x63*x87 + 4*x62*x63*x87 + 4*x61*x73*x87 + 4*x62*x73*x87 + 4*x63*x73*x87 + 4*x61*x74*x87 + 4*x62*x74*x87 + 4*x63*x74*x87 + 4*x73*x74*x87 + 4*x61*x75*x87 + 4*x62*x75*x87 + 4*x63*x75*x87 + 4*x73*x75*x87 + 4*x74*x75*x87 + 4*x61*x85*x87 + 4*x62*x85*x87 + 4*x63*x85*x87 + 4*x73*x85*x87 + 4*x74*x85*x87 + 4*x75*x85*x87 + 4*x61*x86*x87 + 4*x62*x86*x87 + 4*x63*x86*x87 + 4*x73*x86*x87 + 4*x74*x86*x87 + 4*x75*x86*x87 + 4*x85*x86*x87 - 2*x61*x62 - 2*x61*x63 - 2*x62*x63 - 2*x61*x73 - 2*x62*x73 - 2*x63*x73 - 2*x61*x74 - 2*x62*x74 - 2*x63*x74 - 2*x73*x74 - 2*x61*x75 - 2*x62*x75 - 2*x63*x75 - 2*x73*x75 - 2*x74*x75 - 2*x61*x85 - 2*x62*x85 - 2*x63*x85 - 2*x73*x85 - 2*x74*x85 - 2*x75*x85 - 2*x61*x86 - 2*x62*x86 - 2*x63*x86 - 2*x73*x86 - 2*x74*x86 - 2*x75*x86 - 2*x85*x86 - 2*x61*x87 - 2*x62*x87 - 2*x63*x87 - 2*x73*x87 - 2*x74*x87 - 2*x75*x87 - 2*x85*x87 - 2*x86*x87 - x48 + x61 + x62 + x63 + x73 + x74 + x75 + x85 + x86 + x87, -4*x61*x73*x85 + 2*x61*x73 + 2*x61*x85 + 2*x73*x85 - x49 - x61 - x73 - x85 + 1, -4*x62*x74*x86 + 2*x62*x74 + 2*x62*x86 + 2*x74*x86 - x50 - x62 - x74 - x86 + 1, -4*x63*x75*x87 + 2*x63*x75 + 2*x63*x87 + 2*x75*x87 - x51 - x63 - x75 - x87 + 1, -x52 + 1, -x53, -x54, -x55, 256*x113*x114*x115*x125*x126*x127*x137*x138*x139 - 128*x113*x114*x115*x125*x126*x127*x137*x138 - 128*x113*x114*x115*x125*x126*x127*x137*x139 - 128*x113*x114*x115*x125*x126*x127*x138*x139 - 128*x113*x114*x115*x125*x126*x137*x138*x139 - 128*x113*x114*x115*x125*x127*x137*x138*x139 - 128*x113*x114*x115*x126*x127*x137*x138*x139 - 128*x113*x114*x125*x126*x127*x137*x138*x139 - 128*x113*x115*x125*x126*x127*x137*x138*x139 - 128*x114*x115*x125*x126*x127*x137*x138*x139 + 64*x113*x114*x115*x125*x126*x127*x137 + 64*x113*x114*x115*x125*x126*x127*x138 + 64*x113*x114*x115*x125*x126*x137*x138 + 64*x113*x114*x115*x125*x127*x137*x138 + 64*x113*x114*x115*x126*x127*x137*x138 + 64*x113*x114*x125*x126*x127*x137*x138 + 64*x113*x115*x125*x126*x127*x137*x138 + 64*x114*x115*x125*x126*x127*x137*x138 + 64*x113*x114*x115*x125*x126*x127*x139 + 64*x113*x114*x115*x125*x126*x137*x139 + 64*x113*x114*x115*x125*x127*x137*x139 + 64*x113*x114*x115*x126*x127*x137*x139 + 64*x113*x114*x125*x126*x127*x137*x139 + 64*x113*x115*x125*x126*x127*x137*x139 + 64*x114*x115*x125*x126*x127*x137*x139 + 64*x113*x114*x115*x125*x126*x138*x139 + 64*x113*x114*x115*x125*x127*x138*x139 + 64*x113*x114*x115*x126*x127*x138*x139 + 64*x113*x114*x125*x126*x127*x138*x139 + 64*x113*x115*x125*x126*x127*x138*x139 + 64*x114*x115*x125*x126*x127*x138*x139 + 64*x113*x114*x115*x125*x137*x138*x139 + 64*x113*x114*x115*x126*x137*x138*x139 + 64*x113*x114*x125*x126*x137*x138*x139 + 64*x113*x115*x125*x126*x137*x138*x139 + 64*x114*x115*x125*x126*x137*x138*x139 + 64*x113*x114*x115*x127*x137*x138*x139 + 64*x113*x114*x125*x127*x137*x138*x139 + 64*x113*x115*x125*x127*x137*x138*x139 + 64*x114*x115*x125*x127*x137*x138*x139 + 64*x113*x114*x126*x127*x137*x138*x139 + 64*x113*x115*x126*x127*x137*x138*x139 + 64*x114*x115*x126*x127*x137*x138*x139 + 64*x113*x125*x126*x127*x137*x138*x139 + 64*x114*x125*x126*x127*x137*x138*x139 + 64*x115*x125*x126*x127*x137*x138*x139 - 32*x113*x114*x115*x125*x126*x127 - 32*x113*x114*x115*x125*x126*x137 - 32*x113*x114*x115*x125*x127*x137 - 32*x113*x114*x115*x126*x127*x137 - 32*x113*x114*x125*x126*x127*x137 - 32*x113*x115*x125*x126*x127*x137 - 32*x114*x115*x125*x126*x127*x137 - 32*x113*x114*x115*x125*x126*x138 - 32*x113*x114*x115*x125*x127*x138 - 32*x113*x114*x115*x126*x127*x138 - 32*x113*x114*x125*x126*x127*x138 - 32*x113*x115*x125*x126*x127*x138 - 32*x114*x115*x125*x126*x127*x138 - 32*x113*x114*x115*x125*x137*x138 - 32*x113*x114*x115*x126*x137*x138 - 32*x113*x114*x125*x126*x137*x138 - 32*x113*x115*x125*x126*x137*x138 - 32*x114*x115*x125*x126*x137*x138 - 32*x113*x114*x115*x127*x137*x138 - 32*x113*x114*x125*x127*x137*x138 - 32*x113*x115*x125*x127*x137*x138 - 32*x114*x115*x125*x127*x137*x138 - 32*x113*x114*x126*x127*x137*x138 - 32*x113*x115*x126*x127*x137*x138 - 32*x114*x115*x126*x127*x137*x138 - 32*x113*x125*x126*x127*x137*x138 - 32*x114*x125*x126*x127*x137*x138 - 32*x115*x125*x126*x127*x137*x138 - 32*x113*x114*x115*x125*x126*x139 - 32*x113*x114*x115*x125*x127*x139 - 32*x113*x114*x115*x126*x127*x139 - 32*x113*x114*x125*x126*x127*x139 - 32*x113*x115*x125*x126*x127*x139 - 32*x114*x115*x125*x126*x127*x139 - 32*x113*x114*x115*x125*x137*x139 - 32*x113*x114*x115*x126*x137*x139 - 32*x113*x114*x125*x126*x137*x139 - 32*x113*x115*x125*x126*x137*x139 - 32*x114*x115*x125*x126*x137*x139 - 32*x113*x114*x115*x127*x137*x139 - 32*x113*x114*x125*x127*x137*x139 - 32*x113*x115*x125*x127*x137*x139 - 32*x114*x115*x125*x127*x137*x139 - 32*x113*x114*x126*x127*x137*x139 - 32*x113*x115*x126*x127*x137*x139 - 32*x114*x115*x126*x127*x137*x139 - 32*x113*x125*x126*x127*x137*x139 - 32*x114*x125*x126*x127*x137*x139 - 32*x115*x125*x126*x127*x137*x139 - 32*x113*x114*x115*x125*x138*x139 - 32*x113*x114*x115*x126*x138*x139 - 32*x113*x114*x125*x126*x138*x139 - 32*x113*x115*x125*x126*x138*x139 - 32*x114*x115*x125*x126*x138*x139 - 32*x113*x114*x115*x127*x138*x139 - 32*x113*x114*x125*x127*x138*x139 - 32*x113*x115*x125*x127*x138*x139 - 32*x114*x115*x125*x127*x138*x139 - 32*x113*x114*x126*x127*x138*x139 - 32*x113*x115*x126*x127*x138*x139 - 32*x114*x115*x126*x127*x138*x139 - 32*x113*x125*x126*x127*x138*x139 - 32*x114*x125*x126*x127*x138*x139 - 32*x115*x125*x126*x127*x138*x139 - 32*x113*x114*x115*x137*x138*x139 - 32*x113*x114*x125*x137*x138*x139 - 32*x113*x115*x125*x137*x138*x139 - 32*x114*x115*x125*x137*x138*x139 - 32*x113*x114*x126*x137*x138*x139 - 32*x113*x115*x126*x137*x138*x139 - 32*x114*x115*x126*x137*x138*x139 - 32*x113*x125*x126*x137*x138*x139 - 32*x114*x125*x126*x137*x138*x139 - 32*x115*x125*x126*x137*x138*x139 - 32*x113*x114*x127*x137*x138*x139 - 32*x113*x115*x127*x137*x138*x139 - 32*x114*x115*x127*x137*x138*x139 - 32*x113*x125*x127*x137*x138*x139 - 32*x114*x125*x127*x137*x138*x139 - 32*x115*x125*x127*x137*x138*x139 - 32*x113*x126*x127*x137*x138*x139 - 32*x114*x126*x127*x137*x138*x139 - 32*x115*x126*x127*x137*x138*x139 - 32*x125*x126*x127*x137*x138*x139 + 16*x113*x114*x115*x125*x126 + 16*x113*x114*x115*x125*x127 + 16*x113*x114*x115*x126*x127 + 16*x113*x114*x125*x126*x127 + 16*x113*x115*x125*x126*x127 + 16*x114*x115*x125*x126*x127 + 16*x113*x114*x115*x125*x137 + 16*x113*x114*x115*x126*x137 + 16*x113*x114*x125*x126*x137 + 16*x113*x115*x125*x126*x137 + 16*x114*x115*x125*x126*x137 + 16*x113*x114*x115*x127*x137 + 16*x113*x114*x125*x127*x137 + 16*x113*x115*x125*x127*x137 + 16*x114*x115*x125*x127*x137 + 16*x113*x114*x126*x127*x137 + 16*x113*x115*x126*x127*x137 + 16*x114*x115*x126*x127*x137 + 16*x113*x125*x126*x127*x137 + 16*x114*x125*x126*x127*x137 + 16*x115*x125*x126*x127*x137 + 16*x113*x114*x115*x125*x138 + 16*x113*x114*x115*x126*x138 + 16*x113*x114*x125*x126*x138 + 16*x113*x115*x125*x126*x138 + 16*x114*x115*x125*x126*x138 + 16*x113*x114*x115*x127*x138 + 16*x113*x114*x125*x127*x138 + 16*x113*x115*x125*x127*x138 + 16*x114*x115*x125*x127*x138 + 16*x113*x114*x126*x127*x138 + 16*x113*x115*x126*x127*x138 + 16*x114*x115*x126*x127*x138 + 16*x113*x125*x126*x127*x138 + 16*x114*x125*x126*x127*x138 + 16*x115*x125*x126*x127*x138 + 16*x113*x114*x115*x137*x138 + 16*x113*x114*x125*x137*x138 + 16*x113*x115*x125*x137*x138 + 16*x114*x115*x125*x137*x138 + 16*x113*x114*x126*x137*x138 + 16*x113*x115*x126*x137*x138 + 16*x114*x115*x126*x137*x138 + 16*x113*x125*x126*x137*x138 + 16*x114*x125*x126*x137*x138 + 16*x115*x125*x126*x137*x138 + 16*x113*x114*x127*x137*x138 + 16*x113*x115*x127*x137*x138 + 16*x114*x115*x127*x137*x138 + 16*x113*x125*x127*x137*x138 + 16*x114*x125*x127*x137*x138 + 16*x115*x125*x127*x137*x138 + 16*x113*x126*x127*x137*x138 + 16*x114*x126*x127*x137*x138 + 16*x115*x126*x127*x137*x138 + 16*x125*x126*x127*x137*x138 + 16*x113*x114*x115*x125*x139 + 16*x113*x114*x115*x126*x139 + 16*x113*x114*x125*x126*x139 + 16*x113*x115*x125*x126*x139 + 16*x114*x115*x125*x126*x139 + 16*x113*x114*x115*x127*x139 + 16*x113*x114*x125*x127*x139 + 16*x113*x115*x125*x127*x139 + 16*x114*x115*x125*x127*x139 + 16*x113*x114*x126*x127*x139 + 16*x113*x115*x126*x127*x139 + 16*x114*x115*x126*x127*x139 + 16*x113*x125*x126*x127*x139 + 16*x114*x125*x126*x127*x139 + 16*x115*x125*x126*x127*x139 + 16*x113*x114*x115*x137*x139 + 16*x113*x114*x125*x137*x139 + 16*x113*x115*x125*x137*x139 + 16*x114*x115*x125*x137*x139 + 16*x113*x114*x126*x137*x139 + 16*x113*x115*x126*x137*x139 + 16*x114*x115*x126*x137*x139 + 16*x113*x125*x126*x137*x139 + 16*x114*x125*x126*x137*x139 + 16*x115*x125*x126*x137*x139 + 16*x113*x114*x127*x137*x139 + 16*x113*x115*x127*x137*x139 + 16*x114*x115*x127*x137*x139 + 16*x113*x125*x127*x137*x139 + 16*x114*x125*x127*x137*x139 + 16*x115*x125*x127*x137*x139 + 16*x113*x126*x127*x137*x139 + 16*x114*x126*x127*x137*x139 + 16*x115*x126*x127*x137*x139 + 16*x125*x126*x127*x137*x139 + 16*x113*x114*x115*x138*x139 + 16*x113*x114*x125*x138*x139 + 16*x113*x115*x125*x138*x139 + 16*x114*x115*x125*x138*x139 + 16*x113*x114*x126*x138*x139 + 16*x113*x115*x126*x138*x139 + 16*x114*x115*x126*x138*x139 + 16*x113*x125*x126*x138*x139 + 16*x114*x125*x126*x138*x139 + 16*x115*x125*x126*x138*x139 + 16*x113*x114*x127*x138*x139 + 16*x113*x115*x127*x138*x139 + 16*x114*x115*x127*x138*x139 + 16*x113*x125*x127*x138*x139 + 16*x114*x125*x127*x138*x139 + 16*x115*x125*x127*x138*x139 + 16*x113*x126*x127*x138*x139 + 16*x114*x126*x127*x138*x139 + 16*x115*x126*x127*x138*x139 + 16*x125*x126*x127*x138*x139 + 16*x113*x114*x137*x138*x139 + 16*x113*x115*x137*x138*x139 + 16*x114*x115*x137*x138*x139 + 16*x113*x125*x137*x138*x139 + 16*x114*x125*x137*x138*x139 + 16*x115*x125*x137*x138*x139 + 16*x113*x126*x137*x138*x139 + 16*x114*x126*x137*x138*x139 + 16*x115*x126*x137*x138*x139 + 16*x125*x126*x137*x138*x139 + 16*x113*x127*x137*x138*x139 + 16*x114*x127*x137*x138*x139 + 16*x115*x127*x137*x138*x139 + 16*x125*x127*x137*x138*x139 + 16*x126*x127*x137*x138*x139 - 8*x113*x114*x115*x125 - 8*x113*x114*x115*x126 - 8*x113*x114*x125*x126 - 8*x113*x115*x125*x126 - 8*x114*x115*x125*x126 - 8*x113*x114*x115*x127 - 8*x113*x114*x125*x127 - 8*x113*x115*x125*x127 - 8*x114*x115*x125*x127 - 8*x113*x114*x126*x127 - 8*x113*x115*x126*x127 - 8*x114*x115*x126*x127 - 8*x113*x125*x126*x127 - 8*x114*x125*x126*x127 - 8*x115*x125*x126*x127 - 8*x113*x114*x115*x137 - 8*x113*x114*x125*x137 - 8*x113*x115*x125*x137 - 8*x114*x115*x125*x137 - 8*x113*x114*x126*x137 - 8*x113*x115*x126*x137 - 8*x114*x115*x126*x137 - 8*x113*x125*x126*x137 - 8*x114*x125*x126*x137 - 8*x115*x125*x126*x137 - 8*x113*x114*x127*x137 - 8*x113*x115*x127*x137 - 8*x114*x115*x127*x137 - 8*x113*x125*x127*x137 - 8*x114*x125*x127*x137 - 8*x115*x125*x127*x137 - 8*x113*x126*x127*x137 - 8*x114*x126*x127*x137 - 8*x115*x126*x127*x137 - 8*x125*x126*x127*x137 - 8*x113*x114*x115*x138 - 8*x113*x114*x125*x138 - 8*x113*x115*x125*x138 - 8*x114*x115*x125*x138 - 8*x113*x114*x126*x138 - 8*x113*x115*x126*x138 - 8*x114*x115*x126*x138 - 8*x113*x125*x126*x138 - 8*x114*x125*x126*x138 - 8*x115*x125*x126*x138 - 8*x113*x114*x127*x138 - 8*x113*x115*x127*x138 - 8*x114*x115*x127*x138 - 8*x113*x125*x127*x138 - 8*x114*x125*x127*x138 - 8*x115*x125*x127*x138 - 8*x113*x126*x127*x138 - 8*x114*x126*x127*x138 - 8*x115*x126*x127*x138 - 8*x125*x126*x127*x138 - 8*x113*x114*x137*x138 - 8*x113*x115*x137*x138 - 8*x114*x115*x137*x138 - 8*x113*x125*x137*x138 - 8*x114*x125*x137*x138 - 8*x115*x125*x137*x138 - 8*x113*x126*x137*x138 - 8*x114*x126*x137*x138 - 8*x115*x126*x137*x138 - 8*x125*x126*x137*x138 - 8*x113*x127*x137*x138 - 8*x114*x127*x137*x138 - 8*x115*x127*x137*x138 - 8*x125*x127*x137*x138 - 8*x126*x127*x137*x138 - 8*x113*x114*x115*x139 - 8*x113*x114*x125*x139 - 8*x113*x115*x125*x139 - 8*x114*x115*x125*x139 - 8*x113*x114*x126*x139 - 8*x113*x115*x126*x139 - 8*x114*x115*x126*x139 - 8*x113*x125*x126*x139 - 8*x114*x125*x126*x139 - 8*x115*x125*x126*x139 - 8*x113*x114*x127*x139 - 8*x113*x115*x127*x139 - 8*x114*x115*x127*x139 - 8*x113*x125*x127*x139 - 8*x114*x125*x127*x139 - 8*x115*x125*x127*x139 - 8*x113*x126*x127*x139 - 8*x114*x126*x127*x139 - 8*x115*x126*x127*x139 - 8*x125*x126*x127*x139 - 8*x113*x114*x137*x139 - 8*x113*x115*x137*x139 - 8*x114*x115*x137*x139 - 8*x113*x125*x137*x139 - 8*x114*x125*x137*x139 - 8*x115*x125*x137*x139 - 8*x113*x126*x137*x139 - 8*x114*x126*x137*x139 - 8*x115*x126*x137*x139 - 8*x125*x126*x137*x139 - 8*x113*x127*x137*x139 - 8*x114*x127*x137*x139 - 8*x115*x127*x137*x139 - 8*x125*x127*x137*x139 - 8*x126*x127*x137*x139 - 8*x113*x114*x138*x139 - 8*x113*x115*x138*x139 - 8*x114*x115*x138*x139 - 8*x113*x125*x138*x139 - 8*x114*x125*x138*x139 - 8*x115*x125*x138*x139 - 8*x113*x126*x138*x139 - 8*x114*x126*x138*x139 - 8*x115*x126*x138*x139 - 8*x125*x126*x138*x139 - 8*x113*x127*x138*x139 - 8*x114*x127*x138*x139 - 8*x115*x127*x138*x139 - 8*x125*x127*x138*x139 - 8*x126*x127*x138*x139 - 8*x113*x137*x138*x139 - 8*x114*x137*x138*x139 - 8*x115*x137*x138*x139 - 8*x125*x137*x138*x139 - 8*x126*x137*x138*x139 - 8*x127*x137*x138*x139 + 4*x113*x114*x115 + 4*x113*x114*x125 + 4*x113*x115*x125 + 4*x114*x115*x125 + 4*x113*x114*x126 + 4*x113*x115*x126 + 4*x114*x115*x126 + 4*x113*x125*x126 + 4*x114*x125*x126 + 4*x115*x125*x126 + 4*x113*x114*x127 + 4*x113*x115*x127 + 4*x114*x115*x127 + 4*x113*x125*x127 + 4*x114*x125*x127 + 4*x115*x125*x127 + 4*x113*x126*x127 + 4*x114*x126*x127 + 4*x115*x126*x127 + 4*x125*x126*x127 + 4*x113*x114*x137 + 4*x113*x115*x137 + 4*x114*x115*x137 + 4*x113*x125*x137 + 4*x114*x125*x137 + 4*x115*x125*x137 + 4*x113*x126*x137 + 4*x114*x126*x137 + 4*x115*x126*x137 + 4*x125*x126*x137 + 4*x113*x127*x137 + 4*x114*x127*x137 + 4*x115*x127*x137 + 4*x125*x127*x137 + 4*x126*x127*x137 + 4*x113*x114*x138 + 4*x113*x115*x138 + 4*x114*x115*x138 + 4*x113*x125*x138 + 4*x114*x125*x138 + 4*x115*x125*x138 + 4*x113*x126*x138 + 4*x114*x126*x138 + 4*x115*x126*x138 + 4*x125*x126*x138 + 4*x113*x127*x138 + 4*x114*x127*x138 + 4*x115*x127*x138 + 4*x125*x127*x138 + 4*x126*x127*x138 + 4*x113*x137*x138 + 4*x114*x137*x138 + 4*x115*x137*x138 + 4*x125*x137*x138 + 4*x126*x137*x138 + 4*x127*x137*x138 + 4*x113*x114*x139 + 4*x113*x115*x139 + 4*x114*x115*x139 + 4*x113*x125*x139 + 4*x114*x125*x139 + 4*x115*x125*x139 + 4*x113*x126*x139 + 4*x114*x126*x139 + 4*x115*x126*x139 + 4*x125*x126*x139 + 4*x113*x127*x139 + 4*x114*x127*x139 + 4*x115*x127*x139 + 4*x125*x127*x139 + 4*x126*x127*x139 + 4*x113*x137*x139 + 4*x114*x137*x139 + 4*x115*x137*x139 + 4*x125*x137*x139 + 4*x126*x137*x139 + 4*x127*x137*x139 + 4*x113*x138*x139 + 4*x114*x138*x139 + 4*x115*x138*x139 + 4*x125*x138*x139 + 4*x126*x138*x139 + 4*x127*x138*x139 + 4*x137*x138*x139 - 2*x113*x114 - 2*x113*x115 - 2*x114*x115 - 2*x113*x125 - 2*x114*x125 - 2*x115*x125 - 2*x113*x126 - 2*x114*x126 - 2*x115*x126 - 2*x125*x126 - 2*x113*x127 - 2*x114*x127 - 2*x115*x127 - 2*x125*x127 - 2*x126*x127 - 2*x113*x137 - 2*x114*x137 - 2*x115*x137 - 2*x125*x137 - 2*x126*x137 - 2*x127*x137 - 2*x113*x138 - 2*x114*x138 - 2*x115*x138 - 2*x125*x138 - 2*x126*x138 - 2*x127*x138 - 2*x137*x138 - 2*x113*x139 - 2*x114*x139 - 2*x115*x139 - 2*x125*x139 - 2*x126*x139 - 2*x127*x139 - 2*x137*x139 - 2*x138*x139 - x56 + x113 + x114 + x115 + x125 + x126 + x127 + x137 + x138 + x139, -4*x113*x114*x115 + 2*x113*x114 + 2*x113*x115 + 2*x114*x115 - x57 - x113 - x114 - x115 + 1, -4*x125*x126*x127 + 2*x125*x126 + 2*x125*x127 + 2*x126*x127 - x58 - x125 - x126 - x127 + 1, -4*x137*x138*x139 + 2*x137*x138 + 2*x137*x139 + 2*x138*x139 - x59 - x137 - x138 - x139 + 1], [-4*x61*x62*x63 + 2*x61*x62 + 2*x61*x63 + 2*x62*x63 - x60 - x61 - x62 - x63 + 1, 0, 0, 0, -x64, -x65 + 1, -x66, -x67, -4*x113*x125*x137 + 2*x113*x125 + 2*x113*x137 + 2*x125*x137 - x68 - x113 - x125 - x137 + 1, -x69 + x113, -x70 + x125, -x71 + x137], [-4*x73*x74*x75 + 2*x73*x74 + 2*x73*x75 + 2*x74*x75 - x72 - x73 - x74 - x75 + 1, 0, 0, 0, -x76, -x77, -x78 + 1, -x79, -4*x114*x126*x138 + 2*x114*x126 + 2*x114*x138 + 2*x126*x138 - x80 - x114 - x126 - x138 + 1, -x81 + x114, -x82 + x126, -x83 + x138], [-4*x85*x86*x87 + 2*x85*x86 + 2*x85*x87 + 2*x86*x87 - x84 - x85 - x86 - x87 + 1, 0, 0, 0, -x88, -x89, -x90, -x91 + 1, -4*x115*x127*x139 + 2*x115*x127 + 2*x115*x139 + 2*x127*x139 - x92 - x115 - x127 - x139 + 1, -x93 + x115, -x94 + x127, -x95 + x139], [256*x109*x110*x111*x121*x122*x123*x133*x134*x135 - 128*x109*x110*x111*x121*x122*x123*x133*x134 - 128*x109*x110*x111*x121*x122*x123*x133*x135 - 128*x109*x110*x111*x121*x122*x123*x134*x135 - 128*x109*x110*x111*x121*x122*x133*x134*x135 - 128*x109*x110*x111*x121*x123*x133*x134*x135 - 128*x109*x110*x111*x122*x123*x133*x134*x135 - 128*x109*x110*x121*x122*x123*x133*x134*x135 - 128*x109*x111*x121*x122*x123*x133*x134*x135 - 128*x110*x111*x121*x122*x123*x133*x134*x135 + 64*x109*x110*x111*x121*x122*x123*x133 + 64*x109*x110*x111*x121*x122*x123*x134 + 64*x109*x110*x111*x121*x122*x133*x134 + 64*x109*x110*x111*x121*x123*x133*x134 + 64*x109*x110*x111*x122*x123*x133*x134 + 64*x109*x110*x121*x122*x123*x133*x134 + 64*x109*x111*x121*x122*x123*x133*x134 + 64*x110*x111*x121*x122*x123*x133*x134 + 64*x109*x110*x111*x121*x122*x123*x135 + 64*x109*x110*x111*x121*x122*x133*x135 + 64*x109*x110*x111*x121*x123*x133*x135 + 64*x109*x110*x111*x122*x123*x133*x135 + 64*x109*x110*x121*x122*x123*x133*x135 + 64*x109*x111*x121*x122*x123*x133*x135 + 64*x110*x111*x121*x122*x123*x133*x135 + 64*x109*x110*x111*x121*x122*x134*x135 + 64*x109*x110*x111*x121*x123*x134*x135 + 64*x109*x110*x111*x122*x123*x134*x135 + 64*x109*x110*x121*x122*x123*x134*x135 + 64*x109*x111*x121*x122*x123*x134*x135 + 64*x110*x111*x121*x122*x123*x134*x135 + 64*x109*x110*x111*x121*x133*x134*x135 + 64*x109*x110*x111*x122*x133*x134*x135 + 64*x109*x110*x121*x122*x133*x134*x135 + 64*x109*x111*x121*x122*x133*x134*x135 + 64*x110*x111*x121*x122*x133*x134*x135 + 64*x109*x110*x111*x123*x133*x134*x135 + 64*x109*x110*x121*x123*x133*x134*x135 + 64*x109*x111*x121*x123*x133*x134*x135 + 64*x110*x111*x121*x123*x133*x134*x135 + 64*x109*x110*x122*x123*x133*x134*x135 + 64*x109*x111*x122*x123*x133*x134*x135 + 64*x110*x111*x122*x123*x133*x134*x135 + 64*x109*x121*x122*x123*x133*x134*x135 + 64*x110*x121*x122*x123*x133*x134*x135 + 64*x111*x121*x122*x123*x133*x134*x135 - 32*x109*x110*x111*x121*x122*x123 - 32*x109*x110*x111*x121*x122*x133 - 32*x109*x110*x111*x121*x123*x133 - 32*x109*x110*x111*x122*x123*x133 - 32*x109*x110*x121*x122*x123*x133 - 32*x109*x111*x121*x122*x123*x133 - 32*x110*x111*x121*x122*x123*x133 - 32*x109*x110*x111*x121*x122*x134 - 32*x109*x110*x111*x121*x123*x134 - 32*x109*x110*x111*x122*x123*x134 - 32*x109*x110*x121*x122*x123*x134 - 32*x109*x111*x121*x122*x123*x134 - 32*x110*x111*x121*x122*x123*x134 - 32*x109*x110*x111*x121*x133*x134 - 32*x109*x110*x111*x122*x133*x134 - 32*x109*x110*x121*x122*x133*x134 - 32*x109*x111*x121*x122*x133*x134 - 32*x110*x111*x121*x122*x133*x134 - 32*x109*x110*x111*x123*x133*x134 - 32*x109*x110*x121*x123*x133*x134 - 32*x109*x111*x121*x123*x133*x134 - 32*x110*x111*x121*x123*x133*x134 - 32*x109*x110*x122*x123*x133*x134 - 32*x109*x111*x122*x123*x133*x134 - 32*x110*x111*x122*x123*x133*x134 - 32*x109*x121*x122*x123*x133*x134 - 32*x110*x121*x122*x123*x133*x134 - 32*x111*x121*x122*x123*x133*x134 - 32*x109*x110*x111*x121*x122*x135 - 32*x109*x110*x111*x121*x123*x135 - 32*x109*x110*x111*x122*x123*x135 - 32*x109*x110*x121*x122*x123*x135 - 32*x109*x111*x121*x122*x123*x135 - 32*x110*x111*x121*x122*x123*x135 - 32*x109*x110*x111*x121*x133*x135 - 32*x109*x110*x111*x122*x133*x135 - 32*x109*x110*x121*x122*x133*x135 - 32*x109*x111*x121*x122*x133*x135 - 32*x110*x111*x121*x122*x133*x135 - 32*x109*x110*x111*x123*x133*x135 - 32*x109*x110*x121*x123*x133*x135 - 32*x109*x111*x121*x123*x133*x135 - 32*x110*x111*x121*x123*x133*x135 - 32*x109*x110*x122*x123*x133*x135 - 32*x109*x111*x122*x123*x133*x135 - 32*x110*x111*x122*x123*x133*x135 - 32*x109*x121*x122*x123*x133*x135 - 32*x110*x121*x122*x123*x133*x135 - 32*x111*x121*x122*x123*x133*x135 - 32*x109*x110*x111*x121*x134*x135 - 32*x109*x110*x111*x122*x134*x135 - 32*x109*x110*x121*x122*x134*x135 - 32*x109*x111*x121*x122*x134*x135 - 32*x110*x111*x121*x122*x134*x135 - 32*x109*x110*x111*x123*x134*x135 - 32*x109*x110*x121*x123*x134*x135 - 32*x109*x111*x121*x123*x134*x135 - 32*x110*x111*x121*x123*x134*x135 - 32*x109*x110*x122*x123*x134*x135 - 32*x109*x111*x122*x123*x134*x135 - 32*x110*x111*x122*x123*x134*x135 - 32*x109*x121*x122*x123*x134*x135 - 32*x110*x121*x122*x123*x134*x135 - 32*x111*x121*x122*x123*x134*x135 - 32*x109*x110*x111*x133*x134*x135 - 32*x109*x110*x121*x133*x134*x135 - 32*x109*x111*x121*x133*x134*x135 - 32*x110*x111*x121*x133*x134*x135 - 32*x109*x110*x122*x133*x134*x135 - 32*x109*x111*x122*x133*x134*x135 - 32*x110*x111*x122*x133*x134*x135 - 32*x109*x121*x122*x133*x134*x135 - 32*x110*x121*x122*x133*x134*x135 - 32*x111*x121*x122*x133*x134*x135 - 32*x109*x110*x123*x133*x134*x135 - 32*x109*x111*x123*x133*x134*x135 - 32*x110*x111*x123*x133*x134*x135 - 32*x109*x121*x123*x133*x134*x135 - 32*x110*x121*x123*x133*x134*x135 - 32*x111*x121*x123*x133*x134*x135 - 32*x109*x122*x123*x133*x134*x135 - 32*x110*x122*x123*x133*x134*x135 - 32*x111*x122*x123*x133*x134*x135 - 32*x121*x122*x123*x133*x134*x135 + 16*x109*x110*x111*x121*x122 + 16*x109*x110*x111*x121*x123 + 16*x109*x110*x111*x122*x123 + 16*x109*x110*x121*x122*x123 + 16*x109*x111*x121*x122*x123 + 16*x110*x111*x121*x122*x123 + 16*x109*x110*x111*x121*x133 + 16*x109*x110*x111*x122*x133 + 16*x109*x110*x121*x122*x133 + 16*x109*x111*x121*x122*x133 + 16*x110*x111*x121*x122*x133 + 16*x109*x110*x111*x123*x133 + 16*x109*x110*x121*x123*x133 + 16*x109*x111*x121*x123*x133 + 16*x110*x111*x121*x123*x133 + 16*x109*x110*x122*x123*x133 + 16*x109*x111*x122*x123*x133 + 16*x110*x111*x122*x123*x133 + 16*x109*x121*x122*x123*x133 + 16*x110*x121*x122*x123*x133 + 16*x111*x121*x122*x123*x133 + 16*x109*x110*x111*x121*x134 + 16*x109*x110*x111*x122*x134 + 16*x109*x110*x121*x122*x134 + 16*x109*x111*x121*x122*x134 + 16*x110*x111*x121*x122*x134 + 16*x109*x110*x111*x123*x134 + 16*x109*x110*x121*x123*x134 + 16*x109*x111*x121*x123*x134 + 16*x110*x111*x121*x123*x134 + 16*x109*x110*x122*x123*x134 + 16*x109*x111*x122*x123*x134 + 16*x110*x111*x122*x123*x134 + 16*x109*x121*x122*x123*x134 + 16*x110*x121*x122*x123*x134 + 16*x111*x121*x122*x123*x134 + 16*x109*x110*x111*x133*x134 + 16*x109*x110*x121*x133*x134 + 16*x109*x111*x121*x133*x134 + 16*x110*x111*x121*x133*x134 + 16*x109*x110*x122*x133*x134 + 16*x109*x111*x122*x133*x134 + 16*x110*x111*x122*x133*x134 + 16*x109*x121*x122*x133*x134 + 16*x110*x121*x122*x133*x134 + 16*x111*x121*x122*x133*x134 + 16*x109*x110*x123*x133*x134 + 16*x109*x111*x123*x133*x134 + 16*x110*x111*x123*x133*x134 + 16*x109*x121*x123*x133*x134 + 16*x110*x121*x123*x133*x134 + 16*x111*x121*x123*x133*x134 + 16*x109*x122*x123*x133*x134 + 16*x110*x122*x123*x133*x134 + 16*x111*x122*x123*x133*x134 + 16*x121*x122*x123*x133*x134 + 16*x109*x110*x111*x121*x135 + 16*x109*x110*x111*x122*x135 + 16*x109*x110*x121*x122*x135 + 16*x109*x111*x121*x122*x135 + 16*x110*x111*x121*x122*x135 + 16*x109*x110*x111*x123*x135 + 16*x109*x110*x121*x123*x135 + 16*x109*x111*x121*x123*x135 + 16*x110*x111*x121*x123*x135 + 16*x109*x110*x122*x123*x135 + 16*x109*x111*x122*x123*x135 + 16*x110*x111*x122*x123*x135 + 16*x109*x121*x122*x123*x135 + 16*x110*x121*x122*x123*x135 + 16*x111*x121*x122*x123*x135 + 16*x109*x110*x111*x133*x135 + 16*x109*x110*x121*x133*x135 + 16*x109*x111*x121*x133*x135 + 16*x110*x111*x121*x133*x135 + 16*x109*x110*x122*x133*x135 + 16*x109*x111*x122*x133*x135 + 16*x110*x111*x122*x133*x135 + 16*x109*x121*x122*x133*x135 + 16*x110*x121*x122*x133*x135 + 16*x111*x121*x122*x133*x135 + 16*x109*x110*x123*x133*x135 + 16*x109*x111*x123*x133*x135 + 16*x110*x111*x123*x133*x135 + 16*x109*x121*x123*x133*x135 + 16*x110*x121*x123*x133*x135 + 16*x111*x121*x123*x133*x135 + 16*x109*x122*x123*x133*x135 + 16*x110*x122*x123*x133*x135 + 16*x111*x122*x123*x133*x135 + 16*x121*x122*x123*x133*x135 + 16*x109*x110*x111*x134*x135 + 16*x109*x110*x121*x134*x135 + 16*x109*x111*x121*x134*x135 + 16*x110*x111*x121*x134*x135 + 16*x109*x110*x122*x134*x135 + 16*x109*x111*x122*x134*x135 + 16*x110*x111*x122*x134*x135 + 16*x109*x121*x122*x134*x135 + 16*x110*x121*x122*x134*x135 + 16*x111*x121*x122*x134*x135 + 16*x109*x110*x123*x134*x135 + 16*x109*x111*x123*x134*x135 + 16*x110*x111*x123*x134*x135 + 16*x109*x121*x123*x134*x135 + 16*x110*x121*x123*x134*x135 + 16*x111*x121*x123*x134*x135 + 16*x109*x122*x123*x134*x135 + 16*x110*x122*x123*x134*x135 + 16*x111*x122*x123*x134*x135 + 16*x121*x122*x123*x134*x135 + 16*x109*x110*x133*x134*x135 + 16*x109*x111*x133*x134*x135 + 16*x110*x111*x133*x134*x135 + 16*x109*x121*x133*x134*x135 + 16*x110*x121*x133*x134*x135 + 16*x111*x121*x133*x134*x135 + 16*x109*x122*x133*x134*x135 + 16*x110*x122*x133*x134*x135 + 16*x111*x122*x133*x134*x135 + 16*x121*x122*x133*x134*x135 + 16*x109*x123*x133*x134*x135 + 16*x110*x123*x133*x134*x135 + 16*x111*x123*x133*x134*x135 + 16*x121*x123*x133*x134*x135 + 16*x122*x123*x133*x134*x135 - 8*x109*x110*x111*x121 - 8*x109*x110*x111*x122 - 8*x109*x110*x121*x122 - 8*x109*x111*x121*x122 - 8*x110*x111*x121*x122 - 8*x109*x110*x111*x123 - 8*x109*x110*x121*x123 - 8*x109*x111*x121*x123 - 8*x110*x111*x121*x123 - 8*x109*x110*x122*x123 - 8*x109*x111*x122*x123 - 8*x110*x111*x122*x123 - 8*x109*x121*x122*x123 - 8*x110*x121*x122*x123 - 8*x111*x121*x122*x123 - 8*x109*x110*x111*x133 - 8*x109*x110*x121*x133 - 8*x109*x111*x121*x133 - 8*x110*x111*x121*x133 - 8*x109*x110*x122*x133 - 8*x109*x111*x122*x133 - 8*x110*x111*x122*x133 - 8*x109*x121*x122*x133 - 8*x110*x121*x122*x133 - 8*x111*x121*x122*x133 - 8*x109*x110*x123*x133 - 8*x109*x111*x123*x133 - 8*x110*x111*x123*x133 - 8*x109*x121*x123*x133 - 8*x110*x121*x123*x133 - 8*x111*x121*x123*x133 - 8*x109*x122*x123*x133 - 8*x110*x122*x123*x133 - 8*x111*x122*x123*x133 - 8*x121*x122*x123*x133 - 8*x109*x110*x111*x134 - 8*x109*x110*x121*x134 - 8*x109*x111*x121*x134 - 8*x110*x111*x121*x134 - 8*x109*x110*x122*x134 - 8*x109*x111*x122*x134 - 8*x110*x111*x122*x134 - 8*x109*x121*x122*x134 - 8*x110*x121*x122*x134 - 8*x111*x121*x122*x134 - 8*x109*x110*x123*x134 - 8*x109*x111*x123*x134 - 8*x110*x111*x123*x134 - 8*x109*x121*x123*x134 - 8*x110*x121*x123*x134 - 8*x111*x121*x123*x134 - 8*x109*x122*x123*x134 - 8*x110*x122*x123*x134 - 8*x111*x122*x123*x134 - 8*x121*x122*x123*x134 - 8*x109*x110*x133*x134 - 8*x109*x111*x133*x134 - 8*x110*x111*x133*x134 - 8*x109*x121*x133*x134 - 8*x110*x121*x133*x134 - 8*x111*x121*x133*x134 - 8*x109*x122*x133*x134 - 8*x110*x122*x133*x134 - 8*x111*x122*x133*x134 - 8*x121*x122*x133*x134 - 8*x109*x123*x133*x134 - 8*x110*x123*x133*x134 - 8*x111*x123*x133*x134 - 8*x121*x123*x133*x134 - 8*x122*x123*x133*x134 - 8*x109*x110*x111*x135 - 8*x109*x110*x121*x135 - 8*x109*x111*x121*x135 - 8*x110*x111*x121*x135 - 8*x109*x110*x122*x135 - 8*x109*x111*x122*x135 - 8*x110*x111*x122*x135 - 8*x109*x121*x122*x135 - 8*x110*x121*x122*x135 - 8*x111*x121*x122*x135 - 8*x109*x110*x123*x135 - 8*x109*x111*x123*x135 - 8*x110*x111*x123*x135 - 8*x109*x121*x123*x135 - 8*x110*x121*x123*x135 - 8*x111*x121*x123*x135 - 8*x109*x122*x123*x135 - 8*x110*x122*x123*x135 - 8*x111*x122*x123*x135 - 8*x121*x122*x123*x135 - 8*x109*x110*x133*x135 - 8*x109*x111*x133*x135 - 8*x110*x111*x133*x135 - 8*x109*x121*x133*x135 - 8*x110*x121*x133*x135 - 8*x111*x121*x133*x135 - 8*x109*x122*x133*x135 - 8*x110*x122*x133*x135 - 8*x111*x122*x133*x135 - 8*x121*x122*x133*x135 - 8*x109*x123*x133*x135 - 8*x110*x123*x133*x135 - 8*x111*x123*x133*x135 - 8*x121*x123*x133*x135 - 8*x122*x123*x133*x135 - 8*x109*x110*x134*x135 - 8*x109*x111*x134*x135 - 8*x110*x111*x134*x135 - 8*x109*x121*x134*x135 - 8*x110*x121*x134*x135 - 8*x111*x121*x134*x135 - 8*x109*x122*x134*x135 - 8*x110*x122*x134*x135 - 8*x111*x122*x134*x135 - 8*x121*x122*x134*x135 - 8*x109*x123*x134*x135 - 8*x110*x123*x134*x135 - 8*x111*x123*x134*x135 - 8*x121*x123*x134*x135 - 8*x122*x123*x134*x135 - 8*x109*x133*x134*x135 - 8*x110*x133*x134*x135 - 8*x111*x133*x134*x135 - 8*x121*x133*x134*x135 - 8*x122*x133*x134*x135 - 8*x123*x133*x134*x135 + 4*x109*x110*x111 + 4*x109*x110*x121 + 4*x109*x111*x121 + 4*x110*x111*x121 + 4*x109*x110*x122 + 4*x109*x111*x122 + 4*x110*x111*x122 + 4*x109*x121*x122 + 4*x110*x121*x122 + 4*x111*x121*x122 + 4*x109*x110*x123 + 4*x109*x111*x123 + 4*x110*x111*x123 + 4*x109*x121*x123 + 4*x110*x121*x123 + 4*x111*x121*x123 + 4*x109*x122*x123 + 4*x110*x122*x123 + 4*x111*x122*x123 + 4*x121*x122*x123 + 4*x109*x110*x133 + 4*x109*x111*x133 + 4*x110*x111*x133 + 4*x109*x121*x133 + 4*x110*x121*x133 + 4*x111*x121*x133 + 4*x109*x122*x133 + 4*x110*x122*x133 + 4*x111*x122*x133 + 4*x121*x122*x133 + 4*x109*x123*x133 + 4*x110*x123*x133 + 4*x111*x123*x133 + 4*x121*x123*x133 + 4*x122*x123*x133 + 4*x109*x110*x134 + 4*x109*x111*x134 + 4*x110*x111*x134 + 4*x109*x121*x134 + 4*x110*x121*x134 + 4*x111*x121*x134 + 4*x109*x122*x134 + 4*x110*x122*x134 + 4*x111*x122*x134 + 4*x121*x122*x134 + 4*x109*x123*x134 + 4*x110*x123*x134 + 4*x111*x123*x134 + 4*x121*x123*x134 + 4*x122*x123*x134 + 4*x109*x133*x134 + 4*x110*x133*x134 + 4*x111*x133*x134 + 4*x121*x133*x134 + 4*x122*x133*x134 + 4*x123*x133*x134 + 4*x109*x110*x135 + 4*x109*x111*x135 + 4*x110*x111*x135 + 4*x109*x121*x135 + 4*x110*x121*x135 + 4*x111*x121*x135 + 4*x109*x122*x135 + 4*x110*x122*x135 + 4*x111*x122*x135 + 4*x121*x122*x135 + 4*x109*x123*x135 + 4*x110*x123*x135 + 4*x111*x123*x135 + 4*x121*x123*x135 + 4*x122*x123*x135 + 4*x109*x133*x135 + 4*x110*x133*x135 + 4*x111*x133*x135 + 4*x121*x133*x135 + 4*x122*x133*x135 + 4*x123*x133*x135 + 4*x109*x134*x135 + 4*x110*x134*x135 + 4*x111*x134*x135 + 4*x121*x134*x135 + 4*x122*x134*x135 + 4*x123*x134*x135 + 4*x133*x134*x135 - 2*x109*x110 - 2*x109*x111 - 2*x110*x111 - 2*x109*x121 - 2*x110*x121 - 2*x111*x121 - 2*x109*x122 - 2*x110*x122 - 2*x111*x122 - 2*x121*x122 - 2*x109*x123 - 2*x110*x123 - 2*x111*x123 - 2*x121*x123 - 2*x122*x123 - 2*x109*x133 - 2*x110*x133 - 2*x111*x133 - 2*x121*x133 - 2*x122*x133 - 2*x123*x133 - 2*x109*x134 - 2*x110*x134 - 2*x111*x134 - 2*x121*x134 - 2*x122*x134 - 2*x123*x134 - 2*x133*x134 - 2*x109*x135 - 2*x110*x135 - 2*x111*x135 - 2*x121*x135 - 2*x122*x135 - 2*x123*x135 - 2*x133*x135 - 2*x134*x135 - x96 + x109 + x110 + x111 + x121 + x122 + x123 + x133 + x134 + x135, -4*x109*x121*x133 + 2*x109*x121 + 2*x109*x133 + 2*x121*x133 - x97 - x109 - x121 - x133 + 1, -4*x110*x122*x134 + 2*x110*x122 + 2*x110*x134 + 2*x122*x134 - x98 - x110 - x122 - x134 + 1, -4*x111*x123*x135 + 2*x111*x123 + 2*x111*x135 + 2*x123*x135 - x99 - x111 - x123 - x135 + 1, 256*x113*x114*x115*x125*x126*x127*x137*x138*x139 - 128*x113*x114*x115*x125*x126*x127*x137*x138 - 128*x113*x114*x115*x125*x126*x127*x137*x139 - 128*x113*x114*x115*x125*x126*x127*x138*x139 - 128*x113*x114*x115*x125*x126*x137*x138*x139 - 128*x113*x114*x115*x125*x127*x137*x138*x139 - 128*x113*x114*x115*x126*x127*x137*x138*x139 - 128*x113*x114*x125*x126*x127*x137*x138*x139 - 128*x113*x115*x125*x126*x127*x137*x138*x139 - 128*x114*x115*x125*x126*x127*x137*x138*x139 + 64*x113*x114*x115*x125*x126*x127*x137 + 64*x113*x114*x115*x125*x126*x127*x138 + 64*x113*x114*x115*x125*x126*x137*x138 + 64*x113*x114*x115*x125*x127*x137*x138 + 64*x113*x114*x115*x126*x127*x137*x138 + 64*x113*x114*x125*x126*x127*x137*x138 + 64*x113*x115*x125*x126*x127*x137*x138 + 64*x114*x115*x125*x126*x127*x137*x138 + 64*x113*x114*x115*x125*x126*x127*x139 + 64*x113*x114*x115*x125*x126*x137*x139 + 64*x113*x114*x115*x125*x127*x137*x139 + 64*x113*x114*x115*x126*x127*x137*x139 + 64*x113*x114*x125*x126*x127*x137*x139 + 64*x113*x115*x125*x126*x127*x137*x139 + 64*x114*x115*x125*x126*x127*x137*x139 + 64*x113*x114*x115*x125*x126*x138*x139 + 64*x113*x114*x115*x125*x127*x138*x139 + 64*x113*x114*x115*x126*x127*x138*x139 + 64*x113*x114*x125*x126*x127*x138*x139 + 64*x113*x115*x125*x126*x127*x138*x139 + 64*x114*x115*x125*x126*x127*x138*x139 + 64*x113*x114*x115*x125*x137*x138*x139 + 64*x113*x114*x115*x126*x137*x138*x139 + 64*x113*x114*x125*x126*x137*x138*x139 + 64*x113*x115*x125*x126*x137*x138*x139 + 64*x114*x115*x125*x126*x137*x138*x139 + 64*x113*x114*x115*x127*x137*x138*x139 + 64*x113*x114*x125*x127*x137*x138*x139 + 64*x113*x115*x125*x127*x137*x138*x139 + 64*x114*x115*x125*x127*x137*x138*x139 + 64*x113*x114*x126*x127*x137*x138*x139 + 64*x113*x115*x126*x127*x137*x138*x139 + 64*x114*x115*x126*x127*x137*x138*x139 + 64*x113*x125*x126*x127*x137*x138*x139 + 64*x114*x125*x126*x127*x137*x138*x139 + 64*x115*x125*x126*x127*x137*x138*x139 - 32*x113*x114*x115*x125*x126*x127 - 32*x113*x114*x115*x125*x126*x137 - 32*x113*x114*x115*x125*x127*x137 - 32*x113*x114*x115*x126*x127*x137 - 32*x113*x114*x125*x126*x127*x137 - 32*x113*x115*x125*x126*x127*x137 - 32*x114*x115*x125*x126*x127*x137 - 32*x113*x114*x115*x125*x126*x138 - 32*x113*x114*x115*x125*x127*x138 - 32*x113*x114*x115*x126*x127*x138 - 32*x113*x114*x125*x126*x127*x138 - 32*x113*x115*x125*x126*x127*x138 - 32*x114*x115*x125*x126*x127*x138 - 32*x113*x114*x115*x125*x137*x138 - 32*x113*x114*x115*x126*x137*x138 - 32*x113*x114*x125*x126*x137*x138 - 32*x113*x115*x125*x126*x137*x138 - 32*x114*x115*x125*x126*x137*x138 - 32*x113*x114*x115*x127*x137*x138 - 32*x113*x114*x125*x127*x137*x138 - 32*x113*x115*x125*x127*x137*x138 - 32*x114*x115*x125*x127*x137*x138 - 32*x113*x114*x126*x127*x137*x138 - 32*x113*x115*x126*x127*x137*x138 - 32*x114*x115*x126*x127*x137*x138 - 32*x113*x125*x126*x127*x137*x138 - 32*x114*x125*x126*x127*x137*x138 - 32*x115*x125*x126*x127*x137*x138 - 32*x113*x114*x115*x125*x126*x139 - 32*x113*x114*x115*x125*x127*x139 - 32*x113*x114*x115*x126*x127*x139 - 32*x113*x114*x125*x126*x127*x139 - 32*x113*x115*x125*x126*x127*x139 - 32*x114*x115*x125*x126*x127*x139 - 32*x113*x114*x115*x125*x137*x139 - 32*x113*x114*x115*x126*x137*x139 - 32*x113*x114*x125*x126*x137*x139 - 32*x113*x115*x125*x126*x137*x139 - 32*x114*x115*x125*x126*x137*x139 - 32*x113*x114*x115*x127*x137*x139 - 32*x113*x114*x125*x127*x137*x139 - 32*x113*x115*x125*x127*x137*x139 - 32*x114*x115*x125*x127*x137*x139 - 32*x113*x114*x126*x127*x137*x139 - 32*x113*x115*x126*x127*x137*x139 - 32*x114*x115*x126*x127*x137*x139 - 32*x113*x125*x126*x127*x137*x139 - 32*x114*x125*x126*x127*x137*x139 - 32*x115*x125*x126*x127*x137*x139 - 32*x113*x114*x115*x125*x138*x139 - 32*x113*x114*x115*x126*x138*x139 - 32*x113*x114*x125*x126*x138*x139 - 32*x113*x115*x125*x126*x138*x139 - 32*x114*x115*x125*x126*x138*x139 - 32*x113*x114*x115*x127*x138*x139 - 32*x113*x114*x125*x127*x138*x139 - 32*x113*x115*x125*x127*x138*x139 - 32*x114*x115*x125*x127*x138*x139 - 32*x113*x114*x126*x127*x138*x139 - 32*x113*x115*x126*x127*x138*x139 - 32*x114*x115*x126*x127*x138*x139 - 32*x113*x125*x126*x127*x138*x139 - 32*x114*x125*x126*x127*x138*x139 - 32*x115*x125*x126*x127*x138*x139 - 32*x113*x114*x115*x137*x138*x139 - 32*x113*x114*x125*x137*x138*x139 - 32*x113*x115*x125*x137*x138*x139 - 32*x114*x115*x125*x137*x138*x139 - 32*x113*x114*x126*x137*x138*x139 - 32*x113*x115*x126*x137*x138*x139 - 32*x114*x115*x126*x137*x138*x139 - 32*x113*x125*x126*x137*x138*x139 - 32*x114*x125*x126*x137*x138*x139 - 32*x115*x125*x126*x137*x138*x139 - 32*x113*x114*x127*x137*x138*x139 - 32*x113*x115*x127*x137*x138*x139 - 32*x114*x115*x127*x137*x138*x139 - 32*x113*x125*x127*x137*x138*x139 - 32*x114*x125*x127*x137*x138*x139 - 32*x115*x125*x127*x137*x138*x139 - 32*x113*x126*x127*x137*x138*x139 - 32*x114*x126*x127*x137*x138*x139 - 32*x115*x126*x127*x137*x138*x139 - 32*x125*x126*x127*x137*x138*x139 + 16*x113*x114*x115*x125*x126 + 16*x113*x114*x115*x125*x127 + 16*x113*x114*x115*x126*x127 + 16*x113*x114*x125*x126*x127 + 16*x113*x115*x125*x126*x127 + 16*x114*x115*x125*x126*x127 + 16*x113*x114*x115*x125*x137 + 16*x113*x114*x115*x126*x137 + 16*x113*x114*x125*x126*x137 + 16*x113*x115*x125*x126*x137 + 16*x114*x115*x125*x126*x137 + 16*x113*x114*x115*x127*x137 + 16*x113*x114*x125*x127*x137 + 16*x113*x115*x125*x127*x137 + 16*x114*x115*x125*x127*x137 + 16*x113*x114*x126*x127*x137 + 16*x113*x115*x126*x127*x137 + 16*x114*x115*x126*x127*x137 + 16*x113*x125*x126*x127*x137 + 16*x114*x125*x126*x127*x137 + 16*x115*x125*x126*x127*x137 + 16*x113*x114*x115*x125*x138 + 16*x113*x114*x115*x126*x138 + 16*x113*x114*x125*x126*x138 + 16*x113*x115*x125*x126*x138 + 16*x114*x115*x125*x126*x138 + 16*x113*x114*x115*x127*x138 + 16*x113*x114*x125*x127*x138 + 16*x113*x115*x125*x127*x138 + 16*x114*x115*x125*x127*x138 + 16*x113*x114*x126*x127*x138 + 16*x113*x115*x126*x127*x138 + 16*x114*x115*x126*x127*x138 + 16*x113*x125*x126*x127*x138 + 16*x114*x125*x126*x127*x138 + 16*x115*x125*x126*x127*x138 + 16*x113*x114*x115*x137*x138 + 16*x113*x114*x125*x137*x138 + 16*x113*x115*x125*x137*x138 + 16*x114*x115*x125*x137*x138 + 16*x113*x114*x126*x137*x138 + 16*x113*x115*x126*x137*x138 + 16*x114*x115*x126*x137*x138 + 16*x113*x125*x126*x137*x138 + 16*x114*x125*x126*x137*x138 + 16*x115*x125*x126*x137*x138 + 16*x113*x114*x127*x137*x138 + 16*x113*x115*x127*x137*x138 + 16*x114*x115*x127*x137*x138 + 16*x113*x125*x127*x137*x138 + 16*x114*x125*x127*x137*x138 + 16*x115*x125*x127*x137*x138 + 16*x113*x126*x127*x137*x138 + 16*x114*x126*x127*x137*x138 + 16*x115*x126*x127*x137*x138 + 16*x125*x126*x127*x137*x138 + 16*x113*x114*x115*x125*x139 + 16*x113*x114*x115*x126*x139 + 16*x113*x114*x125*x126*x139 + 16*x113*x115*x125*x126*x139 + 16*x114*x115*x125*x126*x139 + 16*x113*x114*x115*x127*x139 + 16*x113*x114*x125*x127*x139 + 16*x113*x115*x125*x127*x139 + 16*x114*x115*x125*x127*x139 + 16*x113*x114*x126*x127*x139 + 16*x113*x115*x126*x127*x139 + 16*x114*x115*x126*x127*x139 + 16*x113*x125*x126*x127*x139 + 16*x114*x125*x126*x127*x139 + 16*x115*x125*x126*x127*x139 + 16*x113*x114*x115*x137*x139 + 16*x113*x114*x125*x137*x139 + 16*x113*x115*x125*x137*x139 + 16*x114*x115*x125*x137*x139 + 16*x113*x114*x126*x137*x139 + 16*x113*x115*x126*x137*x139 + 16*x114*x115*x126*x137*x139 + 16*x113*x125*x126*x137*x139 + 16*x114*x125*x126*x137*x139 + 16*x115*x125*x126*x137*x139 + 16*x113*x114*x127*x137*x139 + 16*x113*x115*x127*x137*x139 + 16*x114*x115*x127*x137*x139 + 16*x113*x125*x127*x137*x139 + 16*x114*x125*x127*x137*x139 + 16*x115*x125*x127*x137*x139 + 16*x113*x126*x127*x137*x139 + 16*x114*x126*x127*x137*x139 + 16*x115*x126*x127*x137*x139 + 16*x125*x126*x127*x137*x139 + 16*x113*x114*x115*x138*x139 + 16*x113*x114*x125*x138*x139 + 16*x113*x115*x125*x138*x139 + 16*x114*x115*x125*x138*x139 + 16*x113*x114*x126*x138*x139 + 16*x113*x115*x126*x138*x139 + 16*x114*x115*x126*x138*x139 + 16*x113*x125*x126*x138*x139 + 16*x114*x125*x126*x138*x139 + 16*x115*x125*x126*x138*x139 + 16*x113*x114*x127*x138*x139 + 16*x113*x115*x127*x138*x139 + 16*x114*x115*x127*x138*x139 + 16*x113*x125*x127*x138*x139 + 16*x114*x125*x127*x138*x139 + 16*x115*x125*x127*x138*x139 + 16*x113*x126*x127*x138*x139 + 16*x114*x126*x127*x138*x139 + 16*x115*x126*x127*x138*x139 + 16*x125*x126*x127*x138*x139 + 16*x113*x114*x137*x138*x139 + 16*x113*x115*x137*x138*x139 + 16*x114*x115*x137*x138*x139 + 16*x113*x125*x137*x138*x139 + 16*x114*x125*x137*x138*x139 + 16*x115*x125*x137*x138*x139 + 16*x113*x126*x137*x138*x139 + 16*x114*x126*x137*x138*x139 + 16*x115*x126*x137*x138*x139 + 16*x125*x126*x137*x138*x139 + 16*x113*x127*x137*x138*x139 + 16*x114*x127*x137*x138*x139 + 16*x115*x127*x137*x138*x139 + 16*x125*x127*x137*x138*x139 + 16*x126*x127*x137*x138*x139 - 8*x113*x114*x115*x125 - 8*x113*x114*x115*x126 - 8*x113*x114*x125*x126 - 8*x113*x115*x125*x126 - 8*x114*x115*x125*x126 - 8*x113*x114*x115*x127 - 8*x113*x114*x125*x127 - 8*x113*x115*x125*x127 - 8*x114*x115*x125*x127 - 8*x113*x114*x126*x127 - 8*x113*x115*x126*x127 - 8*x114*x115*x126*x127 - 8*x113*x125*x126*x127 - 8*x114*x125*x126*x127 - 8*x115*x125*x126*x127 - 8*x113*x114*x115*x137 - 8*x113*x114*x125*x137 - 8*x113*x115*x125*x137 - 8*x114*x115*x125*x137 - 8*x113*x114*x126*x137 - 8*x113*x115*x126*x137 - 8*x114*x115*x126*x137 - 8*x113*x125*x126*x137 - 8*x114*x125*x126*x137 - 8*x115*x125*x126*x137 - 8*x113*x114*x127*x137 - 8*x113*x115*x127*x137 - 8*x114*x115*x127*x137 - 8*x113*x125*x127*x137 - 8*x114*x125*x127*x137 - 8*x115*x125*x127*x137 - 8*x113*x126*x127*x137 - 8*x114*x126*x127*x137 - 8*x115*x126*x127*x137 - 8*x125*x126*x127*x137 - 8*x113*x114*x115*x138 - 8*x113*x114*x125*x138 - 8*x113*x115*x125*x138 - 8*x114*x115*x125*x138 - 8*x113*x114*x126*x138 - 8*x113*x115*x126*x138 - 8*x114*x115*x126*x138 - 8*x113*x125*x126*x138 - 8*x114*x125*x126*x138 - 8*x115*x125*x126*x138 - 8*x113*x114*x127*x138 - 8*x113*x115*x127*x138 - 8*x114*x115*x127*x138 - 8*x113*x125*x127*x138 - 8*x114*x125*x127*x138 - 8*x115*x125*x127*x138 - 8*x113*x126*x127*x138 - 8*x114*x126*x127*x138 - 8*x115*x126*x127*x138 - 8*x125*x126*x127*x138 - 8*x113*x114*x137*x138 - 8*x113*x115*x137*x138 - 8*x114*x115*x137*x138 - 8*x113*x125*x137*x138 - 8*x114*x125*x137*x138 - 8*x115*x125*x137*x138 - 8*x113*x126*x137*x138 - 8*x114*x126*x137*x138 - 8*x115*x126*x137*x138 - 8*x125*x126*x137*x138 - 8*x113*x127*x137*x138 - 8*x114*x127*x137*x138 - 8*x115*x127*x137*x138 - 8*x125*x127*x137*x138 - 8*x126*x127*x137*x138 - 8*x113*x114*x115*x139 - 8*x113*x114*x125*x139 - 8*x113*x115*x125*x139 - 8*x114*x115*x125*x139 - 8*x113*x114*x126*x139 - 8*x113*x115*x126*x139 - 8*x114*x115*x126*x139 - 8*x113*x125*x126*x139 - 8*x114*x125*x126*x139 - 8*x115*x125*x126*x139 - 8*x113*x114*x127*x139 - 8*x113*x115*x127*x139 - 8*x114*x115*x127*x139 - 8*x113*x125*x127*x139 - 8*x114*x125*x127*x139 - 8*x115*x125*x127*x139 - 8*x113*x126*x127*x139 - 8*x114*x126*x127*x139 - 8*x115*x126*x127*x139 - 8*x125*x126*x127*x139 - 8*x113*x114*x137*x139 - 8*x113*x115*x137*x139 - 8*x114*x115*x137*x139 - 8*x113*x125*x137*x139 - 8*x114*x125*x137*x139 - 8*x115*x125*x137*x139 - 8*x113*x126*x137*x139 - 8*x114*x126*x137*x139 - 8*x115*x126*x137*x139 - 8*x125*x126*x137*x139 - 8*x113*x127*x137*x139 - 8*x114*x127*x137*x139 - 8*x115*x127*x137*x139 - 8*x125*x127*x137*x139 - 8*x126*x127*x137*x139 - 8*x113*x114*x138*x139 - 8*x113*x115*x138*x139 - 8*x114*x115*x138*x139 - 8*x113*x125*x138*x139 - 8*x114*x125*x138*x139 - 8*x115*x125*x138*x139 - 8*x113*x126*x138*x139 - 8*x114*x126*x138*x139 - 8*x115*x126*x138*x139 - 8*x125*x126*x138*x139 - 8*x113*x127*x138*x139 - 8*x114*x127*x138*x139 - 8*x115*x127*x138*x139 - 8*x125*x127*x138*x139 - 8*x126*x127*x138*x139 - 8*x113*x137*x138*x139 - 8*x114*x137*x138*x139 - 8*x115*x137*x138*x139 - 8*x125*x137*x138*x139 - 8*x126*x137*x138*x139 - 8*x127*x137*x138*x139 + 4*x113*x114*x115 + 4*x113*x114*x125 + 4*x113*x115*x125 + 4*x114*x115*x125 + 4*x113*x114*x126 + 4*x113*x115*x126 + 4*x114*x115*x126 + 4*x113*x125*x126 + 4*x114*x125*x126 + 4*x115*x125*x126 + 4*x113*x114*x127 + 4*x113*x115*x127 + 4*x114*x115*x127 + 4*x113*x125*x127 + 4*x114*x125*x127 + 4*x115*x125*x127 + 4*x113*x126*x127 + 4*x114*x126*x127 + 4*x115*x126*x127 + 4*x125*x126*x127 + 4*x113*x114*x137 + 4*x113*x115*x137 + 4*x114*x115*x137 + 4*x113*x125*x137 + 4*x114*x125*x137 + 4*x115*x125*x137 + 4*x113*x126*x137 + 4*x114*x126*x137 + 4*x115*x126*x137 + 4*x125*x126*x137 + 4*x113*x127*x137 + 4*x114*x127*x137 + 4*x115*x127*x137 + 4*x125*x127*x137 + 4*x126*x127*x137 + 4*x113*x114*x138 + 4*x113*x115*x138 + 4*x114*x115*x138 + 4*x113*x125*x138 + 4*x114*x125*x138 + 4*x115*x125*x138 + 4*x113*x126*x138 + 4*x114*x126*x138 + 4*x115*x126*x138 + 4*x125*x126*x138 + 4*x113*x127*x138 + 4*x114*x127*x138 + 4*x115*x127*x138 + 4*x125*x127*x138 + 4*x126*x127*x138 + 4*x113*x137*x138 + 4*x114*x137*x138 + 4*x115*x137*x138 + 4*x125*x137*x138 + 4*x126*x137*x138 + 4*x127*x137*x138 + 4*x113*x114*x139 + 4*x113*x115*x139 + 4*x114*x115*x139 + 4*x113*x125*x139 + 4*x114*x125*x139 + 4*x115*x125*x139 + 4*x113*x126*x139 + 4*x114*x126*x139 + 4*x115*x126*x139 + 4*x125*x126*x139 + 4*x113*x127*x139 + 4*x114*x127*x139 + 4*x115*x127*x139 + 4*x125*x127*x139 + 4*x126*x127*x139 + 4*x113*x137*x139 + 4*x114*x137*x139 + 4*x115*x137*x139 + 4*x125*x137*x139 + 4*x126*x137*x139 + 4*x127*x137*x139 + 4*x113*x138*x139 + 4*x114*x138*x139 + 4*x115*x138*x139 + 4*x125*x138*x139 + 4*x126*x138*x139 + 4*x127*x138*x139 + 4*x137*x138*x139 - 2*x113*x114 - 2*x113*x115 - 2*x114*x115 - 2*x113*x125 - 2*x114*x125 - 2*x115*x125 - 2*x113*x126 - 2*x114*x126 - 2*x115*x126 - 2*x125*x126 - 2*x113*x127 - 2*x114*x127 - 2*x115*x127 - 2*x125*x127 - 2*x126*x127 - 2*x113*x137 - 2*x114*x137 - 2*x115*x137 - 2*x125*x137 - 2*x126*x137 - 2*x127*x137 - 2*x113*x138 - 2*x114*x138 - 2*x115*x138 - 2*x125*x138 - 2*x126*x138 - 2*x127*x138 - 2*x137*x138 - 2*x113*x139 - 2*x114*x139 - 2*x115*x139 - 2*x125*x139 - 2*x126*x139 - 2*x127*x139 - 2*x137*x139 - 2*x138*x139 - x100 + x113 + x114 + x115 + x125 + x126 + x127 + x137 + x138 + x139, -4*x113*x125*x137 + 2*x113*x125 + 2*x113*x137 + 2*x125*x137 - x101 - x113 - x125 - x137 + 1, -4*x114*x126*x138 + 2*x114*x126 + 2*x114*x138 + 2*x126*x138 - x102 - x114 - x126 - x138 + 1, -4*x115*x127*x139 + 2*x115*x127 + 2*x115*x139 + 2*x127*x139 - x103 - x115 - x127 - x139 + 1, -x104 + 1, -x105, -x106, -x107], [-4*x109*x110*x111 + 2*x109*x110 + 2*x109*x111 + 2*x110*x111 - x108 - x109 - x110 - x111 + 1, 0, 0, 0, -4*x113*x114*x115 + 2*x113*x114 + 2*x113*x115 + 2*x114*x115 - x112 - x113 - x114 - x115 + 1, 0, 0, 0, -x116, -x117 + 1, -x118, -x119], [-4*x121*x122*x123 + 2*x121*x122 + 2*x121*x123 + 2*x122*x123 - x120 - x121 - x122 - x123 + 1, 0, 0, 0, -4*x125*x126*x127 + 2*x125*x126 + 2*x125*x127 + 2*x126*x127 - x124 - x125 - x126 - x127 + 1, 0, 0, 0, -x128, -x129, -x130 + 1, -x131], [-4*x133*x134*x135 + 2*x133*x134 + 2*x133*x135 + 2*x134*x135 - x132 - x133 - x134 - x135 + 1, 0, 0, 0, -4*x137*x138*x139 + 2*x137*x138 + 2*x137*x139 + 2*x138*x139 - x136 - x137 - x138 - x139 + 1, 0, 0, 0, -x140, -x141, -x142, -x143 + 1]]
load('Puzzle8b.sage')
objects = 12 types = 3 rel_classes = 4 144 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X143 = R[11,11] REI.gens() = 1589 A 1st pass type 0 to type 1 [ X138 X124 + X126 + X128 0 X90 + X115 + X139] [ X49 X61 0 X85] [ X138 + 1 X124 + X125 + X126 + X129 + 1 X124 + X129 + 1 X88 + X90 + X115] [ X51 X63 X75 X87] type 0 to type 2 [ X138 + X140 X138 X126 + X129 + X142 X138 + 1] [ X97 X138 X121 X133] [X124 + X126 + X128 + X129 + 1 X124 + X129 + X138 + 1 X124 + X126 + X129 X138] [ X99 X111 X123 X135] type 1 to type 2 [X124 + X126 + X128 + X129 + X138 + 1 X124 + X129 + 1 X124 0] [ X101 X125 + X129 + X137 + 1 X125 X137] [ X116 + X138 X138 + 1 X126 X138] [ X103 X115 X127 X139] number of variables left to be determined: 31 REI.gens() = 1613 A 2nd pass type 0 to type 1 [0 1 0 0] [0 0 0 1] [1 0 0 0] [0 0 1 0] type 0 to type 2 [0 0 0 1] [1 0 0 0] [0 0 1 0] [0 1 0 0] type 1 to type 2 [0 0 1 0] [0 0 0 1] [0 1 0 0] [1 0 0 0]
<string>:18: DeprecationWarning: using 'degrevlex' in Boolean polynomial rings is deprecated. If needed, reverse the order of variables manually and use 'degneglex' See http://trac.sagemath.org/13849 for details.
if 0 in clues2: clues2.remove(0) A;A3
[ 1 X133 + X138 0 X75 + X111 + X135 X138 X124 + X126 + X128 0 X90 + X115 + X139 X138 + X140 X138 X126 + X129 + X142 X138 + 1] [ X133 + X138 X13 X49 + X138 X37 X49 X61 0 X85 X97 X138 X121 X133] [ 0 X49 + X138 1 X51 + X75 + X111 X138 + 1 X124 + X125 + X126 + X129 + 1 X124 + X129 + 1 X88 + X90 + X115 X124 + X126 + X128 + X129 + 1 X124 + X129 + X138 + 1 X124 + X126 + X129 X138] [ X75 + X111 + X135 X37 X51 + X75 + X111 X39 X51 X63 X75 X87 X99 X111 X123 X135] [ X138 X49 X138 + 1 X51 1 X125 + X128 + X129 + X137 + 1 X124 + X129 + X138 + 1 X88 X124 + X126 + X128 + X129 + X138 + 1 X124 + X129 + 1 X124 0] [ X124 + X126 + X128 X61 X124 + X125 + X126 + X129 + 1 X63 X125 + X128 + X129 + X137 + 1 1 X124 + X125 + X126 + X128 + X129 + 1 X89 X101 X125 + X129 + X137 + 1 X125 X137] [ 0 0 X124 + X129 + 1 X75 X124 + X129 + X138 + 1 X124 + X125 + X126 + X128 + X129 + 1 1 X90 X116 + X138 X138 + 1 X126 X138] [ X90 + X115 + X139 X85 X88 + X90 + X115 X87 X88 X89 X90 X91 X103 X115 X127 X139] [ X138 + X140 X97 X124 + X126 + X128 + X129 + 1 X99 X124 + X126 + X128 + X129 + X138 + 1 X101 X116 + X138 X103 X104 X116 X128 X140] [ X138 X138 X124 + X129 + X138 + 1 X111 X124 + X129 + 1 X125 + X129 + X137 + 1 X138 + 1 X115 X116 1 X129 0] [ X126 + X129 + X142 X121 X124 + X126 + X129 X123 X124 X125 X126 X127 X128 X129 X130 X142] [ X138 + 1 X133 X138 X135 0 X137 X138 X139 X140 0 X142 1] [1 0 0 0 0 1 0 0 0 0 0 1] [0 1 0 0 0 0 0 1 1 0 0 0] [0 0 1 0 1 0 0 0 0 0 1 0] [0 0 0 1 0 0 1 0 0 1 0 0] [0 0 1 0 1 0 0 0 0 0 1 0] [1 0 0 0 0 1 0 0 0 0 0 1] [0 0 0 1 0 0 1 0 0 1 0 0] [0 1 0 0 0 0 0 1 1 0 0 0] [0 1 0 0 0 0 0 1 1 0 0 0] [0 0 0 1 0 0 1 0 0 1 0 0] [0 0 1 0 1 0 0 0 0 0 1 0] [1 0 0 0 0 1 0 0 0 0 0 1]
load('PuzzlePart2.sage')
81 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X80 = R[8,8] REI.gens() = 45 A 1st pass [ 1 X1 X2 X3 X4 X5 X6 X7 X8] [ X9 1 X11 X12 X13 X14 X15 X16 X17] [X18 X19 1 X21 X22 X23 X24 X25 X26] [X27 X28 X29 1 X31 X32 X33 X34 X35] [X36 X37 X38 X39 1 X41 X42 X43 X44] [X45 X46 X47 X48 X49 1 X51 X52 X53] [X54 X55 X56 X57 X58 X59 1 X61 X62] [X63 X64 X65 X66 X67 X68 X69 1 X71] [X72 X73 X74 X75 X76 X77 X78 X79 1]
Error in lines 1-1 Traceback (most recent call last): File "/projects/5511fe15-8085-4d1d-bdc7-c6bf6c99e693/.sagemathcloud/sage_server.py", line 865, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "/projects/5511fe15-8085-4d1d-bdc7-c6bf6c99e693/.sagemathcloud/sage_salvus.py", line 3026, in load exec 'salvus.namespace["%s"] = sage.structure.sage_object.load(*__args, **__kwds)'%t in salvus.namespace, {'__args':other_args, '__kwds':kwds} File "<string>", line 1, in <module> File "sage/structure/sage_object.pyx", line 916, in sage.structure.sage_object.load (build/cythonized/sage/structure/sage_object.c:10737) File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/sage/misc/preparser.py", line 1797, in load exec(preparse_file(open(fpath).read()) + "\n", globals) File "<string>", line 87, in <module> File "<string>", line 8, in newton_krylov File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/scipy/optimize/nonlin.py", line 323, in nonlin_solve line_search) File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/scipy/optimize/nonlin.py", line 401, in _nonlin_line_search amin=smin) File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/scipy/optimize/linesearch.py", line 611, in scalar_search_armijo phi_a0 = phi(alpha0) File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/scipy/optimize/nonlin.py", line 384, in phi v = func(xt) File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/scipy/optimize/nonlin.py", line 276, in <lambda> func = lambda z: _as_inexact(F(_array_like(z, x0))).flatten() File "<string>", line 82, in F File "sage/symbolic/expression.pyx", line 4382, in sage.symbolic.expression.Expression.__call__ (build/cythonized/sage/symbolic/expression.cpp:24669) File "/usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/sage/symbolic/callable.py", line 474, in _call_element_ return SR(_the_element.substitute(**d)) File "sage/symbolic/expression.pyx", line 4233, in sage.symbolic.expression.Expression.substitute (build/cythonized/sage/symbolic/expression.cpp:23788) File "sage/symbolic/pynac.pyx", line 1568, in sage.symbolic.pynac.py_log (build/cythonized/sage/symbolic/pynac.cpp:14936) File "sage/rings/real_double.pyx", line 2029, in sage.rings.real_double.RealDoubleElement.log (build/cythonized/sage/rings/real_double.c:17088) File "sage/rings/real_double.pyx", line 1955, in sage.rings.real_double.RealDoubleElement._log_base (build/cythonized/sage/rings/real_double.c:16828) File "sage/ext/c_lib.pyx", line 73, in sage.ext.c_lib.sig_raise_exception (build/cythonized/sage/ext/c_lib.c:769) KeyboardInterrupt
R;constraints;clues;len(clues)
[ X0 X1 X2 X3 X4 X5 X6 X7 X8] [ X9 X10 X11 X12 X13 X14 X15 X16 X17] [X18 X19 X20 X21 X22 X23 X24 X25 X26] [X27 X28 X29 X30 X31 X32 X33 X34 X35] [X36 X37 X38 X39 X40 X41 X42 X43 X44] [X45 X46 X47 X48 X49 X50 X51 X52 X53] [X54 X55 X56 X57 X58 X59 X60 X61 X62] [X63 X64 X65 X66 X67 X68 X69 X70 X71] [X72 X73 X74 X75 X76 X77 X78 X79 X80] [X35*X48*X53 + X35*X48 + 1, X23*X38*X41 + X23*X38 + 1, X14*X17*X53 + X14*X53 + 1, X13*X64*X67 + X13*X64 + 1, X2*X72*X74 + X2*X72 + 1, X8*X45*X53 + X8*X45 + 1, X22*X47*X49 + X22*X47 + 1, X32*X33*X59 + X33*X59 + 1, X28*X33*X55 + X33*X55 + 1, X47*X51*X56 + X51*X56 + 1, X38*X47*X49 + X38*X49 + 1, X15*X46*X51 + X15*X46 + 1, X53*X77 + X77 + 1, X48*X75*X77 + X48*X77 + 1, X3*X8*X35 + X3*X35 + 1, X5*X27*X32 + X5*X27 + 1, X33*X35*X78 + X35*X78 + 1, X1*X8*X73 + X8*X73 + 1, X14*X46*X50 + X14*X46 + 1, X4*X5*X49 + X5*X49 + 1, X35*X75 + X75 + 1, X30*X34*X66 + X34*X66 + 1, X5*X8*X53 + X5*X53 + 1, X31*X39 + X39 + 1, X2*X5*X23 + X2*X23 + 1, X44*X49*X53 + X44*X49 + 1, X2*X8*X26 + X2*X26 + 1, X28*X32*X46 + X32*X46 + 1, X31*X35*X76 + X35*X76 + 1, X49*X52*X67 + X52*X67 + 1, X23*X65*X68 + X23*X65 + 1, X2*X7*X25 + X2*X25 + 1, X80, X42*X49*X51 + X42*X49 + 1, X11*X15*X56 + X15*X56 + 1, X2*X36*X38 + X2*X36 + 1, X2*X4*X22 + X2*X22 + 1, X23*X24*X59 + X24*X59 + 1, X24*X74*X78 + X24*X74 + 1, X59*X77*X78 + X59*X78 + 1, X4*X8*X76 + X8*X76 + 1, X26*X47*X53 + X26*X47 + 1, X15*X16*X69 + X16*X69 + 1, X45*X72*X77 + X45*X77 + 1, X39*X42*X57 + X42*X57 + 1, X37*X64*X67 + X37*X67 + 1, X27*X33*X54 + X33*X54 + 1, X23*X47 + X23 + 1, X7*X36*X43 + X7*X36 + 1, X34*X75*X79 + X34*X75 + 1, X39*X48*X49 + X39*X49 + 1, X30*X33*X57 + X33*X57 + 1, X27*X63*X66 + X27*X66 + 1, X43*X67 + X67 + 1, X45*X51*X54 + X51*X54 + 1, X57*X75*X78 + X57*X78 + 1, X46*X55*X59 + X46*X59 + 1, X25*X26*X79 + X26*X79 + 1, X71*X79 + X71 + 1, X25*X47*X52 + X25*X47 + 1, X5*X7*X68 + X7*X68 + 1, X9*X13*X36 + X13*X36 + 1, X39*X57*X58 + X39*X58 + 1, X22*X38 + X38 + 1, X21*X26*X35 + X21*X35 + 1, X22*X74*X76 + X22*X74 + 1, X22*X29*X31 + X22*X29 + 1, X53*X77 + X53 + 1, X41*X49*X50 + X41*X49 + 1, X34*X57*X61 + X34*X57 + 1, X30*X32*X48 + X32*X48 + 1, X1*X45*X46 + X1*X45 + 1, X4*X9*X13 + X4*X9 + 1, X37*X42*X55 + X42*X55 + 1, X27*X54*X57 + X27*X57 + 1, X34*X35*X71 + X34*X71 + 1, X7*X18*X25 + X7*X18 + 1, X13*X17*X44 + X13*X44 + 1, X39*X43*X66 + X43*X66 + 1, X32*X34*X52 + X32*X52 + 1, X12*X28*X30 + X12*X28 + 1, X8*X72 + X72 + 1, X22*X38*X40 + X22*X38 + 1, X18*X36*X38 + X18*X38 + 1, X11*X55*X56 + X11*X55 + 1, X5*X6*X59 + X6*X59 + 1, X12*X73*X75 + X12*X73 + 1, X51*X59*X60 + X51*X59 + 1, X1*X5*X14 + X1*X14 + 1, X43*X67 + X43 + 1, X1*X9 + X9 + 1, X31*X34*X67 + X34*X67 + 1, X5*X9*X14 + X5*X9 + 1, X2*X27*X29 + X2*X27 + 1, X29*X32*X47 + X32*X47 + 1, X24*X56*X60 + X24*X56 + 1, X3*X4*X39 + X4*X39 + 1, X1*X63*X64 + X1*X63 + 1, X10, X23*X26*X77 + X26*X77 + 1, X69*X78*X79 + X69*X79 + 1, X11*X13*X38 + X13*X38 + 1, X15*X17*X78 + X17*X78 + 1, X8*X63*X71 + X8*X63 + 1, X52*X68 + X68 + 1, X15*X55 + X15 + 1, X18*X54*X56 + X18*X56 + 1, X34*X39*X43 + X34*X39 + 1, X35*X66*X71 + X35*X66 + 1, X14*X46 + X14 + 1, X9*X14*X45 + X14*X45 + 1, X12*X16*X34 + X12*X34 + 1, X8*X18*X26 + X8*X18 + 1, X24*X47*X51 + X24*X47 + 1, X41*X44*X53 + X41*X53 + 1, X48*X66*X68 + X48*X68 + 1, X23*X24*X51 + X23*X51 + 1, X26*X74 + X74 + 1, X32*X48 + X48 + 1, X6*X27*X33 + X6*X27 + 1, X44*X76 + X44 + 1, X29*X34*X65 + X34*X65 + 1, X6*X7*X69 + X7*X69 + 1, X39*X44*X75 + X44*X75 + 1, X3*X5*X48 + X5*X48 + 1, X38*X56*X58 + X38*X58 + 1, X41*X49 + X49 + 1, X47*X74*X77 + X47*X77 + 1, X14*X15*X59 + X15*X59 + 1, X40, X4*X36 + X36 + 1, X6*X8*X62 + X6*X62 + 1, X3*X45*X48 + X3*X45 + 1, X16*X64 + X16 + 1, X18*X45*X47 + X18*X47 + 1, X27*X45*X48 + X27*X48 + 1, X25*X65*X70 + X25*X65 + 1, X6*X54*X60 + X6*X54 + 1, X34*X66 + X34 + 1, X17*X73*X80 + X17*X73 + 1, X26*X74*X80 + X26*X74 + 1, X3*X6*X57 + X6*X57 + 1, X8*X72*X80 + X8*X72 + 1, X9*X15*X54 + X15*X54 + 1, X5*X72*X77 + X5*X72 + 1, X0*X5*X45 + X5*X45 + 1, X40*X42*X58 + X42*X58 + 1, X17*X19*X26 + X17*X19 + 1, X61*X78*X79 + X61*X78 + 1, X3*X54*X57 + X3*X54 + 1, X36*X45*X49 + X36*X49 + 1, X13*X28*X31 + X13*X28 + 1, X19*X46*X47 + X19*X47 + 1, X12*X14*X32 + X12*X32 + 1, X2*X5*X47 + X5*X47 + 1, X21*X74*X75 + X21*X74 + 1, X4*X36*X40 + X4*X36 + 1, X18*X21*X27 + X21*X27 + 1, X64*X71*X73 + X71*X73 + 1, X31*X48*X49 + X31*X48 + 1, X59*X68*X69 + X59*X69 + 1, X4*X18*X22 + X4*X18 + 1, X7*X63*X70 + X7*X63 + 1, X12*X16*X66 + X16*X66 + 1, X45*X63*X68 + X45*X68 + 1, X57*X61*X66 + X61*X66 + 1, X24*X56 + X56 + 1, X21*X25*X34 + X21*X34 + 1, X8*X36*X44 + X8*X36 + 1, X3*X7*X66 + X7*X66 + 1, X2*X4*X38 + X4*X38 + 1, X40*X41*X49 + X41*X49 + 1, X32*X66*X68 + X32*X66 + 1, X29*X74*X75 + X29*X75 + 1, X23*X29*X32 + X23*X29 + 1, X1*X36*X37 + X1*X36 + 1, X29*X65*X66 + X29*X66 + 1, X3*X27 + X3 + 1, X50*X52*X68 + X52*X68 + 1, X33*X39*X42 + X33*X39 + 1, X62*X78 + X62 + 1, X22*X24*X42 + X22*X42 + 1, X36*X43*X63 + X43*X63 + 1, X12*X37*X39 + X12*X37 + 1, X42*X67*X69 + X42*X67 + 1, X47*X56*X59 + X47*X59 + 1, X27*X36*X39 + X27*X39 + 1, X71*X79 + X79 + 1, X60*X61*X69 + X61*X69 + 1, X41*X58*X59 + X41*X58 + 1, X46*X53*X73 + X53*X73 + 1, X19*X24*X55 + X24*X55 + 1, X53*X77*X80 + X53*X77 + 1, X48*X53*X75 + X53*X75 + 1, X29*X31*X38 + X31*X38 + 1, X3*X9*X12 + X3*X9 + 1, X13*X19*X22 + X13*X19 + 1, X61*X69 + X69 + 1, X2*X45*X47 + X2*X45 + 1, X51*X53*X62 + X51*X62 + 1, X45*X53*X72 + X53*X72 + 1, X22*X23*X41 + X22*X41 + 1, X19*X25*X64 + X25*X64 + 1, X10*X17*X73 + X17*X73 + 1, X24*X38*X42 + X24*X38 + 1, X26*X38*X44 + X26*X38 + 1, X5*X18*X23 + X5*X18 + 1, X2*X54*X56 + X2*X54 + 1, X3*X18*X21 + X3*X18 + 1, X1*X2*X19 + X2*X19 + 1, X27*X72*X75 + X27*X75 + 1, X20*X26*X74 + X26*X74 + 1, X14*X46 + X46 + 1, X20, X28*X64*X66 + X28*X66 + 1, X4*X5*X41 + X4*X41 + 1, X47*X52*X65 + X52*X65 + 1, X23*X25*X52 + X23*X52 + 1, X4*X7*X43 + X4*X43 + 1, X21*X24*X57 + X24*X57 + 1, X63*X72*X79 + X63*X79 + 1, X1*X3*X28 + X3*X28 + 1, X15*X19*X24 + X15*X19 + 1, X6*X7*X61 + X6*X61 + 1, X1*X27*X28 + X1*X27 + 1, X26*X74 + X26 + 1, X31*X75*X76 + X31*X75 + 1, X32*X48 + X32 + 1, X50*X51*X59 + X51*X59 + 1, X31*X39 + X31 + 1, X34*X48*X52 + X34*X48 + 1, X7*X72*X79 + X7*X72 + 1, X35*X75*X80 + X35*X75 + 1, X56*X62*X74 + X62*X74 + 1, X4*X27*X31 + X4*X27 + 1, X23*X56*X59 + X23*X56 + 1, X42*X58*X60 + X42*X58 + 1, X52*X68*X70 + X52*X68 + 1, X37*X44*X73 + X44*X73 + 1, X12*X55*X57 + X12*X55 + 1, X11*X17*X26 + X11*X26 + 1, X32*X48*X50 + X32*X48 + 1, X20*X23*X47 + X23*X47 + 1, X25*X26*X71 + X25*X71 + 1, X11*X37*X38 + X11*X37 + 1, X11*X73*X74 + X11*X73 + 1, X0*X1*X9 + X1*X9 + 1, X35*X57*X62 + X35*X57 + 1, X10*X11*X19 + X11*X19 + 1, X25*X56*X61 + X25*X56 + 1, X5*X7*X52 + X5*X52 + 1, X21*X47*X48 + X21*X47 + 1, X66*X75*X79 + X66*X79 + 1, X7*X63 + X63 + 1, X50, X19*X37*X38 + X19*X38 + 1, X44*X76 + X76 + 1, X36*X42*X54 + X42*X54 + 1, X6*X63*X69 + X6*X63 + 1, X14*X15*X51 + X14*X51 + 1, X65*X74*X79 + X65*X79 + 1, X11*X19 + X19 + 1, X58*X76*X78 + X58*X78 + 1, X32*X33*X51 + X32*X51 + 1, X41*X44*X77 + X44*X77 + 1, X52*X53*X71 + X52*X71 + 1, X42*X58 + X58 + 1, X13*X73*X76 + X13*X73 + 1, X11*X14*X23 + X11*X23 + 1, X67*X71*X76 + X71*X76 + 1, X4*X45*X49 + X4*X45 + 1, X21*X23*X48 + X23*X48 + 1, X11*X17*X74 + X17*X74 + 1, X46*X51*X55 + X51*X55 + 1, X59*X61*X68 + X61*X68 + 1, X17*X28*X35 + X17*X28 + 1, X55*X64*X69 + X55*X69 + 1, X12*X19*X21 + X12*X19 + 1, X18*X23*X45 + X23*X45 + 1, X18*X26*X72 + X26*X72 + 1, X22*X65*X67 + X22*X65 + 1, X17*X55*X62 + X17*X55 + 1, X15*X73*X78 + X15*X73 + 1, X14*X55*X59 + X14*X55 + 1, X69*X71*X78 + X71*X78 + 1, X41*X42*X51 + X41*X51 + 1, X53*X68*X71 + X53*X68 + 1, X37*X46*X49 + X37*X49 + 1, X22*X25*X43 + X22*X43 + 1, X9*X72*X73 + X9*X73 + 1, X10*X15*X55 + X15*X55 + 1, X3*X4*X31 + X3*X31 + 1, X41*X43*X68 + X43*X68 + 1, X12*X15*X33 + X12*X33 + 1, X29*X33*X56 + X33*X56 + 1, X43*X44*X79 + X44*X79 + 1, X18*X63*X65 + X18*X65 + 1, X9*X54*X55 + X9*X55 + 1, X51*X52*X69 + X52*X69 + 1, X18*X72*X74 + X18*X74 + 1, X26*X56*X62 + X26*X56 + 1, X28*X35*X73 + X35*X73 + 1, X0*X6*X54 + X6*X54 + 1, X1*X54*X55 + X1*X54 + 1, X1*X7*X64 + X7*X64 + 1, X9*X63*X64 + X9*X64 + 1, X45*X54*X59 + X45*X59 + 1, X16*X55*X61 + X16*X55 + 1, X6*X54 + X6 + 1, X13*X55*X58 + X13*X55 + 1, X29*X56*X57 + X29*X57 + 1, X37*X73*X76 + X37*X76 + 1, X13*X14*X41 + X13*X41 + 1, X16*X28*X34 + X16*X28 + 1, X31*X32*X49 + X32*X49 + 1, X42*X44*X78 + X44*X78 + 1, X46*X73*X77 + X46*X77 + 1, X21*X65*X66 + X21*X65 + 1, X6*X9*X15 + X6*X9 + 1, X36*X44*X72 + X44*X72 + 1, X3*X27*X30 + X3*X27 + 1, X29*X35*X74 + X35*X74 + 1, X4*X54*X58 + X4*X54 + 1, X43*X67*X70 + X43*X67 + 1, X17*X73 + X73 + 1, X16*X19*X25 + X16*X19 + 1, X8*X9*X17 + X8*X9 + 1, X38*X65*X67 + X38*X67 + 1, X54*X72*X78 + X54*X78 + 1, X62*X78*X80 + X62*X78 + 1, X28*X34*X64 + X34*X64 + 1, X7*X63 + X7 + 1, X11*X46*X47 + X11*X46 + 1, X17*X46*X53 + X17*X46 + 1, X31*X66*X67 + X31*X66 + 1, X2*X6*X24 + X2*X24 + 1, X12*X46*X48 + X12*X46 + 1, X42*X44*X62 + X42*X62 + 1, X54*X63*X69 + X54*X69 + 1, X37*X41*X46 + X41*X46 + 1, X11*X16*X25 + X11*X25 + 1, X3*X63*X66 + X3*X63 + 1, X19*X21*X28 + X21*X28 + 1, X22*X26*X76 + X26*X76 + 1, X6*X36*X42 + X6*X36 + 1, X47*X53*X74 + X53*X74 + 1, X27*X35*X72 + X35*X72 + 1, X46*X52*X64 + X52*X64 + 1, X34*X35*X79 + X35*X79 + 1, X59*X62*X77 + X62*X77 + 1, X51*X53*X78 + X53*X78 + 1, X4*X36 + X4 + 1, X33*X34*X61 + X33*X61 + 1, X29*X47*X48 + X29*X48 + 1, X65*X71*X74 + X71*X74 + 1, X37*X55*X58 + X37*X58 + 1, X51*X68*X69 + X51*X68 + 1, X51*X59 + X51 + 1, X8*X27*X35 + X8*X27 + 1, X4*X8*X44 + X4*X44 + 1, X9*X16*X63 + X16*X63 + 1, X30, X21*X29*X30 + X21*X29 + 1, X1*X9 + X1 + 1, X16*X73*X79 + X16*X73 + 1, X33*X66*X69 + X33*X66 + 1, X21*X56*X57 + X21*X56 + 1, X12*X14*X48 + X14*X48 + 1, X16*X17*X79 + X17*X79 + 1, X48*X52*X66 + X52*X66 + 1, X7*X45*X52 + X7*X45 + 1, X3*X5*X32 + X3*X32 + 1, X14*X16*X68 + X16*X68 + 1, X5*X45 + X5 + 1, X13*X37 + X37 + 1, X21*X24*X33 + X21*X33 + 1, X10*X13*X37 + X13*X37 + 1, X34*X66 + X66 + 1, X71*X79*X80 + X71*X79 + 1, X14*X16*X52 + X14*X52 + 1, X26*X65*X71 + X26*X65 + 1, X61*X62*X79 + X62*X79 + 1, X2*X6*X56 + X6*X56 + 1, X21*X26*X75 + X26*X75 + 1, X19*X55*X56 + X19*X56 + 1, X9*X12*X27 + X12*X27 + 1, X60, X31*X32*X41 + X31*X41 + 1, X5*X6*X51 + X5*X51 + 1, X17*X37*X44 + X17*X37 + 1, X57*X66*X69 + X57*X69 + 1, X23*X74*X77 + X23*X74 + 1, X2*X8*X74 + X8*X74 + 1, X15*X28*X33 + X15*X28 + 1, X60*X62*X78 + X62*X78 + 1, X4*X72*X76 + X4*X72 + 1, X22*X26*X44 + X22*X44 + 1, X41*X43*X52 + X41*X52 + 1, X3*X6*X33 + X3*X33 + 1, X12*X17*X75 + X17*X75 + 1, X68*X77*X79 + X68*X79 + 1, X35*X39*X44 + X35*X39 + 1, X7*X54*X61 + X7*X54 + 1, X49*X76*X77 + X49*X77 + 1, X1*X8*X17 + X1*X17 + 1, X68*X71*X77 + X71*X77 + 1, X49*X51*X58 + X51*X58 + 1, X55*X62*X73 + X62*X73 + 1, X48*X57*X59 + X48*X59 + 1, X43*X49*X52 + X43*X49 + 1, X6*X54 + X54 + 1, X55*X61*X64 + X61*X64 + 1, X5*X63*X68 + X5*X63 + 1, X1*X7*X16 + X1*X16 + 1, X9*X27*X28 + X9*X28 + 1, X12*X28 + X12 + 1, X17*X73 + X17 + 1, X49*X58*X59 + X49*X59 + 1, X2*X18 + X18 + 1, X28*X73*X75 + X28*X75 + 1, X22*X56*X58 + X22*X56 + 1, X0*X2*X18 + X2*X18 + 1, X18*X22*X36 + X22*X36 + 1, X33*X75*X78 + X33*X75 + 1, X26*X29*X35 + X26*X29 + 1, X13*X15*X42 + X13*X42 + 1, X52*X59*X61 + X52*X59 + 1, X2*X9*X11 + X2*X9 + 1, X70*X71*X79 + X71*X79 + 1, X42*X76*X78 + X42*X76 + 1, X58*X67*X69 + X58*X69 + 1, X12*X15*X57 + X15*X57 + 1, X9*X45*X46 + X9*X46 + 1, X44*X76*X80 + X44*X76 + 1, X32*X39*X41 + X32*X39 + 1, X43*X76*X79 + X43*X76 + 1, X32*X35*X53 + X32*X53 + 1, X20*X21*X29 + X21*X29 + 1, X51*X59 + X59 + 1, X51*X52*X61 + X51*X61 + 1, X39*X66*X67 + X39*X67 + 1, X5*X45*X50 + X5*X45 + 1, X22*X24*X58 + X24*X58 + 1, X23*X25*X68 + X25*X68 + 1, X0*X7*X63 + X7*X63 + 1, X32*X34*X68 + X34*X68 + 1, X38*X74*X76 + X38*X76 + 1, X3*X7*X34 + X3*X34 + 1, X61*X69*X70 + X61*X69 + 1, X20*X24*X56 + X24*X56 + 1, X56*X61*X65 + X61*X65 + 1, X1*X72*X73 + X1*X72 + 1, X22*X23*X49 + X23*X49 + 1, X12*X28 + X28 + 1, X1*X3*X12 + X1*X12 + 1, X16*X64*X70 + X16*X64 + 1, X13*X15*X58 + X15*X58 + 1, X32*X75*X77 + X32*X75 + 1, X27*X31*X36 + X31*X36 + 1, X13*X17*X76 + X17*X76 + 1, X47*X65*X68 + X47*X68 + 1, X10*X14*X46 + X14*X46 + 1, X2*X7*X65 + X7*X65 + 1, X5*X36*X41 + X5*X36 + 1, X1*X6*X55 + X6*X55 + 1, X24*X65*X69 + X24*X65 + 1, X12*X13*X39 + X13*X39 + 1, X21*X29 + X21 + 1, X7*X27*X34 + X7*X27 + 1, X14*X17*X77 + X17*X77 + 1, X7*X8*X79 + X8*X79 + 1, X36*X41*X45 + X41*X45 + 1, X14*X73*X77 + X14*X73 + 1, X23*X47*X50 + X23*X47 + 1, X19*X26*X73 + X26*X73 + 1, X9*X11*X18 + X11*X18 + 1, X52*X77*X79 + X52*X77 + 1, X41*X42*X59 + X42*X59 + 1, X14*X28*X32 + X14*X28 + 1, X30*X31*X39 + X31*X39 + 1, X43*X58*X61 + X43*X58 + 1, X61*X62*X71 + X61*X71 + 1, X31*X33*X42 + X31*X42 + 1, X1*X4*X13 + X1*X13 + 1, X42*X58 + X42 + 1, X31*X34*X43 + X31*X43 + 1, X39*X75*X76 + X39*X76 + 1, X7*X9*X16 + X7*X9 + 1, X48*X51*X57 + X51*X57 + 1, X36*X63*X67 + X36*X67 + 1, X0*X8*X72 + X8*X72 + 1, X13*X16*X67 + X16*X67 + 1, X0*X4*X36 + X4*X36 + 1, X41*X49 + X41 + 1, X28*X37*X39 + X28*X39 + 1, X44*X58*X62 + X44*X58 + 1, X41*X76*X77 + X41*X76 + 1, X46*X64*X68 + X46*X68 + 1, X21*X38*X39 + X21*X38 + 1, X13*X37 + X13 + 1, X66*X71*X75 + X71*X75 + 1, X36*X54*X58 + X36*X58 + 1, X23*X47 + X47 + 1, X25*X74*X79 + X25*X74 + 1, X42*X43*X69 + X43*X69 + 1, X40*X44*X76 + X44*X76 + 1, X33*X48*X51 + X33*X48 + 1, X25*X65 + X25 + 1, X3*X8*X75 + X8*X75 + 1, X24*X25*X69 + X25*X69 + 1, X58*X61*X67 + X61*X67 + 1, X13*X46*X49 + X13*X46 + 1, X18*X24*X54 + X24*X54 + 1, X70, X49*X67*X68 + X49*X68 + 1, X18*X27*X29 + X18*X29 + 1, X4*X6*X58 + X6*X58 + 1, X36*X72*X76 + X36*X76 + 1, X30*X35*X75 + X35*X75 + 1, X1*X4*X37 + X4*X37 + 1, X6*X18*X24 + X6*X18 + 1, X27*X34*X63 + X34*X63 + 1, X1*X18*X19 + X1*X18 + 1, X1*X6*X15 + X1*X15 + 1, X11*X19 + X11 + 1, X62*X78 + X78 + 1, X0*X3*X27 + X3*X27 + 1, X25*X29*X34 + X25*X29 + 1, X33*X35*X62 + X33*X62 + 1, X3*X36*X39 + X3*X36 + 1, X12*X13*X31 + X12*X31 + 1, X1*X5*X46 + X5*X46 + 1, X54*X62*X72 + X62*X72 + 1, X4*X7*X67 + X7*X67 + 1, X13*X16*X43 + X13*X43 + 1, X31*X57*X58 + X31*X57 + 1, X10*X12*X28 + X12*X28 + 1, X13*X37*X40 + X13*X37 + 1, X41*X67*X68 + X41*X67 + 1, X16*X17*X71 + X16*X71 + 1, X21*X22*X39 + X22*X39 + 1, X56*X74*X78 + X56*X78 + 1, X1*X2*X11 + X1*X11 + 1, X27*X32*X45 + X32*X45 + 1, X52*X68 + X52 + 1, X20*X22*X38 + X22*X38 + 1, X35*X75 + X35 + 1, X16*X64 + X64 + 1, X5*X54*X59 + X5*X54 + 1, X50*X53*X77 + X53*X77 + 1, X33*X57 + X33 + 1, X11*X64*X65 + X11*X64 + 1, X22*X25*X67 + X25*X67 + 1, X38*X42*X56 + X42*X56 + 1, X15*X55*X60 + X15*X55 + 1, X62*X69*X71 + X62*X69 + 1, X3*X27 + X27 + 1, X20*X25*X65 + X25*X65 + 1, X58*X62*X76 + X62*X76 + 1, X9*X17*X72 + X17*X72 + 1, X28*X31*X37 + X31*X37 + 1, X5*X8*X77 + X8*X77 + 1, X15*X64*X69 + X15*X64 + 1, X11*X16*X65 + X16*X65 + 1, X2*X3*X29 + X3*X29 + 1, X24*X29*X33 + X24*X29 + 1, X14*X37*X41 + X14*X37 + 1, X49*X53*X76 + X53*X76 + 1, X24*X26*X62 + X24*X62 + 1, X2*X18*X20 + X2*X18 + 1, X31*X39*X40 + X31*X39 + 1, X12*X17*X35 + X12*X35 + 1, X19*X64*X65 + X19*X65 + 1, X67*X76*X79 + X67*X79 + 1, X8*X72 + X8 + 1, X19*X22*X37 + X22*X37 + 1, X5*X45 + X45 + 1, X33*X34*X69 + X34*X69 + 1, X25*X65 + X65 + 1, X45*X52*X63 + X52*X63 + 1, X28*X46*X48 + X28*X48 + 1, X6*X45*X51 + X6*X45 + 1, X11*X15*X24 + X11*X24 + 1, X8*X54*X62 + X8*X54 + 1, X2*X3*X21 + X2*X21 + 1, X28*X55*X57 + X28*X57 + 1, X11*X13*X22 + X11*X22 + 1, X24*X56 + X24 + 1, X32*X57*X59 + X32*X57 + 1, X31*X35*X44 + X31*X44 + 1, X31*X33*X58 + X33*X58 + 1, X15*X55 + X55 + 1, X56*X65*X69 + X56*X69 + 1, X55*X73*X78 + X55*X78 + 1, X43*X44*X71 + X43*X71 + 1, X42*X43*X61 + X42*X61 + 1, X32*X35*X77 + X35*X77 + 1, X38*X43*X65 + X43*X65 + 1, X64*X73*X79 + X64*X79 + 1, X38*X44*X74 + X44*X74 + 1, X11*X12*X29 + X12*X29 + 1, X2*X18 + X2 + 1, X61*X69 + X61 + 1, X14*X64*X68 + X14*X64 + 1, X51*X77*X78 + X51*X77 + 1, X17*X64*X71 + X17*X64 + 1, X29*X38*X39 + X29*X39 + 1, X10*X16*X64 + X16*X64 + 1, X16*X46*X52 + X16*X46 + 1, X13*X14*X49 + X14*X49 + 1, X22*X38 + X22 + 1, X33*X57 + X57 + 1, X3*X72*X75 + X3*X72 + 1, X24*X25*X61 + X24*X61 + 1, X63*X71*X72 + X71*X72 + 1, X18*X25*X63 + X25*X63 + 1, X2*X63*X65 + X2*X63 + 1, X21*X22*X31 + X21*X31 + 1, X21*X29 + X29 + 1, X6*X8*X78 + X8*X78 + 1, X40*X43*X67 + X43*X67 + 1, X52*X53*X79 + X53*X79 + 1, X21*X23*X32 + X21*X32 + 1, X39*X41*X48 + X41*X48 + 1, X7*X8*X71 + X7*X71 + 1, X54*X61*X63 + X61*X63 + 1, X15*X17*X62 + X15*X62 + 1, X25*X38*X43 + X25*X38 + 1, X11*X12*X21 + X11*X21 + 1, X44*X67*X71 + X44*X67 + 1, X53*X59*X62 + X53*X59 + 1, X12*X64*X66 + X12*X64 + 1, X1*X9*X10 + X1*X9 + 1, X6*X72*X78 + X6*X72 + 1, X37*X43*X64 + X43*X64 + 1, X11*X14*X47 + X14*X47 + 1, X19*X23*X46 + X23*X46 + 1, X19*X73*X74 + X19*X74 + 1, X4*X63*X67 + X4*X63 + 1, X33*X57*X60 + X33*X57 + 1, X4*X6*X42 + X4*X42 + 1, X11*X19*X20 + X11*X19 + 1, X23*X26*X53 + X23*X53 + 1, X14*X19*X23 + X14*X19 + 1, X9*X36*X37 + X9*X37 + 1, X24*X26*X78 + X26*X78 + 1, X11*X28*X29 + X11*X28 + 1, X16*X37*X43 + X16*X37 + 1, X34*X66*X70 + X34*X66 + 1, X38*X41*X47 + X41*X47 + 1, X0, X57*X62*X75 + X62*X75 + 1, X21*X25*X66 + X25*X66 + 1, X15*X16*X61 + X15*X61 + 1, X15*X37*X42 + X15*X37 + 1, X9*X18*X19 + X9*X19 + 1, X19*X28*X29 + X19*X29 + 1] [X35*X48*X53 + X35*X48, X23*X38*X41 + X23*X38, X14*X17*X53 + X14*X53, X13*X64*X67 + X13*X64, X2*X72*X74 + X2*X72, X8*X45*X53 + X8*X45, X22*X47*X49 + X22*X47, X32*X33*X59 + X33*X59, X28*X33*X55 + X33*X55, X47*X51*X56 + X51*X56, X38*X47*X49 + X38*X49, X15*X46*X51 + X15*X46, X53*X77 + X77, X48*X75*X77 + X48*X77, X3*X8*X35 + X3*X35, X5*X27*X32 + X5*X27, X33*X35*X78 + X35*X78, X1*X8*X73 + X8*X73, X14*X46*X50 + X14*X46, X4*X5*X49 + X5*X49, X35*X75 + X75, X30*X34*X66 + X34*X66, X5*X8*X53 + X5*X53, X31*X39 + X39, X2*X5*X23 + X2*X23, X44*X49*X53 + X44*X49, X2*X8*X26 + X2*X26, X28*X32*X46 + X32*X46, X31*X35*X76 + X35*X76, X49*X52*X67 + X52*X67, X23*X65*X68 + X23*X65, X2*X7*X25 + X2*X25, X80 + 1, X42*X49*X51 + X42*X49, X11*X15*X56 + X15*X56, X2*X36*X38 + X2*X36, X2*X4*X22 + X2*X22, X23*X24*X59 + X24*X59, X24*X74*X78 + X24*X74, X59*X77*X78 + X59*X78, X4*X8*X76 + X8*X76, X26*X47*X53 + X26*X47, X15*X16*X69 + X16*X69, X45*X72*X77 + X45*X77, X39*X42*X57 + X42*X57, X37*X64*X67 + X37*X67, X27*X33*X54 + X33*X54, X23*X47 + X23, X7*X36*X43 + X7*X36, X34*X75*X79 + X34*X75, X39*X48*X49 + X39*X49, X30*X33*X57 + X33*X57, X27*X63*X66 + X27*X66, X43*X67 + X67, X45*X51*X54 + X51*X54, X57*X75*X78 + X57*X78, X46*X55*X59 + X46*X59, X25*X26*X79 + X26*X79, X71*X79 + X71, X25*X47*X52 + X25*X47, X5*X7*X68 + X7*X68, X9*X13*X36 + X13*X36, X39*X57*X58 + X39*X58, X22*X38 + X38, X21*X26*X35 + X21*X35, X22*X74*X76 + X22*X74, X22*X29*X31 + X22*X29, X53*X77 + X53, X41*X49*X50 + X41*X49, X34*X57*X61 + X34*X57, X30*X32*X48 + X32*X48, X1*X45*X46 + X1*X45, X4*X9*X13 + X4*X9, X37*X42*X55 + X42*X55, X27*X54*X57 + X27*X57, X34*X35*X71 + X34*X71, X7*X18*X25 + X7*X18, X13*X17*X44 + X13*X44, X39*X43*X66 + X43*X66, X32*X34*X52 + X32*X52, X12*X28*X30 + X12*X28, X8*X72 + X72, X22*X38*X40 + X22*X38, X18*X36*X38 + X18*X38, X11*X55*X56 + X11*X55, X5*X6*X59 + X6*X59, X12*X73*X75 + X12*X73, X51*X59*X60 + X51*X59, X1*X5*X14 + X1*X14, X43*X67 + X43, X1*X9 + X9, X31*X34*X67 + X34*X67, X5*X9*X14 + X5*X9, X2*X27*X29 + X2*X27, X29*X32*X47 + X32*X47, X24*X56*X60 + X24*X56, X3*X4*X39 + X4*X39, X1*X63*X64 + X1*X63, X10 + 1, X23*X26*X77 + X26*X77, X69*X78*X79 + X69*X79, X11*X13*X38 + X13*X38, X15*X17*X78 + X17*X78, X8*X63*X71 + X8*X63, X52*X68 + X68, X15*X55 + X15, X18*X54*X56 + X18*X56, X34*X39*X43 + X34*X39, X35*X66*X71 + X35*X66, X14*X46 + X14, X9*X14*X45 + X14*X45, X12*X16*X34 + X12*X34, X8*X18*X26 + X8*X18, X24*X47*X51 + X24*X47, X41*X44*X53 + X41*X53, X48*X66*X68 + X48*X68, X23*X24*X51 + X23*X51, X26*X74 + X74, X32*X48 + X48, X6*X27*X33 + X6*X27, X44*X76 + X44, X29*X34*X65 + X34*X65, X6*X7*X69 + X7*X69, X39*X44*X75 + X44*X75, X3*X5*X48 + X5*X48, X38*X56*X58 + X38*X58, X41*X49 + X49, X47*X74*X77 + X47*X77, X14*X15*X59 + X15*X59, X40 + 1, X4*X36 + X36, X6*X8*X62 + X6*X62, X3*X45*X48 + X3*X45, X16*X64 + X16, X18*X45*X47 + X18*X47, X27*X45*X48 + X27*X48, X25*X65*X70 + X25*X65, X6*X54*X60 + X6*X54, X34*X66 + X34, X17*X73*X80 + X17*X73, X26*X74*X80 + X26*X74, X3*X6*X57 + X6*X57, X8*X72*X80 + X8*X72, X9*X15*X54 + X15*X54, X5*X72*X77 + X5*X72, X0*X5*X45 + X5*X45, X40*X42*X58 + X42*X58, X17*X19*X26 + X17*X19, X61*X78*X79 + X61*X78, X3*X54*X57 + X3*X54, X36*X45*X49 + X36*X49, X13*X28*X31 + X13*X28, X19*X46*X47 + X19*X47, X12*X14*X32 + X12*X32, X2*X5*X47 + X5*X47, X21*X74*X75 + X21*X74, X4*X36*X40 + X4*X36, X18*X21*X27 + X21*X27, X64*X71*X73 + X71*X73, X31*X48*X49 + X31*X48, X59*X68*X69 + X59*X69, X4*X18*X22 + X4*X18, X7*X63*X70 + X7*X63, X12*X16*X66 + X16*X66, X45*X63*X68 + X45*X68, X57*X61*X66 + X61*X66, X24*X56 + X56, X21*X25*X34 + X21*X34, X8*X36*X44 + X8*X36, X3*X7*X66 + X7*X66, X2*X4*X38 + X4*X38, X40*X41*X49 + X41*X49, X32*X66*X68 + X32*X66, X29*X74*X75 + X29*X75, X23*X29*X32 + X23*X29, X1*X36*X37 + X1*X36, X29*X65*X66 + X29*X66, X3*X27 + X3, X50*X52*X68 + X52*X68, X33*X39*X42 + X33*X39, X62*X78 + X62, X22*X24*X42 + X22*X42, X36*X43*X63 + X43*X63, X12*X37*X39 + X12*X37, X42*X67*X69 + X42*X67, X47*X56*X59 + X47*X59, X27*X36*X39 + X27*X39, X71*X79 + X79, X60*X61*X69 + X61*X69, X41*X58*X59 + X41*X58, X46*X53*X73 + X53*X73, X19*X24*X55 + X24*X55, X53*X77*X80 + X53*X77, X48*X53*X75 + X53*X75, X29*X31*X38 + X31*X38, X3*X9*X12 + X3*X9, X13*X19*X22 + X13*X19, X61*X69 + X69, X2*X45*X47 + X2*X45, X51*X53*X62 + X51*X62, X45*X53*X72 + X53*X72, X22*X23*X41 + X22*X41, X19*X25*X64 + X25*X64, X10*X17*X73 + X17*X73, X24*X38*X42 + X24*X38, X26*X38*X44 + X26*X38, X5*X18*X23 + X5*X18, X2*X54*X56 + X2*X54, X3*X18*X21 + X3*X18, X1*X2*X19 + X2*X19, X27*X72*X75 + X27*X75, X20*X26*X74 + X26*X74, X14*X46 + X46, X20 + 1, X28*X64*X66 + X28*X66, X4*X5*X41 + X4*X41, X47*X52*X65 + X52*X65, X23*X25*X52 + X23*X52, X4*X7*X43 + X4*X43, X21*X24*X57 + X24*X57, X63*X72*X79 + X63*X79, X1*X3*X28 + X3*X28, X15*X19*X24 + X15*X19, X6*X7*X61 + X6*X61, X1*X27*X28 + X1*X27, X26*X74 + X26, X31*X75*X76 + X31*X75, X32*X48 + X32, X50*X51*X59 + X51*X59, X31*X39 + X31, X34*X48*X52 + X34*X48, X7*X72*X79 + X7*X72, X35*X75*X80 + X35*X75, X56*X62*X74 + X62*X74, X4*X27*X31 + X4*X27, X23*X56*X59 + X23*X56, X42*X58*X60 + X42*X58, X52*X68*X70 + X52*X68, X37*X44*X73 + X44*X73, X12*X55*X57 + X12*X55, X11*X17*X26 + X11*X26, X32*X48*X50 + X32*X48, X20*X23*X47 + X23*X47, X25*X26*X71 + X25*X71, X11*X37*X38 + X11*X37, X11*X73*X74 + X11*X73, X0*X1*X9 + X1*X9, X35*X57*X62 + X35*X57, X10*X11*X19 + X11*X19, X25*X56*X61 + X25*X56, X5*X7*X52 + X5*X52, X21*X47*X48 + X21*X47, X66*X75*X79 + X66*X79, X7*X63 + X63, X50 + 1, X19*X37*X38 + X19*X38, X44*X76 + X76, X36*X42*X54 + X42*X54, X6*X63*X69 + X6*X63, X14*X15*X51 + X14*X51, X65*X74*X79 + X65*X79, X11*X19 + X19, X58*X76*X78 + X58*X78, X32*X33*X51 + X32*X51, X41*X44*X77 + X44*X77, X52*X53*X71 + X52*X71, X42*X58 + X58, X13*X73*X76 + X13*X73, X11*X14*X23 + X11*X23, X67*X71*X76 + X71*X76, X4*X45*X49 + X4*X45, X21*X23*X48 + X23*X48, X11*X17*X74 + X17*X74, X46*X51*X55 + X51*X55, X59*X61*X68 + X61*X68, X17*X28*X35 + X17*X28, X55*X64*X69 + X55*X69, X12*X19*X21 + X12*X19, X18*X23*X45 + X23*X45, X18*X26*X72 + X26*X72, X22*X65*X67 + X22*X65, X17*X55*X62 + X17*X55, X15*X73*X78 + X15*X73, X14*X55*X59 + X14*X55, X69*X71*X78 + X71*X78, X41*X42*X51 + X41*X51, X53*X68*X71 + X53*X68, X37*X46*X49 + X37*X49, X22*X25*X43 + X22*X43, X9*X72*X73 + X9*X73, X10*X15*X55 + X15*X55, X3*X4*X31 + X3*X31, X41*X43*X68 + X43*X68, X12*X15*X33 + X12*X33, X29*X33*X56 + X33*X56, X43*X44*X79 + X44*X79, X18*X63*X65 + X18*X65, X9*X54*X55 + X9*X55, X51*X52*X69 + X52*X69, X18*X72*X74 + X18*X74, X26*X56*X62 + X26*X56, X28*X35*X73 + X35*X73, X0*X6*X54 + X6*X54, X1*X54*X55 + X1*X54, X1*X7*X64 + X7*X64, X9*X63*X64 + X9*X64, X45*X54*X59 + X45*X59, X16*X55*X61 + X16*X55, X6*X54 + X6, X13*X55*X58 + X13*X55, X29*X56*X57 + X29*X57, X37*X73*X76 + X37*X76, X13*X14*X41 + X13*X41, X16*X28*X34 + X16*X28, X31*X32*X49 + X32*X49, X42*X44*X78 + X44*X78, X46*X73*X77 + X46*X77, X21*X65*X66 + X21*X65, X6*X9*X15 + X6*X9, X36*X44*X72 + X44*X72, X3*X27*X30 + X3*X27, X29*X35*X74 + X35*X74, X4*X54*X58 + X4*X54, X43*X67*X70 + X43*X67, X17*X73 + X73, X16*X19*X25 + X16*X19, X8*X9*X17 + X8*X9, X38*X65*X67 + X38*X67, X54*X72*X78 + X54*X78, X62*X78*X80 + X62*X78, X28*X34*X64 + X34*X64, X7*X63 + X7, X11*X46*X47 + X11*X46, X17*X46*X53 + X17*X46, X31*X66*X67 + X31*X66, X2*X6*X24 + X2*X24, X12*X46*X48 + X12*X46, X42*X44*X62 + X42*X62, X54*X63*X69 + X54*X69, X37*X41*X46 + X41*X46, X11*X16*X25 + X11*X25, X3*X63*X66 + X3*X63, X19*X21*X28 + X21*X28, X22*X26*X76 + X26*X76, X6*X36*X42 + X6*X36, X47*X53*X74 + X53*X74, X27*X35*X72 + X35*X72, X46*X52*X64 + X52*X64, X34*X35*X79 + X35*X79, X59*X62*X77 + X62*X77, X51*X53*X78 + X53*X78, X4*X36 + X4, X33*X34*X61 + X33*X61, X29*X47*X48 + X29*X48, X65*X71*X74 + X71*X74, X37*X55*X58 + X37*X58, X51*X68*X69 + X51*X68, X51*X59 + X51, X8*X27*X35 + X8*X27, X4*X8*X44 + X4*X44, X9*X16*X63 + X16*X63, X30 + 1, X21*X29*X30 + X21*X29, X1*X9 + X1, X16*X73*X79 + X16*X73, X33*X66*X69 + X33*X66, X21*X56*X57 + X21*X56, X12*X14*X48 + X14*X48, X16*X17*X79 + X17*X79, X48*X52*X66 + X52*X66, X7*X45*X52 + X7*X45, X3*X5*X32 + X3*X32, X14*X16*X68 + X16*X68, X5*X45 + X5, X13*X37 + X37, X21*X24*X33 + X21*X33, X10*X13*X37 + X13*X37, X34*X66 + X66, X71*X79*X80 + X71*X79, X14*X16*X52 + X14*X52, X26*X65*X71 + X26*X65, X61*X62*X79 + X62*X79, X2*X6*X56 + X6*X56, X21*X26*X75 + X26*X75, X19*X55*X56 + X19*X56, X9*X12*X27 + X12*X27, X60 + 1, X31*X32*X41 + X31*X41, X5*X6*X51 + X5*X51, X17*X37*X44 + X17*X37, X57*X66*X69 + X57*X69, X23*X74*X77 + X23*X74, X2*X8*X74 + X8*X74, X15*X28*X33 + X15*X28, X60*X62*X78 + X62*X78, X4*X72*X76 + X4*X72, X22*X26*X44 + X22*X44, X41*X43*X52 + X41*X52, X3*X6*X33 + X3*X33, X12*X17*X75 + X17*X75, X68*X77*X79 + X68*X79, X35*X39*X44 + X35*X39, X7*X54*X61 + X7*X54, X49*X76*X77 + X49*X77, X1*X8*X17 + X1*X17, X68*X71*X77 + X71*X77, X49*X51*X58 + X51*X58, X55*X62*X73 + X62*X73, X48*X57*X59 + X48*X59, X43*X49*X52 + X43*X49, X6*X54 + X54, X55*X61*X64 + X61*X64, X5*X63*X68 + X5*X63, X1*X7*X16 + X1*X16, X9*X27*X28 + X9*X28, X12*X28 + X12, X17*X73 + X17, X49*X58*X59 + X49*X59, X2*X18 + X18, X28*X73*X75 + X28*X75, X22*X56*X58 + X22*X56, X0*X2*X18 + X2*X18, X18*X22*X36 + X22*X36, X33*X75*X78 + X33*X75, X26*X29*X35 + X26*X29, X13*X15*X42 + X13*X42, X52*X59*X61 + X52*X59, X2*X9*X11 + X2*X9, X70*X71*X79 + X71*X79, X42*X76*X78 + X42*X76, X58*X67*X69 + X58*X69, X12*X15*X57 + X15*X57, X9*X45*X46 + X9*X46, X44*X76*X80 + X44*X76, X32*X39*X41 + X32*X39, X43*X76*X79 + X43*X76, X32*X35*X53 + X32*X53, X20*X21*X29 + X21*X29, X51*X59 + X59, X51*X52*X61 + X51*X61, X39*X66*X67 + X39*X67, X5*X45*X50 + X5*X45, X22*X24*X58 + X24*X58, X23*X25*X68 + X25*X68, X0*X7*X63 + X7*X63, X32*X34*X68 + X34*X68, X38*X74*X76 + X38*X76, X3*X7*X34 + X3*X34, X61*X69*X70 + X61*X69, X20*X24*X56 + X24*X56, X56*X61*X65 + X61*X65, X1*X72*X73 + X1*X72, X22*X23*X49 + X23*X49, X12*X28 + X28, X1*X3*X12 + X1*X12, X16*X64*X70 + X16*X64, X13*X15*X58 + X15*X58, X32*X75*X77 + X32*X75, X27*X31*X36 + X31*X36, X13*X17*X76 + X17*X76, X47*X65*X68 + X47*X68, X10*X14*X46 + X14*X46, X2*X7*X65 + X7*X65, X5*X36*X41 + X5*X36, X1*X6*X55 + X6*X55, X24*X65*X69 + X24*X65, X12*X13*X39 + X13*X39, X21*X29 + X21, X7*X27*X34 + X7*X27, X14*X17*X77 + X17*X77, X7*X8*X79 + X8*X79, X36*X41*X45 + X41*X45, X14*X73*X77 + X14*X73, X23*X47*X50 + X23*X47, X19*X26*X73 + X26*X73, X9*X11*X18 + X11*X18, X52*X77*X79 + X52*X77, X41*X42*X59 + X42*X59, X14*X28*X32 + X14*X28, X30*X31*X39 + X31*X39, X43*X58*X61 + X43*X58, X61*X62*X71 + X61*X71, X31*X33*X42 + X31*X42, X1*X4*X13 + X1*X13, X42*X58 + X42, X31*X34*X43 + X31*X43, X39*X75*X76 + X39*X76, X7*X9*X16 + X7*X9, X48*X51*X57 + X51*X57, X36*X63*X67 + X36*X67, X0*X8*X72 + X8*X72, X13*X16*X67 + X16*X67, X0*X4*X36 + X4*X36, X41*X49 + X41, X28*X37*X39 + X28*X39, X44*X58*X62 + X44*X58, X41*X76*X77 + X41*X76, X46*X64*X68 + X46*X68, X21*X38*X39 + X21*X38, X13*X37 + X13, X66*X71*X75 + X71*X75, X36*X54*X58 + X36*X58, X23*X47 + X47, X25*X74*X79 + X25*X74, X42*X43*X69 + X43*X69, X40*X44*X76 + X44*X76, X33*X48*X51 + X33*X48, X25*X65 + X25, X3*X8*X75 + X8*X75, X24*X25*X69 + X25*X69, X58*X61*X67 + X61*X67, X13*X46*X49 + X13*X46, X18*X24*X54 + X24*X54, X70 + 1, X49*X67*X68 + X49*X68, X18*X27*X29 + X18*X29, X4*X6*X58 + X6*X58, X36*X72*X76 + X36*X76, X30*X35*X75 + X35*X75, X1*X4*X37 + X4*X37, X6*X18*X24 + X6*X18, X27*X34*X63 + X34*X63, X1*X18*X19 + X1*X18, X1*X6*X15 + X1*X15, X11*X19 + X11, X62*X78 + X78, X0*X3*X27 + X3*X27, X25*X29*X34 + X25*X29, X33*X35*X62 + X33*X62, X3*X36*X39 + X3*X36, X12*X13*X31 + X12*X31, X1*X5*X46 + X5*X46, X54*X62*X72 + X62*X72, X4*X7*X67 + X7*X67, X13*X16*X43 + X13*X43, X31*X57*X58 + X31*X57, X10*X12*X28 + X12*X28, X13*X37*X40 + X13*X37, X41*X67*X68 + X41*X67, X16*X17*X71 + X16*X71, X21*X22*X39 + X22*X39, X56*X74*X78 + X56*X78, X1*X2*X11 + X1*X11, X27*X32*X45 + X32*X45, X52*X68 + X52, X20*X22*X38 + X22*X38, X35*X75 + X35, X16*X64 + X64, X5*X54*X59 + X5*X54, X50*X53*X77 + X53*X77, X33*X57 + X33, X11*X64*X65 + X11*X64, X22*X25*X67 + X25*X67, X38*X42*X56 + X42*X56, X15*X55*X60 + X15*X55, X62*X69*X71 + X62*X69, X3*X27 + X27, X20*X25*X65 + X25*X65, X58*X62*X76 + X62*X76, X9*X17*X72 + X17*X72, X28*X31*X37 + X31*X37, X5*X8*X77 + X8*X77, X15*X64*X69 + X15*X64, X11*X16*X65 + X16*X65, X2*X3*X29 + X3*X29, X24*X29*X33 + X24*X29, X14*X37*X41 + X14*X37, X49*X53*X76 + X53*X76, X24*X26*X62 + X24*X62, X2*X18*X20 + X2*X18, X31*X39*X40 + X31*X39, X12*X17*X35 + X12*X35, X19*X64*X65 + X19*X65, X67*X76*X79 + X67*X79, X8*X72 + X8, X19*X22*X37 + X22*X37, X5*X45 + X45, X33*X34*X69 + X34*X69, X25*X65 + X65, X45*X52*X63 + X52*X63, X28*X46*X48 + X28*X48, X6*X45*X51 + X6*X45, X11*X15*X24 + X11*X24, X8*X54*X62 + X8*X54, X2*X3*X21 + X2*X21, X28*X55*X57 + X28*X57, X11*X13*X22 + X11*X22, X24*X56 + X24, X32*X57*X59 + X32*X57, X31*X35*X44 + X31*X44, X31*X33*X58 + X33*X58, X15*X55 + X55, X56*X65*X69 + X56*X69, X55*X73*X78 + X55*X78, X43*X44*X71 + X43*X71, X42*X43*X61 + X42*X61, X32*X35*X77 + X35*X77, X38*X43*X65 + X43*X65, X64*X73*X79 + X64*X79, X38*X44*X74 + X44*X74, X11*X12*X29 + X12*X29, X2*X18 + X2, X61*X69 + X61, X14*X64*X68 + X14*X64, X51*X77*X78 + X51*X77, X17*X64*X71 + X17*X64, X29*X38*X39 + X29*X39, X10*X16*X64 + X16*X64, X16*X46*X52 + X16*X46, X13*X14*X49 + X14*X49, X22*X38 + X22, X33*X57 + X57, X3*X72*X75 + X3*X72, X24*X25*X61 + X24*X61, X63*X71*X72 + X71*X72, X18*X25*X63 + X25*X63, X2*X63*X65 + X2*X63, X21*X22*X31 + X21*X31, X21*X29 + X29, X6*X8*X78 + X8*X78, X40*X43*X67 + X43*X67, X52*X53*X79 + X53*X79, X21*X23*X32 + X21*X32, X39*X41*X48 + X41*X48, X7*X8*X71 + X7*X71, X54*X61*X63 + X61*X63, X15*X17*X62 + X15*X62, X25*X38*X43 + X25*X38, X11*X12*X21 + X11*X21, X44*X67*X71 + X44*X67, X53*X59*X62 + X53*X59, X12*X64*X66 + X12*X64, X1*X9*X10 + X1*X9, X6*X72*X78 + X6*X72, X37*X43*X64 + X43*X64, X11*X14*X47 + X14*X47, X19*X23*X46 + X23*X46, X19*X73*X74 + X19*X74, X4*X63*X67 + X4*X63, X33*X57*X60 + X33*X57, X4*X6*X42 + X4*X42, X11*X19*X20 + X11*X19, X23*X26*X53 + X23*X53, X14*X19*X23 + X14*X19, X9*X36*X37 + X9*X37, X24*X26*X78 + X26*X78, X11*X28*X29 + X11*X28, X16*X37*X43 + X16*X37, X34*X66*X70 + X34*X66, X38*X41*X47 + X41*X47, X0 + 1, X57*X62*X75 + X62*X75, X21*X25*X66 + X25*X66, X15*X16*X61 + X15*X61, X15*X37*X42 + X15*X37, X9*X18*X19 + X9*X19, X19*X28*X29 + X19*X29] 657
IF(AND(R[3,8],R[5,3]),R[5,8]) IF(R[0,0],R[0,0])
X35*X48*X53 + X35*X48 + 1 1
load('PuzzlePart3.sage')
objects = 12
gradH;gradg;gradL;gradL2;F(init)
(-log(x0) + log(-x0 + 1), -log(x1) + log(-x1 + 1), -log(x2) + log(-x2 + 1), -log(x3) + log(-x3 + 1), -log(x4) + log(-x4 + 1), -log(x5) + log(-x5 + 1), -log(x6) + log(-x6 + 1), -log(x7) + log(-x7 + 1), -log(x8) + log(-x8 + 1), -log(x9) + log(-x9 + 1), -log(x10) + log(-x10 + 1), -log(x11) + log(-x11 + 1), -log(x12) + log(-x12 + 1), -log(x13) + log(-x13 + 1), -log(x14) + log(-x14 + 1), -log(x15) + log(-x15 + 1), -log(x16) + log(-x16 + 1), -log(x17) + log(-x17 + 1), -log(x18) + log(-x18 + 1), -log(x19) + log(-x19 + 1), -log(x20) + log(-x20 + 1), -log(x21) + log(-x21 + 1), -log(x22) + log(-x22 + 1), -log(x23) + log(-x23 + 1), -log(x24) + log(-x24 + 1), -log(x25) + log(-x25 + 1), -log(x26) + log(-x26 + 1), -log(x27) + log(-x27 + 1), -log(x28) + log(-x28 + 1), -log(x29) + log(-x29 + 1), -log(x30) + log(-x30 + 1), -log(x31) + log(-x31 + 1), -log(x32) + log(-x32 + 1), -log(x33) + log(-x33 + 1), -log(x34) + log(-x34 + 1), -log(x35) + log(-x35 + 1), -log(x36) + log(-x36 + 1), -log(x37) + log(-x37 + 1), -log(x38) + log(-x38 + 1), -log(x39) + log(-x39 + 1), -log(x40) + log(-x40 + 1), -log(x41) + log(-x41 + 1), -log(x42) + log(-x42 + 1), -log(x43) + log(-x43 + 1), -log(x44) + log(-x44 + 1), -log(x45) + log(-x45 + 1), -log(x46) + log(-x46 + 1), -log(x47) + log(-x47 + 1), -log(x48) + log(-x48 + 1), -log(x49) + log(-x49 + 1), -log(x50) + log(-x50 + 1), -log(x51) + log(-x51 + 1), -log(x52) + log(-x52 + 1), -log(x53) + log(-x53 + 1), -log(x54) + log(-x54 + 1), -log(x55) + log(-x55 + 1), -log(x56) + log(-x56 + 1), -log(x57) + log(-x57 + 1), -log(x58) + log(-x58 + 1), -log(x59) + log(-x59 + 1), -log(x60) + log(-x60 + 1), -log(x61) + log(-x61 + 1), -log(x62) + log(-x62 + 1), -log(x63) + log(-x63 + 1), -log(x64) + log(-x64 + 1), -log(x65) + log(-x65 + 1), -log(x66) + log(-x66 + 1), -log(x67) + log(-x67 + 1), -log(x68) + log(-x68 + 1), -log(x69) + log(-x69 + 1), -log(x70) + log(-x70 + 1), -log(x71) + log(-x71 + 1), -log(x72) + log(-x72 + 1), -log(x73) + log(-x73 + 1), -log(x74) + log(-x74 + 1), -log(x75) + log(-x75 + 1), -log(x76) + log(-x76 + 1), -log(x77) + log(-x77 + 1), -log(x78) + log(-x78 + 1), -log(x79) + log(-x79 + 1), -log(x80) + log(-x80 + 1), -log(x81) + log(-x81 + 1), -log(x82) + log(-x82 + 1), -log(x83) + log(-x83 + 1), -log(x84) + log(-x84 + 1), -log(x85) + log(-x85 + 1), -log(x86) + log(-x86 + 1), -log(x87) + log(-x87 + 1), -log(x88) + log(-x88 + 1), -log(x89) + log(-x89 + 1), -log(x90) + log(-x90 + 1), -log(x91) + log(-x91 + 1), -log(x92) + log(-x92 + 1), -log(x93) + log(-x93 + 1), -log(x94) + log(-x94 + 1), -log(x95) + log(-x95 + 1), -log(x96) + log(-x96 + 1), -log(x97) + log(-x97 + 1), -log(x98) + log(-x98 + 1), -log(x99) + log(-x99 + 1), -log(x100) + log(-x100 + 1), -log(x101) + log(-x101 + 1), -log(x102) + log(-x102 + 1), -log(x103) + log(-x103 + 1), -log(x104) + log(-x104 + 1), -log(x105) + log(-x105 + 1), -log(x106) + log(-x106 + 1), -log(x107) + log(-x107 + 1), -log(x108) + log(-x108 + 1), -log(x109) + log(-x109 + 1), -log(x110) + log(-x110 + 1), -log(x111) + log(-x111 + 1), -log(x112) + log(-x112 + 1), -log(x113) + log(-x113 + 1), -log(x114) + log(-x114 + 1), -log(x115) + log(-x115 + 1), -log(x116) + log(-x116 + 1), -log(x117) + log(-x117 + 1), -log(x118) + log(-x118 + 1), -log(x119) + log(-x119 + 1), -log(x120) + log(-x120 + 1), -log(x121) + log(-x121 + 1), -log(x122) + log(-x122 + 1), -log(x123) + log(-x123 + 1), -log(x124) + log(-x124 + 1), -log(x125) + log(-x125 + 1), -log(x126) + log(-x126 + 1), -log(x127) + log(-x127 + 1), -log(x128) + log(-x128 + 1), -log(x129) + log(-x129 + 1), -log(x130) + log(-x130 + 1), -log(x131) + log(-x131 + 1), -log(x132) + log(-x132 + 1), -log(x133) + log(-x133 + 1), -log(x134) + log(-x134 + 1), -log(x135) + log(-x135 + 1), -log(x136) + log(-x136 + 1), -log(x137) + log(-x137 + 1), -log(x138) + log(-x138 + 1), -log(x139) + log(-x139 + 1), -log(x140) + log(-x140 + 1), -log(x141) + log(-x141 + 1), -log(x142) + log(-x142 + 1), -log(x143) + log(-x143 + 1), 0, 0, 0, 0, 0) (0, 0, 0, 0, (-2.0*x11*x28*x35 + x35)*lam4, 0, 0, 0, 0, 0, 0, (-2.0*x28*x35*x4 + x28)*lam4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (-2.0*x11*x35*x4 + x11)*lam4, 0, 0, 0, 0, 0, 0, (-2.0*x11*x28*x4 + x4)*lam4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (x57*x58*x69*x70*x71 - x57*x58*x69*x71 - 2.0*x57*x58*x70*x71 - 2.0*x57*x69*x70*x71 - x58*x69*x70*x71 + x57*x69*x70 + 3.0*x57*x58*x71 + x57*x69*x71 + x58*x69*x71 + 4.0*x57*x70*x71 + x58*x70*x71 + 3.0*x69*x70*x71 - 2.0*x57*x70 - 2.0*x69*x70 - 2.0*x57*x71 - 2.0*x58*x71 - 2.0*x69*x71 - 2.0*x70*x71 + x69 + x70 + x71)*lam3, (3.0*x58*x59*x80*x81*x82 - 2.0*x58*x80*x81 - 2.0*x59*x80*x82 + x80)*lam0 + (x56*x58*x69*x70*x71 - x56*x58*x69*x71 - 2.0*x56*x58*x70*x71 - 2.0*x56*x69*x70*x71 + x56*x69*x70 + 3.0*x56*x58*x71 + x56*x69*x71 + 4.0*x56*x70*x71 + x58*x70*x71 - 2.0*x56*x70 - 2.0*x56*x71 - 2.0*x58*x71 - 2.0*x70*x71 + x70 + x71)*lam3, (3.0*x57*x59*x80*x81*x82 - 2.0*x57*x80*x81 - 2.0*x59*x81*x82 + x81)*lam0 + (x56*x57*x69*x70*x71 - x56*x57*x69*x71 - 2.0*x56*x57*x70*x71 - x56*x69*x70*x71 + 3.0*x56*x57*x71 + x56*x69*x71 + x56*x70*x71 + x57*x70*x71 - 2.0*x56*x71 - 2.0*x57*x71 + x71)*lam3, (3.0*x57*x58*x80*x81*x82 - 2.0*x57*x80*x82 - 2.0*x58*x81*x82 + x82)*lam0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (x56*x57*x58*x70*x71 - x56*x57*x58*x71 - 2.0*x56*x57*x70*x71 - x56*x58*x70*x71 + x56*x57*x70 + x56*x57*x71 + x56*x58*x71 + 3.0*x56*x70*x71 - 2.0*x56*x70 - 2.0*x56*x71 + x56)*lam3, (x56*x57*x58*x69*x71 - 2.0*x56*x57*x58*x71 - 2.0*x56*x57*x69*x71 - x56*x58*x69*x71 + x56*x57*x69 + 4.0*x56*x57*x71 + x56*x58*x71 + x57*x58*x71 + 3.0*x56*x69*x71 - 2.0*x56*x57 - 2.0*x56*x69 - 2.0*x56*x71 - 2.0*x57*x71 + x56 + x57)*lam3, (x56*x57*x58*x69*x70 - x56*x57*x58*x69 - 2.0*x56*x57*x58*x70 - 2.0*x56*x57*x69*x70 - x56*x58*x69*x70 + 3.0*x56*x57*x58 + x56*x57*x69 + x56*x58*x69 + 4.0*x56*x57*x70 + x56*x58*x70 + x57*x58*x70 + 3.0*x56*x69*x70 - 2.0*x56*x57 - 2.0*x56*x58 - 2.0*x57*x58 - 2.0*x56*x69 - 2.0*x56*x70 - 2.0*x57*x70 + x56 + x57 + x58)*lam3, 0, 0, 0, 0, 0, 0, 0, 0, (3.0*x57*x58*x59*x81*x82 - 2.0*x57*x58*x81 - 2.0*x57*x59*x82 + x57)*lam0, (3.0*x57*x58*x59*x80*x82 - 2.0*x57*x58*x80 - 2.0*x58*x59*x82 + x58)*lam0, (3.0*x57*x58*x59*x80*x81 - 2.0*x57*x59*x80 - 2.0*x58*x59*x81 + x59)*lam0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (-2.0*x114*x132*x138 + x138)*lam1, lam2*(-2.0*x114 + 1), 0, 0, 0, 0, (-2.0*x108*x132*x138 + x132)*lam1 + lam2*(-2.0*x109 + 1), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (-2.0*x108*x114*x138 + x114)*lam1, 0, 0, 0, 0, 0, (-2.0*x108*x114*x132 + x108)*lam1, 0, 0, 0, 0, 0, 3.0*x57*x58*x59*x80*x81*x82 - 2.0*x57*x58*x80*x81 - 2.0*x57*x59*x80*x82 - 2.0*x58*x59*x81*x82 + x57*x80 + x58*x81 + x59*x82 - 0.7806915470435619, -2.0*x108*x114*x132*x138 + x114*x132 + x108*x138 - 0.8805876422424685, -2.0*x109*x114 + x109 + x114 - 0.48762300276547044, x56*x57*x58*x69*x70*x71 - x56*x57*x58*x69*x71 - 2.0*x56*x57*x58*x70*x71 - 2.0*x56*x57*x69*x70*x71 - x56*x58*x69*x70*x71 + x56*x57*x69*x70 + 3.0*x56*x57*x58*x71 + x56*x57*x69*x71 + x56*x58*x69*x71 + 4.0*x56*x57*x70*x71 + x56*x58*x70*x71 + x57*x58*x70*x71 + 3.0*x56*x69*x70*x71 - 2.0*x56*x57*x70 - 2.0*x56*x69*x70 - 2.0*x56*x57*x71 - 2.0*x56*x58*x71 - 2.0*x57*x58*x71 - 2.0*x56*x69*x71 - 2.0*x56*x70*x71 - 2.0*x57*x70*x71 + x56*x69 + x56*x70 + x57*x70 + x56*x71 + x57*x71 + x58*x71 - 0.3998090675557092, -2.0*x11*x28*x35*x4 + x11*x28 + x35*x4 - 0.29511818155036684) (-log(x0) + log(-x0 + 1), -log(x1) + log(-x1 + 1), -log(x2) + log(-x2 + 1), -log(x3) + log(-x3 + 1), (-2.0*x11*x28*x35 + x35)*lam4 - log(x4) + log(-x4 + 1), -log(x5) + log(-x5 + 1), -log(x6) + log(-x6 + 1), -log(x7) + log(-x7 + 1), -log(x8) + log(-x8 + 1), -log(x9) + log(-x9 + 1), -log(x10) + log(-x10 + 1), (-2.0*x28*x35*x4 + x28)*lam4 - log(x11) + log(-x11 + 1), -log(x12) + log(-x12 + 1), -log(x13) + log(-x13 + 1), -log(x14) + log(-x14 + 1), -log(x15) + log(-x15 + 1), -log(x16) + log(-x16 + 1), -log(x17) + log(-x17 + 1), -log(x18) + log(-x18 + 1), -log(x19) + log(-x19 + 1), -log(x20) + log(-x20 + 1), -log(x21) + log(-x21 + 1), -log(x22) + log(-x22 + 1), -log(x23) + log(-x23 + 1), -log(x24) + log(-x24 + 1), -log(x25) + log(-x25 + 1), -log(x26) + log(-x26 + 1), -log(x27) + log(-x27 + 1), (-2.0*x11*x35*x4 + x11)*lam4 - log(x28) + log(-x28 + 1), -log(x29) + log(-x29 + 1), -log(x30) + log(-x30 + 1), -log(x31) + log(-x31 + 1), -log(x32) + log(-x32 + 1), -log(x33) + log(-x33 + 1), -log(x34) + log(-x34 + 1), (-2.0*x11*x28*x4 + x4)*lam4 - log(x35) + log(-x35 + 1), -log(x36) + log(-x36 + 1), -log(x37) + log(-x37 + 1), -log(x38) + log(-x38 + 1), -log(x39) + log(-x39 + 1), -log(x40) + log(-x40 + 1), -log(x41) + log(-x41 + 1), -log(x42) + log(-x42 + 1), -log(x43) + log(-x43 + 1), -log(x44) + log(-x44 + 1), -log(x45) + log(-x45 + 1), -log(x46) + log(-x46 + 1), -log(x47) + log(-x47 + 1), -log(x48) + log(-x48 + 1), -log(x49) + log(-x49 + 1), -log(x50) + log(-x50 + 1), -log(x51) + log(-x51 + 1), -log(x52) + log(-x52 + 1), -log(x53) + log(-x53 + 1), -log(x54) + log(-x54 + 1), -log(x55) + log(-x55 + 1), (x57*x58*x69*x70*x71 - x57*x58*x69*x71 - 2.0*x57*x58*x70*x71 - 2.0*x57*x69*x70*x71 - x58*x69*x70*x71 + x57*x69*x70 + 3.0*x57*x58*x71 + x57*x69*x71 + x58*x69*x71 + 4.0*x57*x70*x71 + x58*x70*x71 + 3.0*x69*x70*x71 - 2.0*x57*x70 - 2.0*x69*x70 - 2.0*x57*x71 - 2.0*x58*x71 - 2.0*x69*x71 - 2.0*x70*x71 + x69 + x70 + x71)*lam3 - log(x56) + log(-x56 + 1), (3.0*x58*x59*x80*x81*x82 - 2.0*x58*x80*x81 - 2.0*x59*x80*x82 + x80)*lam0 + (x56*x58*x69*x70*x71 - x56*x58*x69*x71 - 2.0*x56*x58*x70*x71 - 2.0*x56*x69*x70*x71 + x56*x69*x70 + 3.0*x56*x58*x71 + x56*x69*x71 + 4.0*x56*x70*x71 + x58*x70*x71 - 2.0*x56*x70 - 2.0*x56*x71 - 2.0*x58*x71 - 2.0*x70*x71 + x70 + x71)*lam3 - log(x57) + log(-x57 + 1), (3.0*x57*x59*x80*x81*x82 - 2.0*x57*x80*x81 - 2.0*x59*x81*x82 + x81)*lam0 + (x56*x57*x69*x70*x71 - x56*x57*x69*x71 - 2.0*x56*x57*x70*x71 - x56*x69*x70*x71 + 3.0*x56*x57*x71 + x56*x69*x71 + x56*x70*x71 + x57*x70*x71 - 2.0*x56*x71 - 2.0*x57*x71 + x71)*lam3 - log(x58) + log(-x58 + 1), (3.0*x57*x58*x80*x81*x82 - 2.0*x57*x80*x82 - 2.0*x58*x81*x82 + x82)*lam0 - log(x59) + log(-x59 + 1), -log(x60) + log(-x60 + 1), -log(x61) + log(-x61 + 1), -log(x62) + log(-x62 + 1), -log(x63) + log(-x63 + 1), -log(x64) + log(-x64 + 1), -log(x65) + log(-x65 + 1), -log(x66) + log(-x66 + 1), -log(x67) + log(-x67 + 1), -log(x68) + log(-x68 + 1), (x56*x57*x58*x70*x71 - x56*x57*x58*x71 - 2.0*x56*x57*x70*x71 - x56*x58*x70*x71 + x56*x57*x70 + x56*x57*x71 + x56*x58*x71 + 3.0*x56*x70*x71 - 2.0*x56*x70 - 2.0*x56*x71 + x56)*lam3 - log(x69) + log(-x69 + 1), (x56*x57*x58*x69*x71 - 2.0*x56*x57*x58*x71 - 2.0*x56*x57*x69*x71 - x56*x58*x69*x71 + x56*x57*x69 + 4.0*x56*x57*x71 + x56*x58*x71 + x57*x58*x71 + 3.0*x56*x69*x71 - 2.0*x56*x57 - 2.0*x56*x69 - 2.0*x56*x71 - 2.0*x57*x71 + x56 + x57)*lam3 - log(x70) + log(-x70 + 1), (x56*x57*x58*x69*x70 - x56*x57*x58*x69 - 2.0*x56*x57*x58*x70 - 2.0*x56*x57*x69*x70 - x56*x58*x69*x70 + 3.0*x56*x57*x58 + x56*x57*x69 + x56*x58*x69 + 4.0*x56*x57*x70 + x56*x58*x70 + x57*x58*x70 + 3.0*x56*x69*x70 - 2.0*x56*x57 - 2.0*x56*x58 - 2.0*x57*x58 - 2.0*x56*x69 - 2.0*x56*x70 - 2.0*x57*x70 + x56 + x57 + x58)*lam3 - log(x71) + log(-x71 + 1), -log(x72) + log(-x72 + 1), -log(x73) + log(-x73 + 1), -log(x74) + log(-x74 + 1), -log(x75) + log(-x75 + 1), -log(x76) + log(-x76 + 1), -log(x77) + log(-x77 + 1), -log(x78) + log(-x78 + 1), -log(x79) + log(-x79 + 1), (3.0*x57*x58*x59*x81*x82 - 2.0*x57*x58*x81 - 2.0*x57*x59*x82 + x57)*lam0 - log(x80) + log(-x80 + 1), (3.0*x57*x58*x59*x80*x82 - 2.0*x57*x58*x80 - 2.0*x58*x59*x82 + x58)*lam0 - log(x81) + log(-x81 + 1), (3.0*x57*x58*x59*x80*x81 - 2.0*x57*x59*x80 - 2.0*x58*x59*x81 + x59)*lam0 - log(x82) + log(-x82 + 1), -log(x83) + log(-x83 + 1), -log(x84) + log(-x84 + 1), -log(x85) + log(-x85 + 1), -log(x86) + log(-x86 + 1), -log(x87) + log(-x87 + 1), -log(x88) + log(-x88 + 1), -log(x89) + log(-x89 + 1), -log(x90) + log(-x90 + 1), -log(x91) + log(-x91 + 1), -log(x92) + log(-x92 + 1), -log(x93) + log(-x93 + 1), -log(x94) + log(-x94 + 1), -log(x95) + log(-x95 + 1), -log(x96) + log(-x96 + 1), -log(x97) + log(-x97 + 1), -log(x98) + log(-x98 + 1), -log(x99) + log(-x99 + 1), -log(x100) + log(-x100 + 1), -log(x101) + log(-x101 + 1), -log(x102) + log(-x102 + 1), -log(x103) + log(-x103 + 1), -log(x104) + log(-x104 + 1), -log(x105) + log(-x105 + 1), -log(x106) + log(-x106 + 1), -log(x107) + log(-x107 + 1), (-2.0*x114*x132*x138 + x138)*lam1 - log(x108) + log(-x108 + 1), lam2*(-2.0*x114 + 1) - log(x109) + log(-x109 + 1), -log(x110) + log(-x110 + 1), -log(x111) + log(-x111 + 1), -log(x112) + log(-x112 + 1), -log(x113) + log(-x113 + 1), (-2.0*x108*x132*x138 + x132)*lam1 + lam2*(-2.0*x109 + 1) - log(x114) + log(-x114 + 1), -log(x115) + log(-x115 + 1), -log(x116) + log(-x116 + 1), -log(x117) + log(-x117 + 1), -log(x118) + log(-x118 + 1), -log(x119) + log(-x119 + 1), -log(x120) + log(-x120 + 1), -log(x121) + log(-x121 + 1), -log(x122) + log(-x122 + 1), -log(x123) + log(-x123 + 1), -log(x124) + log(-x124 + 1), -log(x125) + log(-x125 + 1), -log(x126) + log(-x126 + 1), -log(x127) + log(-x127 + 1), -log(x128) + log(-x128 + 1), -log(x129) + log(-x129 + 1), -log(x130) + log(-x130 + 1), -log(x131) + log(-x131 + 1), (-2.0*x108*x114*x138 + x114)*lam1 - log(x132) + log(-x132 + 1), -log(x133) + log(-x133 + 1), -log(x134) + log(-x134 + 1), -log(x135) + log(-x135 + 1), -log(x136) + log(-x136 + 1), -log(x137) + log(-x137 + 1), (-2.0*x108*x114*x132 + x108)*lam1 - log(x138) + log(-x138 + 1), -log(x139) + log(-x139 + 1), -log(x140) + log(-x140 + 1), -log(x141) + log(-x141 + 1), -log(x142) + log(-x142 + 1), -log(x143) + log(-x143 + 1), 3.0*x57*x58*x59*x80*x81*x82 - 2.0*x57*x58*x80*x81 - 2.0*x57*x59*x80*x82 - 2.0*x58*x59*x81*x82 + x57*x80 + x58*x81 + x59*x82 - 0.7806915470435619, -2.0*x108*x114*x132*x138 + x114*x132 + x108*x138 - 0.8805876422424685, -2.0*x109*x114 + x109 + x114 - 0.48762300276547044, x56*x57*x58*x69*x70*x71 - x56*x57*x58*x69*x71 - 2.0*x56*x57*x58*x70*x71 - 2.0*x56*x57*x69*x70*x71 - x56*x58*x69*x70*x71 + x56*x57*x69*x70 + 3.0*x56*x57*x58*x71 + x56*x57*x69*x71 + x56*x58*x69*x71 + 4.0*x56*x57*x70*x71 + x56*x58*x70*x71 + x57*x58*x70*x71 + 3.0*x56*x69*x70*x71 - 2.0*x56*x57*x70 - 2.0*x56*x69*x70 - 2.0*x56*x57*x71 - 2.0*x56*x58*x71 - 2.0*x57*x58*x71 - 2.0*x56*x69*x71 - 2.0*x56*x70*x71 - 2.0*x57*x70*x71 + x56*x69 + x56*x70 + x57*x70 + x56*x71 + x57*x71 + x58*x71 - 0.3998090675557092, -2.0*x11*x28*x35*x4 + x11*x28 + x35*x4 - 0.29511818155036684) [(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x0) + log(-x0 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x1) + log(-x1 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x2) + log(-x2 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x3) + log(-x3 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (-2.0*x11*x28*x35 + x35)*lam4 - log(x4) + log(-x4 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x5) + log(-x5 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x6) + log(-x6 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x7) + log(-x7 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x8) + log(-x8 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x9) + log(-x9 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x10) + log(-x10 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (-2.0*x28*x35*x4 + x28)*lam4 - log(x11) + log(-x11 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x12) + log(-x12 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x13) + log(-x13 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x14) + log(-x14 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x15) + log(-x15 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x16) + log(-x16 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x17) + log(-x17 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x18) + log(-x18 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x19) + log(-x19 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x20) + log(-x20 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x21) + log(-x21 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x22) + log(-x22 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x23) + log(-x23 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x24) + log(-x24 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x25) + log(-x25 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x26) + log(-x26 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x27) + log(-x27 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (-2.0*x11*x35*x4 + x11)*lam4 - log(x28) + log(-x28 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x29) + log(-x29 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x30) + log(-x30 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x31) + log(-x31 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x32) + log(-x32 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x33) + log(-x33 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x34) + log(-x34 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (-2.0*x11*x28*x4 + x4)*lam4 - log(x35) + log(-x35 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x36) + log(-x36 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x37) + log(-x37 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x38) + log(-x38 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x39) + log(-x39 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x40) + log(-x40 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x41) + log(-x41 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x42) + log(-x42 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x43) + log(-x43 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x44) + log(-x44 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x45) + log(-x45 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x46) + log(-x46 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x47) + log(-x47 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x48) + log(-x48 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x49) + log(-x49 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x50) + log(-x50 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x51) + log(-x51 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x52) + log(-x52 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x53) + log(-x53 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x54) + log(-x54 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x55) + log(-x55 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (x57*x58*x69*x70*x71 - x57*x58*x69*x71 - 2.0*x57*x58*x70*x71 - 2.0*x57*x69*x70*x71 - x58*x69*x70*x71 + x57*x69*x70 + 3.0*x57*x58*x71 + x57*x69*x71 + x58*x69*x71 + 4.0*x57*x70*x71 + x58*x70*x71 + 3.0*x69*x70*x71 - 2.0*x57*x70 - 2.0*x69*x70 - 2.0*x57*x71 - 2.0*x58*x71 - 2.0*x69*x71 - 2.0*x70*x71 + x69 + x70 + x71)*lam3 - log(x56) + log(-x56 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (3.0*x58*x59*x80*x81*x82 - 2.0*x58*x80*x81 - 2.0*x59*x80*x82 + x80)*lam0 + (x56*x58*x69*x70*x71 - x56*x58*x69*x71 - 2.0*x56*x58*x70*x71 - 2.0*x56*x69*x70*x71 + x56*x69*x70 + 3.0*x56*x58*x71 + x56*x69*x71 + 4.0*x56*x70*x71 + x58*x70*x71 - 2.0*x56*x70 - 2.0*x56*x71 - 2.0*x58*x71 - 2.0*x70*x71 + x70 + x71)*lam3 - log(x57) + log(-x57 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (3.0*x57*x59*x80*x81*x82 - 2.0*x57*x80*x81 - 2.0*x59*x81*x82 + x81)*lam0 + (x56*x57*x69*x70*x71 - x56*x57*x69*x71 - 2.0*x56*x57*x70*x71 - x56*x69*x70*x71 + 3.0*x56*x57*x71 + x56*x69*x71 + x56*x70*x71 + x57*x70*x71 - 2.0*x56*x71 - 2.0*x57*x71 + x71)*lam3 - log(x58) + log(-x58 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (3.0*x57*x58*x80*x81*x82 - 2.0*x57*x80*x82 - 2.0*x58*x81*x82 + x82)*lam0 - log(x59) + log(-x59 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x60) + log(-x60 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x61) + log(-x61 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x62) + log(-x62 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x63) + log(-x63 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x64) + log(-x64 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x65) + log(-x65 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x66) + log(-x66 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x67) + log(-x67 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x68) + log(-x68 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (x56*x57*x58*x70*x71 - x56*x57*x58*x71 - 2.0*x56*x57*x70*x71 - x56*x58*x70*x71 + x56*x57*x70 + x56*x57*x71 + x56*x58*x71 + 3.0*x56*x70*x71 - 2.0*x56*x70 - 2.0*x56*x71 + x56)*lam3 - log(x69) + log(-x69 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (x56*x57*x58*x69*x71 - 2.0*x56*x57*x58*x71 - 2.0*x56*x57*x69*x71 - x56*x58*x69*x71 + x56*x57*x69 + 4.0*x56*x57*x71 + x56*x58*x71 + x57*x58*x71 + 3.0*x56*x69*x71 - 2.0*x56*x57 - 2.0*x56*x69 - 2.0*x56*x71 - 2.0*x57*x71 + x56 + x57)*lam3 - log(x70) + log(-x70 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (x56*x57*x58*x69*x70 - x56*x57*x58*x69 - 2.0*x56*x57*x58*x70 - 2.0*x56*x57*x69*x70 - x56*x58*x69*x70 + 3.0*x56*x57*x58 + x56*x57*x69 + x56*x58*x69 + 4.0*x56*x57*x70 + x56*x58*x70 + x57*x58*x70 + 3.0*x56*x69*x70 - 2.0*x56*x57 - 2.0*x56*x58 - 2.0*x57*x58 - 2.0*x56*x69 - 2.0*x56*x70 - 2.0*x57*x70 + x56 + x57 + x58)*lam3 - log(x71) + log(-x71 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x72) + log(-x72 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x73) + log(-x73 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x74) + log(-x74 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x75) + log(-x75 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x76) + log(-x76 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x77) + log(-x77 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x78) + log(-x78 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x79) + log(-x79 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (3.0*x57*x58*x59*x81*x82 - 2.0*x57*x58*x81 - 2.0*x57*x59*x82 + x57)*lam0 - log(x80) + log(-x80 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (3.0*x57*x58*x59*x80*x82 - 2.0*x57*x58*x80 - 2.0*x58*x59*x82 + x58)*lam0 - log(x81) + log(-x81 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (3.0*x57*x58*x59*x80*x81 - 2.0*x57*x59*x80 - 2.0*x58*x59*x81 + x59)*lam0 - log(x82) + log(-x82 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x83) + log(-x83 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x84) + log(-x84 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x85) + log(-x85 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x86) + log(-x86 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x87) + log(-x87 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x88) + log(-x88 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x89) + log(-x89 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x90) + log(-x90 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x91) + log(-x91 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x92) + log(-x92 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x93) + log(-x93 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x94) + log(-x94 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x95) + log(-x95 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x96) + log(-x96 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x97) + log(-x97 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x98) + log(-x98 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x99) + log(-x99 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x100) + log(-x100 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x101) + log(-x101 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x102) + log(-x102 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x103) + log(-x103 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x104) + log(-x104 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x105) + log(-x105 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x106) + log(-x106 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x107) + log(-x107 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (-2.0*x114*x132*x138 + x138)*lam1 - log(x108) + log(-x108 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> lam2*(-2.0*x114 + 1) - log(x109) + log(-x109 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x110) + log(-x110 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x111) + log(-x111 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x112) + log(-x112 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x113) + log(-x113 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> (-2.0*x108*x132*x138 + x132)*lam1 + lam2*(-2.0*x109 + 1) - log(x114) + log(-x114 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x115) + log(-x115 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x116) + log(-x116 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x117) + log(-x117 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, lam0, lam1, lam2, lam3, lam4) |--> -log(x118) + log(-x118 + 1), (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117, x118,[...] [0.2543944676226072, -0.12584648087421624, 1.0622071698683853, 0.03205205473397277, -1.1808791636898353, 1.1765534176610453, 0.26340778183551916, -1.1922136787886524, -0.6603201761459235, -1.2809877322844454, 0.5305235637193543, 1.059448597122751, 0.9981259768256585, -0.6600800212290965, -0.862002357351683, -0.5127401731701646, -0.7443331978386591, 1.1478014899953028, 1.2819255598027794, 0.7274020634060737, -0.13727669866622338, -0.13052388726506536, 0.17555425085384246, 0.06985845449854677, -0.5365294426621228, -0.23971760690615307, -0.6855973123535327, -0.29124205412037707, -1.1890899149220018, -1.1812208922039422, 0.19811586586163743, 0.80150878993578, -0.24426707905931155, 0.22893775787840842, 0.34316781510449945, 0.0271174829245574, 0.7376001664910762, 0.7899570062471029, 0.15373072412152888, 0.22864096594048455, 0.8352863504347047, 0.5118097379900083, 1.2231755101769566, 0.21222315757666432, 0.015561989766470385, -1.2865097983935638, -0.9807137978626995, -0.8388150216132155, -1.3450254791964793, -0.3639546104180861, -0.8109477885056733, -1.0916592567607513, 1.149045340580071, -0.7518055723444722, -1.0154132374737421, -0.21429393173742173, -0.9344062739278098, 0.7356275404399499, 1.1043641613159014, -0.1143764263169843, -0.9362300659717148, 0.33537252991361133, 0.28893895692143035, 0.6492618325529789, -0.5582858167988608, 0.3656652282594651, -1.175418152029056, 0.4904527700527382, -0.2051986896109298, 1.3245063032642095, 0.38646291014568646, 0.45195287310308957, -0.19975634367361084, 0.759454363699378, 0.7566436446894069, 0.9057238752146559, 0.9196254106137176, 0.38150465485204466, 1.3200883864211672, 1.126800031298564, 1.1253916572539588, 0.08888898613793694, -0.12848267868437227, -1.2997944202017533, -0.32081540484739335, -1.3467422045095685, -1.2273647817594275, -1.3238970461189141, 0.7732926923848134, 0.5984035944286944, 0.031660628555176484, 0.017398547365053085, 0.4737553415132414, -0.49104352437011256, 0.8198287361334007, -0.6515667510821533, 0.39838683421276744, 0.6669208448557125, 1.0677540285052178, 0.3909123211140437, 0.47319465052223514, -0.7368948136993231, -0.6999828822791174, 0.2799279018275449, -0.38682396305761657, 0.12370084834681694, 0.2849970771818656, -0.8447965896772167, 1.2987207722203655, -0.4246735989732671, 0.07600314177278433, -0.792384127618955, -1.0571471025834254, -0.19500981515727123, 1.2552228675690664, 0.4541251483597762, 0.8953066176062452, -0.4716692682751306, -0.6057428319237339, 0.9905112461616884, 0.4927953015674285, 0.3258966540019791, 0.07960098101363611, -0.5340803498803501, -0.9537751838555395, 0.637148739157273, 0.06338505352017976, -1.1601450414695984, -1.313274658318529, 0.15317685083494925, -1.0191503815964413, 0.0014141544166700326, -0.27016319153475365, 0.8900661494015956, -0.2696159765146544, -0.8378401616212467, 0.8453081381735765, -0.25068013933146216, 0.674675985625135, 0.998447143310397, -0.19243562855533636, -0.5681139457047484, 0.9594451063150383, -1.2662056222384872, -0.38584623903849097, -0.688839543088308, 0.09400394124740696, -0.12485061631942229, 0.1492779999391509]
ssoln = scipy.optimize.newton_krylov(F, init, method='lgmres', f_tol=1e-14)
(F(init)[0].n()).parent()
Real Field with 53 bits of precision
a=var('a');b=var('b') solve(x^2-(a-b-1)*x+1-a==0,x) solve(x^2-(b-a-1)*x+1-b==0,x)
[x == 1/2*a - 1/2*b - 1/2*sqrt(a^2 - 2*(a - 1)*b + b^2 + 2*a - 3) - 1/2, x == 1/2*a - 1/2*b + 1/2*sqrt(a^2 - 2*(a - 1)*b + b^2 + 2*a - 3) - 1/2] [x == -1/2*a + 1/2*b - 1/2*sqrt(a^2 - 2*(a - 1)*b + b^2 + 2*a - 3) - 1/2, x == -1/2*a + 1/2*b + 1/2*sqrt(a^2 - 2*(a - 1)*b + b^2 + 2*a - 3) - 1/2]
a,b=.75,.75 solve(x^2-(a-b-1)*x+1-a==0,x) solve(x^2-(b-a-1)*x+1-b==0,x)
[x == (-1/2)] [x == (-1/2)]
IFF(P,P)
1
Prob(IF(Q,P)*IF(P,Q))/Prob(IF(P,Q)) GIVEN(IF(Q,P),IF(P,Q))
(2*p*q - p - q + 1)/(p*q - p + 1) (2*p*q - p - q + 1)/(p*q - p + 1)
load('maxentrocond2.sage') g gradH gradg gradL ssoln htt
2.00000000000000*x0*x1 - x0 - x1 + 0.350000000000000 (-log(x0) + log(-x0 + 1), -log(x1) + log(-x1 + 1), 0) (lam0*(2.00000000000000*x1 - 1.00000000000000), lam0*(2.00000000000000*x0 - 1.00000000000000), 2.00000000000000*x0*x1 - x0 - x1 + 0.350000000000000) (lam0*(2.00000000000000*x1 - 1.00000000000000) - log(x0) + log(-x0 + 1), lam0*(2.00000000000000*x0 - 1.00000000000000) - log(x1) + log(-x1 + 1), 2.00000000000000*x0*x1 - x0 - x1 + 0.350000000000000) [0.22613872124741694, 0.22613872124741691, 2.2461079837862061] 1.54243851797692
H g gradH gradg gradL critical ssoln htt
-(x0 - 1)*(x1 - 1)*log((x0 - 1)*(x1 - 1)) + x0*(x1 - 1)*log(-x0*(x1 - 1)) + (x0 - 1)*x1*log(-(x0 - 1)*x1) - x0*x1*log(x0*x1) 2.00000000000000*x0*x1 - x0 - x1 + 0.700000000000000 (-log(x0) + log(-x0 + 1), -log(x1) + log(-x1 + 1), 0) (lam0*(2.00000000000000*x1 - 1.00000000000000), lam0*(2.00000000000000*x0 - 1.00000000000000), 2.00000000000000*x0*x1 - x0 - x1 + 0.700000000000000) (lam0*(2.00000000000000*x1 - 1.00000000000000) - log(x0) + log(-x0 + 1), lam0*(2.00000000000000*x0 - 1.00000000000000) - log(x1) + log(-x1 + 1), 2.00000000000000*x0*x1 - x0 - x1 + 0.700000000000000) [{2.0*x0*x1 - x0 - x1 + 0.7: 0}, {lam0*(2.0*x1 - 1.0) - log(x0) + log(-x0 + 1): 0}, {lam0*(2.0*x0 - 1.0) - log(x1) + log(-x1 + 1): 0}] [(0.18377223398316217+9.0564754739500348e-18j), (0.81622776601683789-8.099504146052118e-18j), (-2.3574721596638955+4.2550371721195694e-17j)] (0.95413112102032305+2.5579502290613354e-17j)
X = EX7.gens() #generators X[n] are independent random variables that can take on values 0 or 1 NewGens = str(X).lower() NewGens = NewGens[1:len(NewGens) - 1] p,q,r,s,v,w = var(NewGens) #x = Pr(X) NewGens MPR=(Prob(IF(P,Q))).parent() NI=ideal([Prob(IF(P,Q))-QQ(.4),Prob(IF(Q,P))-QQ(.6)]) NGB=NI.groebner_basis();NGB;MPR.term_order()
'p, q, r, s, v, w' [p - q - 1/5, q^2 - 4/5*q + 2/5] Lexicographic term order
x=var('x') b=.65 soln=solve(2*x^2-2*x+1-b==0,x);soln ccsoln=[CC(s.rhs()) for s in soln];ccsoln
[x == -1/20*sqrt(30) + 1/2, x == 1/20*sqrt(30) + 1/2] [0.226138721247417, 0.773861278752583]
a=var('a') solve(2*x^2-2*x+1-a==0,x)
[x == -1/2*sqrt(2*a - 1) + 1/2, x == 1/2*sqrt(2*a - 1) + 1/2]
RR(1-sqrt(1-.75))
0.500000000000000
load("probpuzzle1.sage")
36 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X35 = R[5,5] REI.gens() = 111 A 1st pass [ 1 X1 X2 X3 X4 X5] [ X1 1 X8 X9 X10 X11] [ X2 X8 1 X15 X16 X17] [ X3 X9 X15 1 X22 X23] [ X4 X10 X16 X22 1 X29] [ X5 X11 X17 X23 X29 1]
constraints;len(constraints);min(2,3)
[X2*X4*X14 + X2*X14 + 1, X3*X4*X19 + X3*X19 + 1, X1*X3*X8 + X1*X3 + 1, X7*X8*X13 + X7*X8 + 1, X2*X12 + X2 + 1, X12, X1*X2*X7 + X1*X2 + 1, X2*X4*X14 + X2*X4 + 1, X7*X9*X14 + X7*X9 + 1, X3*X4*X19 + X3*X4 + 1, X1*X3*X8 + X1*X8 + 1, X8*X9*X19 + X9*X19 + 1, X13*X18 + X13 + 1, X18*X19 + X19 + 1, X18, X20 + X4 + 1, X23 + X19 + 1, X1*X3*X8 + X3*X8 + 1, X13*X14*X19 + X13*X14 + 1, X1*X2*X7 + X1*X7 + 1, X0*X3 + X3 + 1, X15 + X3 + 1, X8*X9*X19 + X8*X9 + 1, X0*X4 + X4 + 1, X10 + X2 + 1, X9*X24 + X9 + 1, X7*X9*X14 + X7*X14 + 1, X7*X12 + X7 + 1, X1*X6 + X1 + 1, X0*X1 + X1 + 1, X3*X18 + X3 + 1, X24, X13*X14*X19 + X13*X19 + 1, X2*X3*X13 + X2*X3 + 1, X1*X2*X7 + X2*X7 + 1, X5 + X1 + 1, X7*X9*X14 + X9*X14 + 1, X7*X8*X13 + X7*X13 + 1, X1*X4*X9 + X4*X9 + 1, X4*X24 + X4 + 1, X12*X14 + X14 + 1, X1*X4*X9 + X1*X9 + 1, X6, X6*X7 + X7 + 1, X6*X8 + X8 + 1, X3*X4*X19 + X4*X19 + 1, X0, X16 + X8 + 1, X6*X9 + X9 + 1, X8*X9*X19 + X8*X19 + 1, X0*X2 + X2 + 1, X7*X8*X13 + X8*X13 + 1, X2*X4*X14 + X4*X14 + 1, X11 + X7 + 1, X17 + X13 + 1, X22 + X14 + 1, X8*X18 + X8 + 1, X2*X3*X13 + X3*X13 + 1, X14*X24 + X14 + 1, X1*X4*X9 + X1*X4 + 1, X21 + X9 + 1, X19*X24 + X19 + 1, X12*X13 + X13 + 1, X2*X3*X13 + X2*X13 + 1, X13*X14*X19 + X14*X19 + 1] 65 2
len(set(constraints))
65
x=var('x') a=.25;b=.8 RR(2*sqrt(a)-a) soln=solve(x^2-(a+b)*x+a==0,x);soln ccsoln=[CC(s.rhs()) for s in soln];ccsoln
0.750000000000000 [x == -1/40*sqrt(41) + 21/40, x == 1/40*sqrt(41) + 21/40] [0.364921894064179, 0.685078105935821]
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) Pr1 = (P + R + P*R)*(P + Q + P*Q) # premise 1 of exercise 7 Pr2 = 1 + Q*R + Q*R*(1 + V + V*W) # premise 2 of exercise 7 Pr3 = 1 + P + P*S + (1 +P + P*S)*(S + S*W) # premise 3 of exercise 7 Pr4 = 1 + W # not W -- premise 4 of exercise 7 Concl = 1 + V + V*S # conclusion to be proved of exercise 7 prems=[Pr1,Pr2,Pr3,Pr4] a=.1;b=.9 premprobs=[Prob(A) for A in prems] prb = [QQ(int(100*numpy.random.uniform(a,b)+.5)/100) for A in prems] premsys=[Prob(A)-prb[prems.index(A)] for A in prems]
premprobs Prob(Concl)
[-p*q*r + p + q*r, q*r*v*w - q*r*v + 1, p*s - p + s*w - s + 1, -w + 1] s*v - v + 1
EX7.<P,Q,R,S,V,W> = BooleanPolynomialRing(6,order='lex') X = EX7.gens() #generators X[n] are independent random variables that can take on values 0 or 1 NewGens = str(X).lower() NewGens = NewGens[1:len(NewGens) - 1] x = var(NewGens) ;x#x = Pr(X)
(p, q, r, s, v, w)
load("ProbExample.sage")
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.9/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "/projects/sage/sage-6.9/local/lib/python2.7/site-packages/smc_sagews/sage_salvus.py", line 3228, in load exec 'salvus.namespace["%s"] = sage.structure.sage_object.load(*__args, **__kwds)'%t in salvus.namespace, {'__args':other_args, '__kwds':kwds} File "<string>", line 1, in <module> File "sage/structure/sage_object.pyx", line 983, in sage.structure.sage_object.load (/projects/sage/sage-6.9/src/build/cythonized/sage/structure/sage_object.c:11288) sage.repl.load.load(filename, globals()) File "/projects/sage/sage-6.9/local/lib/python2.7/site-packages/sage/repl/load.py", line 290, in load exec(preparse_file(open(fpath).read()) + "\n", globals) File "<string>", line 58, in <module> File "<string>", line 8, in newton_krylov File "/projects/sage/sage-6.9/local/lib/python2.7/site-packages/scipy/optimize/nonlin.py", line 351, in nonlin_solve raise NoConvergence(_array_like(x, x0)) NoConvergence: [ 0.096000852885279 0.430999922915692 0.422088641987998 0.628291100695054 0.658085484772839 0.585103708551573 -3.336141787216485 -8.626185229209298 -1.684882825170378 -2.447623571889068]
prems;constraints;gradL
[P*Q*R + P + Q*R, Q*R*V*W + Q*R*V + 1, P*S + P + S*W + S + 1, W + 1] [-p*q*r + q*r + p - 0.520000000000000, q*r*v*w - q*r*v + 0.400000000000000, p*s + s*w - p - s + 0.870000000000000, -w + 0.240000000000000] ((-q*r + 1)*lam0 + lam2*(s - 1.00000000000000) - log(p) + log(-p + 1), (-p*r + r)*lam0 + (r*v*w - r*v)*lam1 - log(q) + log(-q + 1), (-p*q + q)*lam0 + (q*v*w - q*v)*lam1 - log(r) + log(-r + 1), lam2*(p + w - 1.00000000000000) - log(s) + log(-s + 1), (q*r*w - q*r)*lam1 - log(v) + log(-v + 1), lam1*q*r*v + lam2*s - lam3 - log(w) + log(-w + 1), -p*q*r + q*r + p - 0.520000000000000, q*r*v*w - q*r*v + 0.400000000000000, p*s + s*w - p - s + 0.870000000000000, -w + 0.240000000000000)
aa=.1;bb=.9 a=.5;b=.8;w=.4;c=.2 p,q,r,lam=var('p,q,r,lam') x=[p,q,r,lam] s(p)=(c-1+p)/(w-1+p);v(p)=(1-b)*(1-p)/(1-w)/(a-p) H(p,q,r,lam)=-(p*ln(p)+(1-p)*ln(1-p)+q*ln(q)+(1-q)*ln(1-q)+r*ln(r)+(1-r)*ln(1-r)+s*ln(s)+(1-s)*ln(1-s)+v*ln(v)+(1-v)*ln(1-v)+w*ln(w)+(1-w)*ln(1-w)) g(p,q,r,lam)=(1-p)*q*r-a+p L(p,q,r,lam)=H+lam*g gradL=L.gradient();gradL gradL2 = [] for gr in gradL: gradL2.append((gr).function(*x)) def F(s): tmp=[] for gr in gradL2: tmp.append(((gr)(*s)).n()) return tmp numpy.set_printoptions(precision=15) init = [5.,.5,.5,.5] ssoln = scipy.optimize.broyden1(F, init, f_tol=1e-14) #ssoln = scipy.optimize.newton_krylov(F, init, method='lgmres')#, f_tol=1e-14) ssoln = list(ssoln);ssoln;s;v htt = 0.0 #the entropy of the truth table equals the sum of the entropies of the independent generators of the free boolean algebra for ii in range(len(x)): htt = htt - (ssoln[ii]*ln(ssoln[ii])+(1-ssoln[ii])*ln(1-ssoln[ii])) #htt = RR(htt/ln(2))
(p, q, r, lam) |--> (-(q*r - 1.00000000000000)*lam + (1/(p - 0.600000000000000) - (p - 0.800000000000000)/(p - 0.600000000000000)^2)*log(-(p - 0.800000000000000)/(p - 0.600000000000000) + 1) - (-0.333333333333333/(p - 0.500000000000000) - (-0.333333333333333*p + 0.333333333333333)/(p - 0.500000000000000)^2)*log((-0.333333333333333*p + 0.333333333333333)/(p - 0.500000000000000) + 1) - log((p - 0.800000000000000)/(p - 0.600000000000000))/(p - 0.600000000000000) + (p - 0.800000000000000)*log((p - 0.800000000000000)/(p - 0.600000000000000))/(p - 0.600000000000000)^2 - 0.333333333333333*log(-(-0.333333333333333*p + 0.333333333333333)/(p - 0.500000000000000))/(p - 0.500000000000000) - (-0.333333333333333*p + 0.333333333333333)*log(-(-0.333333333333333*p + 0.333333333333333)/(p - 0.500000000000000))/(p - 0.500000000000000)^2 - log(p) + log(-p + 1), -lam*(p - 1)*r - log(q) + log(-q + 1), -lam*(p - 1)*q - log(r) + log(-r + 1), -(p - 1)*q*r + p - 0.500000000000000) [(0.76103218893948343+0.14535503827500615j), (0.52005501791809494-0.89315519079074335j), (0.52005501791809472-0.89315519079074335j), (7.3352044606688747+0.20701673159837541j)] p |--> (p - 0.800000000000000)/(p - 0.600000000000000) p |--> -(-0.333333333333333*p + 0.333333333333333)/(p - 0.500000000000000)
ssoln
[(0.49819424363272691+1.1268603558711039j), (-0.92006532596286694+0.28976557801488817j), (-0.92006532596286683+0.28976557801488828j), (2.5602438593183972+0.29908797985823443j)]
import numpy from scipy.optimize import minimize_scalar #a=.9;b=.8;w=.4;c=.2 b=.5 w=numpy.random.uniform(b,1) c=numpy.random.uniform(0,w) a=numpy.random.uniform(max(1-c,1-w),1) p=var('p') r=sqrt((a-p)/(1-p)) s=(c-1+p)/(w-1+p) v=(1-b)*(1-p)/(1-w)/(a-p) H(p)=-(p*ln(p)+(1-p)*ln(1-p)+2*r*ln(r)+2*(1-r)*ln(1-r)+s*ln(s)+(1-s)*ln(1-s)+v*ln(v)+(1-v)*ln(1-v)+w*ln(w)+(1-w)*ln(1-w)) def HH(x): return -H(x).n() dH=H.derivative();H;dH res = minimize_scalar(HH, bounds=(max(1-c,1-w), a), method='bounded');res.x;-HH(res.x)
p |--> -p*log(p) + (p - 1)*log(-p + 1) + 2*(sqrt((p - 0.9314978256797797)/(p - 1)) - 1)*log(-sqrt((p - 0.9314978256797797)/(p - 1)) + 1) + ((p - 0.6745609927397498)/(p - 0.26443075756713086) - 1)*log(-(p - 0.6745609927397498)/(p - 0.26443075756713086) + 1) - ((-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797) + 1)*log((-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797) + 1) - 2*sqrt((p - 0.9314978256797797)/(p - 1))*log(sqrt((p - 0.9314978256797797)/(p - 1))) - (p - 0.6745609927397498)*log((p - 0.6745609927397498)/(p - 0.26443075756713086))/(p - 0.26443075756713086) + (-1.89085416764752*p + 1.89085416764752)*log(-(-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797))/(p - 0.9314978256797797) + 0.577640518610534 p |--> (1/(p - 0.26443075756713086) - (p - 0.6745609927397498)/(p - 0.26443075756713086)^2)*log(-(p - 0.6745609927397498)/(p - 0.26443075756713086) + 1) - (-1.89085416764752/(p - 0.9314978256797797) - (-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797)^2)*log((-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797) + 1) + (p - 1)*sqrt((p - 0.9314978256797797)/(p - 1))*((p - 0.9314978256797797)/(p - 1)^2 - 1/(p - 1))/(p - 0.9314978256797797) + ((p - 0.9314978256797797)/(p - 1)^2 - 1/(p - 1))*log(sqrt((p - 0.9314978256797797)/(p - 1)))/sqrt((p - 0.9314978256797797)/(p - 1)) - ((p - 0.9314978256797797)/(p - 1)^2 - 1/(p - 1))*log(-sqrt((p - 0.9314978256797797)/(p - 1)) + 1)/sqrt((p - 0.9314978256797797)/(p - 1)) - ((p - 0.9314978256797797)/(p - 1)^2 - 1/(p - 1))/sqrt((p - 0.9314978256797797)/(p - 1)) - log((p - 0.6745609927397498)/(p - 0.26443075756713086))/(p - 0.26443075756713086) + (p - 0.6745609927397498)*log((p - 0.6745609927397498)/(p - 0.26443075756713086))/(p - 0.26443075756713086)^2 - 1.89085416764752*log(-(-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797))/(p - 0.9314978256797797) - (-1.89085416764752*p + 1.89085416764752)*log(-(-1.89085416764752*p + 1.89085416764752)/(p - 0.9314978256797797))/(p - 0.9314978256797797)^2 - log(p) + log(-p + 1) 0.8042263314662732 0.734822392913082 + 5.99598422491310*I
(CC(res.x)).real();(CC(res.x)).imag() -HH((CC(res.x)).real()) r(p=(CC(res.x)).real()) s(p=(CC(res.x)).real());c-1+(CC(res.x)).real();w-1+(CC(res.x)).real() v(p=(CC(res.x)).real())
0.804226331466273 0.000000000000000 0.734822392913082 + 5.99598422491310*I 0.806284724551966 0.240211933917692 0.129665338726523 0.539795573899142 2.90858105619189
import numpy from scipy.optimize import minimize_scalar upperb=0;lowerb=1 while lowerb>upperb: w=numpy.random.uniform(0,1) b=numpy.random.uniform(w,1) alph=(1-b)/(1-w);alph a=numpy.random.uniform(alph,1) bet=(1-b-a*(1-w))/(w-b);bet c=numpy.random.uniform(0,1) upperb=a;lowerb=0 upperb=min(bet,upperb) if c<w: lowerb=max(1-c,lowerb) if c>w: upperb=min(1-c,upperb) #p,q,r=var('p,q,r') lowerb;upperb p=var('p') f(p)=(1-p)/(a-p) r(p)=sqrt((a-p)/(1-p)) s(p)=(c-1+p)/(w-1+p) v(p)=(1-b)*(1-p)/(1-w)/(a-p) #H(p,q,r)=-(p*ln(p)+(1-p)*ln(1-p)+r*ln(r)+(1-r)*ln(1-r)+q*ln(q)+(1-q)*ln(1-q)+s*ln(s)+(1-s)*ln(1-s)+v*ln(v)+(1-v)*ln(1-v)+w*ln(w)+(1-w)*ln(1-w)) #g(p,q,r)=q*r*(1-p)+p-a H(p)=-(p*ln(p)+(1-p)*ln(1-p)+2*r*ln(r)+2*(1-r)*ln(1-r)+s*ln(s)+(1-s)*ln(1-s)+v*ln(v)+(1-v)*ln(1-v)+w*ln(w)+(1-w)*ln(1-w)) def HH(x): return -H(x).n() dH=H.derivative();H;dH res = minimize_scalar(HH, bounds=(lowerb,upperb), method='bounded');-HH(real(res.x)) real(res.x);r(real(res.x));s(real(res.x));v(real(res.x));w
0.297557045724947 0.8896413509489796 0 0.6816348100249157 p |--> -p*log(p) + (p - 1)*log(-p + 1) + 2*(sqrt((p - 0.9224793445307975)/(p - 1)) - 1)*log(-sqrt((p - 0.9224793445307975)/(p - 1)) + 1) + ((p - 0.6816348100249157)/(p - 0.7496035254895789) - 1)*log(-(p - 0.6816348100249157)/(p - 0.7496035254895789) + 1) - ((-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975) + 1)*log((-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975) + 1) - 2*sqrt((p - 0.9224793445307975)/(p - 1))*log(sqrt((p - 0.9224793445307975)/(p - 1))) - (p - 0.6816348100249157)*log((p - 0.6816348100249157)/(p - 0.7496035254895789))/(p - 0.7496035254895789) + (-0.297557045724947*p + 0.297557045724947)*log(-(-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975))/(p - 0.9224793445307975) + 0.5627702973569254 p |--> -((p - 0.6816348100249157)/(p - 0.7496035254895789)^2 - 1/(p - 0.7496035254895789))*log(-(p - 0.6816348100249157)/(p - 0.7496035254895789) + 1) - (-0.297557045724947/(p - 0.9224793445307975) - (-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975)^2)*log((-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975) + 1) + (p - 1)*sqrt((p - 0.9224793445307975)/(p - 1))*((p - 0.9224793445307975)/(p - 1)^2 - 1/(p - 1))/(p - 0.9224793445307975) + ((p - 0.9224793445307975)/(p - 1)^2 - 1/(p - 1))*log(sqrt((p - 0.9224793445307975)/(p - 1)))/sqrt((p - 0.9224793445307975)/(p - 1)) - ((p - 0.9224793445307975)/(p - 1)^2 - 1/(p - 1))*log(-sqrt((p - 0.9224793445307975)/(p - 1)) + 1)/sqrt((p - 0.9224793445307975)/(p - 1)) - ((p - 0.9224793445307975)/(p - 1)^2 - 1/(p - 1))/sqrt((p - 0.9224793445307975)/(p - 1)) + (p - 0.6816348100249157)*log((p - 0.6816348100249157)/(p - 0.7496035254895789))/(p - 0.7496035254895789)^2 - log((p - 0.6816348100249157)/(p - 0.7496035254895789))/(p - 0.7496035254895789) - 0.297557045724947*log(-(-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975))/(p - 0.9224793445307975) - (-0.297557045724947*p + 0.297557045724947)*log(-(-0.297557045724947*p + 0.297557045724947)/(p - 0.9224793445307975))/(p - 0.9224793445307975)^2 - log(p) + log(-p + 1) 3.26529298115520 0.6263361845936647 0.8902466151001972 0.4486072712312715 0.37544781054617105
a;alph;bet2 lowerb;upperb;1-c f(real(res.x)) r(p)=sqrt((a-p)/(1-p)) s(p)=(c-1+p)/(w-1+p) v(p)=(1-b)*(1-p)/((1-w)*(a-p)) r(res.x);s(res.x);v(real(res.x)) alph*f(res.x) real(res.x) (a-alph)/(1-alph)
0.9319053692494879 0.385676818484241 0.889155036307603 0.7035370192168051 0.889155036307603 0.7035370192168051 1.8701950469107271 0.7312342900976023 0.18455912519549703 0.7212908756375155 0.7212908756375151 0.853653222225376 0.889155036307603
load('ProbExample3.sage')
status: 0 success: True njev: 24 nfev: 145 fun: -3.030889167879031 x: array([ 0.5027099273301 , 0.757271524632081, 0.75727167030936 ]) message: 'Optimization terminated successfully.' jac: array([ 1.288713842630386, 1.137775987386703, 1.13777768611908 , 0. ]) nit: 24 [0.50270992733009956, 0.75727152463208136, 0.75727167030936016, 0.8205003356389732, 0.8279384203401001, 0.08872309129847011] 4.372648771983155
a;b;c;w;alph;bet -HH(sssoln[0:3])/RR(ln(2)) H(*sssoln[0:3])/RR(ln(2))
0.3105926673392683 0.8448414562493256 0.9901755105095976 0.24950518269147626 0.2067416591990797 0.13091700748502 3.813560014475027 3.813560014475027
load('maxentrocond2.sage')
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0] [0.6810716549906166, 1.0493314940315797, 1.0493314940322065, 5.906386491005833e-14, 0.6658757796947674, 0.13547901061696477] [30.332398899622188, 1.523877932381924, 1.5238779323879013, 29.476361110236198, 1.2200606401016993, 0.5320507309549475] [4.080256120216759, 1.2697477849076275, 1.2697477848766276, 1.9171223706459337, 32.00941275096475, 0.6149581601139393] [30.512180261128126, 1.291455851274243, 1.2914558495380333, 1.5459339845597795, 32.265137319672625, 0.6149581601139393] [31.83839541812106, 1.2914558457877203, 1.2914558550247293, 1.5459339845584634, 31.274589284876154, 0.6149581601139393] status: 8 success: False njev: 6 nfev: 7 fun: (-2.1553717419345126-1.5088982354920233e-13j) x: array([ -1.738756708058453e-14, 7.843935042435221e-01, 7.843935058056881e-01, 1.756743031575382e-01, 1.000000000000031e+00, 6.490709941051962e-01]) message: 'Positive directional derivative for linesearch' jac: array([ 31.83839541812106 , 1.29145584578772 , 1.291455855024729, 1.545933984558463, 31.274589284876154, 0.614958160113939, 0. ]) nit: 10 [0.6132740863129872, 0.935945231252979, 0.7794192258133512, 0.3509290058948038] (0.18252913743534313, 0.5269239169286903) [-1.7387567080584532e-14, 0.78439350424352206, 0.78439350580568812, 0.17567430315753815, 1.0000000000000306, 0.6490709941051962] (3.10954412336+2.17688000155e-13j)
load('lsqcond.sage')
status: 0 success: True njev: 9 nfev: 10 fun: 1.243757753482089e-07 x: array([ 2.895763140240498e-04, 9.403408601794696e-01, 9.403408601794745e-01, 2.934528224617628e-02, 9.522729556165573e-01, 1.639422264780529e-01]) message: 'Optimization terminated successfully.' jac: array([-0.000615658658397, -0.000475308599404, -0.000475308599404, -0.000440445537553, 0.000363730947264, -0.001267837307625, 0. ]) nit: 9 (0.029282285743199472, 0.8807101722746475) [0.8842032510963583, 0.9755191080108951, 0.29608859277626376, 0.8360307731369744] [0.88427445440691255, 0.97518457004653158, 0.29600697664106301, 0.8360577735219471] [0.00028957631402404976, 0.94034086017946961, 0.94034086017947449, 0.029345282246176281, 0.95227295561655734, 0.16394222647805293] 1.76741953191
[str(c) for c in constraint] str2='])(*s))},' str1='{\'type\': \'eq\', \'fun\': lambda s: ((constraint[' mystr='[' for ii in range(4): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' mystr
['-x0*x1*x2 + x1*x2 + x0 - 0.961667339522', 'x0*x3 + x3*x5 - x0 - x3 + 0.490998333178', 'x1*x2*x4*x5 - x1*x2*x4 + 0.533328983816', '-x5 + 0.577912416122'] "[{'type': 'eq', 'fun': lambda s: ((constraint[0])(*s))},{'type': 'eq', 'fun': lambda s: ((constraint[1])(*s))},{'type': 'eq', 'fun': lambda s: ((constraint[2])(*s))},{'type': 'eq', 'fun': lambda s: ((constraint[3])(*s))},]"
HH(numpy.array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5]))
-0.69314718055994529
cons
({'fun': <function <lambda> at 0x7fd6f8d837d0>, 'type': 'eq'}, {'fun': <function <lambda> at 0x7fd6f8d93aa0>, 'type': 'eq'}, {'fun': <function <lambda> at 0x7fd6f8f1fc08>, 'type': 'eq'}, {'fun': <function <lambda> at 0x7fd6f8db05f0>, 'type': 'eq'})
bnds = [(0.0, 1.0) for ii in range(nn)];tuple(bnds)
((0.000000000000000, 1.00000000000000), (0.000000000000000, 1.00000000000000), (0.000000000000000, 1.00000000000000), (0.000000000000000, 1.00000000000000), (0.000000000000000, 1.00000000000000), (0.000000000000000, 1.00000000000000))
print(probs);print(alph,bet)
[0.8394785302888622, 0.9845006314798125, 0.8893632971327695, 0.9802641807336469] (0.785342037794793, 0.25219885597495895)
({'type': 'eq', 'fun': lambda s: ((constraint[0])(*s))}).parent()
Error in lines 1-1 Traceback (most recent call last): File "/projects/5511fe15-8085-4d1d-bdc7-c6bf6c99e693/.sagemathcloud/sage_server.py", line 865, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> AttributeError: 'dict' object has no attribute 'parent'
mytuple=([],[]);mytuple[0]={'type': 'eq', 'fun': lambda s: ((constraint[0])(*s))};mytuple
Error in lines 1-1 Traceback (most recent call last): File "/projects/5511fe15-8085-4d1d-bdc7-c6bf6c99e693/.sagemathcloud/sage_server.py", line 865, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> TypeError: 'tuple' object does not support item assignment
load('PuzzlePart3c.sage')
objects = 12 types = 3 rel_classes = 4 144 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X143 = R[11,11] status: 0 success: True njev: 44 nfev: 87 fun: 1.5316938987775146 x: array([ 1.0001e+00, -1.9717e-06, -9.6458e-06, -2.2948e-06, -6.8672e-05, 1.6781e-02, 4.1152e-06, -2.2948e-06, -7.0747e-07, -1.4493e-05, 1.2391e-05, 1.5000e+00, 2.2125e-05, 1.2146e+00, -6.8904e-06, -2.3095e-04, 3.0879e-05, -9.7554e-04, 1.2105e-03, -2.3095e-04, -5.1737e-04, 3.3887e-02, 4.9388e-04, -7.9805e-07, 2.9779e-05, 3.3121e-05, 9.9994e-01, -2.9396e-05, 3.8770e-01, 4.1545e-03, 1.1854e-06, -2.9396e-05, 9.2111e-02, 7.3707e-05, 9.8850e-02, -1.3582e-04, 2.0530e-05, 2.9119e-04, 5.1019e-05, 1.2217e+00, 3.2517e-05, -9.5508e-04, 2.9872e-06, -2.4156e-04, -4.4501e-04, 2.0009e-06, 4.7806e-04, -1.2011e-06, 9.8009e-05, -9.1592e-05, -5.0000e-01, -9.3620e-05, 1.0000e+00, 3.4662e-02, 1.0359e-03, 3.2517e-05, 2.8622e-01, 3.3274e-02, 3.9077e-01, -5.7102e-06, -1.7392e-02, 1.0752e-03, -4.1831e-03, 1.0458e-03, -3.7381e-02, 1.0009e+00, 1.2772e-03, -9.5508e-04, 1.2830e-03, 3.5556e-02, 2.8714e-01, 1.1816e-01, 6.1287e-05, -1.1669e-03, 3.0850e-05, 2.2795e-05, -9.5020e-04, -1.2904e-03, 9.9997e-01, 2.9872e-06, -1.1079e-03, 1.5000e+00, -6.1033e-05, 1.1172e-05, 2.0530e-05, 2.9119e-04, 5.1019e-05, 2.9382e-04, -9.3620e-05, 1.0458e-03, 2.2795e-05, 1.2217e+00, -4.4501e-04, 2.0009e-06, 4.7806e-04, -1.2011e-06, 1.7785e-05, 5.9262e-04, -1.1271e-01, 5.0535e-04, -5.0000e-01, -1.2042e-03, 1.1221e-03, 5.0535e-04, 1.0004e+00, 2.8233e-05, 5.7010e-02, -2.5549e-06, -5.2444e-05, -1.0521e-01, -4.0963e-05, 2.4711e-05, -3.5610e-02, -3.8306e-02, 8.4054e-01, 2.4711e-05, 5.3888e-06, 9.9999e-01, 1.1447e-04, -1.9285e-05, 1.2744e-05, -5.7451e-04, -1.2296e-01, -5.6028e-04, -5.0000e-01, -5.0000e-01, 1.0928e-04, -5.6028e-04, -6.4258e-02, -7.5014e-05, 1.0001e+00, 4.6635e-04, 8.1602e-01, 1.9889e-05, 9.1768e-05, 1.8160e-05, 1.0880e-04, -1.5475e-01, -3.3414e-05, 1.8160e-05, 1.5590e-05, 6.1566e-05, -4.4166e-04, 1.0000e+00]) message: 'Optimization terminated successfully.' jac: array([ -5.9360e-04, 7.2248e-05, -6.2825e-05, 8.5252e-05, -7.4684e-04, 1.4554e-06, 1.6541e-04, 8.5252e-05, 5.9863e-05, 8.2293e-06, -1.0529e-05, -1.1651e-01, 4.5839e-05, 4.9395e-04, -1.8607e-04, -2.7614e-04, 3.3558e-04, -1.1430e-04, 4.9304e-05, -2.7614e-04, -1.9408e-04, -3.3071e-04, 1.9762e-04, 6.9935e-05, 1.0032e-05, -1.8514e-04, -2.8633e-05, -1.3237e-04, 1.2480e-04, 3.7091e-05, -4.6183e-05, -1.3237e-04, -2.0696e-04, -3.3667e-05, -8.3794e-04, -9.3593e-05, 5.1314e-05, -1.9652e-04, -1.2661e-04, 8.6773e-07, 3.3429e-04, -2.8402e-05, -2.0729e-05, -1.5120e-04, -7.1591e-05, -2.8476e-06, 2.1600e-04, 8.5584e-05, -8.4107e-05, 2.1347e-04, 1.2371e-01, 2.0750e-04, -2.5502e-05, 3.5990e-04, -3.5273e-04, 3.3429e-04, -3.4487e-04, 1.4043e-05, 1.0907e-05, -5.4126e-04, -4.1986e-05, 1.8433e-04, -1.7020e-06, 2.5931e-04, -9.1360e-05, 2.2519e-04, 8.8273e-05, -2.8402e-05, 7.4858e-05, 5.8668e-06, 2.9497e-04, -3.1172e-04, 1.5352e-04, 3.2408e-05, 2.1201e-07, 9.9455e-06, -6.8797e-05, 7.2831e-05, 1.8292e-04, -2.0729e-05, 2.1398e-04, -6.5910e-02, -3.5267e-04, -1.2236e-04, 5.1314e-05, -1.9652e-04, -1.2661e-04, -7.4435e-05, 2.0750e-04, 2.5931e-04, 9.9455e-06, 8.6773e-07, -7.1591e-05, -2.8476e-06, 2.1600e-04, 8.5584e-05, 3.8065e-05, -1.5459e-05, 2.5340e-04, 8.0236e-05, 6.1819e-02, 3.3463e-04, 1.1019e-04, 8.0236e-05, 1.8161e-04, 4.5366e-05, -2.0841e-05, 9.4263e-05, -1.7917e-04, -3.9731e-04, 4.0247e-06, 1.5052e-05, -9.3661e-07, 4.7392e-05, 3.4683e-04, 1.5052e-05, 8.7620e-05, -2.4459e-05, -1.2706e-04, -3.3353e-04, 7.7125e-06, -1.7982e-04, 6.9213e-05, -1.5716e-04, 1.2302e-01, 6.3319e-02, -1.7706e-05, -1.5716e-04, 2.3332e-04, -2.6579e-05, 9.0811e-05, 2.0269e-05, -1.1019e-04, 4.0043e-05, 1.2269e-04, 4.6123e-05, -6.2189e-05, -1.9897e-04, -1.9517e-04, 4.6123e-05, 4.6058e-05, 7.5155e-05, 1.8115e-05, -2.3513e-04, 0.0000e+00]) nit: 44 [ 1.0 -2.0e-6 -9.5e-6 -2.3e-6 -0.000069 0.017 4.1e-6 -2.3e-6 -7.2e-7 -0.000014 0.000012 1.5] [ 0.000022 1.2 -6.9e-6 -0.00023 0.000031 -0.00098 0.0012 -0.00023 -0.00052 0.033 0.00049 -8.0e-7] [ 0.000030 0.000032 1.0 -0.000030 0.39 0.0042 1.2e-6 -0.000030 0.094 0.000072 0.098 -0.00014] [ 0.000021 0.00029 0.000051 1.2 0.000032 -0.00095 3.0e-6 -0.00024 -0.00044 2.0e-6 0.00047 -1.2e-6] [ 0.000099 -0.000092 -0.50 -0.000095 1.0 0.035 0.0010 0.000032 0.28 0.033 0.39 -5.7e-6] [ -0.018 0.0011 -0.0042 0.0010 -0.037 1.0 0.0013 -0.00095 0.0013 0.035 0.28 0.12] [ 0.000061 -0.0012 0.000031 0.000023 -0.00095 -0.0013 1.0 3.0e-6 -0.0011 1.5 -0.000061 0.000011] [ 0.000021 0.00029 0.000051 0.00029 -0.000095 0.0010 0.000023 1.2 -0.00044 2.0e-6 0.00047 -1.2e-6] [ 0.000018 0.00058 -0.11 0.00052 -0.50 -0.0012 0.0011 0.00052 1.0 0.000029 0.057 -2.5e-6] [-0.000051 -0.11 -0.000040 0.000025 -0.035 -0.039 0.84 0.000025 5.5e-6 1.0 0.00011 -0.000019] [ 0.000013 -0.00058 -0.12 -0.00055 -0.50 -0.50 0.00011 -0.00055 -0.062 -0.000076 1.0 0.00047] [ 0.81 0.000020 0.000092 0.000018 0.00011 -0.16 -0.000034 0.000018 0.000015 0.000061 -0.00044 1.0]
def HH(s): hh=0 for ii in range(len(x)): hh=hh+(s[ii]*ln(s[ii])+(1-s[ii])*ln(1-s[ii])) return hh print -HH(sssoln) A=matrix(RR, objects, objects, sssoln);A
(-2.77391461191+11.8927219896j) [ 1.00000505353045 0.0000294135582362149 0.0000241545836365197 0.0000245873648328289 0.0000316206048297949 0.0168192521136186 0.0000119265447893070 0.0000245812207092187 8.72812517039096e-6 -0.0000237672129465480 -6.56734280879684e-8 1.50000000000000] [-0.0000402395747841601 0.999962216901920 0.000313089918314325 -0.0194268379672321 0.000168904589561207 -0.000558509068753074 0.00130889605188983 -0.0194264199223155 0.0000712784182045985 0.0344918273515964 -0.000535573832509702 0.0000323899746612603] [-0.0000165823955525974 -0.000308548378172608 0.999850303196343 0.000330234938993502 0.387756548090587 0.00398867428607788 0.0000165558199145618 0.000330303177814151 0.0967807295559178 0.0000867864539594795 0.100386199945243 0.0000517917365388226] [-0.0000375183526004767 0.0187116810333552 -0.000321241831785089 0.999925704032538 0.000172150508908699 -0.000598405562579725 -0.0000235499658504104 -0.0276078596451742 0.000114789515418590 -0.0000279512603507040 -0.000545040927109923 0.0000255540468999237] [-0.0000484811620554004 -0.000281138465006914 -0.500000000000000 -0.000262715204891630 1.00003757696617 0.0341080679244395 0.00104588746658500 0.000172025347353270 0.286277002996331 0.0333450751960850 0.390724093845325 -0.0000363900065136603] [ -0.0173809934364802 0.000575026076632618 -0.00405480885737827 0.000611730561381510 -0.0363926926429300 1.00005970031797 0.00126657749040093 -0.000598365239911712 0.00261461094827320 0.0356927575926667 0.287161911641583 0.118160705599398] [-0.0000598755600456176 -0.00129722223504022 -0.0000333944070553237 -0.0000427977028527267 -0.00103182417988011 -0.00133384071626486 0.999968383993821 -0.0000235262091785784 -0.00103518668196755 1.50000000000000 0.0000262732984794275 -0.0000240017599925289] [-0.0000375248654537204 0.0187115093028608 -0.000321362552475939 0.0261195664020825 -0.000262821081020772 0.000611658835179675 -0.0000428128710476350 0.999925714803257 0.000115018151642744 -0.0000279020766793224 -0.000544995475436077 0.0000255516416352003] [-0.0000445720464987873 -0.0000731155022260420 -0.120344009894748 -0.000134339856041769 -0.500000000000000 -0.00267834155531896 0.00104024484646687 -0.000134545311472071 1.00005618915125 0.0000369860261644148 0.0581549591757848 0.0000247195940996991] [ 0.0000710958630431933 -0.105860588605843 -0.000103028368203521 -0.0000512574461475913 -0.0356773843243856 -0.0384397370194799 0.840553528779256 -0.0000512424937901841 -0.0000613610881914837 0.999976544875759 0.0000628417450175984 0.0000265717211743610] [-0.0000621502293826759 0.000623323445449488 -0.125549841679886 0.000605709737020917 -0.500000000000000 -0.500000000000000 0.000124611794046541 0.000605734798482475 -0.0658511655422306 -0.000143181994983768 1.00003434670099 0.000482834202673383] [ 0.816021778761429 -0.0000453811564374448 -0.0000467536032285355 -0.0000435816765517250 0.0000242284647840227 -0.154591986220805 0.0000631047966890037 -0.0000435786369207985 -0.0000515067799758254 -0.000109404376970598 -0.000513275881541789 0.999986096956555]
random.random()
Error in lines 1-1 Traceback (most recent call last): File "/projects/5511fe15-8085-4d1d-bdc7-c6bf6c99e693/.sagemathcloud/sage_server.py", line 865, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> AttributeError: 'function' object has no attribute 'random'
load('experiment.sage')
status: 0 success: True njev: 10 nfev: 15 fun: 7.0281352245113237e-06 x: array([ 0.21830376984273 , 0.603544858332129, 0.603544858332123, 0.318900143071508, 0.675670242292849, 0.200156723226423]) message: 'Optimization terminated successfully.' jac: array([-0.000508377913666, -0.001257347101805, -0.001257347101803, 0.000906919021823, -0.000328329045201, -0.001392108189744, 0. ]) nit: 10 [0.22888799935245807, 0.7139182393034512, 0.5025327555814896, 0.29613455548558176, 0.7073328092453715, 0.21184593565047494] [0.21830376984272995, 0.60354485833212901, 0.60354485833212268, 0.31890014307150832, 0.67567024229284867, 0.20015672322642333] [0.50304943838387151, 0.59624319819528859, 0.80313940209582801, 0.79984327677357669] 5.22918720915
results[0:10,:]
[1 0 0 1] [1 0 1 1] [1 0 0 1] [1 0 1 1] [1 0 1 1] [0 0 1 1] [1 0 1 1] [1 0 1 1] [1 0 1 1] [1 0 0 1]
obsrvprob;obsrvprobRR;beq;probbeq-obsrvprob;AgivenB;AgivenNotB
[877/1000 17/200 77/125 98/125] [ 114/125 3/25 1/10 49/1000] [ 1 759/1000 739/1000 319/500] [ 124/125 97/100 1 899/1000] [ 0.877000000000000 0.0850000000000000 0.616000000000000 0.784000000000000] [ 0.912000000000000 0.120000000000000 0.100000000000000 0.0490000000000000] [ 1.00000000000000 0.759000000000000 0.739000000000000 0.638000000000000] [ 0.992000000000000 0.970000000000000 1.00000000000000 0.899000000000000] [ X0*X1*X2 + X1*X2 + X0 X0*X1*X2*X3*X5 + X1*X2*X3*X5 + X0*X1*X2*X3 + X1*X2*X3 + X0*X3*X5 + X0*X1*X2 + X1*X2 X1*X2*X4*X5 + X1*X2*X4 + X0*X1*X2 + X1*X2 + X0 X0*X1*X2*X5 + X1*X2*X5 + X0*X1*X2 + X1*X2 + X0*X5 + X0] [ X0*X1*X2*X3*X5 + X1*X2*X3*X5 + X0*X1*X2*X3 + X1*X2*X3 + X0*X3*X5 + X3*X5 + X0*X3 + X3 + 1 X3*X5 + X0*X3 + X3 + X0 + 1 X0*X1*X2*X3*X4*X5 + X1*X2*X3*X4*X5 + X0*X1*X2*X4*X5 + X0*X1*X2*X3*X4 + X1*X2*X4*X5 + X1*X2*X3*X4 + X0*X1*X2*X4 + X1*X2*X4 + X3*X5 + X0*X3 + X3 + X0 + 1 X0*X3*X5 + X3*X5 + X0*X5 + X0*X3 + X5 + X3 + X0 + 1] [ 1 X0*X1*X2*X3*X4*X5 + X1*X2*X3*X4*X5 + X0*X1*X2*X4*X5 + X0*X1*X2*X3*X4 + X1*X2*X3*X4 + X0*X1*X2*X4 + 1 X1*X2*X4*X5 + X1*X2*X4 + 1 X1*X2*X4*X5 + X1*X2*X4 + X5 + 1] [ X0*X1*X2*X5 + X1*X2*X5 + X0*X5 + X5 + 1 X0*X3*X5 + X0*X5 + 1 1 X5 + 1] [ -x0*x1*x2 + x1*x2 + x0 - 877/1000 -x0*x1*x2*x3*x5 + x1*x2*x3*x5 + x0*x1*x2*x3 + x0*x3*x5 - x1*x2*x3 - x0*x1*x2 + x1*x2 - 17/200 x1*x2*x4*x5 - x1*x2*x4 - x0*x1*x2 + x1*x2 + x0 - 77/125 x0*x1*x2*x5 - x1*x2*x5 - x0*x1*x2 - x0*x5 + x1*x2 + x0 - 98/125] [ x0*x1*x2*x3*x5 - x1*x2*x3*x5 - x0*x1*x2*x3 - x0*x3*x5 + x1*x2*x3 + x3*x5 + x0*x3 - x3 + 11/125 x3*x5 + x0*x3 - x3 - x0 + 22/25 x0*x1*x2*x3*x4*x5 - x1*x2*x3*x4*x5 - x0*x1*x2*x4*x5 - x0*x1*x2*x3*x4 + x1*x2*x4*x5 + x1*x2*x3*x4 + x0*x1*x2*x4 - x1*x2*x4 + x3*x5 + x0*x3 - x3 - x0 + 9/10 -x0*x3*x5 + x3*x5 + x0*x5 + x0*x3 - x5 - x3 - x0 + 951/1000] [ 0 -x0*x1*x2*x3*x4*x5 + x1*x2*x3*x4*x5 + x0*x1*x2*x4*x5 + x0*x1*x2*x3*x4 - x1*x2*x3*x4 - x0*x1*x2*x4 + 241/1000 x1*x2*x4*x5 - x1*x2*x4 + 261/1000 x1*x2*x4*x5 - x1*x2*x4 - x5 + 181/500] [ -x0*x1*x2*x5 + x1*x2*x5 + x0*x5 - x5 + 1/125 x0*x3*x5 - x0*x5 + 3/100 0 -x5 + 101/1000] [ 1 17/24 616/739 784/899] [ 85/877 1 100/739 49/899] [616/877 5/6 1 22/31] [784/877 49/120 638/739 1] [ 0 9/10 1 93/101] [ 35/123 0 20/261 71/101] [ 1 639/880 0 1] [115/123 85/88 1 0]
Prob(X[0]).parent()
Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5 over Rational Field
U=CoordinatePatch(x);F=DifferentialForms(U);form1=DifferentialForm(F,0,Prob(prems[0]));Prob(prems[0]);form1.diff()
-x0*x1*x2 + x1*x2 + x0 (-x1*x2 + 1)*dx0 + (-x0*x2 + x2)*dx1 + (-x0*x1 + x1)*dx2
len(constraint);constraint
14 [x3*x5 + x0*x3 - x3 - x0 + 37/40, -x5 + 31/500, -x0*x1*x2*x5 + x1*x2*x5 + x0*x5 - x5 + 11/1000, -x0*x1*x2 + x1*x2 + x0 - 87/100, x0*x3*x5 - x0*x5 + 1/125, x1*x2*x4*x5 - x1*x2*x4 - x5 + 91/500, x0*x1*x2*x5 - x1*x2*x5 - x0*x1*x2 - x0*x5 + x1*x2 + x0 - 819/1000, x1*x2*x4*x5 - x1*x2*x4 - x0*x1*x2 + x1*x2 + x0 - 3/4, -x0*x3*x5 + x3*x5 + x0*x5 + x0*x3 - x5 - x3 - x0 + 979/1000, x0*x1*x2*x3*x5 - x1*x2*x3*x5 - x0*x1*x2*x3 - x0*x3*x5 + x1*x2*x3 + x3*x5 + x0*x3 - x3 + 1/10, -x0*x1*x2*x3*x4*x5 + x1*x2*x3*x4*x5 + x0*x1*x2*x4*x5 + x0*x1*x2*x3*x4 - x1*x2*x3*x4 - x0*x1*x2*x4 + 119/1000, -x0*x1*x2*x3*x5 + x1*x2*x3*x5 + x0*x1*x2*x3 + x0*x3*x5 - x1*x2*x3 - x0*x1*x2 + x1*x2 - 9/200, x0*x1*x2*x3*x4*x5 - x1*x2*x3*x4*x5 - x0*x1*x2*x4*x5 - x0*x1*x2*x3*x4 + x1*x2*x4*x5 + x1*x2*x3*x4 + x0*x1*x2*x4 - x1*x2*x4 + x3*x5 + x0*x3 - x3 - x0 + 463/500, x1*x2*x4*x5 - x1*x2*x4 + 3/25]
M=matrix(QQ,3,3) M[0,0]=1;M[0,1]=1;M[1,0]=1;M[1,2]=1;M[2,0]=1;M[2,1]=1;M[2,2]=1 M
[1 1 0] [1 0 1] [1 1 1]
M=matrix(QQ,3,3) M[0,0]=1;M[0,1]=1;M[1,0]=1;M[1,2]=1;M[2,0]=1;M[2,1]=1;M[2,2]=1 M Minv=M.inverse() Minv var('a','b','x0','x1','x2','x3') V=vector([a,b,1-x3]) X=Minv*V X x0=X[0];x1=X[1];x2=X[2] 1-(x0+x1+x2) x0+x1+x2+x3
[ 1 1 -1] [ 0 -1 1] [-1 0 1] (a, b, x0, x1, x2, x3) (a + b + x3 - 1, -b - x3 + 1, -a - x3 + 1) 1
1-(x0+x1+x2) 1-x3 x0+x1+x2+x3
x3 -x3 + 1 1
M2=matrix(QQ,7,7) M2[0,:]=[[1,1,1,1,0,0,0]] M2[1,:]=[[1,1,0,0,1,1,0]] M2[2,:]=[[1,0,1,0,1,0,1]] M2[3,:]=[[1,1,0,0,0,0,0]] M2[4,:]=[[1,0,0,0,1,0,0]] M2[5,:]=[[1,0,1,0,0,0,0]] M2[6,:]=[[1,1,1,1,1,1,1]] M2 var('A','B','C','AB','BC','CA','X000','X001','X010','X011','X100','X101','X110','X111') V2=vector([A,B,C,AB,BC,CA,1-X111]) M2inv=M2.inverse() M2inv X2=M2inv*V2 X2 (X000, X001, X010, X011, X100, X101, X110)=X2 X000+X001+X010+X011+X100+X101+X110+X111 #are M,M2 totally unimodular etc?
[1 1 1 1 0 0 0] [1 1 0 0 1 1 0] [1 0 1 0 1 0 1] [1 1 0 0 0 0 0] [1 0 0 0 1 0 0] [1 0 1 0 0 0 0] [1 1 1 1 1 1 1] (A, B, C, AB, BC, CA, X000, X001, X010, X011, X100, X101, X110, X111) [-1 -1 -1 1 1 1 1] [ 1 1 1 0 -1 -1 -1] [ 1 1 1 -1 -1 0 -1] [ 0 -1 -1 0 1 0 1] [ 1 1 1 -1 0 -1 -1] [-1 0 -1 0 0 1 1] [-1 -1 0 1 0 0 1] (-A + AB - B + BC - C + CA - X111 + 1, A + B - BC + C - CA + X111 - 1, A - AB + B - BC + C + X111 - 1, -B + BC - C - X111 + 1, A - AB + B + C - CA + X111 - 1, -A - C + CA - X111 + 1, -A + AB - B - X111 + 1) 1
MA = lambda n: [MA(i) for i in range(0,n)] MA3 = MA(3) MA3
[[], [[]], [[], [[]]]]
[0 for i in range(2)]
[0, 0]
def MA(s): #s=s-1 if s == 0: X = 0 else: X = [MA(s-1) for ii in range(2)] return X MA(3)
[[[0, 0], [0, 0]], [[0, 0], [0, 0]]]
MA3=MA(3) MA3[1][0][1]
0
X=['X'+Integer(i).binary() for i in range(2^3)];X
['X0', 'X1', 'X10', 'X11', 'X100', 'X101', 'X110', 'X111']
nn=3;bnn=2**nn X=['X'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];X Y=['Y'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];Y MPR=PolynomialRing(QQ,X+Y);MPR;MPR.gens() XX=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'X')]];XX #these are the vertices of the hypercube YY=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'Y')]];YY sum([XX[k] for k in [i for i, j in enumerate(XX) if (str(j)[1]=='1')]]) IY=[[i for i,j in enumerate(str(YYY)) if j=='1'] for YYY in YY];IY AND = lambda A, B: A*B FA = lambda mylist: 1 if not mylist else Integer(reduce(AND, mylist)) MM = matrix([[Integer(FA([str(XXX)[i] == '1' for i in iy])) for XXX in XX] for iy in IY]);MM MMinv = MM.inverse() # is MM totally unimodular? Integer matrix with integer inverse det = +/- 1 #vector(YY)=MM*vector(XX) YY[0]-1 mylist=list(MM*vector(XX)-vector(YY));mylist.append((YY[0]-1));mylist
['X000', 'X001', 'X010', 'X011', 'X100', 'X101', 'X110', 'X111'] ['Y000', 'Y001', 'Y010', 'Y011', 'Y100', 'Y101', 'Y110', 'Y111'] Multivariate Polynomial Ring in X000, X001, X010, X011, X100, X101, X110, X111, Y000, Y001, Y010, Y011, Y100, Y101, Y110, Y111 over Rational Field (X000, X001, X010, X011, X100, X101, X110, X111, Y000, Y001, Y010, Y011, Y100, Y101, Y110, Y111) [X000, X001, X010, X011, X100, X101, X110, X111] [Y000, Y001, Y010, Y011, Y100, Y101, Y110, Y111] X100 + X101 + X110 + X111 [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]] [1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1] Y000 - 1 [X000 + X001 + X010 + X011 + X100 + X101 + X110 + X111 - Y000, X001 + X011 + X101 + X111 - Y001, X010 + X011 + X110 + X111 - Y010, X011 + X111 - Y011, X100 + X101 + X110 + X111 - Y100, X101 + X111 - Y101, X110 + X111 - Y110, X111 - Y111, Y000 - 1]
sum(MPR.gens()[0:8]) mylist2=[QQ(normalvariate(0, 1)^2) for i in range(bnn)];mylistsum=sum(mylist2);mylist2=[ml2/mylistsum for ml2 in mylist2];mylist2 mylist2=list(vector(XX)-vector(mylist2));mylist2 sum(mylist2)
X000 + X001 + X010 + X011 + X100 + X101 + X110 + X111 [381787114317400647773823943513260629879301845499372396616490400/8725665956006962478592565209181526160335864496531258106880724971, 232163584823496079382773089712111108470447233228300567029189500/8725665956006962478592565209181526160335864496531258106880724971, 543916889439807816287150797336804717505999537515275045912066575/8725665956006962478592565209181526160335864496531258106880724971, 2506952347161838936679487280543154047018627230644834360232713616/8725665956006962478592565209181526160335864496531258106880724971, 3527286953466432831650864582900938289439518478561429445010825200/8725665956006962478592565209181526160335864496531258106880724971, 137484553196327889352991572165687286152339866711511087062800/8725665956006962478592565209181526160335864496531258106880724971, 820903274039015583390412988259578687813263056954309461246431680/8725665956006962478592565209181526160335864496531258106880724971, 712518308205774255538699535343512992922554774261025319745945200/8725665956006962478592565209181526160335864496531258106880724971] [X000 - 381787114317400647773823943513260629879301845499372396616490400/8725665956006962478592565209181526160335864496531258106880724971, X001 - 232163584823496079382773089712111108470447233228300567029189500/8725665956006962478592565209181526160335864496531258106880724971, X010 - 543916889439807816287150797336804717505999537515275045912066575/8725665956006962478592565209181526160335864496531258106880724971, X011 - 2506952347161838936679487280543154047018627230644834360232713616/8725665956006962478592565209181526160335864496531258106880724971, X100 - 3527286953466432831650864582900938289439518478561429445010825200/8725665956006962478592565209181526160335864496531258106880724971, X101 - 137484553196327889352991572165687286152339866711511087062800/8725665956006962478592565209181526160335864496531258106880724971, X110 - 820903274039015583390412988259578687813263056954309461246431680/8725665956006962478592565209181526160335864496531258106880724971, X111 - 712518308205774255538699535343512992922554774261025319745945200/8725665956006962478592565209181526160335864496531258106880724971] X000 + X001 + X010 + X011 + X100 + X101 + X110 + X111 - 1
#probability calculus for non independent generators (nn=3 in this case) modeled on unit nn-cube #vertices are atoms 1-topes, the cube itself is 1 the n-tope, set (n-1)-topes is generator or its negation #could just assign probabilities to the vertices non-negative and sum to one for empirical distribution nn=3;bnn=2**nn x=['x'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];x y=['y'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];y MPR=PolynomialRing(QQ,x+y);MPR;MPR.gens() xx=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'x')]];xx # these correspond to the vertices of the hypercube ie 0-polytopes --- 0-cube yy=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'y')]];yy # these correspond to certain k-polytopes YYY[0,0,0] = 1 is nn-polytope --- nn-cube # the null-polytope is the 0 elt in the boolean poly ring --- 0-cube are vertices, edges are 1-cubes, faces are 2-cubes sum([xx[k] for k in [i for i, j in enumerate(xx) if (str(j)[1]=='1')]]) iy=[[i for i,j in enumerate(str(yyy)) if j=='1'] for yyy in yy];iy AND = lambda A, B: A*B FA = lambda mylist: 1 if not mylist else Integer(reduce(AND, mylist)) MM = matrix([[Integer(FA([str(xxx)[i] == '1' for i in iyy])) for xxx in xx] for iyy in iy]);MM #need to add a row of 1's, roughly yy = MM*xx y000=1 then 1-x000 MM[row 1's]*<x001,x010,...,x111> gotta check this #Prob(A*~B) = Prob(A*(1+B)) = Prob(A+A*B)=Prob(A)-Prob(A*B) MMinv = MM.inverse() # well almost, is MM totally unimodular? Integer matrix with integer inverse det = +/- 1 #yy[0]-1 #MM*vector(xx)-vector(yy) mylist=list(MM*vector(xx)-vector(yy));mylist.append((yy[0]-1));mylist #euler characteristic? |0-polytopes|-|1-polytopes|+|2-polytopes|-|3-polytopes|+...=what mylist2=[QQ(normalvariate(0, 1)^2) for i in range(bnn)] mylistsum=sum(mylist2) mylist2=[ml2/mylistsum for ml2 in mylist2] mylist3=[RR(w) for w in mylist2] mylist2=list(vector(xx)-vector(mylist2));mylist2 #just assign rational probabilities to the X variables sum(mylist2) # Y000 = Prob(1),Y100=Prob(A),Y010=Prob(B),Y001=Prob(C),Y110=Prob(A*B),Y011=Prob(B*C),Y101=Prob(C*A),Y111=Prob(A*B*C) # X000 = Prob((1+A)*(1+B)*(1+C)),X100=Prob(A*(1+B)*(1+C)),X010=Prob((1+A)*B*(1+C)),X001=Prob((1+A)*(1+B)*C),X110=Prob(A*B*(1+C)),X011=Prob((1+A)*B*C),X101=Prob(A*(1+B)*C),X111=Prob(A*B*C) MMinv vyy=vector(yy);vyy[0]=1 mylist4 = list(MMinv*vyy-vector(xx));mylist4 mylist3
['x000', 'x001', 'x010', 'x011', 'x100', 'x101', 'x110', 'x111'] ['y000', 'y001', 'y010', 'y011', 'y100', 'y101', 'y110', 'y111'] Multivariate Polynomial Ring in x000, x001, x010, x011, x100, x101, x110, x111, y000, y001, y010, y011, y100, y101, y110, y111 over Rational Field (x000, x001, x010, x011, x100, x101, x110, x111, y000, y001, y010, y011, y100, y101, y110, y111) [x000, x001, x010, x011, x100, x101, x110, x111] [y000, y001, y010, y011, y100, y101, y110, y111] x100 + x101 + x110 + x111 [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]] [1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1] [x000 + x001 + x010 + x011 + x100 + x101 + x110 + x111 - y000, x001 + x011 + x101 + x111 - y001, x010 + x011 + x110 + x111 - y010, x011 + x111 - y011, x100 + x101 + x110 + x111 - y100, x101 + x111 - y101, x110 + x111 - y110, x111 - y111, y000 - 1] [x000 - 2240669592224312079831168545282847992929641276763129480885787775/519640263466496508854748438273454045229306193415468193480738399453, x001 - 13191366174056316904896187780052819787754029939948873337229413305/519640263466496508854748438273454045229306193415468193480738399453, x010 - 86677927903400614252813281026458229997864266859572424586267063850/519640263466496508854748438273454045229306193415468193480738399453, x011 - 1750725016739661743831280463032223604433036987183776817085520625/519640263466496508854748438273454045229306193415468193480738399453, x100 - 165221027734534803411153364206961724578407508733854877958389988555/519640263466496508854748438273454045229306193415468193480738399453, x101 - 49294735052476700508452567862861521215181176755020336859005748510/519640263466496508854748438273454045229306193415468193480738399453, x110 - 641027644290642124172951503672072844493761451659579229236359938/519640263466496508854748438273454045229306193415468193480738399453, x111 - 200622784348773457829597636885132605208242771411465195212638516895/519640263466496508854748438273454045229306193415468193480738399453] x000 + x001 + x010 + x011 + x100 + x101 + x110 + x111 - 1 [ 1 -1 -1 1 -1 1 1 -1] [ 0 1 0 -1 0 -1 0 1] [ 0 0 1 -1 0 0 -1 1] [ 0 0 0 1 0 0 0 -1] [ 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 1] [-x000 - y001 - y010 + y011 - y100 + y101 + y110 - y111 + 1, -x001 + y001 - y011 - y101 + y111, -x010 + y010 - y011 - y110 + y111, -x011 + y011 - y111, -x100 + y100 - y101 - y110 + y111, -x101 + y101 - y111, -x110 + y110 - y111, -x111 + y111] [0.00431196300547788, 0.0253855736390735, 0.166803717874316, 0.00336910963184541, 0.317952705651315, 0.0948631938634504, 0.00123359887475689, 0.386080137459765]
# Y000 = Prob(1),Y100=Prob(A),Y010=Prob(B),Y001=Prob(C),Y110=Prob(A*B),Y011=Prob(B*C),Y101=Prob(C*A),Y111=Prob(A*B*C) # X000 = Prob((1+A)*(1+B)*(1+C)),X100=Prob(A*(1+B)*(1+C)),X010=Prob((1+A)*B*(1+C)),X001=Prob((1+A)*(1+B)*C),X110=Prob(A*B*(1+C)),X011=Prob((1+A)*B*C),X101=Prob(A*(1+B)*C),X111=Prob(A*B*C) MMinv vYY=vector(YY);vYY[0]=1 mylist3 = list(MMinv*vYY-vector(XX));mylist3
[ 1 -1 -1 1 -1 1 1 -1] [ 0 1 0 -1 0 -1 0 1] [ 0 0 1 -1 0 0 -1 1] [ 0 0 0 1 0 0 0 -1] [ 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 1] [-X000 - Y001 - Y010 + Y011 - Y100 + Y101 + Y110 - Y111 + 1, -X001 + Y001 - Y011 - Y101 + Y111, -X010 + Y010 - Y011 - Y110 + Y111, -X011 + Y011 - Y111, -X100 + Y100 - Y101 - Y110 + Y111, -X101 + Y101 - Y111, -X110 + Y110 - Y111, -X111 + Y111]
#probability calculus for non independent generators (nn=3 in this case) modeled on unit nn-cube #vertices are atoms 1-topes, the cube itself is 1 the n-tope, set (n-1)-topes is generator or its negation #could just assign probabilities to the vertices non-negative and sum to one for empirical distribution nn=3;bnn=2**nn print('# of generators '+str(nn)+', # of atoms '+str(bnn)) x=['x'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];print('x probability variables');print(x);print(' ') y=['y'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];print('y probability variables');print(y);print(' ') MPR=PolynomialRing(QQ,x+y);print(MPR);print(' ') xx=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'x')]];print('xx');print(xx);print(' ') # these correspond to the vertices of the hypercube ie 0-polytopes --- 0-cube yy=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'y')]];print('yy');print(yy);print(' ') # these correspond to certain k-polytopes YYY[0,0,0] = 1 is nn-polytope --- nn-cube # the null-polytope is the 0 elt in the boolean poly ring --- 0-cube are vertices, edges are 1-cubes, faces are 2-cubes iy=[[i for i,j in enumerate(str(yyy)) if j=='1'] for yyy in yy];print('iy');print(iy);print(' ') AND = lambda A, B: A*B FA = lambda mylist: 1 if not mylist else Integer(reduce(AND, mylist)) MM = matrix([[Integer(FA([str(xxx)[i] == '1' for i in iyy])) for xxx in xx] for iyy in iy]);print('MM');print('is MM totally unimodular? going out on limb and saying yes');print(MM);print(' ') #need to add a row of 1's, roughly yy = MM*xx y000=1 then 1-x000 MM[row 1's]*<x001,x010,...,x111> gotta check this #Prob(A*~B) = Prob(A*(1+B)) = Prob(A+A*B)=Prob(A)-Prob(A*B) MMinv = MM.inverse();print('MMinv');print(MMinv);print(' ') # well almost, is MM totally unimodular? Integer matrix with integer inverse det = +/- 1 #yy[0]-1 #MM*vector(xx)-vector(yy) print('example variable description for 3-cube with generators A,B,C') print('y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C)') print('x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C)') print(' ') vyy=vector(yy);vyy[0]=1 mylist4 = list(MMinv*vyy-vector(xx));print('x variables in terms of y variables');print(mylist4);print(' ') mylist=list(MM*vector(xx)-vector(yy));mylist.append((yy[0]-1));print('y variables in terms of x variables');print(mylist);print(' ') #euler characteristic? |0-polytopes|-|1-polytopes|+|2-polytopes|-|3-polytopes|+...=what mylist2=[QQ(normalvariate(0, 1)^2) for i in range(bnn)] mylistsum=sum(mylist2) mylist2=[ml2/mylistsum for ml2 in mylist2] mylist3=[RR(w) for w in mylist2] print('random pick atom probabilities');print(mylist3);print(' ') mylist5 = list(MM*vector(mylist3));print('y variable probabilities');print(mylist5);print(' ') mylist2=list(vector(xx)-vector(mylist2)) #just assign rational probabilities to the X variables print('sum(mylist2)');print(sum(mylist2));print(' ')
# of generators 3, # of atoms 8 x probability variables ['x000', 'x001', 'x010', 'x011', 'x100', 'x101', 'x110', 'x111'] y probability variables ['y000', 'y001', 'y010', 'y011', 'y100', 'y101', 'y110', 'y111'] Multivariate Polynomial Ring in x000, x001, x010, x011, x100, x101, x110, x111, y000, y001, y010, y011, y100, y101, y110, y111 over Rational Field xx [x000, x001, x010, x011, x100, x101, x110, x111] yy [y000, y001, y010, y011, y100, y101, y110, y111] iy [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]] MM is MM totally unimodular? going out on limb and saying yes [1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1] MMinv [ 1 -1 -1 1 -1 1 1 -1] [ 0 1 0 -1 0 -1 0 1] [ 0 0 1 -1 0 0 -1 1] [ 0 0 0 1 0 0 0 -1] [ 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 1] example variable description for 3-cube with generators A,B,C y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C) x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C) x variables in terms of y variables [-x000 - y001 - y010 + y011 - y100 + y101 + y110 - y111 + 1, -x001 + y001 - y011 - y101 + y111, -x010 + y010 - y011 - y110 + y111, -x011 + y011 - y111, -x100 + y100 - y101 - y110 + y111, -x101 + y101 - y111, -x110 + y110 - y111, -x111 + y111] y variables in terms of x variables [x000 + x001 + x010 + x011 + x100 + x101 + x110 + x111 - y000, x001 + x011 + x101 + x111 - y001, x010 + x011 + x110 + x111 - y010, x011 + x111 - y011, x100 + x101 + x110 + x111 - y100, x101 + x111 - y101, x110 + x111 - y110, x111 - y111, y000 - 1] random pick atom probabilities [0.124607277095934, 0.00108636084690530, 0.0585603874682545, 0.562481250045919, 0.158444040380286, 0.0937703383308307, 0.00102792480386519, 0.0000224210280059958] y variable probabilities [1.00000000000000, 0.657360370251660, 0.622091983346044, 0.562503671073925, 0.253264724542988, 0.0937927593588367, 0.00105034583187119, 0.0000224210280059958] sum(mylist2) x000 + x001 + x010 + x011 + x100 + x101 + x110 + x111 - 1
#probability calculus for non independent generators (nn=3 in this case) modeled on unit nn-cube #vertices are atoms 1-topes, the cube itself is 1 the n-tope, set (n-1)-topes is generator or its negation #could just assign probabilities to the vertices non-negative and sum to one for empirical distribution nn=4;bnn=2**nn print('# of generators '+str(nn)+', # of atoms '+str(bnn)) x=['x'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];print('x probability variables');print(x);print(' ') y=['y'+Integer(ii+bnn).binary()[1:nn+1] for ii in range(bnn)];print('y probability variables');print(y);print(' ') MPR=PolynomialRing(QQ,x+y,order='deglex');print(MPR);print(' ') MPR.inject_variables() xx=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'x')]];print('xx');print(xx);print(' ') # these correspond to the vertices of the hypercube ie 0-polytopes --- 0-cube yy=[MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'y')]];print('yy');print(yy);print(' ') # these correspond to certain k-polytopes YYY[0,0,0] = 1 is nn-polytope --- nn-cube # the null-polytope is the 0 elt in the boolean poly ring --- 0-cube are vertices, edges are 1-cubes, faces are 2-cubes iy=[[i for i,j in enumerate(str(yyy)) if j=='1'] for yyy in yy];print('iy');print(iy);print(' ') leniy = [len(c) for c in iy] #AND = lambda A, B: A*B #FA = lambda mylist: 1 if not mylist else Integer(reduce(AND, mylist)) #MM = matrix([[Integer(FA([str(xxx)[i] == '1' for i in iyy])) for xxx in xx] for iyy in iy]);print('MM');print('is MM totally unimodular? going out on limb and saying yes');print(MM);print(' ') #need to add a row of 1's, roughly yy = MM*xx y000=1 then 1-x000 MM[row 1's]*<x001,x010,...,x111> gotta check this #Prob(A*~B) = Prob(A*(1+B)) = Prob(A+A*B)=Prob(A)-Prob(A*B) #MMinv = MM.inverse();print('MMinv');print(MMinv);print(' ') # well almost, is MM totally unimodular? Integer matrix with integer inverse det = +/- 1 # recursive way of defining MM and MMinv MM=matrix([1]) for ii in range(1,nn+1): MM=block_matrix(2,2,[MM,MM,0,MM],subdivide=False) print('MM');print('is MM totally unimodular? going out on limb and saying yes');print(MM);print(' ') MMinv=matrix([1]) for ii in range(1,nn+1): MMinv=block_matrix(2,2,[MMinv,-MMinv,0,MMinv],subdivide=False) print('MMinv');print(MMinv);print(' ') #print(' ');print('both upper triangular, look at the 1×1 blocks, the 2×2 blocks, the 4×4 blocks, 8×8 blocks, 16×16 blocks etc. these can be written from the pattern recursively for 0,1,2,3,4,...generators') print('don''t need the lines for FA and MM=matrix() nor do we need to actually invert MM to obtain MMinv') #yy[0]-1 #MM*vector(xx)-vector(yy) print('example variable description for 3-cube with generators A,B,C') print('y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C)') print('x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C)') print(' ') vyy=vector(yy);vyy[0]=1 mylist4 = list(MMinv*vyy-vector(xx));print('x variables in terms of y variables');print(mylist4);print(' ') mylist=list(MM*vector(xx)-vector(yy));mylist.append((yy[0]-1));print('y variables in terms of x variables');print(mylist);print(' ') #euler characteristic? |0-polytopes|-|1-polytopes|+|2-polytopes|-|3-polytopes|+...=what mylist2=[QQ(normalvariate(0, 1)^2) for i in range(bnn)] mylistsum=sum(mylist2) mylist2=[ml2/mylistsum for ml2 in mylist2] mylist3=[RR(w) for w in mylist2] print('random pick atom probabilities');print(mylist3);print(' ') mylist5 = list(MM*vector(mylist3));print('y variable probabilities');print(mylist5);print(' ') mylist2=list(vector(xx)-vector(mylist2)) #just assign rational probabilities to the X variables print('sum(mylist2)');print(sum(mylist2));print(' ') print('define polynomials for independent generators, nn=3 then y100,y010,y001 are the generators') yylist0=[] for ii in range(len(yy)): if leniy[ii]>1: stryy = str(yy[ii]) yylist=[] for jj in range(1,len(stryy)): if stryy[jj]=='1': yylist.append(yy[2^(nn-jj)]) yylist0.append(reduce(lambda a,b:a*b ,yylist)-yy[ii]) print(yylist0);print(' ') myideal=ideal(yylist0) QR = MPR.quotient_ring(myideal) #vctr=vector([1,0,1,1,0,0,0,1,0,1,1,1,0,1,1,0]) #vctr*vector(yy) #testpoly2=vctr*MM*vector(xx);testpoly2 #sum([QQ(mod(testpoly2.coefficient(a),2))*a for a in xx]) #vector([QQ(mod(testpoly2.coefficient(a),2)) for a in xx])*MMinv*vector(yy) #just converted boolean polynomial in y vars into probabilty polynomial in y vars i think #vctr=vector([0,0,1,1,0,0,0,1,0,1,1,1,0,1,1,0]) # negation since y[0]=1 ie y000=1 #vctr*vector(yy) #testpoly2=vctr*MM*vector(xx);testpoly2 #sum([QQ(mod(testpoly2.coefficient(a),2))*a for a in xx]) #vector([QQ(mod(testpoly2.coefficient(a),2)) for a in xx])*MMinv*vector(yy) #MPR.gens() #MPR.inject_variables() #y0101*y1100 testpoly2=y0101*y1100+y1111*y1000*y0110+2*y1110;testpoly2 # supposed to be arbitrary (poly1 in y)*(poly2 in y)+poly3 in y etc though in QQ use coefficients in ZZ and regard as boolean polynomial testpoly2.coefficients() testpoly2.monomials() testpoly2=vector([QQ(mod(a,2)) for a in testpoly2.coefficients()])*vector(testpoly2.monomials()) #reduce modulo 2 (boolean polynomial remember) then coerce new coefficients back to QQ s2=[[b.strip() for b in c] for c in [a.split('*') for a in str(testpoly2).split('+')]] #parsing and removing leading and trailing spaces ll2=[] for a in s2: ll=[] for b in a: ll.append('1'+b[1:]) k=int(ll[0],2) for lll in ll: k = k | int(lll,2) # oring the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111 ll2.append('y'+Integer(k).binary()[1:]) #creating the equivalent reduced boolean polynomial #y vars as string being converted back to the generators in the polynomiaring and we previously injected the variable so we can write expressions in the generators directly testpoly2b = sum([MPR(y) for y in ll2]);testpoly2b #now the procedure to obtain the probability expression vctr = vector([testpoly2b.coefficient(g) for g in yy]) testpoly3=vctr*MM*vector(xx);testpoly3 sum([QQ(mod(testpoly3.coefficient(a),2))*a for a in xx]) testpoly4=vector([QQ(mod(testpoly3.coefficient(a),2)) for a in xx])*MMinv*vector(yy);testpoly4
# of generators 4, # of atoms 16 x probability variables ['x0000', 'x0001', 'x0010', 'x0011', 'x0100', 'x0101', 'x0110', 'x0111', 'x1000', 'x1001', 'x1010', 'x1011', 'x1100', 'x1101', 'x1110', 'x1111'] y probability variables ['y0000', 'y0001', 'y0010', 'y0011', 'y0100', 'y0101', 'y0110', 'y0111', 'y1000', 'y1001', 'y1010', 'y1011', 'y1100', 'y1101', 'y1110', 'y1111'] Multivariate Polynomial Ring in x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 over Rational Field Defining x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 xx [x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111] yy [y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111] iy [[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]] MM is MM totally unimodular? going out on limb and saying yes [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] MMinv [ 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1] [ 0 1 0 -1 0 -1 0 1 0 -1 0 1 0 1 0 -1] [ 0 0 1 -1 0 0 -1 1 0 0 -1 1 0 0 1 -1] [ 0 0 0 1 0 0 0 -1 0 0 0 -1 0 0 0 1] [ 0 0 0 0 1 -1 -1 1 0 0 0 0 -1 1 1 -1] [ 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 1] [ 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 1] [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1] [ 0 0 0 0 0 0 0 0 1 -1 -1 1 -1 1 1 -1] [ 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1] [ 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] dont need the lines for FA and MM=matrix() nor do we need to actually invert MM to obtain MMinv example variable description for 3-cube with generators A,B,C y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C) x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C) x variables in terms of y variables [-x0000 - y0001 - y0010 + y0011 - y0100 + y0101 + y0110 - y0111 - y1000 + y1001 + y1010 - y1011 + y1100 - y1101 - y1110 + y1111 + 1, -x0001 + y0001 - y0011 - y0101 + y0111 - y1001 + y1011 + y1101 - y1111, -x0010 + y0010 - y0011 - y0110 + y0111 - y1010 + y1011 + y1110 - y1111, -x0011 + y0011 - y0111 - y1011 + y1111, -x0100 + y0100 - y0101 - y0110 + y0111 - y1100 + y1101 + y1110 - y1111, -x0101 + y0101 - y0111 - y1101 + y1111, -x0110 + y0110 - y0111 - y1110 + y1111, -x0111 + y0111 - y1111, -x1000 + y1000 - y1001 - y1010 + y1011 - y1100 + y1101 + y1110 - y1111, -x1001 + y1001 - y1011 - y1101 + y1111, -x1010 + y1010 - y1011 - y1110 + y1111, -x1011 + y1011 - y1111, -x1100 + y1100 - y1101 - y1110 + y1111, -x1101 + y1101 - y1111, -x1110 + y1110 - y1111, -x1111 + y1111] y variables in terms of x variables [x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x0110 + x0111 + x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - y0000, x0001 + x0011 + x0101 + x0111 + x1001 + x1011 + x1101 + x1111 - y0001, x0010 + x0011 + x0110 + x0111 + x1010 + x1011 + x1110 + x1111 - y0010, x0011 + x0111 + x1011 + x1111 - y0011, x0100 + x0101 + x0110 + x0111 + x1100 + x1101 + x1110 + x1111 - y0100, x0101 + x0111 + x1101 + x1111 - y0101, x0110 + x0111 + x1110 + x1111 - y0110, x0111 + x1111 - y0111, x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - y1000, x1001 + x1011 + x1101 + x1111 - y1001, x1010 + x1011 + x1110 + x1111 - y1010, x1011 + x1111 - y1011, x1100 + x1101 + x1110 + x1111 - y1100, x1101 + x1111 - y1101, x1110 + x1111 - y1110, x1111 - y1111, y0000 - 1] random pick atom probabilities [0.0324384829167317, 0.0506461393820951, 0.0496552932559498, 0.240164456345467, 0.000349008335707834, 0.0576304920916400, 0.194392661898743, 0.0709946320380557, 0.0102441968725576, 0.00289876955555036, 0.00636596544588485, 0.0917769549427657, 0.00985887794297960, 0.0815733995873333, 0.0423212137143600, 0.0586894556741792] y variable probabilities [1.00000000000000, 0.654374299617086, 0.754360633315405, 0.461625499000467, 0.515809741282998, 0.268887979391208, 0.366397963325338, 0.129684087712235, 0.303728833735610, 0.234938579759828, 0.199153589777190, 0.150466410616945, 0.192442946918852, 0.140262855261512, 0.101010669388539, 0.0586894556741792] sum(mylist2) x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x0110 + x0111 + x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - 1 define polynomials for independent generators, nn=3 then y100,y010,y001 are the generators [y0001*y0010 - y0011, y0001*y0100 - y0101, y0010*y0100 - y0110, y0001*y0010*y0100 - y0111, y0001*y1000 - y1001, y0010*y1000 - y1010, y0001*y0010*y1000 - y1011, y0100*y1000 - y1100, y0001*y0100*y1000 - y1101, y0010*y0100*y1000 - y1110, y0001*y0010*y0100*y1000 - y1111] y0110*y1000*y1111 + y0101*y1100 + 2*y1110 [1, 1, 2] [y0110*y1000*y1111, y0101*y1100, y1110] y1101 + y1111 x1101 + 2*x1111 x1101 y1101 - y1111
leniy
[0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4]
yylist0=[] for ii in range(len(yy)): if leniy[ii]>1: stryy = str(yy[ii]) yylist=[] for jj in range(1,len(stryy)): if stryy[jj]=='1': yylist.append(yy[2^(nn-jj)]) yylist0.append(reduce(lambda a,b:a*b ,yylist)-yy[ii])
yylist0 len(yylist0)
[y0001*y0010 - y0011, y0001*y0100 - y0101, y0010*y0100 - y0110, y0001*y0010*y0100 - y0111, y0001*y1000 - y1001, y0010*y1000 - y1010, y0001*y0010*y1000 - y1011, y0100*y1000 - y1100, y0001*y0100*y1000 - y1101, y0010*y0100*y1000 - y1110, y0001*y0010*y0100*y1000 - y1111] 11
vctr=vector([1,0,1,1,0,0,0,1,0,1,1,1,0,1,1,0]) vctr*vector(yy) testpoly2=vctr*MM*vector(xx);testpoly2 sum([QQ(mod(testpoly2.coefficient(a),2))*a for a in xx]) vector([QQ(mod(testpoly2.coefficient(a),2)) for a in xx])*MMinv*vector(yy)
y0000 + y0010 + y0011 + y0111 + y1001 + y1010 + y1011 + y1101 + y1110 x0000 + x0001 + 2*x0010 + 3*x0011 + x0100 + x0101 + 2*x0110 + 4*x0111 + x1000 + 2*x1001 + 3*x1010 + 6*x1011 + x1100 + 3*x1101 + 4*x1110 + 9*x1111 x0000 + x0001 + x0011 + x0100 + x0101 + x1000 + x1010 + x1100 + x1101 + x1111 y0000 - y0010 + y0011 - y0111 - y1001 + y1010 - y1011 + y1101 - y1110 + 2*y1111
vctr=vector([0,0,1,1,0,0,0,1,0,1,1,1,0,1,1,0]) vctr*vector(yy) testpoly2=vctr*MM*vector(xx);testpoly2 sum([QQ(mod(testpoly2.coefficient(a),2))*a for a in xx]) vector([QQ(mod(testpoly2.coefficient(a),2)) for a in xx])*MMinv*vector(yy)
y0010 + y0011 + y0111 + y1001 + y1010 + y1011 + y1101 + y1110 x0010 + 2*x0011 + x0110 + 3*x0111 + x1001 + 2*x1010 + 5*x1011 + 2*x1101 + 3*x1110 + 8*x1111 x0010 + x0110 + x0111 + x1001 + x1011 + x1110 y0010 - y0011 + y0111 + y1001 - y1010 + y1011 - y1101 + y1110 - 2*y1111
testpoly2=y0101*y1100+y1111*y1000*y0110+2*y1110;testpoly2 testpoly2.coefficients() testpoly2.monomials() testpoly2=vector([QQ(mod(a,2)) for a in testpoly2.coefficients()])*vector(testpoly2.monomials());testpoly2 s2=[[b.strip() for b in c] for c in [a.split('*') for a in str(testpoly2).split('+')]] ll2=[] for a in s2: ll=[] for b in a: ll.append('1'+b[1:]) k=int(ll[0],2) for lll in ll: k = k | int(lll,2) ll2.append('y'+Integer(k).binary()[1:]) testpoly2b = sum([MPR(y) for y in ll2]);testpoly2b vctr = vector([testpoly2b.coefficient(g) for g in yy]) testpoly3=vctr*MM*vector(xx);testpoly3 sum([QQ(mod(testpoly3.coefficient(a),2))*a for a in xx]) vector([QQ(mod(testpoly3.coefficient(a),2)) for a in xx])*MMinv*vector(yy)
y0110*y1000*y1111 + y0101*y1100 + 2*y1110 [1, 1, 2] [y0110*y1000*y1111, y0101*y1100, y1110] y0110*y1000*y1111 + y0101*y1100 y1101 + y1111 x1101 + 2*x1111 x1101 y1101 - y1111
MM MM=matrix([1]);MM for ii in range(1,nn+1): MM=block_matrix(2,2,[MM,MM,0,MM],subdivide=False);MM MMinv MMinv=matrix([1]);MMinv for ii in range(1,nn+1): MMinv=block_matrix(2,2,[MMinv,-MMinv,0,MMinv],subdivide=False);MMinv
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [1] [1 1] [0 1] [1 1 1 1] [0 1 0 1] [0 0 1 1] [0 0 0 1] [1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [ 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1] [ 0 1 0 -1 0 -1 0 1 0 -1 0 1 0 1 0 -1] [ 0 0 1 -1 0 0 -1 1 0 0 -1 1 0 0 1 -1] [ 0 0 0 1 0 0 0 -1 0 0 0 -1 0 0 0 1] [ 0 0 0 0 1 -1 -1 1 0 0 0 0 -1 1 1 -1] [ 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 1] [ 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 1] [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1] [ 0 0 0 0 0 0 0 0 1 -1 -1 1 -1 1 1 -1] [ 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1] [ 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [1] [ 1 -1] [ 0 1] [ 1 -1 -1 1] [ 0 1 0 -1] [ 0 0 1 -1] [ 0 0 0 1] [ 1 -1 -1 1 -1 1 1 -1] [ 0 1 0 -1 0 -1 0 1] [ 0 0 1 -1 0 0 -1 1] [ 0 0 0 1 0 0 0 -1] [ 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 1] [ 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1] [ 0 1 0 -1 0 -1 0 1 0 -1 0 1 0 1 0 -1] [ 0 0 1 -1 0 0 -1 1 0 0 -1 1 0 0 1 -1] [ 0 0 0 1 0 0 0 -1 0 0 0 -1 0 0 0 1] [ 0 0 0 0 1 -1 -1 1 0 0 0 0 -1 1 1 -1] [ 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 1] [ 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 1] [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1] [ 0 0 0 0 0 0 0 0 1 -1 -1 1 -1 1 1 -1] [ 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1] [ 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]
MM*MMinv
[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]
yylist0 myideal=ideal(yylist0+[y0000-1]) QR = MPR.quotient_ring(myideal) QR.inject_variables() testpoly4=vector([QQ(mod(testpoly3.coefficient(a),2)) for a in xx])*MMinv*vector(yy);testpoly4 #QRsub=QR.subring(accepting_variables=(y0000bar, y0001bar,y0010bar,y0100bar,y1000bar)) QR(y0001*y0100*y1000) QR(y0000)
[y0001*y0010 - y0011, y0001*y0100 - y0101, y0010*y0100 - y0110, y0001*y0010*y0100 - y0111, y0001*y1000 - y1001, y0010*y1000 - y1010, y0001*y0010*y1000 - y1011, y0100*y1000 - y1100, y0001*y0100*y1000 - y1101, y0010*y0100*y1000 - y1110, y0001*y0010*y0100*y1000 - y1111] Defining x0000bar, x0001bar, x0010bar, x0011bar, x0100bar, x0101bar, x0110bar, x0111bar, x1000bar, x1001bar, x1010bar, x1011bar, x1100bar, x1101bar, x1110bar, x1111bar, y0000bar, y0001bar, y0010bar, y0011bar, y0100bar, y0101bar, y0110bar, y0111bar, y1000bar, y1001bar, y1010bar, y1011bar, y1100bar, y1101bar, y1110bar, y1111bar y1101 - y1111 y1101bar 1
yylist0
[y0001*y0010 - y0011, y0001*y0100 - y0101, y0010*y0100 - y0110, y0001*y0010*y0100 - y0111, y0001*y1000 - y1001, y0010*y1000 - y1010, y0001*y0010*y1000 - y1011, y0100*y1000 - y1100, y0001*y0100*y1000 - y1101, y0010*y0100*y1000 - y1110, y0001*y0010*y0100*y1000 - y1111]
tp4m=(testpoly4+y0000-y0001).monomials();tp4c=(testpoly4+y0000-y0001).coefficients();tp4m;tp4c yylist5=[] for a in tp4m: stryy = str(a) yylist4=[] for jj in range(1,len(stryy)): if stryy[jj]=='1': yylist4.append(yy[2^(nn-jj)]) if len(yylist4)<>0: yylist5.append(reduce(lambda a,b:a*b ,yylist4)) else: yylist5.append(yy[0]) probpolyind=vector(tp4c)*vector(yylist5);probpolyind
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'testpoly4' is not defined
len([])
0
print('probability calculus for non independent generators (4 in this case) modeled on unit n-cube the vertices are atoms of statement calculus') print('example variable description for 3-cube with generators A,B,C') print('y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C)') print('x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C)') print(' ') num_gens = 4 # 4-cube atoms = 2**num_gens print('# of generators ' + str(num_gens) + ', # of atoms ' + str(atoms)); print(' ') x = ['x' + Integer(ii+atoms).binary()[1:num_gens + 1] for ii in range(atoms)];print('x probability variables string');print(x);print(' ') y = ['y' + Integer(ii+atoms).binary()[1:num_gens + 1] for ii in range(atoms)];print('y probability variables string');print(y);print(' ') MPR = PolynomialRing(QQ,x + y);print(MPR);print(' ') MPR.inject_variables(); print(' ') xvars = [MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'x')]];print('xvars');print(xvars);print(' ') # atoms correspond to the vertices of the unit n-cube yvars = [MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'y')]];print('yvars');print(yvars);print(' ') # these correspond to expressions formed by generators and *, y101 = a*c, y111=a*b*c, y000 = 1 = x000+x001+x010+... also y101 = Prob(A*C) etc #AND = lambda A, B: A*B #FA = lambda mylist: 1 if not mylist else Integer(reduce(AND, mylist)) #MM = matrix([[Integer(FA([str(xvarsx)[i] == '1' for i in iyvars])) for xvarsx in xvars] for iyvars in iy]);print('MM');print('is MM totally unimodular? going out on limb and saying yes');print(MM);print(' ') # just a note: Prob(A*~B) = Prob(A*(1+B)) = Prob(A+A*B)=Prob(A)-Prob(A*B) #MMinv = MM.inverse();print('MMinv');print(MMinv);print(' ') # well almost, is MM totally unimodular? Integer matrix with integer inverse det = +/- 1 # recursive way of defining MM and MMinv MM = matrix([1]) for ii in range(1,num_gens + 1): MM = block_matrix(2,2,[MM,MM,0,MM],subdivide=False) print('Sierpinski triangle Matrix, M');print(MM);print(' ') print('y = M*x, is M totally unimodular? going out on limb and saying yes'); MMinv = matrix([1]) for ii in range(1,num_gens+1): MMinv = block_matrix(2,2,[MMinv,-MMinv,0,MMinv],subdivide=False) print('M^-1');print(MMinv);print(' ') x_of_y = list(MMinv*vector(yvars) - vector(xvars));print('x variables in terms of y variables');print(x_of_y);print(' ') y_of_x = list(MM*vector(xvars) - vector(yvars));print('y variables in terms of x variables');print(y_of_x);print(' ') prob_atoms = [QQ(normalvariate(0, 1)^2) for i in range(atoms)] normalize = sum(prob_atoms) prob_atoms = [pa/normalize for pa in prob_atoms] RR_prob_atoms = [RR(pa) for pa in prob_atoms] print('random pick atom i.e. x variable probabilities'); print(RR_prob_atoms); print(' ') y_var_prob = list(MM*vector(RR_prob_atoms)); print('y variable probabilities'); print(y_var_prob);print(' ') atom_prob_polys = list(vector(xvars) - vector(prob_atoms)) #just assign rational probabilities to the X variables print('sum probabilities check');print(sum(prob_atoms));print(' ') iy = [[i for i,j in enumerate(str(a)) if j == '1'] for a in yvars]; print('iy'); print(iy); print(' ') leniy = [len(c) for c in iy] ind_poly_list = [] for ii in range(len(yvars)): if leniy[ii] > 1: str_yvars = str(yvars[ii]) gens_list = [] for jj in range(1,len(str_yvars)): if str_yvars[jj] == '1': gens_list.append(yvars[2^(num_gens - jj)]) ind_poly_list.append(reduce(lambda a,b: a*b, gens_list) - yvars[ii]) print('define polynomials for independent generators, generators=3 then y100,y010,y001 are the generators') print(ind_poly_list);print(' ') #myideal=ideal(ind_poly_list) #QR = MPR.quotient_ring(myideal) #QR.inject_variables() #bool_poly = y0101*y1100+y1111*y1000*y0110+2*y1110; print(bool_poly) # make sure coefficients are in ZZ bool_poly = MPR.remove_var(*tuple(xvars)).change_ring(ZZ).random_element(); print('random integer polynomial in y variables'); print(bool_poly); print(' ') bool_poly = vector([QQ(mod(a,2)) for a in bool_poly.coefficients()])*vector(bool_poly.monomials()); print('treated as boolean polynomial') ;print(bool_poly); print(' ') #reduce modulo 2 (boolean polynomial remember) then coerce new coefficients back to QQ parse_bool_poly = [[b.strip() for b in c] for c in [a.split('*') for a in str(bool_poly).split('+')]]; print('parsing and removing leading and trailing spaces'); print(parse_bool_poly); print(' ') parse_bool_poly = [[a.split('^')[0] for a in c] for c in parse_bool_poly]; print('removing powers y^m --> y'); print(parse_bool_poly); print(' ') listA = [] for pbp in parse_bool_poly: listB = [] for b in pbp: listB.append('1' + b[1:]) k = int(listB[0],2) for b in listB: k = k | int(b,2) # or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111 listA.append('y' + Integer(k).binary()[1:]) #creating the equivalent reduced boolean polynomial #y vars as string being converted back to the generators in the polynomial ring and we previously injected the variable so we can write expressions in the generators directly print('or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111') reduced_bool_poly = sum([MPR(y) for y in listA]); print('reduced to 1st order - linear - boolean polynomial in y variables'); print(reduced_bool_poly); print(' ') #now the procedure to obtain the probability expression vctr = vector([reduced_bool_poly.coefficient(g) for g in yvars]) atom_bool_poly = vctr*MM*vector(xvars); print('expressing in the x variables - still boolean - using vector(y var coefficients)*M*vector(xvars)'); print(atom_bool_poly); print(' ') atom_bool_poly = sum([QQ(mod(atom_bool_poly.coefficient(a),2))*a for a in xvars]); print('reducing the x var polynomial'); print(atom_bool_poly); print(' ') prob_poly = vector([atom_bool_poly.coefficient(a) for a in xvars])*MMinv*vector(yvars); print('converting to probability using vector(x var coefficients)*(M^-1)*vector(yvars)');print(prob_poly); print(' ') #for independent generators prob_poly needs to be linear in the y variables use this with the output from above (testpoly4) prob_poly_monomials = prob_poly.monomials(); print('prob_poly_monomials'); print(prob_poly_monomials); print(' ') prob_poly_coefficients = prob_poly.coefficients(); print('prob_poly_coefficients'); print(prob_poly_coefficients); print(' ') monomial_gens_list = [] for a in prob_poly_monomials: str_a = str(a) gens_list = [] for jj in range(1,len(str_a)): if str_a[jj] == '1': gens_list.append(yvars[2^(num_gens - jj)]) if len(gens_list) <> 0: monomial_gens_list.append(reduce(lambda a,b:a*b ,gens_list)) else: monomial_gens_list.append(yvars[0]) #yvars[0]=y000 then gens_list = [] so we put yvars[0] back prob_poly_ind = vector(prob_poly_coefficients)*vector(monomial_gens_list); print('if the generators are independent the probability poly becomes'); print(prob_poly_ind)
probability calculus for non independent generators (4 in this case) modeled on unit n-cube the vertices are atoms of statement calculus example variable description for 3-cube with generators A,B,C y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C) x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C) # of generators 4, # of atoms 16 x probability variables string ['x0000', 'x0001', 'x0010', 'x0011', 'x0100', 'x0101', 'x0110', 'x0111', 'x1000', 'x1001', 'x1010', 'x1011', 'x1100', 'x1101', 'x1110', 'x1111'] y probability variables string ['y0000', 'y0001', 'y0010', 'y0011', 'y0100', 'y0101', 'y0110', 'y0111', 'y1000', 'y1001', 'y1010', 'y1011', 'y1100', 'y1101', 'y1110', 'y1111'] Multivariate Polynomial Ring in x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 over Rational Field Defining x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 xvars [x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111] yvars [y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111] Sierpinski triangle Matrix, M [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] y = M*x, is M totally unimodular? going out on limb and saying yes M^-1 [ 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1] [ 0 1 0 -1 0 -1 0 1 0 -1 0 1 0 1 0 -1] [ 0 0 1 -1 0 0 -1 1 0 0 -1 1 0 0 1 -1] [ 0 0 0 1 0 0 0 -1 0 0 0 -1 0 0 0 1] [ 0 0 0 0 1 -1 -1 1 0 0 0 0 -1 1 1 -1] [ 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 1] [ 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 1] [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1] [ 0 0 0 0 0 0 0 0 1 -1 -1 1 -1 1 1 -1] [ 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1] [ 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] x variables in terms of y variables [-x0000 + y0000 - y0001 - y0010 + y0011 - y0100 + y0101 + y0110 - y0111 - y1000 + y1001 + y1010 - y1011 + y1100 - y1101 - y1110 + y1111, -x0001 + y0001 - y0011 - y0101 + y0111 - y1001 + y1011 + y1101 - y1111, -x0010 + y0010 - y0011 - y0110 + y0111 - y1010 + y1011 + y1110 - y1111, -x0011 + y0011 - y0111 - y1011 + y1111, -x0100 + y0100 - y0101 - y0110 + y0111 - y1100 + y1101 + y1110 - y1111, -x0101 + y0101 - y0111 - y1101 + y1111, -x0110 + y0110 - y0111 - y1110 + y1111, -x0111 + y0111 - y1111, -x1000 + y1000 - y1001 - y1010 + y1011 - y1100 + y1101 + y1110 - y1111, -x1001 + y1001 - y1011 - y1101 + y1111, -x1010 + y1010 - y1011 - y1110 + y1111, -x1011 + y1011 - y1111, -x1100 + y1100 - y1101 - y1110 + y1111, -x1101 + y1101 - y1111, -x1110 + y1110 - y1111, -x1111 + y1111] y variables in terms of x variables [x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x0110 + x0111 + x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - y0000, x0001 + x0011 + x0101 + x0111 + x1001 + x1011 + x1101 + x1111 - y0001, x0010 + x0011 + x0110 + x0111 + x1010 + x1011 + x1110 + x1111 - y0010, x0011 + x0111 + x1011 + x1111 - y0011, x0100 + x0101 + x0110 + x0111 + x1100 + x1101 + x1110 + x1111 - y0100, x0101 + x0111 + x1101 + x1111 - y0101, x0110 + x0111 + x1110 + x1111 - y0110, x0111 + x1111 - y0111, x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - y1000, x1001 + x1011 + x1101 + x1111 - y1001, x1010 + x1011 + x1110 + x1111 - y1010, x1011 + x1111 - y1011, x1100 + x1101 + x1110 + x1111 - y1100, x1101 + x1111 - y1101, x1110 + x1111 - y1110, x1111 - y1111] random pick atom i.e. x variable probabilities [0.0499286050247534, 0.00124006780192525, 0.0770562797441154, 0.244429385233403, 0.0428526043638640, 0.0478534087266897, 0.00257721034718066, 0.0478929010196389, 0.232913880506096, 0.000215368431558970, 0.0753243541255760, 0.000332654327962137, 0.0142291218211613, 0.0379301929733677, 0.123307182154035, 0.00191678339867260] y variable probabilities [1.00000000000000, 0.381810761913218, 0.572836750350584, 0.294571723979677, 0.318559404804610, 0.135593286118369, 0.175694076919527, 0.0498096844183115, 0.486169537738429, 0.0403949991315614, 0.200880974006245, 0.00224943772663473, 0.177383280347236, 0.0398469763720403, 0.125223965552707, 0.00191678339867260] sum probabilities check 1 iy [[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]] define polynomials for independent generators, generators=3 then y100,y010,y001 are the generators [y0001*y0010 - y0011, y0001*y0100 - y0101, y0010*y0100 - y0110, y0001*y0010*y0100 - y0111, y0001*y1000 - y1001, y0010*y1000 - y1010, y0001*y0010*y1000 - y1011, y0100*y1000 - y1100, y0001*y0100*y1000 - y1101, y0010*y0100*y1000 - y1110, y0001*y0010*y0100*y1000 - y1111] random integer polynomial in y variables 3*y0000*y0001 - y0111*y1011 + y1100^2 - y0000 treated as boolean polynomial y0000*y0001 + y0111*y1011 + y1100^2 + y0000 parsing and removing leading and trailing spaces [['y0000', 'y0001'], ['y0111', 'y1011'], ['y1100^2'], ['y0000']] removing powers y^m --> y [['y0000', 'y0001'], ['y0111', 'y1011'], ['y1100'], ['y0000']] or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111 reduced to 1st order - linear - boolean polynomial in y variables y0000 + y0001 + y1100 + y1111 expressing in the x variables - still boolean - using vector(y var coefficients)*M*vector(xvars) x0000 + 2*x0001 + x0010 + 2*x0011 + x0100 + 2*x0101 + x0110 + 2*x0111 + x1000 + 2*x1001 + x1010 + 2*x1011 + 2*x1100 + 3*x1101 + 2*x1110 + 4*x1111 reducing the x var polynomial x0000 + x0010 + x0100 + x0110 + x1000 + x1010 + x1101 converting to probability using vector(x var coefficients)*(M^-1)*vector(yvars) y0000 - y0001 - y1100 + 2*y1101 - y1111 prob_poly_monomials [y0000, y0001, y1100, y1101, y1111] prob_poly_coefficients [1, -1, -1, 2, -1] if the generators are independent the probability poly becomes -y0001*y0010*y0100*y1000 + 2*y0001*y0100*y1000 - y0100*y1000 + y0000 - y0001
MPR.remove_var(*tuple(xvars)) MPR MPR.remove_var(*tuple(xvars)).change_ring(ZZ).random_element()
Multivariate Polynomial Ring in y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 over Rational Field Multivariate Polynomial Ring in x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 over Rational Field -y0001*y0010 - y1000*y1100 - y0001*y1110 + y0010
bool_poly = MPR.remove_var(*tuple(xvars)).change_ring(ZZ).random_element()+y0100^3; print(bool_poly); print(' ') bool_poly = vector([QQ(mod(a,2)) for a in bool_poly.coefficients()])*vector(bool_poly.monomials()); print(bool_poly); print(' ') #reduce modulo 2 (boolean polynomial remember) then coerce new coefficients back to QQ parse_bool_poly = [[b.strip() for b in c] for c in [a.split('*') for a in str(bool_poly).split('+')]]; print(parse_bool_poly); print(' ')
y0100^3 - 5*y0111^2 - y0100*y1101 + 16*y0000*y1110 + y1000*y1110 + 2*y1011 y0100^3 + y0111^2 + y0100*y1101 + y1000*y1110 [['y0100^3'], ['y0111^2'], ['y0100', 'y1101'], ['y1000', 'y1110']]
('y0100').find('^') ('y0100^3').find('^') [[a.split('^')[0] for a in c] for c in parse_bool_poly]
-1 5 [['y0100'], ['y0111'], ['y0100', 'y1101'], ['y1000', 'y1110']]
prob_poly [prob_poly.coefficient(a) for a in yvars] [1 for i in range(atoms)]
y0000 - y0001 - y1100 + 2*y1101 - y1111 [1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 0, -1] [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
prob_poly [prob_poly.coefficient(a) for a in yvars] [1 for i in range(atoms)] block_matrix(2,1,[matrix([prob_poly.coefficient(a) for a in yvars]),matrix([1 for i in range(atoms)])],subdivide=False) zero_matrix(2,2) 2*identity_matrix(atoms,atoms)
y0000 - y0001 - y1100 + 2*y1101 - y1111 [1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 0, -1] [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [ 1 -1 0 0 0 0 0 0 0 0 0 0 -1 2 0 -1] [ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] [0 0] [0 0] [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2]
prob_poly_x = vector([prob_poly.coefficient(a) for a in yvars])*MM*vector(xvars);prob_poly_x prob_poly_x_coefficients = matrix([prob_poly_x.coefficient(a) for a in xvars]);prob_poly_x_coefficients lgr=block_matrix(2,1,[prob_poly_x_coefficients,matrix([1 for i in range(atoms)])],subdivide=False) lagrange_matrix=block_matrix(2,2,[2*identity_matrix(atoms,atoms),lgr.transpose(),lgr,zero_matrix(2,2)],subdivide=False);lagrange_matrix lagrange_vector = vector([2/atoms for i in range(atoms)]+[.6,1]);lagrange_vector lagrange_inverse = lagrange_matrix.inverse();lagrange_inverse (lagrange_inverse*lagrange_vector)[0:atoms]
x0000 + x0010 + x0100 + x0110 + x1000 + x1010 + x1101 [1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0] [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1] [1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0] (0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.125000000000000, 0.600000000000000, 1.00000000000000) [ 3/7 0 -1/14 0 -1/14 0 -1/14 0 -1/14 0 -1/14 0 0 -1/14 0 0 1/7 0] [ 0 4/9 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 -1/18 0 -1/18 -1/18 -1/9 1/9] [ -1/14 0 3/7 0 -1/14 0 -1/14 0 -1/14 0 -1/14 0 0 -1/14 0 0 1/7 0] [ 0 -1/18 0 4/9 0 -1/18 0 -1/18 0 -1/18 0 -1/18 -1/18 0 -1/18 -1/18 -1/9 1/9] [ -1/14 0 -1/14 0 3/7 0 -1/14 0 -1/14 0 -1/14 0 0 -1/14 0 0 1/7 0] [ 0 -1/18 0 -1/18 0 4/9 0 -1/18 0 -1/18 0 -1/18 -1/18 0 -1/18 -1/18 -1/9 1/9] [ -1/14 0 -1/14 0 -1/14 0 3/7 0 -1/14 0 -1/14 0 0 -1/14 0 0 1/7 0] [ 0 -1/18 0 -1/18 0 -1/18 0 4/9 0 -1/18 0 -1/18 -1/18 0 -1/18 -1/18 -1/9 1/9] [ -1/14 0 -1/14 0 -1/14 0 -1/14 0 3/7 0 -1/14 0 0 -1/14 0 0 1/7 0] [ 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 4/9 0 -1/18 -1/18 0 -1/18 -1/18 -1/9 1/9] [ -1/14 0 -1/14 0 -1/14 0 -1/14 0 -1/14 0 3/7 0 0 -1/14 0 0 1/7 0] [ 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 4/9 -1/18 0 -1/18 -1/18 -1/9 1/9] [ 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 4/9 0 -1/18 -1/18 -1/9 1/9] [ -1/14 0 -1/14 0 -1/14 0 -1/14 0 -1/14 0 -1/14 0 0 3/7 0 0 1/7 0] [ 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 -1/18 0 4/9 -1/18 -1/9 1/9] [ 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 0 -1/18 -1/18 0 -1/18 4/9 -1/9 1/9] [ 1/7 -1/9 1/7 -1/9 1/7 -1/9 1/7 -1/9 1/7 -1/9 1/7 -1/9 -1/9 1/7 -1/9 -1/9 -32/63 2/9] [ 0 1/9 0 1/9 0 1/9 0 1/9 0 1/9 0 1/9 1/9 0 1/9 1/9 2/9 -2/9] (0.0857142857142857, 0.0444444444444444, 0.0857142857142857, 0.0444444444444444, 0.0857142857142857, 0.0444444444444444, 0.0857142857142857, 0.0444444444444444, 0.0857142857142857, 0.0444444444444444, 0.0857142857142857, 0.0444444444444444, 0.0444444444444444, 0.0857142857142857, 0.0444444444444444, 0.0444444444444444)
print('probability calculus for non independent generators (4 in this case) modeled on unit n-cube the vertices are atoms of statement calculus') print('example variable description for 3-cube with generators A,B,C') print('y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C)') print('x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C)') print(' ') num_gens = 4 # 4-cube num_atoms = 2**num_gens print('# of generators ' + str(num_gens) + ', # of atoms ' + str(num_atoms)); print(' ') x = ['x' + Integer(ii+num_atoms).binary()[1:num_gens + 1] for ii in range(num_atoms)];print('x probability variables');print(x);print(' ') y = ['y' + Integer(ii+num_atoms).binary()[1:num_gens + 1] for ii in range(num_atoms)];print('y probability variables');print(y);print(' ') MPR = PolynomialRing(QQ,x + y);print(MPR);print(' ') MPR.inject_variables(); print(' ') xvars = [MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'x')]];print('xvars');print(xvars);print(' ') # atoms correspond to the vertices of the unit n-cube yvars = [MPR.gens()[k] for k in [i for i, j in enumerate(MPR.gens()) if (str(j)[0] == 'y')]];print('yvars');print(yvars);print(' ') # these correspond to expressions formed by generators and *, y101 = a*c, y111=a*b*c, y000 = 1 = x000+x001+x010+... also y101 = Prob(A*C) etc #AND = lambda A, B: A*B #FA = lambda mylist: 1 if not mylist else Integer(reduce(AND, mylist)) #MM = matrix([[Integer(FA([str(xvarsx)[i] == '1' for i in iyvars])) for xvarsx in xvars] for iyvars in iy]);print('MM');print('is MM totally unimodular? going out on limb and saying yes');print(MM);print(' ') # just a note: Prob(A*~B) = Prob(A*(1+B)) = Prob(A+A*B)=Prob(A)-Prob(A*B) #MMinv = MM.inverse();print('MMinv');print(MMinv);print(' ') # well almost, is MM totally unimodular? Integer matrix with integer inverse det = +/- 1 # recursive way of defining MM and MMinv MM = matrix([1]) for ii in range(1,num_gens + 1): MM = block_matrix(2,2,[MM,MM,0,MM],subdivide=False) print('Sierpinski triangle Matrix, M');print(MM);print(' ') print('y = M*x, is M totally unimodular? going out on limb and saying yes'); MMinv = matrix([1]) for ii in range(1,num_gens+1): MMinv = block_matrix(2,2,[MMinv,-MMinv,0,MMinv],subdivide=False) print('M^-1');print(MMinv);print(' ') x_of_y = list(MMinv*vector(yvars) - vector(xvars));print('x variables in terms of y variables');print(x_of_y);print(' ') y_of_x = list(MM*vector(xvars) - vector(yvars));print('y variables in terms of x variables');print(y_of_x);print(' ') prob_atoms = [QQ(normalvariate(0, 1)^2) for i in range(num_atoms)] normalize = sum(prob_atoms) prob_atoms = [pa/normalize for pa in prob_atoms] RR_prob_atoms = [RR(pa) for pa in prob_atoms] print('random pick atom i.e. x variable probabilities'); print(RR_prob_atoms); print(' ') y_var_prob = list(MM*vector(RR_prob_atoms)); print('y variable probabilities'); print(y_var_prob);print(' ') atom_prob_polys = list(vector(xvars) - vector(prob_atoms)) #just assign rational probabilities to the X variables print('sum probabilities check');print(sum(prob_atoms));print(' ') iy = [[i for i,j in enumerate(str(a)) if j == '1'] for a in yvars]; print('iy'); print(iy); print(' ') leniy = [len(c) for c in iy] ind_poly_list = [] for ii in range(len(yvars)): if leniy[ii] > 1: str_yvars = str(yvars[ii]) gens_list = [] for jj in range(1,len(str_yvars)): if str_yvars[jj] == '1': gens_list.append(yvars[2^(num_gens - jj)]) ind_poly_list.append(reduce(lambda a,b: a*b, gens_list) - yvars[ii]) print('define polynomials for independent generators, generators=3 then y100,y010,y001 are the generators') print(ind_poly_list);print(' ') #myideal=ideal(ind_poly_list) #QR = MPR.quotient_ring(myideal) #QR.inject_variables() #bool_poly = y0101*y1100+y1111*y1000*y0110+2*y1110; print(bool_poly) # make sure coefficients are in ZZ bool_poly = MPR.remove_var(*tuple(xvars)).change_ring(ZZ).random_element(); print('random integer polynomial in y variables'); print(bool_poly); print(' ') bool_poly = vector([QQ(mod(a,2)) for a in bool_poly.coefficients()])*vector(bool_poly.monomials()); print('treated as boolean polynomial') ;print(bool_poly); print(' ') #reduce modulo 2 (boolean polynomial remember) then coerce new coefficients back to QQ parse_bool_poly = [[b.strip() for b in c] for c in [a.split('*') for a in str(bool_poly).split('+')]]; print('parsing and removing leading and trailing spaces'); print(parse_bool_poly); print(' ') parse_bool_poly = [[a.split('^')[0] for a in c] for c in parse_bool_poly]; print('removing powers y^m --> y'); print(parse_bool_poly); print(' ') listA = [] for pbp in parse_bool_poly: listB = [] for b in pbp: listB.append('1' + b[1:]) k = int(listB[0],2) for b in listB: k = k | int(b,2) # or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111 listA.append('y' + Integer(k).binary()[1:]) #creating the equivalent reduced boolean polynomial #y vars as string being converted back to the generators in the polynomial ring and we previously injected the variable so we can write expressions in the generators directly print('or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111') reduced_bool_poly = sum([MPR(y) for y in listA]); print('reduced to 1st order - linear - boolean polynomial in yvariables'); print(reduced_bool_poly); print(' ') #now the procedure to obtain the probability expression vctr = vector([reduced_bool_poly.coefficient(g) for g in yvars]) atom_bool_poly = vctr*MM*vector(xvars); print('expressing in the x variables - still boolean - using vector(y var coefficients)*M*vector(xvars)'); print(atom_bool_poly); print(' ') atom_bool_poly = sum([QQ(mod(atom_bool_poly.coefficient(a),2))*a for a in xvars]); print('reducing the x var polynomial'); print(atom_bool_poly); print(' ') prob_poly = vector([atom_bool_poly.coefficient(a) for a in xvars])*MMinv*vector(yvars); print('converting to probability using xvar_coeff_vector*(M^-1)*vector(yvars)');print(prob_poly); print(' ') #for independent generators prob_poly needs to be linear in the y variables use this with the output from above (testpoly4) prob_poly_monomials = prob_poly.monomials(); print('prob_poly_monomials'); print(prob_poly_monomials); print(' ') prob_poly_coefficients = prob_poly.coefficients(); print('prob_poly_coefficients'); print(prob_poly_coefficients); print(' ') monomial_gens_list = [] for a in prob_poly_monomials: str_a = str(a) gens_list = [] for jj in range(1,len(str_a)): if str_a[jj] == '1': gens_list.append(yvars[2^(num_gens - jj)]) if len(gens_list) <> 0: monomial_gens_list.append(reduce(lambda a,b:a*b ,gens_list)) else: monomial_gens_list.append(yvars[0]) #yvars[0]=y000 then gens_list = [] so we put yvars[0] back prob_poly_ind = vector(prob_poly_coefficients)*vector(monomial_gens_list); print('if the generators are independent the probability poly becomes'); print(prob_poly_ind); print(' ') #lagrange multiplier problem print('approximation to maximum entropy using least squares subject to constraints:') print('minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value'); print(' ') #atom_bool_poly2 = vector([prob_poly.coefficient(a) for a in yvars])*MM*vector(xvars) # should equal atom_bool_poly #atom_bool_poly_coefficients = matrix([atom_bool_poly2.coefficient(a) for a in xvars]) atom_bool_poly_coefficients = matrix([atom_bool_poly.coefficient(a) for a in xvars]); print('coefficient vector of boolean polynomial in terms of atoms - xvars'); print(atom_bool_poly_coefficients); print(' ') observed_prob_of_bool_poly = QQ(round(.05 + 0.9*random(), 3)); print('suppose observed probability of boolean polynomial = ' + str(observed_prob_of_bool_poly)); print(' ') lgr = block_matrix(2,1,[atom_bool_poly_coefficients, matrix([1 for i in range(num_atoms)])], subdivide = False) lagrange_matrix = block_matrix(QQ, 2, 2, [2*identity_matrix(num_atoms,num_atoms), lgr.transpose(), lgr, zero_matrix(2,2)],subdivide = False); print('lagrange multiplier matrix'); print(lagrange_matrix); print(' ') lagrange_inverse = lagrange_matrix.inverse();print('inverse of lagrange matrix'); print(lagrange_inverse); print(' ') lagrange_vector = vector([QQ(2/num_atoms) for i in range(num_atoms)] + [observed_prob_of_bool_poly, 1]) print('left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu])'); print(lagrange_vector); print(' ') atom_probabilities = (lagrange_inverse*lagrange_vector)[0:num_atoms]; print('atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial'); print(atom_probabilities); print(' ')
probability calculus for non independent generators (4 in this case) modeled on unit n-cube the vertices are atoms of statement calculus example variable description for 3-cube with generators A,B,C y000 = Prob(1), y100=Prob(A), y010=Prob(B), y001=Prob(C), y110=Prob(A*B), y011=Prob(B*C), y101=Prob(C*A), y111=Prob(A*B*C) x000 = Prob((1+A)*(1+B)*(1+C)), x100=Prob(A*(1+B)*(1+C)), x010=Prob((1+A)*B*(1+C)), x001=Prob((1+A)*(1+B)*C), x110=Prob(A*B*(1+C)), x011=Prob((1+A)*B*C), x101=Prob(A*(1+B)*C), x111=Prob(A*B*C) # of generators 4, # of atoms 16 x probability variables ['x0000', 'x0001', 'x0010', 'x0011', 'x0100', 'x0101', 'x0110', 'x0111', 'x1000', 'x1001', 'x1010', 'x1011', 'x1100', 'x1101', 'x1110', 'x1111'] y probability variables ['y0000', 'y0001', 'y0010', 'y0011', 'y0100', 'y0101', 'y0110', 'y0111', 'y1000', 'y1001', 'y1010', 'y1011', 'y1100', 'y1101', 'y1110', 'y1111'] Multivariate Polynomial Ring in x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 over Rational Field Defining x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111, y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111 xvars [x0000, x0001, x0010, x0011, x0100, x0101, x0110, x0111, x1000, x1001, x1010, x1011, x1100, x1101, x1110, x1111] yvars [y0000, y0001, y0010, y0011, y0100, y0101, y0110, y0111, y1000, y1001, y1010, y1011, y1100, y1101, y1110, y1111] Sierpinski triangle Matrix, M [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1] [0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1] [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1] [0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1] [0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] y = M*x, is M totally unimodular? going out on limb and saying yes M^-1 [ 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1] [ 0 1 0 -1 0 -1 0 1 0 -1 0 1 0 1 0 -1] [ 0 0 1 -1 0 0 -1 1 0 0 -1 1 0 0 1 -1] [ 0 0 0 1 0 0 0 -1 0 0 0 -1 0 0 0 1] [ 0 0 0 0 1 -1 -1 1 0 0 0 0 -1 1 1 -1] [ 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 1] [ 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 1] [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1] [ 0 0 0 0 0 0 0 0 1 -1 -1 1 -1 1 1 -1] [ 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1] [ 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] x variables in terms of y variables [-x0000 + y0000 - y0001 - y0010 + y0011 - y0100 + y0101 + y0110 - y0111 - y1000 + y1001 + y1010 - y1011 + y1100 - y1101 - y1110 + y1111, -x0001 + y0001 - y0011 - y0101 + y0111 - y1001 + y1011 + y1101 - y1111, -x0010 + y0010 - y0011 - y0110 + y0111 - y1010 + y1011 + y1110 - y1111, -x0011 + y0011 - y0111 - y1011 + y1111, -x0100 + y0100 - y0101 - y0110 + y0111 - y1100 + y1101 + y1110 - y1111, -x0101 + y0101 - y0111 - y1101 + y1111, -x0110 + y0110 - y0111 - y1110 + y1111, -x0111 + y0111 - y1111, -x1000 + y1000 - y1001 - y1010 + y1011 - y1100 + y1101 + y1110 - y1111, -x1001 + y1001 - y1011 - y1101 + y1111, -x1010 + y1010 - y1011 - y1110 + y1111, -x1011 + y1011 - y1111, -x1100 + y1100 - y1101 - y1110 + y1111, -x1101 + y1101 - y1111, -x1110 + y1110 - y1111, -x1111 + y1111] y variables in terms of x variables [x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x0110 + x0111 + x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - y0000, x0001 + x0011 + x0101 + x0111 + x1001 + x1011 + x1101 + x1111 - y0001, x0010 + x0011 + x0110 + x0111 + x1010 + x1011 + x1110 + x1111 - y0010, x0011 + x0111 + x1011 + x1111 - y0011, x0100 + x0101 + x0110 + x0111 + x1100 + x1101 + x1110 + x1111 - y0100, x0101 + x0111 + x1101 + x1111 - y0101, x0110 + x0111 + x1110 + x1111 - y0110, x0111 + x1111 - y0111, x1000 + x1001 + x1010 + x1011 + x1100 + x1101 + x1110 + x1111 - y1000, x1001 + x1011 + x1101 + x1111 - y1001, x1010 + x1011 + x1110 + x1111 - y1010, x1011 + x1111 - y1011, x1100 + x1101 + x1110 + x1111 - y1100, x1101 + x1111 - y1101, x1110 + x1111 - y1110, x1111 - y1111] random pick atom i.e. x variable probabilities [0.400447430848116, 0.0471982467364013, 0.00731937150571459, 0.00369538183082823, 0.144034680703587, 0.0736927279463103, 0.0776219939341513, 0.0216040394769143, 0.135864634148865, 0.0701051147160910, 0.00996209002643161, 0.00349084697594845, 0.000409105229442846, 0.00229786940149651, 0.000752356293173467, 0.00150411022652813] y variable probabilities [1.00000000000000, 0.223588337310518, 0.125950190269690, 0.0302943785102191, 0.321916883211604, 0.0990987470512493, 0.101482499930767, 0.0231081497034425, 0.224386127017977, 0.0773979413200641, 0.0157094035220817, 0.00499495720247658, 0.00496344115064095, 0.00380197962802464, 0.00225646651970160, 0.00150411022652813] sum probabilities check 1 iy [[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]] define polynomials for independent generators, generators=3 then y100,y010,y001 are the generators [y0001*y0010 - y0011, y0001*y0100 - y0101, y0010*y0100 - y0110, y0001*y0010*y0100 - y0111, y0001*y1000 - y1001, y0010*y1000 - y1010, y0001*y0010*y1000 - y1011, y0100*y1000 - y1100, y0001*y0100*y1000 - y1101, y0010*y0100*y1000 - y1110, y0001*y0010*y0100*y1000 - y1111] random integer polynomial in y variables -10*y0001*y0010 + 9*y1011*y1101 + 4*y0010*y1111 - 3*y1100 treated as boolean polynomial y1011*y1101 + y1100 parsing and removing leading and trailing spaces [['y1011', 'y1101'], ['y1100']] removing powers y^m --> y [['y1011', 'y1101'], ['y1100']] or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111 reduced to 1st order - linear - boolean polynomial in yvariables y1100 + y1111 expressing in the x variables - still boolean - using vector(y var coefficients)*M*vector(xvars) x1100 + x1101 + x1110 + 2*x1111 reducing the x var polynomial x1100 + x1101 + x1110 converting to probability using xvar_coeff_vector*(M^-1)*vector(yvars) y1100 - y1111 prob_poly_monomials [y1100, y1111] prob_poly_coefficients [1, -1] if the generators are independent the probability poly becomes -y0001*y0010*y0100*y1000 + y0100*y1000 approximation to maximum entropy using least squares subject to constraints: minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0] suppose observed probability of boolean polynomial = 341/1000 lagrange multiplier matrix [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0] inverse of lagrange matrix [ 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 0 0 0 -1/26 -1/13 1/13] [ 0 0 0 0 0 0 0 0 0 0 0 0 1/3 -1/6 -1/6 0 1/3 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 -1/6 1/3 -1/6 0 1/3 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 -1/6 -1/6 1/3 0 1/3 0] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 6/13 -1/13 1/13] [ -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 1/3 1/3 1/3 -1/13 -32/39 2/13] [ 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 0 0 0 1/13 2/13 -2/13] left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu]) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 341/1000, 1) atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial (659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 341/3000, 341/3000, 341/3000, 659/13000) y1011*y1101 + y1100 parsing and removing leading and trailing spaces [['y1011', 'y1101'], ['y1100']] removing powers y^m --> y [['y1011', 'y1101'], ['y1100']] or-ing the bits in y101 with y110 gives y111 (A*C)*(A*B)=A*B*C for instance ie y101*y110=y111 reduced to 1st order - linear - boolean polynomial in yvariables y1100 + y1111 expressing in the x variables - still boolean - using vector(y var coefficients)*M*vector(xvars) x1100 + x1101 + x1110 + 2*x1111 reducing the x var polynomial x1100 + x1101 + x1110 converting to probability using xvar_coeff_vector*(M^-1)*vector(yvars) y1100 - y1111 prob_poly_monomials [y1100, y1111] prob_poly_coefficients [1, -1] if the generators are independent the probability poly becomes -y0001*y0010*y0100*y1000 + y0100*y1000 approximation to maximum entropy using least squares subject to constraints: minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0] suppose observed probability of boolean polynomial = 341/1000 lagrange multiplier matrix [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0] inverse of lagrange matrix [ 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 -1/26 0 0 0 -1/26 -1/13 1/13] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 6/13 0 0 0 -1/26 -1/13 1/13] [ 0 0 0 0 0 0 0 0 0 0 0 0 1/3 -1/6 -1/6 0 1/3 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 -1/6 1/3 -1/6 0 1/3 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 -1/6 -1/6 1/3 0 1/3 0] [ -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 -1/26 0 0 0 6/13 -1/13 1/13] [ -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 1/3 1/3 1/3 -1/13 -32/39 2/13] [ 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 1/13 0 0 0 1/13 2/13 -2/13] left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu]) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 341/1000, 1) atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial (659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 659/13000, 341/3000, 341/3000, 341/3000, 659/13000)
#atom_bool_poly=x1010 + x1011 + x1101 + x1110 + x1111 #lagrange multiplier problem print('approximation to maximum entropy using least squares subject to constraints:') print('minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value'); print(' ') #atom_bool_poly2 = vector([prob_poly.coefficient(a) for a in yvars])*MM*vector(xvars) # should equal atom_bool_poly #atom_bool_poly_coefficients = matrix([atom_bool_poly2.coefficient(a) for a in xvars]) atom_bool_poly_coefficients = matrix([atom_bool_poly.coefficient(a) for a in xvars]); print('coefficient vector of boolean polynomial in terms of atoms - xvars'); print(atom_bool_poly_coefficients); print(' ') observed_prob_of_bool_poly = 0 #QQ(round(.05 + 0.9*random(), 3)); print('suppose observed probability of boolean polynomial = ' + str(observed_prob_of_bool_poly)); print(' ') lgr = block_matrix(2,1,[atom_bool_poly_coefficients, matrix([1 for i in range(num_atoms)])], subdivide = False) lagrange_matrix = block_matrix(QQ, 2, 2, [2*identity_matrix(num_atoms,num_atoms), lgr.transpose(), lgr, zero_matrix(2,2)],subdivide = False); print('lagrange multiplier matrix'); print(lagrange_matrix); print(' ') lagrange_inverse = lagrange_matrix.inverse();print('inverse of lagrange matrix'); print(lagrange_inverse); print(' ') lagrange_vector = vector([QQ(2/num_atoms) for i in range(num_atoms)] + [observed_prob_of_bool_poly, 1]) print('left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu])'); print(lagrange_vector); print(' ') atom_probabilities = (lagrange_inverse*lagrange_vector)[0:num_atoms]; print('atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial'); print(atom_probabilities); print(' ')
approximation to maximum entropy using least squares subject to constraints: minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] lagrange multiplier matrix [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0] inverse of lagrange matrix [11/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 11/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 11/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 11/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 11/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 -1/24 11/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [ 0 0 0 0 0 0 3/8 -1/8 0 0 0 0 0 0 -1/8 -1/8 1/4 0] [ 0 0 0 0 0 0 -1/8 3/8 0 0 0 0 0 0 -1/8 -1/8 1/4 0] [-1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 11/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 11/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 11/24 -1/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 11/24 -1/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 11/24 -1/24 0 0 -1/12 1/12] [-1/24 -1/24 -1/24 -1/24 -1/24 -1/24 0 0 -1/24 -1/24 -1/24 -1/24 -1/24 11/24 0 0 -1/12 1/12] [ 0 0 0 0 0 0 -1/8 -1/8 0 0 0 0 0 0 3/8 -1/8 1/4 0] [ 0 0 0 0 0 0 -1/8 -1/8 0 0 0 0 0 0 -1/8 3/8 1/4 0] [-1/12 -1/12 -1/12 -1/12 -1/12 -1/12 1/4 1/4 -1/12 -1/12 -1/12 -1/12 -1/12 -1/12 1/4 1/4 -2/3 1/6] [ 1/12 1/12 1/12 1/12 1/12 1/12 0 0 1/12 1/12 1/12 1/12 1/12 1/12 0 0 1/6 -1/6] left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu]) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 0, 1) atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial (1/12, 1/12, 1/12, 1/12, 1/12, 1/12, 0, 0, 1/12, 1/12, 1/12, 1/12, 1/12, 1/12, 0, 0)
atom_bool_poly2=x1010 + x1011 + x1101 + x1110 + x1111 atom_bool_poly=x0110 + x0111 + x1110 + x1111 nabp=sum(xvars)-atom_bool_poly nabp2=sum(xvars)-atom_bool_poly2 #lagrange multiplier problem print('approximation to maximum entropy using least squares subject to constraints:') print('minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value'); print(' ') #atom_bool_poly2 = vector([prob_poly.coefficient(a) for a in yvars])*MM*vector(xvars) # should equal atom_bool_poly #atom_bool_poly_coefficients = matrix([atom_bool_poly2.coefficient(a) for a in xvars]) atom_bool_poly_coefficients = matrix([atom_bool_poly.coefficient(a) for a in xvars]); print('coefficient vector of boolean polynomial in terms of atoms - xvars'); print(atom_bool_poly_coefficients); print(' ') nabpc=matrix([nabp.coefficient(a) for a in xvars]) observed_prob_of_bool_poly = 1 #QQ(round(.05 + 0.9*random(), 3)); print('suppose observed probability of boolean polynomial = ' + str(observed_prob_of_bool_poly)); print(' ') atom_bool_poly_coefficients2 = matrix([atom_bool_poly2.coefficient(a) for a in xvars]); print('coefficient vector of boolean polynomial in terms of atoms - xvars'); print(atom_bool_poly_coefficients2); print(' ') nabpc2=matrix([nabp2.coefficient(a) for a in xvars]) observed_prob_of_bool_poly2 = 1 lgr = block_matrix(3,1,[atom_bool_poly_coefficients, atom_bool_poly_coefficients2, matrix([1 for i in range(num_atoms)])], subdivide = False) lagrange_matrix = block_matrix(QQ, 2, 2, [2*identity_matrix(num_atoms,num_atoms), lgr.transpose(), lgr, zero_matrix(3,3)],subdivide = False); print('lagrange multiplier matrix'); print(lagrange_matrix); print(' ') lagrange_inverse = lagrange_matrix.inverse();print('inverse of lagrange matrix'); print(lagrange_inverse); print(' ') lagrange_vector = vector([QQ(2/num_atoms) for i in range(num_atoms)] + [observed_prob_of_bool_poly,observed_prob_of_bool_poly2,1]) print('left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu])'); print(lagrange_vector); print(' ') atom_probabilities = (lagrange_inverse*lagrange_vector)[0:num_atoms]; print('atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial'); print(atom_probabilities); print(' ')
approximation to maximum entropy using least squares subject to constraints: minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1] lagrange multiplier matrix [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0] inverse of lagrange matrix [ 35/78 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 35/78 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 35/78 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 35/78 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 -2/39 35/78 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 -2/39 -2/39 35/78 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -1/52 -1/52 -1/52 -1/52 -1/52 -1/52 35/104 -17/104 -1/52 -1/52 3/52 3/52 -1/52 3/52 -9/104 -9/104 15/52 -2/13 1/26] [ -1/52 -1/52 -1/52 -1/52 -1/52 -1/52 -17/104 35/104 -1/52 -1/52 3/52 3/52 -1/52 3/52 -9/104 -9/104 15/52 -2/13 1/26] [ -2/39 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 35/78 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 35/78 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -1/78 -1/78 -1/78 -1/78 -1/78 -1/78 3/52 3/52 -1/78 -1/78 29/78 -5/39 -1/78 -5/39 -3/52 -3/52 -11/78 3/13 1/39] [ -1/78 -1/78 -1/78 -1/78 -1/78 -1/78 3/52 3/52 -1/78 -1/78 -5/39 29/78 -1/78 -5/39 -3/52 -3/52 -11/78 3/13 1/39] [ -2/39 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 35/78 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -1/78 -1/78 -1/78 -1/78 -1/78 -1/78 3/52 3/52 -1/78 -1/78 -5/39 -5/39 -1/78 29/78 -3/52 -3/52 -11/78 3/13 1/39] [ 1/52 1/52 1/52 1/52 1/52 1/52 -9/104 -9/104 1/52 1/52 -3/52 -3/52 1/52 -3/52 35/104 -17/104 11/52 2/13 -1/26] [ 1/52 1/52 1/52 1/52 1/52 1/52 -9/104 -9/104 1/52 1/52 -3/52 -3/52 1/52 -3/52 -17/104 35/104 11/52 2/13 -1/26] [ -5/78 -5/78 -5/78 -5/78 -5/78 -5/78 15/52 15/52 -5/78 -5/78 -11/78 -11/78 -5/78 -11/78 11/52 11/52 -55/78 2/13 5/39] [ -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -2/13 -2/13 -1/13 -1/13 3/13 3/13 -1/13 3/13 2/13 2/13 2/13 -8/13 2/13] [ 4/39 4/39 4/39 4/39 4/39 4/39 1/26 1/26 4/39 4/39 1/39 1/39 4/39 1/39 -1/26 -1/26 5/39 2/13 -8/39] left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu]) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1, 1, 1) atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial (-1/26, -1/26, -1/26, -1/26, -1/26, -1/26, 9/52, 9/52, -1/26, -1/26, 3/26, 3/26, -1/26, 3/26, 17/52, 17/52) minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1] coefficient vector of boolean polynomial in terms of atoms - xvars [0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1] lagrange multiplier matrix [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1] [0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0] inverse of lagrange matrix [ 35/78 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 35/78 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 35/78 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 35/78 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 -2/39 35/78 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 -2/39 -2/39 35/78 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -1/52 -1/52 -1/52 -1/52 -1/52 -1/52 35/104 -17/104 -1/52 -1/52 3/52 3/52 -1/52 3/52 -9/104 -9/104 15/52 -2/13 1/26] [ -1/52 -1/52 -1/52 -1/52 -1/52 -1/52 -17/104 35/104 -1/52 -1/52 3/52 3/52 -1/52 3/52 -9/104 -9/104 15/52 -2/13 1/26] [ -2/39 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 35/78 -2/39 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -2/39 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 35/78 -1/78 -1/78 -2/39 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -1/78 -1/78 -1/78 -1/78 -1/78 -1/78 3/52 3/52 -1/78 -1/78 29/78 -5/39 -1/78 -5/39 -3/52 -3/52 -11/78 3/13 1/39] [ -1/78 -1/78 -1/78 -1/78 -1/78 -1/78 3/52 3/52 -1/78 -1/78 -5/39 29/78 -1/78 -5/39 -3/52 -3/52 -11/78 3/13 1/39] [ -2/39 -2/39 -2/39 -2/39 -2/39 -2/39 -1/52 -1/52 -2/39 -2/39 -1/78 -1/78 35/78 -1/78 1/52 1/52 -5/78 -1/13 4/39] [ -1/78 -1/78 -1/78 -1/78 -1/78 -1/78 3/52 3/52 -1/78 -1/78 -5/39 -5/39 -1/78 29/78 -3/52 -3/52 -11/78 3/13 1/39] [ 1/52 1/52 1/52 1/52 1/52 1/52 -9/104 -9/104 1/52 1/52 -3/52 -3/52 1/52 -3/52 35/104 -17/104 11/52 2/13 -1/26] [ 1/52 1/52 1/52 1/52 1/52 1/52 -9/104 -9/104 1/52 1/52 -3/52 -3/52 1/52 -3/52 -17/104 35/104 11/52 2/13 -1/26] [ -5/78 -5/78 -5/78 -5/78 -5/78 -5/78 15/52 15/52 -5/78 -5/78 -11/78 -11/78 -5/78 -11/78 11/52 11/52 -55/78 2/13 5/39] [ -1/13 -1/13 -1/13 -1/13 -1/13 -1/13 -2/13 -2/13 -1/13 -1/13 3/13 3/13 -1/13 3/13 2/13 2/13 2/13 -8/13 2/13] [ 4/39 4/39 4/39 4/39 4/39 4/39 1/26 1/26 4/39 4/39 1/39 1/39 4/39 1/39 -1/26 -1/26 5/39 2/13 -8/39] left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu]) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1, 1, 1) atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial (-1/26, -1/26, -1/26, -1/26, -1/26, -1/26, 9/52, 9/52, -1/26, -1/26, 3/26, 3/26, -1/26, 3/26, 17/52, 17/52)
atom_bool_poly;atom_bool_poly2;print(' ') atom_bool_poly;sum(xvars)-atom_bool_poly2;print(' ') sum(xvars)-atom_bool_poly;atom_bool_poly2;print(' ') sum(xvars)-atom_bool_poly;sum(xvars)-atom_bool_poly2;print(' ')
x0110 + x0111 + x1110 + x1111 x1010 + x1011 + x1101 + x1110 + x1111 x0110 + x0111 + x1110 + x1111 x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x0110 + x0111 + x1000 + x1001 + x1100 x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x1000 + x1001 + x1010 + x1011 + x1100 + x1101 x1010 + x1011 + x1101 + x1110 + x1111 x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x1000 + x1001 + x1010 + x1011 + x1100 + x1101 x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x0110 + x0111 + x1000 + x1001 + x1100
x1=sum(xvars) atom_bool_poly2=x1-x1010 + x1011 + x1101 + x1110 + x1111 atom_bool_poly=x1-x0110 + x0111 + x1110 + x1111 bool_poly = atom_bool_poly*atom_bool_poly2;bool_poly bool_poly = sum([QQ(mod(bool_poly.coefficient(a),2))*a for a in bool_poly.monomials()]);bool_poly parse_bool_poly = [[b.strip() for b in c] for c in [a.split('*') for a in str(bool_poly).split('+')]]; print('parsing and removing leading and trailing spaces'); print(parse_bool_poly); print(' ') parse_bool_poly = [[a.split('^')[0] for a in c] for c in parse_bool_poly]; print('removing powers x^m --> x'); print(parse_bool_poly); print(' ') [len(a) for a in parse_bool_poly] listA = [] for a in parse_bool_poly: if len(a) < 2: listA.append(a[0]) listA atom_bool_poly = sum([MPR(x) for x in listA]);atom_bool_poly atom_bool_poly = sum([QQ(mod(atom_bool_poly.coefficient(a),2))*a for a in xvars]); print('reducing the x var polynomial'); print(atom_bool_poly); print(' ') print('approximation to maximum entropy using least squares subject to constraints:') print('minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value'); print(' ') atom_bool_poly_coefficients = matrix([atom_bool_poly.coefficient(a) for a in xvars]); print('coefficient vector of boolean polynomial in terms of atoms - xvars'); print(atom_bool_poly_coefficients); print(' ') observed_prob_of_bool_poly = 1 #QQ(round(.05 + 0.9*random(), 3)); print('suppose observed probability of boolean polynomial = ' + str(observed_prob_of_bool_poly)); print(' ') lgr = block_matrix(2,1,[atom_bool_poly_coefficients, matrix([1 for i in range(num_atoms)])], subdivide = False) lagrange_matrix = block_matrix(QQ, 2, 2, [2*identity_matrix(num_atoms,num_atoms), lgr.transpose(), lgr, zero_matrix(2,2)],subdivide = False); print('lagrange multiplier matrix'); print(lagrange_matrix); print(' ') lagrange_inverse = lagrange_matrix.inverse();print('inverse of lagrange matrix'); print(lagrange_inverse); print(' ') lagrange_vector = vector([QQ(2/num_atoms) for i in range(num_atoms)] + [observed_prob_of_bool_poly, 1]) print('left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu])'); print(lagrange_vector); print(' ') atom_probabilities = (lagrange_inverse*lagrange_vector)[0:num_atoms]; print('atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial'); print(atom_probabilities); print(' ')
x0000^2 + 2*x0000*x0001 + x0001^2 + 2*x0000*x0010 + 2*x0001*x0010 + x0010^2 + 2*x0000*x0011 + 2*x0001*x0011 + 2*x0010*x0011 + x0011^2 + 2*x0000*x0100 + 2*x0001*x0100 + 2*x0010*x0100 + 2*x0011*x0100 + x0100^2 + 2*x0000*x0101 + 2*x0001*x0101 + 2*x0010*x0101 + 2*x0011*x0101 + 2*x0100*x0101 + x0101^2 + x0000*x0110 + x0001*x0110 + x0010*x0110 + x0011*x0110 + x0100*x0110 + x0101*x0110 + 3*x0000*x0111 + 3*x0001*x0111 + 3*x0010*x0111 + 3*x0011*x0111 + 3*x0100*x0111 + 3*x0101*x0111 + 2*x0110*x0111 + 2*x0111^2 + 2*x0000*x1000 + 2*x0001*x1000 + 2*x0010*x1000 + 2*x0011*x1000 + 2*x0100*x1000 + 2*x0101*x1000 + x0110*x1000 + 3*x0111*x1000 + x1000^2 + 2*x0000*x1001 + 2*x0001*x1001 + 2*x0010*x1001 + 2*x0011*x1001 + 2*x0100*x1001 + 2*x0101*x1001 + x0110*x1001 + 3*x0111*x1001 + 2*x1000*x1001 + x1001^2 + x0000*x1010 + x0001*x1010 + x0010*x1010 + x0011*x1010 + x0100*x1010 + x0101*x1010 + x0110*x1010 + x0111*x1010 + x1000*x1010 + x1001*x1010 + 3*x0000*x1011 + 3*x0001*x1011 + 3*x0010*x1011 + 3*x0011*x1011 + 3*x0100*x1011 + 3*x0101*x1011 + x0110*x1011 + 5*x0111*x1011 + 3*x1000*x1011 + 3*x1001*x1011 + 2*x1010*x1011 + 2*x1011^2 + 2*x0000*x1100 + 2*x0001*x1100 + 2*x0010*x1100 + 2*x0011*x1100 + 2*x0100*x1100 + 2*x0101*x1100 + x0110*x1100 + 3*x0111*x1100 + 2*x1000*x1100 + 2*x1001*x1100 + x1010*x1100 + 3*x1011*x1100 + x1100^2 + 3*x0000*x1101 + 3*x0001*x1101 + 3*x0010*x1101 + 3*x0011*x1101 + 3*x0100*x1101 + 3*x0101*x1101 + x0110*x1101 + 5*x0111*x1101 + 3*x1000*x1101 + 3*x1001*x1101 + 2*x1010*x1101 + 4*x1011*x1101 + 3*x1100*x1101 + 2*x1101^2 + 4*x0000*x1110 + 4*x0001*x1110 + 4*x0010*x1110 + 4*x0011*x1110 + 4*x0100*x1110 + 4*x0101*x1110 + 2*x0110*x1110 + 6*x0111*x1110 + 4*x1000*x1110 + 4*x1001*x1110 + 2*x1010*x1110 + 6*x1011*x1110 + 4*x1100*x1110 + 6*x1101*x1110 + 4*x1110^2 + 4*x0000*x1111 + 4*x0001*x1111 + 4*x0010*x1111 + 4*x0011*x1111 + 4*x0100*x1111 + 4*x0101*x1111 + 2*x0110*x1111 + 6*x0111*x1111 + 4*x1000*x1111 + 4*x1001*x1111 + 2*x1010*x1111 + 6*x1011*x1111 + 4*x1100*x1111 + 6*x1101*x1111 + 8*x1110*x1111 + 4*x1111^2 x0000^2 + x0001^2 + x0010^2 + x0011^2 + x0100^2 + x0101^2 + x0000*x0110 + x0001*x0110 + x0010*x0110 + x0011*x0110 + x0100*x0110 + x0101*x0110 + x0000*x0111 + x0001*x0111 + x0010*x0111 + x0011*x0111 + x0100*x0111 + x0101*x0111 + x0110*x1000 + x0111*x1000 + x1000^2 + x0110*x1001 + x0111*x1001 + x1001^2 + x0000*x1010 + x0001*x1010 + x0010*x1010 + x0011*x1010 + x0100*x1010 + x0101*x1010 + x0110*x1010 + x0111*x1010 + x1000*x1010 + x1001*x1010 + x0000*x1011 + x0001*x1011 + x0010*x1011 + x0011*x1011 + x0100*x1011 + x0101*x1011 + x0110*x1011 + x0111*x1011 + x1000*x1011 + x1001*x1011 + x0110*x1100 + x0111*x1100 + x1010*x1100 + x1011*x1100 + x1100^2 + x0000*x1101 + x0001*x1101 + x0010*x1101 + x0011*x1101 + x0100*x1101 + x0101*x1101 + x0110*x1101 + x0111*x1101 + x1000*x1101 + x1001*x1101 + x1100*x1101 parsing and removing leading and trailing spaces [['x0000^2'], ['x0001^2'], ['x0010^2'], ['x0011^2'], ['x0100^2'], ['x0101^2'], ['x0000', 'x0110'], ['x0001', 'x0110'], ['x0010', 'x0110'], ['x0011', 'x0110'], ['x0100', 'x0110'], ['x0101', 'x0110'], ['x0000', 'x0111'], ['x0001', 'x0111'], ['x0010', 'x0111'], ['x0011', 'x0111'], ['x0100', 'x0111'], ['x0101', 'x0111'], ['x0110', 'x1000'], ['x0111', 'x1000'], ['x1000^2'], ['x0110', 'x1001'], ['x0111', 'x1001'], ['x1001^2'], ['x0000', 'x1010'], ['x0001', 'x1010'], ['x0010', 'x1010'], ['x0011', 'x1010'], ['x0100', 'x1010'], ['x0101', 'x1010'], ['x0110', 'x1010'], ['x0111', 'x1010'], ['x1000', 'x1010'], ['x1001', 'x1010'], ['x0000', 'x1011'], ['x0001', 'x1011'], ['x0010', 'x1011'], ['x0011', 'x1011'], ['x0100', 'x1011'], ['x0101', 'x1011'], ['x0110', 'x1011'], ['x0111', 'x1011'], ['x1000', 'x1011'], ['x1001', 'x1011'], ['x0110', 'x1100'], ['x0111', 'x1100'], ['x1010', 'x1100'], ['x1011', 'x1100'], ['x1100^2'], ['x0000', 'x1101'], ['x0001', 'x1101'], ['x0010', 'x1101'], ['x0011', 'x1101'], ['x0100', 'x1101'], ['x0101', 'x1101'], ['x0110', 'x1101'], ['x0111', 'x1101'], ['x1000', 'x1101'], ['x1001', 'x1101'], ['x1100', 'x1101']] removing powers x^m --> x [['x0000'], ['x0001'], ['x0010'], ['x0011'], ['x0100'], ['x0101'], ['x0000', 'x0110'], ['x0001', 'x0110'], ['x0010', 'x0110'], ['x0011', 'x0110'], ['x0100', 'x0110'], ['x0101', 'x0110'], ['x0000', 'x0111'], ['x0001', 'x0111'], ['x0010', 'x0111'], ['x0011', 'x0111'], ['x0100', 'x0111'], ['x0101', 'x0111'], ['x0110', 'x1000'], ['x0111', 'x1000'], ['x1000'], ['x0110', 'x1001'], ['x0111', 'x1001'], ['x1001'], ['x0000', 'x1010'], ['x0001', 'x1010'], ['x0010', 'x1010'], ['x0011', 'x1010'], ['x0100', 'x1010'], ['x0101', 'x1010'], ['x0110', 'x1010'], ['x0111', 'x1010'], ['x1000', 'x1010'], ['x1001', 'x1010'], ['x0000', 'x1011'], ['x0001', 'x1011'], ['x0010', 'x1011'], ['x0011', 'x1011'], ['x0100', 'x1011'], ['x0101', 'x1011'], ['x0110', 'x1011'], ['x0111', 'x1011'], ['x1000', 'x1011'], ['x1001', 'x1011'], ['x0110', 'x1100'], ['x0111', 'x1100'], ['x1010', 'x1100'], ['x1011', 'x1100'], ['x1100'], ['x0000', 'x1101'], ['x0001', 'x1101'], ['x0010', 'x1101'], ['x0011', 'x1101'], ['x0100', 'x1101'], ['x0101', 'x1101'], ['x0110', 'x1101'], ['x0111', 'x1101'], ['x1000', 'x1101'], ['x1001', 'x1101'], ['x1100', 'x1101']] [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] ['x0000', 'x0001', 'x0010', 'x0011', 'x0100', 'x0101', 'x1000', 'x1001', 'x1100'] x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x1000 + x1001 + x1100 reducing the x var polynomial x0000 + x0001 + x0010 + x0011 + x0100 + x0101 + x1000 + x1001 + x1100 approximation to maximum entropy using least squares subject to constraints: minimize sum of squares of atom probabilities to an equiprobable distribution subject to constraints sum(prob(atoms)) = 1.0 and prob(boolean_polynomial) = observed_value coefficient vector of boolean polynomial in terms of atoms - xvars [1 1 1 1 1 1 0 0 1 1 0 0 1 0 0 0] lagrange multiplier matrix [2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1] [1 1 1 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0] [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0] inverse of lagrange matrix [ 4/9 -1/18 -1/18 -1/18 -1/18 -1/18 0 0 -1/18 -1/18 0 0 -1/18 0 0 0 1/9 0] [ -1/18 4/9 -1/18 -1/18 -1/18 -1/18 0 0 -1/18 -1/18 0 0 -1/18 0 0 0 1/9 0] [ -1/18 -1/18 4/9 -1/18 -1/18 -1/18 0 0 -1/18 -1/18 0 0 -1/18 0 0 0 1/9 0] [ -1/18 -1/18 -1/18 4/9 -1/18 -1/18 0 0 -1/18 -1/18 0 0 -1/18 0 0 0 1/9 0] [ -1/18 -1/18 -1/18 -1/18 4/9 -1/18 0 0 -1/18 -1/18 0 0 -1/18 0 0 0 1/9 0] [ -1/18 -1/18 -1/18 -1/18 -1/18 4/9 0 0 -1/18 -1/18 0 0 -1/18 0 0 0 1/9 0] [ 0 0 0 0 0 0 3/7 -1/14 0 0 -1/14 -1/14 0 -1/14 -1/14 -1/14 -1/7 1/7] [ 0 0 0 0 0 0 -1/14 3/7 0 0 -1/14 -1/14 0 -1/14 -1/14 -1/14 -1/7 1/7] [ -1/18 -1/18 -1/18 -1/18 -1/18 -1/18 0 0 4/9 -1/18 0 0 -1/18 0 0 0 1/9 0] [ -1/18 -1/18 -1/18 -1/18 -1/18 -1/18 0 0 -1/18 4/9 0 0 -1/18 0 0 0 1/9 0] [ 0 0 0 0 0 0 -1/14 -1/14 0 0 3/7 -1/14 0 -1/14 -1/14 -1/14 -1/7 1/7] [ 0 0 0 0 0 0 -1/14 -1/14 0 0 -1/14 3/7 0 -1/14 -1/14 -1/14 -1/7 1/7] [ -1/18 -1/18 -1/18 -1/18 -1/18 -1/18 0 0 -1/18 -1/18 0 0 4/9 0 0 0 1/9 0] [ 0 0 0 0 0 0 -1/14 -1/14 0 0 -1/14 -1/14 0 3/7 -1/14 -1/14 -1/7 1/7] [ 0 0 0 0 0 0 -1/14 -1/14 0 0 -1/14 -1/14 0 -1/14 3/7 -1/14 -1/7 1/7] [ 0 0 0 0 0 0 -1/14 -1/14 0 0 -1/14 -1/14 0 -1/14 -1/14 3/7 -1/7 1/7] [ 1/9 1/9 1/9 1/9 1/9 1/9 -1/7 -1/7 1/9 1/9 -1/7 -1/7 1/9 -1/7 -1/7 -1/7 -32/63 2/7] [ 0 0 0 0 0 0 1/7 1/7 0 0 1/7 1/7 0 1/7 1/7 1/7 2/7 -2/7] left hand side of vector([2*equiprobable, observed_prob, 1]) = lagrange_matrix*vector([prob(atoms), lambda, mu]) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1, 1) atom probabilities that minimize sum of squares subject to observed probability of boolean polynomial (1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 0, 0, 1/9, 1/9, 0, 0, 1/9, 0, 0, 0)
tuple([(0,1) for x in range(5)])
((0, 1), (0, 1), (0, 1), (0, 1), (0, 1))
from scipy.optimize import minimize pnn=1/num_atoms x1 = sum([x for x in xvars]) xc = matrix([1 for x in xvars]) atom_bool_poly=x0110 + x0111 + x1110 + x1111 atom_bool_poly2=x1010 + x1011 + x1101 + x1110 + x1111 atom_bool_poly_coefficients = matrix([atom_bool_poly.coefficient(a) for a in xvars]) atom_bool_poly_coefficients2 = matrix([atom_bool_poly2.coefficient(a) for a in xvars]) bnds = tuple([(0,1) for x in xvars]) MPR3=MPR.remove_var(*tuple(yvars)) cons = ({'type':'eq','fun': lambda x: MPR3(atom_bool_poly)(*x)-0},{'type':'eq','fun': lambda x: MPR3(atom_bool_poly2)(*x)-1},{'type':'eq','fun': lambda x: MPR3(x1)(*x)-1}) #cons = ({'type':'eq','fun': lambda x: sum([atom_bool_poly_coefficients[0,i]*x[i] for i in range(num_atoms)])-1},{'type':'eq','fun': lambda x: sum([atom_bool_poly_coefficients2[0,i]*x[i] for i in range(num_atoms)])-1},{'type':'eq','fun': lambda x: sum([x[i] for i in range(num_atoms)])-1}) fun = lambda x: sum([(y-pnn)**2 for y in x]) jacob = lambda x: 2*x res = minimize(fun, vector([.5 for x in xvars]), method='SLSQP', jac = jacob, bounds=bnds, constraints=cons) tuple(res.x.round(4))
(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.33329999999999999, 0.33329999999999999, 0.0, 0.33329999999999999, 0.0, 0.0)
MPR3=MPR.remove_var(*tuple(yvars)) (MPR3(atom_bool_poly))(*[.5 for x in xvars])
2.00000)
BPR.<A,B,C,D>=BooleanPolynomialRing(4)
#BPR.<A,B,C,D>=BooleanPolynomialRing(4) f=A*B*C*D + A*B*C f.degree(D) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) convert(convert(A*B*C))
1 A*B*C
load('ProbRecurse.py') load('Prob.py') import numpy import scipy.optimize from operator import add from operator import mul KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C*1*k) in Boolean Ring i,j,k=0,1 rel_classes = 4 types = 3 objects = rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(objects^2,'X',order='degneglex') print('types = ' + str(types)) print('rel_classes = ' + str(rel_classes)) print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') X = BPR.gens() NewGens = str(X).lower() NewGens = NewGens[1:len(NewGens) - 1] x = var(NewGens) R = matrix(BPR, objects, objects, BPR.gens()) prems = [] #for i in range(0, objects): #reflexive # poly = R[i,i] # prems.append(poly) #for i in range(0,objects): #symmetric # for j in range(i, objects): # poly = IFF(R[i,j],R[j,i]) # prems.append(poly) #for j in range(0, objects): #transitive # for i in range(0, objects): # for k in range(0, objects): # poly = IF(AND(R[min(i,j),max(i,j)],R[min(j,k),max(j,k)]),R[min(i,k),max(i,k)]) # prems.append(poly) prems.append(UNIQUE([R[9,1],R[9,6]])) # clue 1 prems.append(UNIQUE([AND(R[4,11],R[6,10]), AND(R[4,10],R[6,9]), AND(R[4,9],R[6,8])])) # clue 2 prems.append(UNIQUE([AND(R[11,6],R[9,0]), AND(R[11,0],R[9,6])])) # clue 3 prems.append(UNIQUE([AND(R[0,11],R[2,4]), AND(R[0,4],R[2,11])])) # clue 4 #prems.append(UNIQUE([AND(R[5,11],R[4,10]), AND(R[5,11],R[4,9]), AND(R[5,11],R[4,8]), AND(R[5,10],R[4,9]), AND(R[5,10],R[4,8]), AND(R[5,9],R[4,8])])) # clue 5 if BPR(0) in prems: print "explicit contradiction in premises" prems = list(set(prems)) # remove dup if BPR(1) in prems: prems.remove(BPR(1)) #probs = [a for ii in range(len(prems))] prems = [FORALL(prems)] probprems=[Prob(p) for p in prems] #constraint=[(probprems[ii]-probs[ii]) for ii in range(len(prems))] constraint=[(p-1) for p in probprems] numpy.set_printoptions(precision=4) y0 = [.5 for xx in x] bnds = tuple([(0, 1) for xx in x]) #cons = list([{'type':'eq','fun': lambda x: c(*x)} for c in constraint]) str1='{\'type\': \'eq\', \'fun\': lambda s: ((constraint[' str2='])(*s))},' mystr='[' for ii in range(len(constraint)): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' cons = eval(mystr) #FJAC=lambda s: numpy.array([ln(s[ii]+ln(1-s[ii])+2) for ii in range(len(s))]) def dHH(s): tmp=[] for ii in range(len(s)): t=ln(s[ii])-ln(1-s[ii]) tmp.append(t) #print tmp return tmp def HH(s): hh=0 for ii in range(len(x)): hh=hh+(s[ii]*ln(s[ii])+(1-s[ii])*ln(1-s[ii])) return hh ssoln = scipy.optimize.minimize(HH, y0, jac=dHH, method='SLSQP', bounds=bnds, constraints=cons) sssoln=[s for s in ssoln.x] A=matrix(RR, objects, objects, sssoln) RR5 = RealField(prec=5) MatPrint = MatrixSpace(RR5,objects,objects) print(MatPrint(A))
objects = 12 types = 3 rel_classes = 4 144 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X143 = R[11,11] [ 0.47 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 1.0 3.7e-7 0.27] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 1.0 2.1e-7 0.010 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50] [ 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50]
load('ProbRecurse.py') load('Prob.py') import numpy import scipy.optimize KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) CONVERT = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) BPR = BooleanPolynomialRing(6,'X', order='degneglex') X = BPR.gens() #generators X[n] are independent random variables that can take on values 0 or 1 NewGens = str(X).lower() NewGens = NewGens[1:len(NewGens) - 1] x = var(NewGens) #x = Pr(X) C1=AND(OR(X[0],X[1]),OR(X[0],X[2])) C2=IF(AND(X[1],X[2]),IF(X[4],X[5])) C3=NOT(IF(IF(X[0],X[3]),NOT(IF(X[3],X[5])))) C4=NOT(X[5]) prems=[C1,C2,C3,C4] if BPR(0) in prems: print "explicit contradiction in premises" prems = list(set(prems)) # remove dup if BPR(1) in prems: prems.remove(BPR(1)) # remove tautologies prb = 1.0 constraint=[Prob(FORALL(prems)) - prb] HH = lambda s: sum([s[ii]*ln(s[ii])+(1-s[ii])*ln(1-s[ii]) for ii in range(len(s))]) dHH = lambda s: [ln(s[ii])-ln(1-s[ii]) for ii in range(len(s))] str1='{\'type\': \'eq\', \'fun\': lambda s: ((constraint[' str2='])(*s))},' mystr='[' for ii in range(len(constraint)): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' cons = eval(mystr) numpy.set_printoptions(precision=15) y0 = [.5 for xx in x] bnds = tuple([(0.0, 1.0) for xx in x]) ssoln = scipy.optimize.minimize(HH, y0, jac=dHH, method='SLSQP', bounds=bnds, constraints=cons) print('ssoln.x');print(ssoln.x);print(' ') print('entropy ssoln.x');print(-HH(ssoln.x)/RR(ln(2)));print(' ') pvar = lambda s: sum([(2*s[i]-1)^2 for i in range(len(s))]) dpvar = lambda s: [4*(2*s[i]-1) for i in range(len(s))] pvarsoln = scipy.optimize.minimize(pvar, y0, jac=dpvar, method='SLSQP', bounds=bnds, constraints=cons) print('pvarsoln.x');print(pvarsoln.x);print(' ') print('entropy pvarsoln.x');print( -HH(pvarsoln.x)/RR(ln(2)));print(' ') constraint=[(Prob(prm)-1.0) for prm in prems] str1='{\'type\': \'eq\', \'fun\': lambda s: ((constraint[' str2='])(*s))},' mystr='[' for ii in range(len(constraint)): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' cons = eval(mystr) ssoln = scipy.optimize.minimize(HH, y0, jac=dHH, method='SLSQP', bounds=bnds, constraints=cons) print('ssoln.x');print(ssoln.x);print(' ') print('entropy ssoln.x');print(-HH(ssoln.x)/RR(ln(2)));print(' ')
ssoln.x [ 5.693223670277803e-13 9.999999999996521e-01 9.999999999993416e-01 7.759903830617532e-13 1.550981565401344e-13 1.461053500406706e-13] entropy ssoln.x 1.12073139297e-10 pvarsoln.x [ 5.693223670277803e-13 9.999999999996521e-01 9.999999999993416e-01 7.759903830617532e-13 1.550981565401344e-13 1.461053500406706e-13] entropy pvarsoln.x 1.12073139297e-10 ssoln.x [ 1.749321734770491e-01 8.946392213506320e-01 9.478151143471312e-01 3.031949691312263e-13 6.505213051068898e-20 3.087204888824203e-01] entropy ssoln.x 2.34192380411
Prob(FORALL(prems)) - prb mystr C1 CONVERT(C1) CONVERT(CONVERT(C1)) CONVERT(1+C1)
x0*x1*x2*x3*x4*x5 - x0*x1*x2*x3*x4 - x0*x1*x2*x3*x5 - x0*x1*x2*x4*x5 - x1*x2*x3*x4*x5 + x0*x1*x2*x3 + x0*x1*x2*x4 + x1*x2*x3*x4 + x0*x1*x2*x5 + x1*x2*x3*x5 + x1*x2*x4*x5 - x0*x1*x2 - x1*x2*x3 - x1*x2*x4 - x1*x2*x5 + x1*x2 - 1.00000000000000 "[{'type': 'eq', 'fun': lambda s: ((constraint[0])(*s))},{'type': 'eq', 'fun': lambda s: ((constraint[1])(*s))},{'type': 'eq', 'fun': lambda s: ((constraint[2])(*s))},{'type': 'eq', 'fun': lambda s: ((constraint[3])(*s))},]" X0*X1*X2 + X1*X2 + X0 X0*X1*X2*X3*X4*X5 + X1*X2*X3*X4*X5 + X0*X2*X3*X4*X5 + X0*X1*X3*X4*X5 + X0*X1*X2*X4*X5 + X0*X1*X2*X3*X5 + X0*X1*X2*X3*X4 + X1*X2*X4*X5 + X1*X2*X3*X5 + X1*X2*X3*X4 + X0*X3*X4*X5 + X0*X2*X4*X5 + X0*X2*X3*X5 + X0*X2*X3*X4 + X0*X1*X4*X5 + X0*X1*X3*X5 + X0*X1*X3*X4 + X0*X1*X2*X5 + X0*X1*X2*X4 + X0*X1*X2*X3 + X1*X2*X5 + X1*X2*X4 + X1*X2*X3 + X0*X4*X5 + X0*X3*X5 + X0*X3*X4 + X0*X2*X5 + X0*X2*X4 + X0*X2*X3 + X0*X1*X5 + X0*X1*X4 + X0*X1*X3 + X0*X1*X2 + X1*X2 + X0*X5 + X0*X4 + X0*X3 + X0*X2 + X0*X1 + X0 X0*X1*X2 + X1*X2 + X0 X2*X3*X4*X5 + X1*X3*X4*X5 + X3*X4*X5 + X2*X4*X5 + X2*X3*X5 + X2*X3*X4 + X1*X4*X5 + X1*X3*X5 + X1*X3*X4 + X4*X5 + X3*X5 + X3*X4 + X2*X5 + X2*X4 + X2*X3 + X1*X5 + X1*X4 + X1*X3 + X5 + X4 + X3 + X2 + X1 + 1
import scipy.linalg A=identity_matrix(RR,5,5) for i in range(0,5): for j in range(i+1,5): A[i,j]=uniform(0,1) A[j,i]=A[i,j] A B=scipy.linalg.eigh(A);Lambda=diagonal_matrix(B[0]);Q=matrix(B[1]);Lambda;Q Q*Lambda*Q.transpose() Q.determinant() #suppose A represents the probabilities independent generators that represent possible relatios between n objects ( yes or no) that maximize entropy (or minimze variance from 50/50) #with underlying assumption of equivalence relation (guarantees symmetric matrix w main diagonal probs = 1.0) subject to a single prob polynomial constraint for the generators #determinine eigenvalues and orthogonal matrix to find A, each 0-1 n by n matrix (is adjacency matrix, is an atom, defines a relation among the n objects tho not nec equiv) #2^(n^2) possible monomials in such a polynomial kind of huge for a large problem AND all the clues together hmmm, each connected component a clique, complete graph for equiv relation #why can't we use a system of poly's instead of AND all together (n^2) is manageable but 2^(n^2) is not is not
[ 1.00000000000000 0.496265160862274 0.418898591140118 0.123147810090251 0.369712209165948] [ 0.496265160862274 1.00000000000000 0.361575207423723 0.558515005617884 0.150674048629061] [ 0.418898591140118 0.361575207423723 1.00000000000000 0.444900960380892 0.0307824883493855] [ 0.123147810090251 0.558515005617884 0.444900960380892 1.00000000000000 0.0480831030531087] [ 0.369712209165948 0.150674048629061 0.0307824883493855 0.0480831030531087 1.00000000000000] [0.2410877688814176 0.0 0.0 0.0 0.0] [ 0.0 0.5900591076900569 0.0 0.0 0.0] [ 0.0 0.0 0.7316858723181444 0.0 0.0] [ 0.0 0.0 0.0 1.1566013794531638 0.0] [ 0.0 0.0 0.0 0.0 2.2805658716572137] [ -0.5414540245968408 -0.3258044510560972 0.435947295076377 0.4310503161449515 -0.474156703829912] [ 0.5398293486331674 -0.5826259195446164 -0.25550143654850926 -0.10013468392689064 -0.5420547695810735] [ 0.33895385568154923 0.5511529504875798 0.5515107152733957 -0.23413084800274628 -0.4715499823344173] [ -0.5192634104708683 0.24210623475582088 -0.5056865942119444 -0.4577252633604659 -0.45444332248855746] [ 0.17574870658684355 0.43819344336493726 -0.4298673879351518 0.7347373675819859 -0.22907188346354163] [ 1.0 0.49626516086227335 0.41889859114011796 0.12314781009025028 0.3697122091659482] [ 0.49626516086227346 0.9999999999999989 0.3615752074237223 0.5585150056178826 0.15067404862906142] [ 0.41889859114011796 0.3615752074237222 0.9999999999999993 0.44490096038089133 0.030782488349385156] [ 0.12314781009025039 0.5585150056178826 0.44490096038089133 1.0 0.04808310305310792] [ 0.3697122091659482 0.15067404862906142 0.03078248834938513 0.04808310305310795 0.9999999999999991] 1.0000000000000007
load('ProbRecurse.py') load('Prob.py') import numpy import scipy.optimize from operator import add from operator import mul KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C*1*k) in Boolean Ring i,j,k=0,1 objects = 8 #rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(objects^2,'X',order='degneglex') BPR.inject_variables() print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') X = BPR.gens() NewGens = str(X).lower() NewGens = NewGens[1:len(NewGens) - 1] x = var(NewGens) R = matrix(BPR, objects, objects, BPR.gens()) prems = [];reflex=[];symmtrc=[];trans=[];direct=[] for i in range(0, objects): #reflexive reflex.append(R[i,i]) for i in range(0,objects): for j in range(0, objects): #symmtrc.append(IF(R[i,j],R[j,i])) direct.append(IF(R[i,j],NOT(R[j,i]))) for i in range(0,objects): #symmetric for j in range(i+1, objects): symmtrc.append(IFF(R[i,j],R[j,i])) symmtrc=list(set(symmtrc)) if BPR(1) in symmtrc: symmtrc.remove(BPR(1)) # get rid on tautologies trans2=[] for j in range(0, objects): #transitive for i in range(0, objects): for k in range(0, objects): poly = IF(AND(R[min(i,j),max(i,j)],R[min(j,k),max(j,k)]),R[min(i,k),max(i,k)]) trans2.append(poly) #len(trans2) trans2 = list(set(trans2))#;len(trans2) for i in range(0, objects): #transitive for j in range(0, objects): for k in range(0, objects): trans.append(IF(AND(R[i,j],R[j,k]),R[i,k])) #print(len(trans)) trans = list(set(trans)) M=matrix([[125,25,5,1],[64,16,4,1],[27,9,3,1],[8,4,2,1]])#;M A=vector([81,37,13,3])#;A #M.inverse() B=M.inverse()*A # B=(1, -2, 1, 1) var('t') mypoly=B*vector([t^3,t^2,t,1])#;mypoly # gives number of unique transitive polynomials B=M.inverse()*vector([35,18,8,3])#;B mypoly2=vector([t^3,t^2,t,1])*B;mypoly2 #mypoly2.subs(t=6);mypoly2.subs(t=7) #seems to give the number of polynomials in groebner basis for equiv relation with gen order degneglexx prems=reflex+symmtrc+trans2 print(len(reflex));print(len(symmtrc));print(len(trans2));print(len(prems)) if BPR(0) in prems: print "explicit contradiction in premises" prems = list(set(prems)) # remove dup premstrue = [p+1 for p in prems] #make true #if BPR(1) in prems: prems.remove(BPR(1)) REI = ideal(premstrue); print('REI.gens() = ' + str(len(REI.gens()))) GB = REI.groebner_basis();GB #compute groebner basis directly assuming equivalence relation #correspond to trans2 objects=5: X1*(X2+X(2+1*5));X1*(X3+X(3+1*5));X1*(X4+X(4+1*5));X2*(X3+X(3+2*5));X2*(X4+X(4+2*5));X3*(X4+X(4+3*5));X7*(X8+X(8+1*5));X7*(X9+X(9+1*5));X8*(X9+X(9+2*5));X13*(X14+X(14+1*5)) then #X2*(X1+X(2+1*5));X3*(X1+X(3+1*5));X4*(X1+X(4+1*5));X3*(X2+X(3+2*5));X4*(X2+X(4+2*5));X4*(X3+X(4+3*5));X8*(X7+X(8+1*5));X9*(X7+X(9+1*5));X9*(X8+X(9+2*5));X14*(X13+X(14+1*5)) that 20 polynomials GB2=[] for i in range(objects): for j in range(i+1,objects): for k in range(j+1,objects): GB2.append(R[i,j]*(R[i,k]+R[j,k])) GB2.append(R[i,k]*(R[i,j]+R[j,k])) GB2=GB2+[p+1 for p in reflex]+[p+1 for p in symmtrc] set(GB)==set(GB2) QR = BPR.quotient_ring(REI) #print(premstrue);print(len(premstrue));print(' ') print(matrix(objects,objects,QR.gens()));print(' ') if False: prb = 1.0 constraint=[Prob(p) for p in GB] HH = lambda s: sum([s[ii]*ln(s[ii])+(1-s[ii])*ln(1-s[ii]) for ii in range(len(s))]) dHH = lambda s: [ln(s[ii])-ln(1-s[ii]) for ii in range(len(s))] str1='{\'type\': \'eq\', \'fun\': lambda s: ((constraint[' str2='])(*s))},' mystr='[' for ii in range(len(constraint)): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' cons = eval(mystr) numpy.set_printoptions(precision=15) y0 = [.5 for xx in x] bnds = tuple([(0.0, 1.0) for xx in x]) ssoln = scipy.optimize.minimize(HH, y0, jac=dHH, method='SLSQP', bounds=bnds, constraints=cons) A=matrix(RR, objects, objects, list(ssoln.x)) RR5 = RealField(prec=5) MatPrint = MatrixSpace(RR5,objects,objects) print(MatPrint(A)) #print('ssoln.x');print(ssoln.x);print(' ') print('entropy ssoln.x');print(-HH(ssoln.x)/RR(ln(2)));print(' ') pvar = lambda s: sum([(2*s[i]-1)^2 for i in range(len(s))]) dpvar = lambda s: [4*(2*s[i]-1) for i in range(len(s))] pvarsoln = scipy.optimize.minimize(pvar, y0, jac=dpvar, method='SLSQP', bounds=bnds, constraints=cons) A=matrix(RR, objects, objects, list(pvarsoln.x)) print(MatPrint(A)) #print('pvarsoln.x');print(pvarsoln.x);print(' ') print('entropy pvarsoln.x');print( -HH(pvarsoln.x)/RR(ln(2)));print(' ')
Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63 64 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X63 = R[7,7] t 1/3*t^3 - 1/2*t^2 + 7/6*t 8 28 225 261 REI.gens() = 261 Polynomial Sequence with 148 Polynomials in 64 Variables True [ 1 X1 X2 X3 X4 X5 X6 X7] [ X1 1 X10 X11 X12 X13 X14 X15] [ X2 X10 1 X19 X20 X21 X22 X23] [ X3 X11 X19 1 X28 X29 X30 X31] [ X4 X12 X20 X28 1 X37 X38 X39] [ X5 X13 X21 X29 X37 1 X46 X47] [ X6 X14 X22 X30 X38 X46 1 X55] [ X7 X15 X23 X31 X39 X47 X55 1]
trans2=[] for j in range(0, objects): #transitive for i in range(0, objects): for k in range(0, objects): poly = IF(AND(R[min(i,j),max(i,j)],R[min(j,k),max(j,k)]),R[min(i,k),max(i,k)]) trans2.append(poly) len(trans2) trans2 = list(set(trans2));len(trans2);trans2
64 25 [X0*X3 + X3 + 1, X6*X7*X11 + X7*X11 + 1, X1*X3*X7 + X3*X7 + 1, X1*X2*X6 + X2*X6 + 1, X5*X6 + X6 + 1, X10*X11 + X11 + 1, X2*X3*X11 + X2*X3 + 1, X5*X7 + X7 + 1, X1*X2*X6 + X1*X6 + 1, X1*X5 + X1 + 1, X11*X15 + X11 + 1, X7*X15 + X7 + 1, 1, X2*X3*X11 + X2*X11 + 1, X1*X3*X7 + X1*X3 + 1, X2*X3*X11 + X3*X11 + 1, X1*X3*X7 + X1*X7 + 1, X2*X10 + X2 + 1, X0*X2 + X2 + 1, X6*X10 + X6 + 1, X0*X1 + X1 + 1, X6*X7*X11 + X6*X11 + 1, X3*X15 + X3 + 1, X6*X7*X11 + X6*X7 + 1, X1*X2*X6 + X1*X2 + 1]
M=matrix([[125,25,5,1],[64,16,4,1],[27,9,3,1],[8,4,2,1]]);M A=vector([81,37,13,3]);A M.inverse() B=M.inverse()*A;B var('t') mypoly=B*vector([t^3,t^2,t,1]);mypoly mypoly(6) B2=M.inverse()*vector([51,25,10,3]);B2 ((1/2)*(t^3+2*t^2+t+2))(6)
[125 25 5 1] [ 64 16 4 1] [ 27 9 3 1] [ 8 4 2 1] (81, 37, 13, 3) [ 1/6 -1/2 1/2 -1/6] [ -3/2 5 -11/2 2] [ 13/3 -31/2 19 -47/6] [ -4 15 -20 10] (1, -2, 1, 1) t t^3 - 2*t^2 + t + 1 151 (1/2, -1/2, 0, 1) 148
((1/2)*(t^3-t^2+2))(6)
91
symmtrc2=[] for i in range(0,objects): #symmetric for j in range(i+1, objects): symmtrc2.append(IFF(R[i,j],R[j,i])) symmtrc2=list(set(symmtrc2));symmtrc2;len(symmtrc2)
[X18 + X3 + 1, X24 + X4 + 1, X31 + X11 + 1, X27 + X22 + 1, X30 + X5 + 1, X33 + X23 + 1, X13 + X8 + 1, X26 + X16 + 1, X19 + X9 + 1, X12 + X2 + 1, X34 + X29 + 1, X25 + X10 + 1, X32 + X17 + 1, X6 + X1 + 1, X20 + X15 + 1] 15
Prob(symmtrc[1]*symmtrc[2]);Prob(symmtrc[1])*Prob(symmtrc[2]) #constraint GB GB[0];GB[1];GB[2];GB[34] Prob(GB[2])
4*x4*x19*x20*x23 - 2*x19*x20*x23 - 2*x4*x20*x23 - 2*x4*x19*x23 - 2*x4*x19*x20 + x20*x23 + 2*x19*x23 + x4*x23 + x19*x20 + 2*x4*x20 + x4*x19 - x23 - x20 - x19 - x4 + 1 4*x4*x19*x20*x23 - 2*x19*x20*x23 - 2*x4*x20*x23 - 2*x4*x19*x23 - 2*x4*x19*x20 + x20*x23 + 2*x19*x23 + x4*x23 + x19*x20 + 2*x4*x20 + x4*x19 - x23 - x20 - x19 - x4 + 1 Polynomial Sequence with 35 Polynomials in 25 Variables X14*X19 + X13*X14 X13*X19 + X13*X14 X9*X19 + X8*X9 X0 + 1 -2*x8*x9*x19 + x9*x19 + x8*x9
len(GB)
3
B=M.inverse()*vector([35,18,8,3]);B mypoly2=vector([t^3,t^2,t,1])*B;mypoly2 mypoly2(6);mypoly2(8) mypoly2.subs(t=6)
(1/3, -1/2, 7/6, 0) 1/3*t^3 - 1/2*t^2 + 7/6*t 61 148
/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py:905: DeprecationWarning: Substitution using function-call syntax and unnamed arguments is deprecated and will be removed from a future release of Sage; you can use named arguments instead, like EXPR(x=..., y=...) See http://trac.sagemath.org/5930 for details. exec compile(block+'\n', '', 'single') in namespace, locals
61
#Prob(GB[2])*Prob(GB[3]);Prob(GB[2]*GB[3]) #Prob(GB[21])*Prob(GB[0]);Prob(GB[21]*GB[0]) for g in GB: g;Prob(g)
X7*X11 + X6*X7 -2*x6*x7*x11 + x7*x11 + x6*x7 X6*X11 + X6*X7 -2*x6*x7*x11 + x6*x11 + x6*x7 X3*X11 + X2*X3 -2*x2*x3*x11 + x3*x11 + x2*x3 X3*X7 + X1*X3 -2*x1*x3*x7 + x3*x7 + x1*x3 X2*X11 + X2*X3 -2*x2*x3*x11 + x2*x11 + x2*x3 X2*X6 + X1*X2 -2*x1*x2*x6 + x2*x6 + x1*x2 X1*X7 + X1*X3 -2*x1*x3*x7 + x1*x7 + x1*x3 X1*X6 + X1*X2 -2*x1*x2*x6 + x1*x6 + x1*x2 X15 + 1 -x15 + 1 X14 + X11 -2*x11*x14 + x14 + x11 X13 + X7 -2*x7*x13 + x13 + x7 X12 + X3 -2*x3*x12 + x12 + x3 X10 + 1 -x10 + 1 X9 + X6 -2*x6*x9 + x9 + x6 X8 + X2 -2*x2*x8 + x8 + x2 X5 + 1 -x5 + 1 X4 + X1 -2*x1*x4 + x4 + x1 X0 + 1 -x0 + 1
len(set(GB2));len(set(GB))
10 35
load('ProbRecurse.py') load('Prob.py') import numpy import scipy.optimize from operator import add from operator import mul KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C*1*k) in Boolean Ring i,j,k=0,1 objects = 6 #rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(objects^2,'X',order='degneglex') BPR.inject_variables() print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') X = BPR.gens() NewGens = str(X).lower() NewGens = NewGens[1:len(NewGens) - 1] PPR = PolynomialRing(QQ,objects^2,NewGens,order='degneglex') PPR.inject_variables() #x = var(NewGens) R = matrix(BPR, objects, objects, BPR.gens()) prems = [];reflex=[];symmtrc=[];trans2=[];direct=[] for i in range(0, objects): #reflexive reflex.append(R[i,i]) for i in range(0,objects): for j in range(0, objects): #symmtrc.append(IF(R[i,j],R[j,i])) direct.append(IF(R[i,j],NOT(R[j,i]))) for i in range(0,objects): #symmetric for j in range(i+1, objects): symmtrc.append(IFF(R[i,j],R[j,i])) symmtrc=list(set(symmtrc)) for j in range(0, objects): #transitive for i in range(0, objects): for k in range(0, objects): poly = IF(AND(R[min(i,j),max(i,j)],R[min(j,k),max(j,k)]),R[min(i,k),max(i,k)]) trans2.append(poly) trans2 = list(set(trans2)) M=matrix([[125,25,5,1],[64,16,4,1],[27,9,3,1],[8,4,2,1]])#;M var('t') B=M.inverse()*vector([35,18,8,3])#;B mypoly2=vector([t^3,t^2,t,1])*B;mypoly2 #mypoly2.subs(t=6);mypoly2.subs(t=7) #seems to give the number of polynomials in groebner basis for equiv relation with gen order degneglexx prems=reflex+symmtrc+trans2 if BPR(0) in prems: print "explicit contradiction in premises" prems = list(set(prems)) # remove dup premstrue = [p+1 for p in prems] #make true REI = ideal(premstrue);# print('REI.gens() = ' + str(len(REI.gens()))) GB = REI.groebner_basis();GB #compute groebner basis directly assuming equivalence relation #correspond to trans2 objects=5: X1*(X2+X(2+1*5));X1*(X3+X(3+1*5));X1*(X4+X(4+1*5));X2*(X3+X(3+2*5));X2*(X4+X(4+2*5));X3*(X4+X(4+3*5));X7*(X8+X(8+1*5));X7*(X9+X(9+1*5));X8*(X9+X(9+2*5));X13*(X14+X(14+1*5)) then #X2*(X1+X(2+1*5));X3*(X1+X(3+1*5));X4*(X1+X(4+1*5));X3*(X2+X(3+2*5));X4*(X2+X(4+2*5));X4*(X3+X(4+3*5));X8*(X7+X(8+1*5));X9*(X7+X(9+1*5));X9*(X8+X(9+2*5));X14*(X13+X(14+1*5)) that 20 polynomials GB2=[];PGB=[] for i in range(objects): for j in range(i+1,objects): for k in range(j+1,objects): GB2.append(R[i,j]*(R[i,k]+R[j,k]));PGB.append(Prob(R[i,k])-Prob(R[j,k])) #unless R[i,j]=0 **************************** GB2.append(R[i,k]*(R[i,j]+R[j,k]));PGB.append(Prob(R[i,j])-Prob(R[j,k])) GB2=GB2+[p+1 for p in reflex]+[p+1 for p in symmtrc] set(GB)==set(GB2) REI2=ideal(GB2) set(GB2)==set(GB) #check QR = BPR.quotient_ring(REI2) print(len(GB2));print(str(mypoly2.subs(t=objects))+' polynomials in Groebner Basis for equivalence relation in '+str(objects^2)+' variables') print(matrix(objects,objects,QR.gens()));print(' ') symmtrc2=[Prob(R[i,j])-Prob(R[j,i]) for i in range(objects) for j in range(i+1,objects)] constraint=[Prob(p)-1.0 for p in reflex]+symmtrc2+PGB mymat=matrix([[PPR(c).coefficient(g) for g in PPR.gens()] for c in constraint]) # mymat is 24 by 25 for objects=5 19 rows corresponding to not reflexive, 20 columns myvect = matrix([PPR(c).constant_coefficient() for c in constraint ]) pv=mymat.pivot_rows() mymat = mymat[pv,:];myvect=myvect[:,pv] lincons=matrix(mymat*vector(PPR.gens()))+myvect lincons=[lincons[0,i].change_ring(RR) for i in range(len(lincons.columns()))] #fing awful to convert to list lincons.append(Prob(IF(R[3,4],R[4,2]))-.9) if True: HH = lambda s: sum([s[ii]*ln(s[ii])+(1-s[ii])*ln(1-s[ii]) for ii in range(len(s))]) dHH = lambda s: [ln(s[ii])-ln(1-s[ii]) for ii in range(len(s))] str1='{\'type\': \'eq\', \'fun\': lambda s: (lincons[' str2='])(*s)},' mystr='[' for ii in range(len(lincons)): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' cons = eval(mystr) numpy.set_printoptions(precision=15) y0 = [.5 for xx in PPR.gens()] bnds = tuple([(0.0, 1.0) for xx in PPR.gens()]) ssoln = scipy.optimize.minimize(HH, y0, jac=dHH, method='SLSQP', bounds=bnds, constraints=cons) A=matrix(RR, objects, objects, list(ssoln.x)) RR5 = RealField(prec=5) MatPrint = MatrixSpace(RR5,objects,objects) print(MatPrint(A)) #print('ssoln.x');print(ssoln.x);print(' ') print('entropy ssoln.x');print(-HH(ssoln.x)/RR(ln(2)));print(' ') pvar = lambda s: sum([(2*s[i]-1)^2 for i in range(len(s))]) dpvar = lambda s: [4*(2*s[i]-1) for i in range(len(s))] pvarsoln = scipy.optimize.minimize(pvar, y0, jac=dpvar, method='SLSQP', bounds=bnds, constraints=cons) A=matrix(RR, objects, objects, list(pvarsoln.x)) print(MatPrint(A)) #print('pvarsoln.x');print(pvarsoln.x);print(' ') print('entropy pvarsoln.x');print( -HH(pvarsoln.x)/RR(ln(2)));print(' ') #let's say 3 generators a,b,c and we minimize (2a-1)^2+(2b-1)^2+(2c-1)^2 where we know a*b*c=p0, a*b*(1-c)=p1,a*(1-b)*c=p2,(1-a)*b*c=p3 yields 3 linear constraints and do lagrange multipliers lambda,mu,nu, 0<=p0+p1+p2+p3<=1 #oops but that completely determines the probs of the generators so no point minimizing #the probabilty polynomial for these boolean polynomials correspond on the vertices of the hypercube defined by the atoms. Setting an atom equal to 1 defines the truth values of the generators and the prob poly = boolean poly #with these as arguments #say X1*X7+X1*X2=0 then x1*x7-x1*x2=0 not Prob(X1*X7+X1*X2) = -2*x1*x2*x7 + x1*x7 + x1*x2 = 0 or whatever #then lagrange mult pvar for linear system
Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35 36 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X35 = R[5,5] Defining x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35 t 1/3*t^3 - 1/2*t^2 + 7/6*t Polynomial Sequence with 61 Polynomials in 36 Variables True True 61 61 polynomials in Groebner Basis for equivalence relation in 36 variables [ 1 X1 X2 X3 X4 X5] [ X1 1 X8 X9 X10 X11] [ X2 X8 1 X15 X16 X17] [ X3 X9 X15 1 X22 X23] [ X4 X10 X16 X22 1 X29] [ X5 X11 X17 X23 X29 1] [ 1.0 0.88 0.88 0.88 0.88 0.88] [0.88 1.0 0.88 0.88 0.88 0.88] [0.88 0.88 1.0 0.88 0.88 0.88] [0.88 0.88 0.88 1.0 0.88 0.88] [0.88 0.88 0.88 0.88 1.0 0.88] [0.88 0.88 0.88 0.88 0.88 1.0] entropy ssoln.x 15.2446441202 [0.50 0.50 0.50 0.50 0.50 0.50] [0.50 0.50 0.50 0.50 0.50 0.50] [0.50 0.50 0.50 0.50 0.50 0.50] [0.50 0.50 0.50 0.50 0.50 0.50] [0.50 0.50 0.50 0.50 0.50 0.50] [0.50 0.50 0.50 0.50 0.50 0.50] entropy pvarsoln.x 36.0
for g in GB2: g;Prob(g)
X1*X8 + X1*X2 -2*x1*x2*x8 + x1*x8 + x1*x2 X2*X8 + X1*X2 -2*x1*x2*x8 + x2*x8 + x1*x2 X1*X9 + X1*X3 -2*x1*x3*x9 + x1*x9 + x1*x3 X3*X9 + X1*X3 -2*x1*x3*x9 + x3*x9 + x1*x3 X1*X10 + X1*X4 -2*x1*x4*x10 + x1*x10 + x1*x4 X4*X10 + X1*X4 -2*x1*x4*x10 + x4*x10 + x1*x4 X1*X11 + X1*X5 -2*x1*x5*x11 + x1*x11 + x1*x5 X5*X11 + X1*X5 -2*x1*x5*x11 + x5*x11 + x1*x5 X2*X15 + X2*X3 -2*x2*x3*x15 + x2*x15 + x2*x3 X3*X15 + X2*X3 -2*x2*x3*x15 + x3*x15 + x2*x3 X2*X16 + X2*X4 -2*x2*x4*x16 + x2*x16 + x2*x4 X4*X16 + X2*X4 -2*x2*x4*x16 + x4*x16 + x2*x4 X2*X17 + X2*X5 -2*x2*x5*x17 + x2*x17 + x2*x5 X5*X17 + X2*X5 -2*x2*x5*x17 + x5*x17 + x2*x5 X3*X22 + X3*X4 -2*x3*x4*x22 + x3*x22 + x3*x4 X4*X22 + X3*X4 -2*x3*x4*x22 + x4*x22 + x3*x4 X3*X23 + X3*X5 -2*x3*x5*x23 + x3*x23 + x3*x5 X5*X23 + X3*X5 -2*x3*x5*x23 + x5*x23 + x3*x5 X4*X29 + X4*X5 -2*x4*x5*x29 + x4*x29 + x4*x5 X5*X29 + X4*X5 -2*x4*x5*x29 + x5*x29 + x4*x5 X8*X15 + X8*X9 -2*x8*x9*x15 + x8*x15 + x8*x9 X9*X15 + X8*X9 -2*x8*x9*x15 + x9*x15 + x8*x9 X8*X16 + X8*X10 -2*x8*x10*x16 + x8*x16 + x8*x10 X10*X16 + X8*X10 -2*x8*x10*x16 + x10*x16 + x8*x10 X8*X17 + X8*X11 -2*x8*x11*x17 + x8*x17 + x8*x11 X11*X17 + X8*X11 -2*x8*x11*x17 + x11*x17 + x8*x11 X9*X22 + X9*X10 -2*x9*x10*x22 + x9*x22 + x9*x10 X10*X22 + X9*X10 -2*x9*x10*x22 + x10*x22 + x9*x10 X9*X23 + X9*X11 -2*x9*x11*x23 + x9*x23 + x9*x11 X11*X23 + X9*X11 -2*x9*x11*x23 + x11*x23 + x9*x11 X10*X29 + X10*X11 -2*x10*x11*x29 + x10*x29 + x10*x11 X11*X29 + X10*X11 -2*x10*x11*x29 + x11*x29 + x10*x11 X15*X22 + X15*X16 -2*x15*x16*x22 + x15*x22 + x15*x16 X16*X22 + X15*X16 -2*x15*x16*x22 + x16*x22 + x15*x16 X15*X23 + X15*X17 -2*x15*x17*x23 + x15*x23 + x15*x17 X17*X23 + X15*X17 -2*x15*x17*x23 + x17*x23 + x15*x17 X16*X29 + X16*X17 -2*x16*x17*x29 + x16*x29 + x16*x17 X17*X29 + X16*X17 -2*x16*x17*x29 + x17*x29 + x16*x17 X22*X29 + X22*X23 -2*x22*x23*x29 + x22*x29 + x22*x23 X23*X29 + X22*X23 -2*x22*x23*x29 + x23*x29 + x22*x23 X0 + 1 -x0 + 1 X7 + 1 -x7 + 1 X14 + 1 -x14 + 1 X21 + 1 -x21 + 1 X28 + 1 -x28 + 1 X35 + 1 -x35 + 1 X18 + X3 -2*x3*x18 + x18 + x3 X24 + X4 -2*x4*x24 + x24 + x4 X31 + X11 -2*x11*x31 + x31 + x11 X27 + X22 -2*x22*x27 + x27 + x22 X30 + X5 -2*x5*x30 + x30 + x5 X33 + X23 -2*x23*x33 + x33 + x23 X13 + X8 -2*x8*x13 + x13 + x8 X26 + X16 -2*x16*x26 + x26 + x16 X19 + X9 -2*x9*x19 + x19 + x9 X12 + X2 -2*x2*x12 + x12 + x2 X34 + X29 -2*x29*x34 + x34 + x29 X25 + X10 -2*x10*x25 + x25 + x10 X32 + X17 -2*x17*x32 + x32 + x17 X6 + X1 -2*x1*x6 + x6 + x1 X20 + X15 -2*x15*x20 + x20 + x15
z=BPR.random_element();z;QR(z) Prob(z) QR(GB2[2]) b=[int(getrandbits(1)) for i in range(objects^2)];matrix(objects,objects,b);(GB2[1])(*b);(Prob(GB2[1]))(*b) QR(X0*X6)
X15*X24 + X3*X20 + X0*X24 + X0*X4 + X20 X3*X4 + X3 + 1 4*x0*x3*x4*x15*x20*x24 - 4*x0*x4*x15*x20*x24 - 4*x0*x3*x15*x20*x24 - 4*x0*x3*x4*x20*x24 + 2*x3*x15*x20*x24 + 4*x0*x15*x20*x24 + 4*x0*x4*x20*x24 + 2*x0*x3*x20*x24 + 2*x0*x4*x15*x24 + 2*x0*x3*x4*x20 - 2*x15*x20*x24 - 2*x0*x20*x24 - 2*x0*x15*x24 - 2*x0*x4*x24 - 2*x0*x4*x20 + x15*x24 + x0*x24 - x3*x20 + x0*x4 + x20 0 [1 0 0 0 1] [1 0 0 1 1] [1 1 1 0 1] [1 1 1 0 1] [1 0 0 0 1] 0 0 1
Prob(UNIQUE([X0,X1,X2,X3]))
-4*x0*x1*x2*x3 + 3*x1*x2*x3 + 3*x0*x2*x3 + 3*x0*x1*x3 + 3*x0*x1*x2 - 2*x2*x3 - 2*x1*x3 - 2*x0*x3 - 2*x1*x2 - 2*x0*x2 - 2*x0*x1 + x3 + x2 + x1 + x0
(reflex+symmtrc)
[X0, X6, X12, X18, X24, X16 + X8 + 1, X20 + X4 + 1, X23 + X19 + 1, X22 + X14 + 1, X15 + X3 + 1, X11 + X7 + 1, X5 + X1 + 1, X17 + X13 + 1, X10 + X2 + 1, X21 + X9 + 1]
mymat=matrix([[PPR(c).coefficient(g) for g in PPR.gens()] for c in constraint]); mymat = mymat[mymat.pivot_rows(),:]
24 x 25 dense matrix over Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24 over Rational Field
mymat;myvect;pv
35 x 36 dense matrix over Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35 over Rational Field [-1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 35, 37, 39)
myvect lincons=matrix(mymat*vector(PPR.gens()))+myvect;lincons=[lincons[0,i] for i in range(len(lincons.columns()))];lincons
[-1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [x0 - 1, x7 - 1, x14 - 1, x21 - 1, x28 - 1, x35 - 1, -x6 + x1, -x12 + x2, -x18 + x3, -x24 + x4, -x30 + x5, -x13 + x8, -x19 + x9, -x25 + x10, -x31 + x11, -x20 + x15, -x26 + x16, -x32 + x17, -x27 + x22, -x33 + x23, -x34 + x29, -x8 + x2, -x8 + x1, -x9 + x3, -x9 + x1, -x10 + x4, -x10 + x1, -x11 + x5, -x11 + x1, -x15 + x3, -x16 + x4, -x17 + x5, -x22 + x4, -x23 + x5, -x29 + x5]
constraint[1](*(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36));lincons[1](*(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36))
7.00000000000000 7.00000000000000
ssoln.x Prob(IF(R[3,4],R[4,2])) (Prob(IF(R[3,4],R[4,2])))(*ssoln.x)
array([ 0.999969148174041, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.999969148174041, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.999969148174041, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.999969148174041, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.999969148174041, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.887284277041075, 0.999969148174041]) x22*x26 - x22 + 1 0.89998911124322811
IF(X1,X7);Prob(IF(X1,X7)) QR(trans2[2]);QR(IF(X1,X8)) XOR(R[4,2],R[4,1])+1
X1*X7 + X1 + 1 x1*x7 - x1 + 1 1 X1*X2 + X1 + 1 X26 + X25 + 1
constraint2=constraint+[x17-.75] mymat=matrix([[PPR(c).coefficient(g) for g in PPR.gens()] for c in constraint2]) # mymat is 24 by 25 for objects=5 19 rows corresponding to not reflexive, 20 columns myvect = matrix([PPR(c).constant_coefficient() for c in constraint2 ]) pv=mymat.pivot_rows() mymat = mymat[pv,:];myvect=myvect[:,pv] lincons=matrix(mymat*vector(PPR.gens()))+myvect lincons=[lincons[0,i].change_ring(RR) for i in range(len(lincons.columns()))] #fing awful to convert to list mymat;myvect;mymat.rank();mymat.inverse()*([-a for a in myvect][0])
36 x 36 dense matrix over Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35 over Rational Field [ -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3/4] 36 (1, 3/4, 3/4, 3/4, 3/4, 3/4, 3/4, 1, 3/4, 3/4, 3/4, 3/4, 3/4, 3/4, 1, 3/4, 3/4, 3/4, 3/4, 3/4, 3/4, 1, 3/4, 3/4, 3/4, 3/4, 3/4, 3/4, 1, 3/4, 3/4, 3/4, 3/4, 3/4, 3/4, 1)
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C+1+k) in Boolean Ring i,j,k=0,1 rel_classes = 4 types = 3 objects = rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(objects^2,'X',order='degneglex') BPR.inject_variables() print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') R = matrix(BPR, objects, objects, BPR.gens()) reflex=[];symmtrc=[];trans=[];exactlyone=[];clues = []; for i in range(0, objects): #reflexive reflex.append(R[i,i]) reflex=[r+1 for r in reflex] #assert truth for i in range(0,objects): #symmetric for j in range(i+1, objects): symmtrc.append(IFF(R[i,j],R[j,i])) symmtrc=[s+1 for s in symmtrc] #assert truth for i in range(objects): #transitive truth assertion built into these which assume symmtrc and reflex in place for j in range(i+1,objects): for k in range(j+1,objects): trans.append(R[i,j]*(R[i,k]+R[j,k])) trans.append(R[i,k]*(R[i,j]+R[j,k])) for i in range(0,types): for j in range(i,types): for k in range(0,rel_classes): poly = UNIQUE([R[i*rel_classes+k,j*rel_classes+b] for b in range(0,rel_classes)]) exactlyone.append(poly) poly = UNIQUE([R[j*rel_classes+b,i*rel_classes+k] for b in range(0,rel_classes)]) exactlyone.append(poly) exactlyone=[e+1 for e in exactlyone] #assert truth clues.append(UNIQUE([R[9,1],R[9,6]])) # clue 1 clues.append(UNIQUE([AND(R[4,11],R[6,10]), AND(R[4,10],R[6,9]), AND(R[4,9],R[6,8])])) # clue 2 clues.append(UNIQUE([AND(R[11,6],R[9,0]), AND(R[11,0],R[9,6])])) # clue 3 clues.append(UNIQUE([AND(R[0,11],R[2,4]), AND(R[0,4],R[2,11])])) # clue 4 clues.append(UNIQUE([AND(R[5,11],R[4,10]), AND(R[5,11],R[4,9]), AND(R[5,11],R[4,8]), AND(R[5,10],R[4,9]), AND(R[5,10],R[4,8]), AND(R[5,9],R[4,8])])) # clue 5 clues = [c+1 for c in clues] #assert truth prems=reflex+symmtrc+trans+exactlyone+clues REI=ideal(prems) QR = BPR.quotient_ring(REI) solnmat=matrix(objects,objects,QR.gens()) sd=[j*rel_classes for j in range(1,types)] solnmat.subdivide(sd,sd) print(solnmat);print(' ')
objects = 12 Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98, X99, X100, X101, X102, X103, X104, X105, X106, X107, X108, X109, X110, X111, X112, X113, X114, X115, X116, X117, X118, X119, X120, X121, X122, X123, X124, X125, X126, X127, X128, X129, X130, X131, X132, X133, X134, X135, X136, X137, X138, X139, X140, X141, X142, X143 144 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X143 = R[11,11] [1 0 0 0|0 1 0 0|0 0 0 1] [0 1 0 0|0 0 0 1|1 0 0 0] [0 0 1 0|1 0 0 0|0 0 1 0] [0 0 0 1|0 0 1 0|0 1 0 0] [-------+-------+-------] [0 0 1 0|1 0 0 0|0 0 1 0] [1 0 0 0|0 1 0 0|0 0 0 1] [0 0 0 1|0 0 1 0|0 1 0 0] [0 1 0 0|0 0 0 1|1 0 0 0] [-------+-------+-------] [0 1 0 0|0 0 0 1|1 0 0 0] [0 0 0 1|0 0 1 0|0 1 0 0] [0 0 1 0|1 0 0 0|0 0 1 0] [1 0 0 0|0 1 0 0|0 0 0 1]
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C+1+k) in Boolean Ring i,j,k=0,1 rel_classes = 6 types = 4 objects = rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(objects^2,'X',order='degneglex') BPR.inject_variables() print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') R = matrix(BPR, objects, objects, BPR.gens()) reflex=[];symmtrc=[];trans=[];exactlyone=[];clues = [] for i in range(0, objects): #reflexive reflex.append(R[i,i]) reflex = [r+1 for r in reflex] for i in range(0,objects): #symmetric for j in range(i+1, objects): symmtrc.append(IFF(R[i,j],R[j,i])) symmtrc = [s+1 for s in symmtrc] for i in range(objects): #transitive for j in range(i+1,objects): for k in range(j+1,objects): trans.append(R[i,j]*(R[i,k]+R[j,k])) #1+ built in trans.append(R[i,k]*(R[i,j]+R[j,k])) for i in range(0,types): for j in range(i,types): for k in range(0,rel_classes): poly = UNIQUE([R[i*rel_classes+k,j*rel_classes+b] for b in range(0,rel_classes)]) exactlyone.append(poly) poly = UNIQUE([R[j*rel_classes+b,i*rel_classes+k] for b in range(0,rel_classes)]) exactlyone.append(poly) exactlyone = [e+1 for e in exactlyone] clues.append(UNIQUE([AND(R[11,22],R[16,1]), AND(R[11,1],R[16,22])])) # clue 1 clues.append(UNIQUE([AND(R[1,18],R[15,19]), AND(R[1,18],R[15,20]), AND(R[1,18],R[15,21]), AND(R[1,18],R[15,22]), AND(R[1,18],R[15,23]), # clue 2 AND(R[1,19],R[15,20]), AND(R[1,19],R[15,21]), AND(R[1,19],R[15,22]), AND(R[1,19],R[15,23]), AND(R[1,20],R[15,21]), AND(R[1,20],R[15,22]), AND(R[1,20],R[15,23]), AND(R[1,21],R[15,22]), AND(R[1,21],R[15,23]), AND(R[1,22],R[15,23])])) clues.append(UNIQUE([AND(R[13,23],R[9,21]), AND(R[13,22],R[9,20]), AND(R[13,21],R[9,19]), AND(R[13,20],R[9,18])])) # clue 3 clues.append(R[5,11]) # clue 4 clues.append(NOT(R[4,23])) # clue 5 clues.append(NOT(R[1,10])) # clue 6.1 clues.append(NOT(R[1,14])) # clue 6.2 clues.append(NOT(R[1,17])) # clue 6.3 clues.append(NOT(R[1,9])) # clue 6.4 clues.append(NOT(R[1,8])) # clue 6.5 clues.append(NOT(R[10,14])) # clue 6.6 clues.append(NOT(R[10,17])) # clue 6.7 clues.append(NOT(R[14,9])) # clue 6.8 clues.append(NOT(R[14,8])) # clue 6.9 clues.append(NOT(R[17,9])) # clue 6.10 clues.append(NOT(R[17,8])) # clue 6.11 clues.append(R[21,6]) # clue 7 clues.append(UNIQUE([R[0,8], R[0,7]])) # clue 8 clues.append(NOT(R[13,10])) # clue 9 clues.append(NOT(R[3,14])) # clue 10 clues.append(UNIQUE([AND(R[16,23],R[3,21]), AND(R[16,22],R[3,20]), AND(R[16,21],R[3,19]), AND(R[16,20],R[3,18])])) # clue 11 clues = [c+1 for c in clues] prems=reflex+symmtrc+trans+exactlyone+clues REI=ideal(prems) QR = BPR.quotient_ring(REI) solnmat=matrix(objects,objects,QR.gens()) sd=[j*rel_classes for j in range(1,types)] solnmat.subdivide(sd,sd) print(solnmat);print(' ')
objects = 24 Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98, X99, X100, X101, X102, X103, X104, X105, X106, X107, X108, X109, X110, X111, X112, X113, X114, X115, X116, X117, X118, X119, X120, X121, X122, X123, X124, X125, X126, X127, X128, X129, X130, X131, X132, X133, X134, X135, X136, X137, X138, X139, X140, X141, X142, X143, X144, X145, X146, X147, X148, X149, X150, X151, X152, X153, X154, X155, X156, X157, X158, X159, X160, X161, X162, X163, X164, X165, X166, X167, X168, X169, X170, X171, X172, X173, X174, X175, X176, X177, X178, X179, X180, X181, X182, X183, X184, X185, X186, X187, X188, X189, X190, X191, X192, X193, X194, X195, X196, X197, X198, X199, X200, X201, X202, X203, X204, X205, X206, X207, X208, X209, X210, X211, X212, X213, X214, X215, X216, X217, X218, X219, X220, X221, X222, X223, X224, X225, X226, X227, X228, X229, X230, X231, X232, X233, X234, X235, X236, X237, X238, X239, X240, X241, X242, X243, X244, X245, X246, X247, X248, X249, X250, X251, X252, X253, X254, X255, X256, X257, X258, X259, X260, X261, X262, X263, X264, X265, X266, X267, X268, X269, X270, X271, X272, X273, X274, X275, X276, X277, X278, X279, X280, X281, X282, X283, X284, X285, X286, X287, X288, X289, X290, X291, X292, X293, X294, X295, X296, X297, X298, X299, X300, X301, X302, X303, X304, X305, X306, X307, X308, X309, X310, X311, X312, X313, X314, X315, X316, X317, X318, X319, X320, X321, X322, X323, X324, X325, X326, X327, X328, X329, X330, X331, X332, X333, X334, X335, X336, X337, X338, X339, X340, X341, X342, X343, X344, X345, X346, X347, X348, X349, X350, X351, X352, X353, X354, X355, X356, X357, X358, X359, X360, X361, X362, X363, X364, X365, X366, X367, X368, X369, X370, X371, X372, X373, X374, X375, X376, X377, X378, X379, X380, X381, X382, X383, X384, X385, X386, X387, X388, X389, X390, X391, X392, X393, X394, X395, X396, X397, X398, X399, X400, X401, X402, X403, X404, X405, X406, X407, X408, X409, X410, X411, X412, X413, X414, X415, X416, X417, X418, X419, X420, X421, X422, X423, X424, X425, X426, X427, X428, X429, X430, X431, X432, X433, X434, X435, X436, X437, X438, X439, X440, X441, X442, X443, X444, X445, X446, X447, X448, X449, X450, X451, X452, X453, X454, X455, X456, X457, X458, X459, X460, X461, X462, X463, X464, X465, X466, X467, X468, X469, X470, X471, X472, X473, X474, X475, X476, X477, X478, X479, X480, X481, X482, X483, X484, X485, X486, X487, X488, X489, X490, X491, X492, X493, X494, X495, X496, X497, X498, X499, X500, X501, X502, X503, X504, X505, X506, X507, X508, X509, X510, X511, X512, X513, X514, X515, X516, X517, X518, X519, X520, X521, X522, X523, X524, X525, X526, X527, X528, X529, X530, X531, X532, X533, X534, X535, X536, X537, X538, X539, X540, X541, X542, X543, X544, X545, X546, X547, X548, X549, X550, X551, X552, X553, X554, X555, X556, X557, X558, X559, X560, X561, X562, X563, X564, X565, X566, X567, X568, X569, X570, X571, X572, X573, X574, X575 576 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X575 = R[23,23]
solnmat1=solnmat
exactlyone
[X57*X58*X59 + X56*X58*X59 + X56*X57*X59 + X56*X57*X58 + X59 + X58 + X57 + X56, X112*X124*X136 + X100*X124*X136 + X100*X112*X136 + X100*X112*X124 + X136 + X124 + X112 + X100, X69*X70*X71 + X68*X70*X71 + X68*X69*X71 + X68*X69*X70 + X71 + X70 + X69 + X68, X113*X125*X137 + X101*X125*X137 + X101*X113*X137 + X101*X113*X125 + X137 + X125 + X113 + X101, X81*X82*X83 + X80*X82*X83 + X80*X81*X83 + X80*X81*X82 + X83 + X82 + X81 + X80, X114*X126*X138 + X102*X126*X138 + X102*X114*X138 + X102*X114*X126 + X138 + X126 + X114 + X102, X93*X94*X95 + X92*X94*X95 + X92*X93*X95 + X92*X93*X94 + X95 + X94 + X93 + X92, X115*X127*X139 + X103*X127*X139 + X103*X115*X139 + X103*X115*X127 + X139 + X127 + X115 + X103]
sd=[j*rel_classes for j in range(1,types)] solnmat.subdivide(sd,sd);solnmat
[1 0 0 0|0 1 0 0|0 0 0 1] [0 1 0 0|0 0 0 1|1 0 0 0] [0 0 1 0|1 0 0 0|0 0 1 0] [0 0 0 1|0 0 1 0|0 1 0 0] [-------+-------+-------] [0 0 1 0|1 0 0 0|0 0 1 0] [1 0 0 0|0 1 0 0|0 0 0 1] [0 0 0 1|0 0 1 0|0 1 0 0] [0 1 0 0|0 0 0 1|1 0 0 0] [-------+-------+-------] [0 1 0 0|0 0 0 1|1 0 0 0] [0 0 0 1|0 0 1 0|0 1 0 0] [0 0 1 0|1 0 0 0|0 0 1 0] [1 0 0 0|0 1 0 0|0 0 0 1]
solnmat.submatrix(0,18,6,6)
[0 0 1 0 0 0] [0 0 0 1 0 0] [0 0 0 0 0 1] [0 1 0 0 0 0] [1 0 0 0 0 0] [0 0 0 0 1 0]
solnmat2
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'solnmat2' is not defined
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C+1+k) in Boolean Ring i,j,k=0,1 rel_classes = 4 types = 3 objects = rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(objects^2,'X',order='degneglex') BPR.inject_variables() print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') R = matrix(BPR, objects, objects, BPR.gens()) reflex=[];symmtrc=[];trans=[];exactlyone=[];clues = []; for i in range(0, objects): #reflexive reflex.append(R[i,i]) #reflex=[r+1 for r in reflex] #assert truth for i in range(0,objects): #symmetric for j in range(i+1, objects): symmtrc.append(IFF(R[i,j],R[j,i])) #symmtrc=[s+1 for s in symmtrc] #assert truth for i in range(objects): #transitive truth assertion built into these which assume symmtrc and reflex in place for j in range(i+1,objects): for k in range(j+1,objects): trans.append(R[i,j]*(R[i,k]+R[j,k])) trans.append(R[i,k]*(R[i,j]+R[j,k])) for i in range(0,types): for j in range(i,types): for k in range(0,rel_classes): poly = UNIQUE([R[i*rel_classes+k,j*rel_classes+b] for b in range(0,rel_classes)]) exactlyone.append(poly) poly = UNIQUE([R[j*rel_classes+b,i*rel_classes+k] for b in range(0,rel_classes)]) exactlyone.append(poly) exactlyone=[e+1 for e in exactlyone] #assert truth clues.append(UNIQUE([R[9,1],R[9,6]])) # clue 1 clues.append(UNIQUE([AND(R[4,11],R[6,10]), AND(R[4,10],R[6,9]), AND(R[4,9],R[6,8])])) # clue 2 clues.append(UNIQUE([AND(R[11,6],R[9,0]), AND(R[11,0],R[9,6])])) # clue 3 clues.append(UNIQUE([AND(R[0,11],R[2,4]), AND(R[0,4],R[2,11])])) # clue 4 clues.append(UNIQUE([AND(R[5,11],R[4,10]), AND(R[5,11],R[4,9]), AND(R[5,11],R[4,8]), AND(R[5,10],R[4,9]), AND(R[5,10],R[4,8]), AND(R[5,9],R[4,8])])) # clue 5 #reflex+symmtrc+trans
objects = 12 Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98, X99, X100, X101, X102, X103, X104, X105, X106, X107, X108, X109, X110, X111, X112, X113, X114, X115, X116, X117, X118, X119, X120, X121, X122, X123, X124, X125, X126, X127, X128, X129, X130, X131, X132, X133, X134, X135, X136, X137, X138, X139, X140, X141, X142, X143 144 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X143 = R[11,11]
clues mypoly=FORALL(clues);#mypoly #clues[0]*clues[1] #convert(clues[0])
[X114 + X109, X57*X58*X59*X80*X81*X82 + X59*X82 + X58*X81 + X57*X80, X114*X132 + X108*X138, X11*X28 + X4*X35, X56*X57*X58*X69*X70*X71 + X56*X58*X69*X70*X71 + X56*X57*X58*X69*X71 + X57*X58*X70*X71 + X56*X69*X70*X71 + X56*X58*X70*X71 + X56*X58*X69*X71 + X56*X57*X69*X71 + X56*X57*X69*X70 + X56*X57*X58*X71 + X58*X71 + X57*X71 + X57*X70 + X56*X71 + X56*X70 + X56*X69]
mystring = "R0_1" [int(x) for x in mystring.split("R")[1].split("_")] flatten = lambda l: [item for sublist in l for item in sublist] n=5;myvars=flatten([["R"+str(i).rjust(len(str(n)),'0')+"_"+str(j).rjust(len(str(n)),'0') for j in range(i+1,n) ] for i in range(0,n-1)]);myvars;[[int(x) for x in mystring.split("R")[1].split("_")] for mystring in myvars] BPR = BooleanPolynomialRing(n*(n-1)/2,myvars,order='degneglex') BPR.inject_variables() trans=[] for i in range(0,n): #transitive truth assertion built into these which assume symmtrc and reflex in place for j in range(i+1,n): for k in range(j+1,n): trans.append(BPR("R"+str(i).rjust(len(str(n)),'0')+"_"+str(j).rjust(len(str(n)),'0'))*(BPR("R"+str(i).rjust(len(str(n)),'0')+"_"+str(k).rjust(len(str(n)),'0'))+BPR("R"+str(j).rjust(len(str(n)),'0')+"_"+str(k).rjust(len(str(n)),'0')))) trans.append(BPR("R"+str(i).rjust(len(str(n)),'0')+"_"+str(k).rjust(len(str(n)),'0'))*(BPR("R"+str(i).rjust(len(str(n)),'0')+"_"+str(j).rjust(len(str(n)),'0'))+BPR("R"+str(j).rjust(len(str(n)),'0')+"_"+str(k).rjust(len(str(n)),'0')))) trans
[0, 1] ['R0_1', 'R0_2', 'R0_3', 'R0_4', 'R1_2', 'R1_3', 'R1_4', 'R2_3', 'R2_4', 'R3_4'] [[0, 1], [0, 2], [0, 3], [0, 4], [1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]] Defining R0_1, R0_2, R0_3, R0_4, R1_2, R1_3, R1_4, R2_3, R2_4, R3_4 [R0_1*R1_2 + R0_1*R0_2, R0_2*R1_2 + R0_1*R0_2, R0_1*R1_3 + R0_1*R0_3, R0_3*R1_3 + R0_1*R0_3, R0_1*R1_4 + R0_1*R0_4, R0_4*R1_4 + R0_1*R0_4, R0_2*R2_3 + R0_2*R0_3, R0_3*R2_3 + R0_2*R0_3, R0_2*R2_4 + R0_2*R0_4, R0_4*R2_4 + R0_2*R0_4, R0_3*R3_4 + R0_3*R0_4, R0_4*R3_4 + R0_3*R0_4, R1_2*R2_3 + R1_2*R1_3, R1_3*R2_3 + R1_2*R1_3, R1_2*R2_4 + R1_2*R1_4, R1_4*R2_4 + R1_2*R1_4, R1_3*R3_4 + R1_3*R1_4, R1_4*R3_4 + R1_3*R1_4, R2_3*R3_4 + R2_3*R2_4, R2_4*R3_4 + R2_3*R2_4]
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C+1+k) in Boolean Ring i,j,k=0,1 rel_classes = 4 types = 3 objects = rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(types*rel_classes*rel_classes,'X',order='degneglex') BPR.inject_variables() #print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') R = matrix(BPR, objects, objects) trans=[];exactlyone=[];clues = []; for i in range(0, objects): #reflexive R[i,i] = BPR(1) nn=-1 for i in range(0,types): #symmetric for j in range(i+1, types): nn=nn+1 mm=0 for k in range(0,rel_classes): for l in range(0,rel_classes): R[i*rel_classes+k,rel_classes*j+l] = BPR.gens()[nn*16+mm] R[rel_classes*j+l,i*rel_classes+k] = BPR.gens()[nn*16+mm] mm=mm+1 for i in range(objects): #transitive truth assertion built into these which assume symmtrc and reflex in place for j in range(objects): for k in range(objects): trans.append(IF(R[i,j]*R[j,k],R[i,k])) trans = list(set(trans)) trans.remove(1) for i in range(0,types): for j in range(i,types): for k in range(0,rel_classes): poly = UNIQUE([R[i*rel_classes+k,j*rel_classes+b] for b in range(0,rel_classes)]) exactlyone.append(poly) poly = UNIQUE([R[j*rel_classes+b,i*rel_classes+k] for b in range(0,rel_classes)]) exactlyone.append(poly) exactlyone = list(set(exactlyone)) exactlyone.remove(1) clues.append(UNIQUE([R[9,1],R[9,6]])) # clue 1 clues.append(UNIQUE([AND(R[4,11],R[6,10]), AND(R[4,10],R[6,9]), AND(R[4,9],R[6,8])])) # clue 2 clues.append(UNIQUE([AND(R[11,6],R[9,0]), AND(R[11,0],R[9,6])])) # clue 3 clues.append(UNIQUE([AND(R[0,11],R[2,4]), AND(R[0,4],R[2,11])])) # clue 4 clues.append(UNIQUE([AND(R[5,11],R[4,10]), AND(R[5,11],R[4,9]), AND(R[5,11],R[4,8]), AND(R[5,10],R[4,9]), AND(R[5,10],R[4,8]), AND(R[5,9],R[4,8])])) # clue 5 prems = trans + exactlyone + clues prems = [p+1 for p in prems] REI=ideal(prems) QR = BPR.quotient_ring(REI) solnmat=matrix([[QR(R[i,j]) for i in range(objects)] for j in range(objects)]) sd=[j*rel_classes for j in range(1,types)] solnmat.subdivide(sd,sd) print(solnmat);print(' ') #exactlyone
objects = 12 Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47 [1 0 0 0|0 1 0 0|0 0 0 1] [0 1 0 0|0 0 0 1|1 0 0 0] [0 0 1 0|1 0 0 0|0 0 1 0] [0 0 0 1|0 0 1 0|0 1 0 0] [-------+-------+-------] [0 0 1 0|1 0 0 0|0 0 1 0] [1 0 0 0|0 1 0 0|0 0 0 1] [0 0 0 1|0 0 1 0|0 1 0 0] [0 1 0 0|0 0 0 1|1 0 0 0] [-------+-------+-------] [0 1 0 0|0 0 0 1|1 0 0 0] [0 0 0 1|0 0 1 0|0 1 0 0] [0 0 1 0|1 0 0 0|0 0 1 0] [1 0 0 0|0 1 0 0|0 0 0 1]
KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C+1+k) in Boolean Ring i,j,k=0,1 rel_classes = 6 types = 4 objects = rel_classes*types; print('objects = ' + str(objects)) BPR = BooleanPolynomialRing(types*rel_classes*rel_classes,'X',order='degneglex') BPR.inject_variables() #print(str(objects^2) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') R = matrix(BPR, objects, objects) trans=[];exactlyone=[];clues = []; for i in range(0, objects): #reflexive R[i,i] = BPR(1) nn=-1 for i in range(0,types): #symmetric for j in range(i+1, types): nn=nn+1 mm=0 for k in range(0,rel_classes): for l in range(0,rel_classes): R[i*rel_classes+k,rel_classes*j+l] = BPR.gens()[nn*16+mm] R[rel_classes*j+l,i*rel_classes+k] = BPR.gens()[nn*16+mm] mm=mm+1 for i in range(objects): #transitive truth assertion built into these which assume symmtrc and reflex in place for j in range(objects): for k in range(objects): trans.append(IF(R[i,j]*R[j,k],R[i,k])) trans = list(set(trans)) trans.remove(1) for i in range(0,types): for j in range(i,types): for k in range(0,rel_classes): poly = UNIQUE([R[i*rel_classes+k,j*rel_classes+b] for b in range(0,rel_classes)]) exactlyone.append(poly) poly = UNIQUE([R[j*rel_classes+b,i*rel_classes+k] for b in range(0,rel_classes)]) exactlyone.append(poly) exactlyone = list(set(exactlyone)) exactlyone.remove(1) clues.append(UNIQUE([AND(R[11,22],R[16,1]), AND(R[11,1],R[16,22])])) # clue 1 clues.append(UNIQUE([AND(R[1,18],R[15,19]), AND(R[1,18],R[15,20]), AND(R[1,18],R[15,21]), AND(R[1,18],R[15,22]), AND(R[1,18],R[15,23]), # clue 2 AND(R[1,19],R[15,20]), AND(R[1,19],R[15,21]), AND(R[1,19],R[15,22]), AND(R[1,19],R[15,23]), AND(R[1,20],R[15,21]), AND(R[1,20],R[15,22]), AND(R[1,20],R[15,23]), AND(R[1,21],R[15,22]), AND(R[1,21],R[15,23]), AND(R[1,22],R[15,23])])) clues.append(UNIQUE([AND(R[13,23],R[9,21]), AND(R[13,22],R[9,20]), AND(R[13,21],R[9,19]), AND(R[13,20],R[9,18])])) # clue 3 clues.append(R[5,11]) # clue 4 clues.append(NOT(R[4,23])) # clue 5 clues.append(NOT(R[1,10])) # clue 6.1 clues.append(NOT(R[1,14])) # clue 6.2 clues.append(NOT(R[1,17])) # clue 6.3 clues.append(NOT(R[1,9])) # clue 6.4 clues.append(NOT(R[1,8])) # clue 6.5 clues.append(NOT(R[10,14])) # clue 6.6 clues.append(NOT(R[10,17])) # clue 6.7 clues.append(NOT(R[14,9])) # clue 6.8 clues.append(NOT(R[14,8])) # clue 6.9 clues.append(NOT(R[17,9])) # clue 6.10 clues.append(NOT(R[17,8])) # clue 6.11 clues.append(R[21,6]) # clue 7 clues.append(UNIQUE([R[0,8], R[0,7]])) # clue 8 clues.append(NOT(R[13,10])) # clue 9 clues.append(NOT(R[3,14])) # clue 10 clues.append(UNIQUE([AND(R[16,23],R[3,21]), AND(R[16,22],R[3,20]), AND(R[16,21],R[3,19]), AND(R[16,20],R[3,18])])) # clue 11 prems=trans+exactlyone+clues prems = [p+1 for p in prems] REI=ideal(prems) QR = BPR.quotient_ring(REI) solnmat=matrix([[QR(R[i,j]) for i in range(objects)] for j in range(objects)]) #sd=[j*rel_classes for j in range(1,types)] #solnmat.subdivide(sd,sd) #print(solnmat);print(' ')
objects = 24 Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98, X99, X100, X101, X102, X103, X104, X105, X106, X107, X108, X109, X110, X111, X112, X113, X114, X115, X116, X117, X118, X119, X120, X121, X122, X123, X124, X125, X126, X127, X128, X129, X130, X131, X132, X133, X134, X135, X136, X137, X138, X139, X140, X141, X142, X143
load('ProbRecurse.py') load('Prob.py') import numpy import scipy.optimize KDELTA = lambda A, B: A.parent(A == B) NOT = lambda A: A.parent(1) + A XOR = lambda A, B: A + B OR = lambda A, B: A + B + A*B IF = lambda A, B: A.parent(1) + A + A*B IFF = lambda A, B: A.parent(1) + A + B AND = lambda A, B: A*B NAND = lambda A, B: A.parent(1) + A*B NOR = lambda A, B: A.parent(1) + A + B + A*B FORALL = lambda mylist: reduce(AND, mylist) EXISTS = lambda mylist: reduce(OR, mylist) UNIQUE = lambda mylist: reduce(XOR,[FORALL([A + NOT(KDELTA(A,B)) for A in mylist]) for B in mylist]) GIVEN = lambda A, B: Prob(AND(A,B))/Prob(B) convert = lambda f: reduce(lambda a,b:a+b,[reduce(lambda a,b:a*b,[(m.degree(g)+1+g) for g in BPR.gens()]) for m in f.monomials()]) #self inverse convert poly in gens to poly in atoms (missing var x implies, interpret as ~x) # convert monomial terms A^i*B^j*C^k --> (A+1+i)*(B+1+j)*(C+1+k) in Boolean Ring i,j,k=0,1 objects = 5; print('objects = ' + str(objects)) UD=objects*(objects-1)/2 BPR = BooleanPolynomialRing(UD,'X',order='degneglex') BPR.inject_variables() print(str(UD) + ' Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X' + str(objects^2-1) + ' = R[' + str(objects-1) + ',' + str(objects-1) + ']') R = matrix(BPR, objects, objects) trans=[];clues = []; for i in range(0, objects): #reflexive R[i,i] = BPR(1) mm=-1 for i in range(0,objects): #symmetric for j in range(i+1, objects): mm=mm+1 R[i,j] = BPR.gens()[mm] R[j,i] = BPR.gens()[mm] for i in range(objects): #transitive for j in range(objects): for k in range(objects): trans.append(IF(R[i,j]*R[j,k],R[i,k])) trans = list(set(trans)) trans.remove(1) prems=trans prems = [p+1 for p in prems] REI=ideal(prems) QR = BPR.quotient_ring(REI) NewGens = str(BPR.gens()).lower() NewGens = NewGens[1:len(NewGens) - 1] PPR = PolynomialRing(QQ,NewGens,order='degneglex') PPR.inject_variables()
objects = 5 Defining X0, X1, X2, X3, X4, X5, X6, X7, X8, X9 10 Free Boolean Algebra generators: X0 = R[0,0], X1 = R[0,1], X2 = R[0,2],..., X24 = R[4,4] Defining x0, x1, x2, x3, x4, x5, x6, x7, x8, x9
#MyProbPoly=Prob(FORALL(trans)) lincons = [Prob(trans[0])-.9] str1='{\'type\': \'eq\', \'fun\': lambda s: (lincons[' str2='])(*s)},' mystr='[' for ii in range(len(lincons)): mystr=mystr+str1+str(ii)+str2 mystr=mystr+']' cons = eval(mystr) bnds = tuple([(0.0, 1.0) for xx in range(10)]) y0 = [.5 for xx in range(10)] #HH = lambda s: sum([s[ii]*ln(s[ii])+(1-s[ii])*ln(1-s[ii]) for ii in range(len(s))]) #dHH = lambda s: [ln(s[ii])-ln(1-s[ii]) for ii in range(len(s))] pvar = lambda s: sum([(2*s[i]-1)^2 for i in range(len(s))]) dpvar = lambda s: [4*(2*s[i]-1) for i in range(len(s))] pvarsoln = scipy.optimize.minimize(pvar, y0, jac=dpvar, method='SLSQP', bounds=bnds, constraints=cons)
trans[0];Prob(trans[0]);cons pvarsoln.x
X1*X3*X8 + X1*X3 + 1 x1*x3*x8 - x1*x3 + 1 [{'fun': <function <lambda> at 0x7f5d9fc818c0>, 'type': 'eq'}] array([ 0.5 , 0.46415888, 0.5 , 0.46415888, 0.5 , 0.5 , 0.5 , 0.5 , 0.53584111, 0.5 ])