【问题标题】:Compute recursive functions with Z3使用 Z3 计算递归函数
【发布时间】:2016-04-09 00:25:05
【问题描述】:

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

我似乎无法让它工作,它因超时而失败。在 Z3 中可以表达这样的功能吗?

更大的背景是我正在尝试建模和解决诸如“有多少偶正整数小于 9?”或“有 5 个偶正整数小于 x,x 是多少?”之类的问题。

【问题讨论】:

    标签: z3


    【解决方案1】:

    更大的背景是我正在尝试建模和解决诸如“有多少偶正整数小于 9?”或“有 5 个偶正整数小于 x,x 是多少?”之类的问题。

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

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

    【讨论】:

    • 感谢“序列”提示,我不知道它们。如何定义“2 到 4 之间的整数序列”,或者一般来说,“x 和 y 之间的整数序列”,其中 x 和 y 是受约束的变量?这里有一些尝试,我只能使用显式元素断言对列表进行硬编码:rise4fun.com/Z3/NHplc
    猜你喜欢
    • 1970-01-01
    • 2013-11-26
    • 2015-07-28
    • 2021-05-03
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多