裸车是什么意思| 夏天要注意什么| 一晚上尿五六次是什么原因| 胳肢窝痒是什么原因| 为什么医者不自医| 神经元特异性烯醇化酶偏高是什么意思| 飞五行属什么| 流鼻血什么原因| 打呼噜是什么引起的| 湿疹是什么样子的| 熬夜伤什么器官| 男生小便尿道刺痛什么原因| 一个口一个巴念什么字| 灯五行属什么| 流局是什么意思| 880什么意思| 猴子的尾巴像什么| 八月初十是什么星座| 贵州有什么好玩的| 甲状腺应该多吃什么| 骨质增生什么意思| 脑供血不足吃点什么药| 周年祭日有什么讲究| 如意代表什么生肖| 狗叫是什么意思| 印第安人是什么人种| 什么的味道| 为什么拔罐肩膀最黑| 梦见家里办丧事是什么预兆| 维字五行属什么| 猫叫是什么意思| 清官是什么意思| 梦见房子漏水是什么意思| 异父异母是什么意思| 怨念是什么意思| 婴儿大便有泡沫是什么原因| 严重脱发是什么原因| 彗星为什么有尾巴| nu11是什么意思| 咖啡什么时候喝最好| 喉炎吃什么药好得快| 东山再起是什么意思| 出圈什么意思| 最机灵的动物是什么生肖| 阴茎破皮擦什么药| 下巴上有痣代表什么| 880什么意思| 相宜的意思是什么| 热感冒有什么症状| 坐骨神经痛是什么原因引起的| 韭黄和韭菜有什么区别| 冠心病吃什么药最好| pet-ct主要检查什么| 平舌音是什么| 沙拉酱可以做什么美食| 小拇指和无名指发麻是什么原因| iva是什么意思| 九地是什么中药| 1月28号是什么星座| 牙齿松动了有什么办法能固齿吗| 梦见楼塌了是什么意思| 窝沟封闭是什么意思| 69是什么姿势| 检查是否怀孕要挂什么科| 什么是有氧运动什么是无氧运动| 什么是polo衫| 93年属鸡的是什么命| 鸡打瞌睡吃什么药| 洋葱有什么好处| 口苦吃什么好得快| 胎心胎芽是什么意思| 芭菲是什么| 什么是埋线双眼皮| 耐克属于什么档次| 上海九院是什么医院| 啮齿类动物什么意思| 经常喝咖啡有什么好处和坏处| 肝血不足吃什么食补最快| 上窄下宽的脸型适合什么发型| 2009属什么生肖| 什么茶降血脂最好| 弦子为什么嫁给李茂| 放飞自我是什么意思| 吃樱桃有什么好处| 雪菊有什么功效| 6月25日是世界什么日| 印尼买什么比国内便宜| 红薯不能和什么食物一起吃| 什么地说话| 梦见移坟墓是什么预兆| 种植牙有什么危害| 金的部首是什么| 什么人适合吃红参| 重庆有什么美食| 什么直跳| 力挺是什么意思| 高我是什么意思| 通勤什么意思| 五月二十是什么星座| 皮肤发黄什么原因| 吃什么可以补黄体酮| 男人吃什么壮阳| 尿里面有血是什么原因| 胎记看什么科| 胆固醇高是什么症状| 二建什么时候考试| 可什么意思| 什么的气味| 吃黄瓜有什么好处和坏处| 精液长什么样| 男人硬不起来该吃什么药| 2月是什么星座的| mario是什么意思| 例假推迟是什么原因| 天秤座男生喜欢什么样的女生| 什么叫cp| 唇周围长痘痘是什么原因| 伤食是什么意思| 10月27是什么星座| 养神经吃什么食物最好| 今日是什么日子| 孕早期可以吃什么水果| 什么的桌椅| 肾轻度积水是什么意思| 提辖相当于现在什么官| 渠道货是什么意思| 血糖高的人适合吃什么水果| 鱼日羽念什么| 培根是什么肉做的| 黑天天的学名叫什么| 双鱼座是什么性格| 武汉属于什么地区| 鸟字旁的字和什么有关| 知趣是什么意思| 土地出让是什么意思| 吃什么消炎| 熠熠什么意思| 史迪仔是什么动物| 八十岁是什么寿| 溦是什么意思| 国防部部长是什么级别| 射频消融是什么手术| 尿酸高可以吃什么| 象是什么结构的字| 梦见搞卫生什么意思| cd是什么元素| 白介素高说明什么| ovs是什么品牌| 重庆以前叫什么| 公元前是什么意思| 肠易激综合征是什么原因造成的| 田七蒸瘦肉有什么功效| 尿检白细胞阳性是什么意思| 什么烟贵| 猫眼石是什么材质| 捉代表什么生肖| 小孩晚上睡觉发梦癫什么原因| 手腕血管疼是什么原因| 什么茶减肥效果好| l什么意思| 吃什么降尿酸最有效食物| 肝不好挂什么科| 什么东西解酒| 海归是什么意思| 榴莲什么时间段吃最好| 试管婴儿长方案是什么| 线下培训是什么意思| 他达拉非是什么药| 七月二十五是什么星座| 多吃西瓜有什么好处| 三油甘脂是什么| 减肥晚餐吃什么| 傻人有傻福什么意思| 逆袭什么意思| 滑膜炎吃什么药能治好| 高血压吃什么好降压快| 查幽门螺旋杆菌挂什么科| 狗吃什么食物| 关节炎吃什么药好得快| 喝酸梅汤有什么好处| lofter是什么意思| gopro是什么意思| 93年是什么年| 咬指甲是什么心理疾病| 寅木是什么木| 格格不入什么意思| 胎盘前置是什么意思| 62岁属什么| 怀孕初期能吃什么不能吃什么| 1957年属什么| 手癣用什么药膏效果好| 指滑是什么意思| 夏天适合种什么植物| 6月20日是什么日子| 阳春三月指什么生肖| 梦见动物是什么意思| 儿童胃肠型感冒吃什么药| 吃什么补叶酸| 犹太人什么意思| 三和大神是什么意思| 陌上人如玉是什么意思| 脑宁又叫什么名字| 大学团委书记什么级别| 二甲苯是什么| 喝了蜂蜜水不能吃什么| 298什么意思| 菌痢的症状是什么样| 男占258女占369什么意思| 巴字加一笔是什么字| 渴望是什么意思| 真实是什么意思| 腰椎疼痛是什么原因| 长脸适合什么发型男| 动物的尾巴有什么用处| 三点水加累读什么| sherpa是什么面料| 科普一下是什么意思| 怀璧其罪是什么意思| 一把手是什么意思| 逆水行舟什么意思| r的平方是什么意思| 什么品种的鸡肉最好吃| 顶胯是什么意思| 女朋友过生日送什么最好| 心动是什么意思| 麻腮风疫苗什么时候打| 乔治阿玛尼和阿玛尼有什么区别| 77年属什么| 伽利略是什么学家| 金色和什么颜色搭配好看| 牙龈痛什么原因| 梦到被蛇咬是什么意思周公解梦| 全价猫粮是什么意思| 手是什么生肖| 为什么小鸟站在电线上不会触电| 腿痒是什么原因| 什么宠物好养| d二聚体是检查什么的| dmdm乙内酰脲是什么| 怀孕子宫前位和后位有什么区别| 一什么瀑布| 肝胃不和是什么意思| 老人嗜睡是什么征兆| 自由基是什么东西| 什么时间最容易受孕| 肺结核传染途径是什么| 电焊打眼最有效最快的方法是什么| 做月子要注意什么| 撰文是什么意思| 调停是什么意思| 为什么晚上不能晾衣服| 反流性食管炎吃什么中药| 血光之灾是什么意思| tki是什么意思| 蚊子喜欢什么气味| 脑萎缩是什么症状| 什么时候可以查高考成绩| 肥皂剧是什么| 半边屁股疼是什么原因| 99新是什么意思| 腔梗和脑梗有什么区别| 胃疼吃什么止痛药| 经期吃什么补气血| 1981属什么| 百度Jump to content

