Haskell中是否有任何值级逻辑量化器?

Haskell中是否有任何值级逻辑量化器?,haskell,quantifiers,Haskell,Quantifiers,我当时正在为Python开发一个抽象代数库,这时我意识到很多肮脏的工作只是构造循环来对应带有量词的逻辑表达式。然后我意识到,虽然在Python中实现逻辑量化的函数可能很困难,但在Haskell或其他语言中则更容易实现 现在我有量词,只要属性只涉及一个被量化的变量,并且只有当你量化的关系有三个变量时,克服这些障碍似乎是困难的部分 例如,语句∀x∃y(x

我当时正在为Python开发一个抽象代数库,这时我意识到很多肮脏的工作只是构造循环来对应带有量词的逻辑表达式。然后我意识到,虽然在Python中实现逻辑量化的函数可能很困难,但在Haskell或其他语言中则更容易实现

现在我有量词,只要属性只涉及一个被量化的变量,并且只有当你量化的关系有三个变量时,克服这些障碍似乎是困难的部分

例如,语句
∀x∃y(x
导致问题,但
∀x(x=2)∃y(y<3)
可以

是否有任何现有的Haskell库实现这样的值级逻辑量词?搜索是很困难的,因为每当我沿着“逻辑量词Haskell”的思路搜索一些东西时,我会得到很多关于类型量词的东西,这不是我想要的


我唯一能找到的是一个
forAll
in,它没有“exists”这个词

您可以编写这种类型的表达式,并使用
SMT
解算器生成反例。Haskell对smt解算器有很好的、自然的绑定(例如),可以让您编写外观正常的表达式,并根据这一特殊规则对其进行计算


这是一个很好的方式来获得你想要的东西。

很有趣。你能补充一点关于你想用这些结构做什么的细节吗?我不清楚你是想证明它们,操纵它们,断言它们,测试它们还是其他什么。你到底想做什么?是否要在某个值范围内循环并搜索示例或检查所有值?(像可折叠的所有和任何:)?最终它应该产生一个布尔值,短curcuit求值将是理想的。它还应该能够链接泛运算符和存在运算符,以便它们像数学上那样工作,我不知道
all
any
是否也像那样工作。All和any使用一元谓词,但我希望能够为
All
any
指定两个单独的变量,然后将它们链接在一起,生成一个接受二进制谓词的函数,一般来说,链n个不同的量词函数来产生一个接受n元谓词的函数。你要量化的域是什么?如果列表中有您的值,则
所有
任何
都可以正常工作(也可以嵌套)。我不确定您要查找哪些功能,但如果域(实际上)有限,则库可能适合您的需要。