使用Z3计算递归函数

时间:2016-04-09 00:25:05

标签: z3

我想写一个函数来计算"计算"列表的长度。 http://rise4fun.com/Z3/Irsl1,基于list concat in z3Proving inductive facts in Z3

我似乎无法使其正常工作,它会因超时而失败。这样的功能会在Z3中表达吗?

更大的背景是我试图建模和解决问题,例如"有多少甚至正整数小于9?"或者"有5个偶数正整数小于x,什么是x?"。

1 个答案:

答案 0 :(得分:1)

  

更大的背景是我试图建模和解决问题,例如"有多少甚至正整数小于9?"或者"有5个偶数正整数小于x,什么是x?"。

如果这是你真正想要解决的问题,那么我建议不要直接创建列表或理解,而是仅使用算术来编码问题。 例如,您可以通过乘以2获得偶数整数,并表示 使用量词的整数区间的属性。

对于序列操作,有一些新兴选项。 例如,序列和长度部分处理:http://rise4fun.com/z3/tutorial/sequences。相当简单的属性 使用内置程序排出序列和长度。 如果您开始像上面提示的那样开始编码属性,则不太可能 由于主要支持是围绕地面(无量词)属性,所以做得很好。