[聚焦三农]羊圈里的春天

From Wikipedia, the free encyclopedia
(Redirected from Program verification)
百度 “农民工只有不断提升技能,才能在新时代的浪潮中,成为冲浪者,而不是被淘汰者。

In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of a system with respect to a certain formal specification or property, using formal methods of mathematics.[1] Formal verification is a key incentive for formal specification of systems, and is at the core of formal methods. It represents an important dimension of analysis and verification in electronic design automation and is one approach to software verification. The use of formal verification enables the highest Evaluation Assurance Level (EAL7) in the framework of common criteria for computer security certification.[2]

Formal verification can be helpful in proving the correctness of systems such as: cryptographic protocols, combinational circuits, digital circuits with internal memory, and software expressed as source code in a programming language. Prominent examples of verified software systems include the CompCert verified C compiler and the seL4 high-assurance operating system kernel.

The verification of these systems is done by ensuring the existence of a formal proof of a mathematical model of the system.[3] Examples of mathematical objects used to model systems are: finite-state machines, labelled transition systems, Horn clauses, Petri nets, vector addition systems, timed automata, hybrid automata, process algebra, formal semantics of programming languages such as operational semantics, denotational semantics, axiomatic semantics and Hoare logic.[4]

Approaches

[edit]

Model checking

