Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 液体哈斯克尔的表现力_Haskell_Types_Logic_Liquid Haskell - Fatal编程技术网

Haskell 液体哈斯克尔的表现力

Haskell 液体哈斯克尔的表现力,haskell,types,logic,liquid-haskell,Haskell,Types,Logic,Liquid Haskell,从最近的一次调查开始,我一直在思考以下问题: 我们可以在LH中创建一些令人惊奇的新类型,特别是表示一些非平凡的整数子集。例如: {-@typenat={v:Int | v>=0}@-} {-@type grtN N={v:Int | v>N}@-} {-@type偶数={v:Int | v mod 2==0}@-} 但是现在我可以用LH表达哪些非平凡的子集呢 我可以在LH中创建一个只包含2次幂的类型吗?这就是我最后一个问题,答案似乎是否定的 所以一个自然的问题是,我能表达什么样的子集(整数)?

从最近的一次调查开始,我一直在思考以下问题:

我们可以在LH中创建一些令人惊奇的新类型,特别是表示一些非平凡的整数子集。例如:

{-@typenat={v:Int | v>=0}@-}
{-@type grtN N={v:Int | v>N}@-}
{-@type偶数={v:Int | v mod 2==0}@-}
但是现在我可以用LH表达哪些非平凡的子集呢

我可以在LH中创建一个只包含2次幂的类型吗?这就是我最后一个问题,答案似乎是否定的

所以一个自然的问题是,我能表达什么样的子集(整数)? 有一个很好的描述吗?

我相信LH可以让你编写任意的算术约束。但是只有线性整数算法的理论是可由后端解算器判定的(通过presburger算法),因此,一旦开始编写非线性表达式,就无法保证解算器将实际验证代码。此外,SMT解算器仅支持一阶逻辑,因此无法量化过度关系