Мне нужно протестировать 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
s циклом, но в этом случае я не знаю, как обращаться к переменным внутри цикла с помощью индексов.
Я новичок в Sage, поэтому буду признателен за любой совет!