[edit]

Model checking involves a systematic and exhaustive exploration of the mathematical model. Such exploration is possible for finite models, but also for some infinite models, where infinite sets of states can be effectively represented finitely by using abstraction or taking advantage of symmetry. Usually, this consists of exploring all states and transitions in the model, by using smart and domain-specific abstraction techniques to consider whole groups of states in a single operation and reduce computing time. Implementation techniques include state space enumeration, symbolic state space enumeration, abstract interpretation, symbolic simulation, abstraction refinement.[citation needed] The properties to be verified are often described in temporal logics, such as linear temporal logic (LTL), Property Specification Language (PSL), SystemVerilog Assertions (SVA),[5] or computational tree logic (CTL). The great advantage of model checking is that it is often fully automatic; its primary disadvantage is that it does not in general scale to large systems; symbolic models are typically limited to a few hundred bits of state, while explicit state enumeration requires the state space being explored to be relatively small.

Deductive verification

[edit]

Another approach is deductive verification.[6][7] It consists of generating from the system and its specifications (and possibly other annotations) a collection of mathematical proof obligations, the truth of which imply conformance of the system to its specification, and discharging these obligations using either proof assistants (interactive theorem provers) (such as HOL, ACL2, Isabelle, Rocq (previously known as Coq) or PVS), or automatic theorem provers, including in particular satisfiability modulo theories (SMT) solvers. This approach has the disadvantage that it may require the user to understand in detail why the system works correctly, and to convey this information to the verification system, either in the form of a sequence of theorems to be proved or in the form of specifications (invariants, preconditions, postconditions) of system components (e.g. functions or procedures) and perhaps subcomponents (such as loops or data structures).

Application to software

[edit]

Formal verification of software programs involves proving that a program satisfies a formal specification of its behavior. Subareas of formal verification include deductive verification (see above), abstract interpretation, automated theorem proving, type systems, and lightweight formal methods. A promising type-based verification approach is dependently typed programming, in which the types of functions include (at least part of) those functions' specifications, and type-checking the code establishes its correctness against those specifications. Fully featured dependently typed languages support deductive verification as a special case.

Another complementary approach is program derivation, in which efficient code is produced from functional specifications by a series of correctness-preserving steps. An example of this approach is the Bird–Meertens formalism, and this approach can be seen as another form of program synthesis.

These techniques can be sound, meaning that the verified properties can be logically deduced from the semantics, or unsound, meaning that there is no such guarantee. A sound technique yields a result only once it has covered the entire space of possibilities. An example of an unsound technique is one that covers only a subset of the possibilities, for instance only integers up to a certain number, and give a "good-enough" result. Techniques can also be decidable, meaning that their algorithmic implementations are guaranteed to terminate with an answer, or undecidable, meaning that they may never terminate. By bounding the scope of possibilities, unsound techniques that are decidable might be able to be constructed when no decidable sound techniques are available.

Verification and validation

[edit]

Verification is one aspect of testing a product's fitness for purpose. Validation is the complementary aspect. Often one refers to the overall checking process as V & V.

  • Validation: "Are we trying to make the right thing?", i.e., is the product specified to the user's actual needs?
  • Verification: "Have we made what we were trying to make?", i.e., does the product conform to the specifications?

The verification process consists of static/structural and dynamic/behavioral aspects. E.g., for a software product one can inspect the source code (static) and run against specific test cases (dynamic). Validation usually can be done only dynamically, i.e., the product is tested by putting it through typical and atypical usages ("Does it satisfactorily meet all use cases?").

Automated program repair

[edit]

