首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACSL中的PreCondition或PostCondtion

ACSL中的PreCondition或PostCondtion
EN

Stack Overflow用户
提问于 2013-10-15 09:29:11
回答 2查看 259关注 0票数 1

在ACSL中,我无法区分各种先决条件和后条件.正如我所知道的那样,终止和承担是在前提条件下进行的,并且保证和分配在后状态。但在哪一种安息如减少等是??

有人能帮我弄清楚吗?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-15 15:25:24

这是刁钻的问题。基本上,decreases可以作为递归调用的一个先决条件:如果您有一个带有decreases x;的函数f,如果它碰巧调用了它自己,那么您必须证明这个调用站点上的x<\at(x,Pre)。此外,当您调用x>=0 (递归调用与否)时,您有一个前置条件,即f。关于其他从句(根据其在ACSL 1.7中的顺序)

  • completedisjoint子句基本上是契约的assumes子句的逻辑属性,它们并不意味着任何用于实现的内容,而是作为规范本身的健全检查。
  • allocatesfrees是后置条件(与assigns类似,但涉及动态分配)。
  • exits (以及returnsbreakscontinues)是后置条件(当我们退出函数-or语句时对它们进行评估)。
  • 依赖项(\from)是后置条件(如assigns)。
票数 3
EN

Stack Overflow用户

发布于 2013-10-15 17:15:56

ACSL的减子句主要用于递归函数调用。如果您指定了带有指针变量x的减值子句,例如:减*x;那么它的意思是,每当控件输入与此减额子句相关的函数时,它都会检查指针x所指向的值是否比函数预状态期间x所指向的值少1。第一次调用该函数时,预条件检查是:(*x) >= 0,因为该函数处于预状态,因此没有预状态值可与之比较。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19377683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档