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.


Reply via email to