Program repair is performed with respect to an oracle, encompassing the desired functionality of the program which is used for validation of the generated fix. A simple example is a test-suite—the input/output pairs specify the functionality of the program. A variety of techniques are employed, most notably using satisfiability modulo theories (SMT) solvers, and genetic programming,[8] using evolutionary computing to generate and evaluate possible candidates for fixes. The former method is deterministic, while the latter is randomized.

Program repair combines techniques from formal verification and program synthesis. Fault-localization techniques in formal verification are used to compute program points which might be possible bug-locations, which can be targeted by the synthesis modules. Repair systems often focus on a small pre-defined class of bugs in order to reduce the search space. Industrial use is limited owing to the computational cost of existing techniques.

Industry use

[edit]

The growth in complexity of designs increases the importance of formal verification techniques in the hardware industry.[9][10] At present, formal verification is used by most or all leading hardware companies,[11] but its use in the software industry is still languishing.[citation needed] This could be attributed to the greater need in the hardware industry, where errors have greater commercial significance.[citation needed] Because of the potential subtle interactions between components, it is increasingly difficult to exercise a realistic set of possibilities by simulation. Important aspects of hardware design are amenable to automated proof methods, making formal verification easier to introduce and more productive.[12]

As of 2011, several operating systems have been formally verified: NICTA's Secure Embedded L4 microkernel, sold commercially as seL4 by OK Labs;[13] OSEK/VDX based real-time operating system ORIENTAIS by East China Normal University;[citation needed] Green Hills Software's Integrity operating system;[citation needed] and SYSGO's PikeOS.[14][15] In 2016, a team led by Zhong Shao at Yale developed a formally verified operating system kernel called CertiKOS.[16][17]

As of 2017, formal verification has been applied to the design of large computer networks through a mathematical model of the network,[18] and as part of a new network technology category, intent-based networking.[19] Network software vendors that offer formal verification solutions include Cisco[20] Forward Networks[21][22] and Veriflow Systems.[23]

The SPARK programming language provides a toolset which enables software development with formal verification and is used in several high-integrity systems.[citation needed]

The CompCert C compiler is a formally verified C compiler implementing the majority of ISO C.[24][25]

See also

[edit]

References

