Hello,
SAGE returns an incorrect annihilator when algebraic_immunity(annihilator =
True) is used in the following code:
from sage.crypto.boolean_function import BooleanFunction
R = BooleanPolynomialRing(4,'x')
f1 = R.gen(0)*R.gen(1)*R.gen(2) + R.gen(0)*R.gen(1)*R.gen(3) +
R.gen(0)*R.gen(2)*R.gen(3) + R.gen(1)*R.gen(2)*R.gen(3) + 1
annihilator_f1 = BooleanFunction(f1).algebraic_immunity(annihilator =
True)[1]
print (annihilator_f1 * f1)
annihilator_f1 is incorrect, because the response comes as:
x0 + x1 + x2 + x3 + 1
and not 0 as expected.
The annihilator( ) function however, returns the correct answer, as checked
with the following code:
for i in range(1,f1.total_degree() + 1):
if BooleanFunction(f1).annihilator(i) == None:
continue
else:
p = BooleanFunction(f1).annihilator(i)
print p
print (p*f1 == 0)
break
Output:
x0*x1*x2 + x1*x2*x3
True
The above code was written in online notebook version of SAGE.
Thanks,
AKHIL.
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.