我需要测试一个n元布尔函数
起初,我尝试创建一个值的向量来控制变量的"固定"。
f = f(x0,...,xn-1)
。我需要固定x0,然后运行一些测试来得到g1 = f(x1,...,xn-1)
,接着固定x1等等。
问题在于我不太明白如何在Sage中实现这个过程。起初,我尝试创建一个值的向量来控制变量的"固定"。
R.<x0,x1,x2,x3> = BooleanPolynomialRing()
v = [None,1,None, 0]
if v[0] != None:
x0=v[0]
if v[1] != None:
x1=v[1]
if v[2] != None:
x2=v[2]
if v[3] != None:
x3=v[3]
f = BooleanFunction(x0+x3+x0*x1+x0*x1*x2)
print(f.algebraic_normal_form())
output:x0*x2
这个方法可以正常工作,但不符合我的需求,因为我想要自动化修复过程。我想用循环代替“if
”,但在这种情况下,我不知道如何使用索引来访问循环内的变量。
我对Sage还很陌生,所以非常感谢任何建议!
BooleanFunction
我就不能通过它的 ANF 创建布尔函数。有趣的事实是:如果f
是一个BooleanFunction
,你不能使用f.subs
,但如果像你所写的那样编写,你可以使用它。 - Mikhail Kivi