我正在尝试了解 Z3 未解释的函数如何工作来证明这一点n=2k+1 => log(m) + k*log(m*m) == n*log(m)
。为此,我使用以下内容
mylog = Function('mylog', IntSort(), IntSort())
mylog_rule1 = mylog(x*y) == mylog(x) + mylog(y)
mylog_rule2 = mylog(x**y) == y*mylog(x)
#mylog_rule3 = y*mylog(x) == mylog(x**y) #is this rule needed ?
rules = And(mylog_rule1, mylog_rule2, mylog_rule3)
prop = Implies(n==2*k+1, log(m) + k*log(m*m) == n*log(m))
prove(rules, prop)
我的方法一定有问题,因为这不太奏效。事实上,我什至不能prove(Implies(mylog(x*y) == mylog(x) + mylog(y), mylog(m*n) == mylog(m) + mylog(n))
改变变量名。