Questions tagged «formal-methods»

5
是否有用于纯功能编程语言的带注释的形式验证系统?
ACSL(Ansi C规范语言)是C代码的规范,带有特殊注释,可对C代码进行正式验证。 我没有研究它,但是我想ACSL验证器中使用的形式方法将类似于Hoare Logic。但是对于纯函数式语言(例如Haskell),我无法想象将使用哪种形式主义进行形式验证。 除了纯函数式语言外,有人做过类似于ACSL的东西吗?如果不是,是否有针对功能语言的规范标注样式形式验证的研究? 我知道有一种依赖类型,许多语言(Agda,Idris等)都支持这种类型,但是在Haskell中,不进行某种(不可读的)类型wizardry很难实现依赖类型。考虑到这一点,由于Haskell具有比Agda和Idris更好的库支持,我相信这样的功能形式验证系统可能会有用,但是我不知道是否对此进行了研究。

2
算法可以在多大程度上预测任意输入程序的时间复杂度?
该停机问题指出,这是不可能写一个程序,可确定是否存在另一个程序暂停,对于所有可能的输入程序。 但是,我当然可以编写一个可以计算如下程序的运行时间的程序: for(i=0; i<N; i++) { x = 1; } 并返回的时间复杂度,而无需运行它。ññN 对于所有其他输入程序,它将返回一个标志,表明它无法确定时间复杂度。 我的问题是这样的: 必须满足什么条件,以便我们可以算法确定给定程序的时间复杂度? *如果对此有规范的参考或评论文章,请在评论中提供链接。

6
课程:安全中的逻辑/正式方法
目前,我开设了一门小课程(在安全级别上为时两个小时的讲座),涉及安全中的逻辑方法,尽管标题“ 安全中的形式方法”可能更合适。它简要介绍了以下主题(以及相关的逻辑方法): 数字版权管理和政策执行(一般形式化,模态逻辑,通过自动机执行) 带有证明的代码和带有证明的认证(证明理论,逻辑系统,Curry-Howard同构,验证) 访问控制(非经典逻辑,证明理论) 堆栈检查(编程语言语义,上下文对等,双仿真) 当然,该课程有多个目标,其中一个目标是吸引潜在的研究生。 在未来几年中,该课程可能会扩展为常规课程,这将需要更多内容。鉴于这里的人的背景与我的背景完全不同,我想知道您将在此课程中包括哪些内容。

7
我们怎么知道形式方法有效?
形式化方法的一个重要目标是通过自动化或人工指导的方法来证明系统的正确性。但是,似乎即使您可以提供正确性证明,也可能无法保证系统不会失败。例如: 规范可能无法正确地对系统进行建模,或者生产系统可能过于复杂而无法建模,或者由于相互矛盾的要求,系统可能固有地存在缺陷。已知哪些技术可以测试规范是否完全有意义? 证明过程也可能有缺陷!谁知道这些推理规则是正确和合法的?此外,证明可能非常大,我们如何知道它们不包含错误?这是de Millo,Lipton和Perlis的“社会过程以及定理和程序证明”的批评的核心。现代形式方法研究人员如何回应这种批评? 在运行时,有许多不确定的事件和因素会严重影响系统。例如,宇宙射线会以不可预测的方式改变RAM,更一般地说,我们无法保证硬件不会遭受拜占庭式的故障,而Lamport证明了这种故障很难克服。因此,静态系统的正确性不能保证系统不会失败!是否有已知的技术可以解释真实硬件的易失性? 目前,测试是我们确定软件有效的最重要工具。似乎它应该是形式方法的补充工具。但是,我主要看到的是侧重于形式方法或测试的研究。关于两者结合的已知知识?

7
CS逻辑应用程序的指针
我是数学专业的研究生,具有扎实的逻辑背景。我参加了为期一年的逻辑研究生课程以及有限模型理论和强制和集合理论的研究生课程。大多数CS文本似乎只假设逻辑的背景非常温和,其中大部分涵盖命题逻辑和一阶逻辑的基础。 我想获得一些关于CS应用程序去向的指导,在CS应用程序中使用了来自逻辑的大量材料。我的兴趣之一是类型理论和形式方法。除了模型检查和编程语言入门书籍外,有人可以建议一些不错的阅读材料吗?

9
如何创建关键任务软件?
我正在自我学习形式方法。我听说使用(通常仅使用)正式方法来创建任务关键型软件(例如核反应堆控制器,飞机飞行控制器,空间探测器控制器)。这就是为什么我有兴趣学习它的原因:p 但是,在学习了形式化方法(尤其是LTL,CTL及其同级方法)之后,我觉得它们只能用于验证规范的正确性(安全性,活跃性,公平性等)。 但是,然后如何验证软件(不仅是规范)确实正确? 免责声明:在理论计算机科学方面,我是90%的白痴。因此,请在回答时保持仁慈。

3
是否可以计算两个函数是否在扩展上相等?
如果您有两个实现不同排序算法的函数,那么是否可以通过源代码推断它们都具有相同的外部属性?意味着它们都将具有可能的未排序序列作为输入并具有已排序序列作为输出?这些外部属性可以通过什么方式由源代码确定?您将如何描述这些外部属性?将使用什么表示法? 可以通过显式定义外部属性(例如在类型系统中)来使外部属性已知,但是我想知道是否可以隐式完成。还是在某种程度上理论上无法推断出这种语义?我对这是否适用于任意函数(不仅是排序算法)感兴趣,并假设函数之类的东西总是会停滞并且没有副作用。 我应该看看指称语义还是无关的? 我对这方面的研究以及用于描述可能有助于我的文献检索的主题的不同术语感兴趣。
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.