Questions tagged «formal-verification»

1
如何阅读GHC Core的“证明”?
我写了少量的Haskell,以了解GHC如何证明对于自然数,您只能将偶数减半: {-# LANGUAGE DataKinds, GADTs, KindSignatures, TypeFamilies #-} module Nat where data Nat = Z | S Nat data Parity = Even | Odd type family Flip (x :: Parity) :: Parity where Flip Even = Odd Flip Odd = Even data ParNat :: Parity -> * where PZ :: …

11
Haskell函数是否可以通过正确性属性进行证明/模型检查/验证?
继续以下思想:是否存在可证明的现实世界语言? 我不认识你,但是我讨厌写我不能保证的代码。 在问完上述问题并得到了惊人的答复之后(谢谢!),我决定缩小对Haskell的可证明的,务实的方法的搜索范围。我选择Haskell是因为它实际上很有用(为此编写了许多 Web 框架,这似乎是一个不错的基准),而且我认为它在功能上非常严格,可能可以证明,或者至少允许测试不变式。 这就是我想要的(一直找不到) 我想要一个框架,可以查看以psudocode编写的Haskell函数: add(a, b): return a + b -并检查某些不变式是否保持在每个执行状态。我希望有一些正式的证明,但是我会选择模型检查器之类的东西。 在此示例中,不变的是给定值a和b,返回值始终是a + b之和。 这是一个简单的示例,但我认为这样的框架不可能存在。可以测试的函数的复杂度肯定会有一个上限(一个函数的10个字符串输入肯定会花费很长时间!),但这会鼓励更仔细地设计函数,与使用其他形式函数没什么不同方法。想象一下使用Z或B,当您定义变量/集时,您一定要确保为变量提供尽可能小的范围。如果您的INT永远不会超过100,请确保将其初始化!我认为,像这样的技术以及适当的问题分解应该能够令人满意地检查像Haskell这样的纯功能语言。 我对形式方法或Haskell还不是很有经验。让我知道我的想法是否合理,或者您认为haskell不适合?如果您建议使用其他语言,请确保其通过“具有网络框架”测试,并阅读原始问题:-)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.