[edit]
  1. ^ Sanghavi, Alok (May 21, 2010). "What is formal verification?". EE Times Asia.
  2. ^ "Common Criteria for Information Technology Security Evaluation Part 5: Pre-defined packages of security requirements" (PDF). Retrieved April 15, 2025.
  3. ^ Sanjit A. Seshia; Natasha Sharygina; Stavros Tripakis (2018). "Chapter 3: Modeling for Verification". In Clarke, Edmund M.; Henzinger, Thomas A.; Veith, Helmut; Bloem, Roderick (eds.). Handbook of Model Checking. Springer. pp. 75–105. doi:10.1007/978-3-319-10575-8. ISBN 978-3-319-10574-1.
  4. ^ Introduction to Formal Verification, Berkeley University of California, Retrieved November 6, 2013
  5. ^ Cohen, Ben; Venkataramanan, Srinivasan; Kumari, Ajeetha; Piper, Lisa (2015). SystemVerilog Assertions Handbook (4th ed.). CreateSpace Independent Publishing Platform. ISBN 978-1518681448.
  6. ^ Ahrendt, Wolgang; Beckert, Bernhard; Bubel, Richard; H?hnle, Reiner; Schmitt, Peter H., eds. (2016). Deductive Software Verification - The KeY Book: From Theory to Practice (1st 2016 ed.). Cham: Springer International Publishing : Imprint: Springer. ISBN 978-3-319-49812-6.
  7. ^ Pretschner, Alexander; Müller, Peter; St?ckle, Patrick, eds. (2019). "Building Deductive Program Verifiers - Lecture Notes". Engineering secure and dependable software systems. Amsterdam, Netherlands: IOS Press. ISBN 978-1-61499-976-8.
  8. ^ Le Goues, Claire; Nguyen, ThanhVu; Forrest, Stephanie; Weimer, Westley (January 2012). "GenProg: A Generic Method for Automatic Software Repair". IEEE Transactions on Software Engineering. 38 (1): 54–72. doi:10.1109/TSE.2011.104. S2CID 4111307.
  9. ^ Harrison, J. (2003). "Formal verification at Intel". 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings. pp. 45–54. doi:10.1109/LICS.2003.1210044. ISBN 978-0-7695-1884-8. S2CID 44585546.
  10. ^ Formal verification of a real-time hardware design. Portal.acm.org (June 27, 1983). Retrieved on April 30, 2011.
  11. ^ "Formal Verification: An Essential Tool for Modern VLSI Design by Erik Seligman, Tom Schubert, and M V Achutha Kirankumar". 2015.
  12. ^ "Formal Verification in Industry" (PDF). Retrieved September 20, 2012.
  13. ^ "Abstract Formal Specification of the seL4/ARMv6 API" (PDF). Archived from the original (PDF) on May 21, 2015. Retrieved May 19, 2015.
  14. ^ Christoph Baumann, Bernhard Beckert, Holger Blasum, and Thorsten Bormer Ingredients of Operating System Correctness? Lessons Learned in the Formal Verification of PikeOS Archived July 19, 2011, at the Wayback Machine
  15. ^ "Getting it Right" by Jack Ganssle
  16. ^ Harris, Robin. "Unhackable OS? CertiKOS enables creation of secure system kernels". ZDNet. Retrieved June 10, 2019.
  17. ^ "CertiKOS: Yale develops world's first hacker-resistant operating system". International Business Times UK. November 15, 2016. Retrieved June 10, 2019.
  18. ^ Scroxton, Alex. "For Cisco, intent-based networking heralds future tech demands". Computer Weekly. Retrieved February 12, 2018.
  19. ^ Lerner, Andrew. "Intent-based networking". Gartner. Retrieved February 12, 2018.
  20. ^ Kerravala, Zeus. "Cisco brings intent based networks to the data center". NetworkWorld. Archived from the original on December 11, 2023. Retrieved February 12, 2018.
  21. ^ "Forward Networks: Accelerating and De-risking Network Operations". Insightssuccess Media and Technology Pvt. Ltd. Insights Success. January 16, 2018. Retrieved February 12, 2018.
  22. ^ "Getting Grounded in Intent=based Networking" (PDF). NetworkWorld. Retrieved February 12, 2018.
  23. ^ "Veriflow Systems". Bloomberg. Retrieved February 12, 2018.
  24. ^ "CompCert - The CompCert C compiler". compcert.org. Retrieved February 22, 2023.
  25. ^ Barrière, Aurèle; Blazy, Sandrine; Pichardie, David (January 9, 2023). "Formally Verified Native Code Generation in an Effectful JIT: Turning the CompCert Backend into a Formally Verified JIT Compiler". Proceedings of the ACM on Programming Languages. 7 (POPL): 249–277. arXiv:2212.03129. doi:10.1145/3571202. ISSN 2475-1421. S2CID 253736486.
你喜欢我什么我改 手指头痒是什么原因 梦见买东西是什么意思 心得安是什么药 莘字五行属什么
斜杠青年什么意思 什么属相不能挂山水画 什么情况下喝补液盐 hpv52阳性是什么意思 开天眼是什么意思
低血压低是什么原因 让平是什么意思 为什么呢 11月13日什么星座 劫持是什么意思
射手男和什么座最配对 男人为什么喜欢吃奶 电解工是干什么的 red什么颜色 早上6点半是什么时辰
左上眼皮跳是什么预兆hcv8jop9ns2r.cn ipi是什么意思zhongyiyatai.com 保护眼睛用什么眼药水hcv9jop7ns3r.cn 得之坦然失之淡然是什么意思hcv8jop0ns1r.cn 月经时间长是什么原因sanhestory.com
桃李满天下什么意思hcv8jop6ns0r.cn 心悸是什么原因引起的hcv9jop0ns3r.cn 小孩睡觉磨牙是什么原因引起的hcv9jop3ns9r.cn 熬夜有什么坏处96micro.com 十月三十号什么星座hcv8jop7ns1r.cn
什么的去路hcv8jop8ns2r.cn 什么叫淋巴结转移hcv7jop5ns5r.cn 为什么想到一个人会心痛hcv9jop4ns4r.cn 吃什么健脾胃除湿气travellingsim.com 路痴是什么意思hcv9jop4ns3r.cn
身份证有什么用hcv8jop8ns3r.cn 茶宠为什么会变色hcv9jop4ns2r.cn 1月26号是什么星座hcv9jop6ns2r.cn 什么是指标到校hcv8jop6ns5r.cn 什么运动最减肥hcv9jop1ns8r.cn
百度