sách gpt4 ai đã đi

z3 - z3 的解决方法不支持注入(inject)性

In lại 作者:行者123 更新时间:2023-12-01 13:30:03 28 4
mua khóa gpt4 Nike

我想在 z3 中表示一个哈希函数,比如 SHA(x)。在做了一些研究之后,似乎 z3 不能很好地支持注入(inject)性,所以我不能有像这样的约束(虽然我意识到这并不是严格意义上的碰撞,但作为一种启发式方法,它对我的项目)

forall([x, y],Implies(SHA(x)==SHA(y), x==y))

并期望求解器终止。

我的问题是,对于这个问题是否有任何已知的最佳实践解决方法?例如,如果我在不使用量词的情况下为每对 x 和 y 添加 Implies(SHA(x)==SHA(y), x==y) 约束,这会解决问题吗?

1 Câu trả lời

对于未解释的函数,我们使用以下形式的编码:

Forall([x], inverse_f(f(x)) = x)

所以当 f 是单射的时候,我们可以引入一个函数来实现 f 的范围的部分逆。具有成对等式的量化公理非常常见,以至于 Z3 会寻找它们并添加上述公理。
每次出现 f 时都会实例化它。
当然,对于通常使用位向量编码的 SHA,引入未解释的函数意味着 Z3 不使用纯 SAT 求解器。在最好的情况下,它会恢复为阿克曼编码,即重新引入原始的成对编码。

关于z3 - z3 的解决方法不支持注入(inject)性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418908/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com