<?xml version="1.0" encoding="utf-8" standalone="no"?><?xml-stylesheet href="/mathmlc2p.xsl" type="text/xsl"?><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>meyer</title>
</head>
<body>
<tt>
// Reference : Henning Meyer, my boolean problem ( <a href="http://groups.google.com/group/sci.math.symbolic/browse_frm/thread/318369ef90df4358/">http://groups.google.com/group/sci.math.symbolic/browse_frm/thread/318369ef90df4358/</a> )<br/>
<br/>
import jscl.math.Debug;<br/>
import jscl.math.Generic;<br/>
import jscl.math.Variable;<br/>
import jscl.math.polynomial.Basis;<br/>
import jscl.math.polynomial.Monomial;<br/>
static import jscl.math.Predef.*;<br/>
<br/>
Debug.setOutputStream(System.out);<br/>
<br/>
nlen=2;<br/>
int len=1&lt;&lt;(nlen-1);<br/>
n=vector(&quot;n&quot;,nlen);<br/>
a_=vector(&quot;a&quot;,1,len);<br/>
b_=vector(&quot;b&quot;,1,len);<br/>
m=vector(&quot;m&quot;,len);<br/>
a=vector(&quot;a&quot;,len);<br/>
b=vector(&quot;b&quot;,len);<br/>
t=vector(&quot;t&quot;,len);<br/>
v=new Vector();<br/>
for(i=0;i&lt;nlen;i++) v.addElement(n[i].variableValue());<br/>
for(i=0;i&lt;len;i++) v.addElement(a_[i].variableValue());<br/>
for(i=0;i&lt;len;i++) v.addElement(b_[i].variableValue());<br/>
for(i=0;i&lt;len;i++) v.addElement(m[i].variableValue());<br/>
for(i=0;i&lt;len;i++) v.addElement(a[i].variableValue());<br/>
for(i=0;i&lt;len;i++) v.addElement(b[i].variableValue());<br/>
for(i=0;i&lt;len;i++) v.addElement(t[i].variableValue());<br/>
vars=new Variable[v.size()];<br/>
v.copyInto(vars);<br/>
<br/>
nconstraint(n) {<br/>
        n_=vector(&quot;n&quot;,len);<br/>
        nc=integer(&quot;1&quot;);<br/>
        for(int i=0;i&lt;nlen;i++) {<br/>
                int c=1-((n&amp;(1&lt;&lt;i))&gt;&gt;i);<br/>
                nc=nc.multiply(n_[i].add(integer(String.valueOf(c))));<br/>
        }<br/>
        return nc;<br/>
}<br/>
<br/>
ni=new Generic[len];<br/>
for(n=0;n&lt;len;n++) ni[n]=nconstraint(n);<br/>
<br/>
rightShift(a,i) {<br/>
        s=integer(&quot;0&quot;);<br/>
        for(int n=0;n&lt;len;n++) {<br/>
                if(i&lt;a.length-n) s=s.add(a[i+n].multiply(ni[n]));<br/>
        }<br/>
        return s;<br/>
}<br/>
<br/>
leftShift(a,i) {<br/>
        s=integer(&quot;0&quot;);<br/>
        for(int n=0;n&lt;len;n++) {<br/>
                if(i&gt;=n) s=s.add(a[i-n].multiply(ni[n]));<br/>
        }<br/>
        return s;<br/>
}<br/>
<br/>
v=new Vector();<br/>
for(i=0;i&lt;len;i++) v.addElement(t[i].add(rightShift(a,i).add(b[i]).multiply(m[i])));<br/>
for(i=0;i&lt;len;i++) v.addElement(a_[i].add(a[i].add(leftShift(t,i))));<br/>
for(i=0;i&lt;len;i++) v.addElement(b_[i].add(b[i].add(t[i])));<br/>
eqs=new Generic[v.size()];<br/>
v.copyInto(eqs);<br/>
t=System.currentTimeMillis();<br/>
basis=Basis.compute(eqs,vars,Monomial.lexicographic,2,Basis.DEFINING_EQS);<br/>
t=System.currentTimeMillis()-t;<br/>
print(basis);<br/>
print(t);<br/>
</tt>
</body>
</html>
