玫瑰糠疹吃什么药| 石英机芯什么意思| 什么是佝偻病| 6月25什么星座| 扑朔迷离是什么意思| 天天喝奶茶有什么危害| 立春之后是什么节气| pop是什么意思| 夏至吃什么食物| 菊花什么季节开| 一六年属什么生肖| 十二生肖本领强是什么生肖| 喝姜粉有什么好处| 弥是什么意思| 入职体检70元一般检查什么| 什么太阳| 射进去有什么感觉| 阳历6月28日是什么星座| 韩语思密达是什么意思| 脸上出油是什么原因| 种田文什么意思| 摧枯拉朽什么意思| 加字五行属什么| 便秘看什么科| 整夜做梦是什么原因| 国树是什么树| 什么是蒸馏水| 38节送什么礼物| 囊肿长什么样子图片| 甘油三酯低是什么原因| 什么日什么里| 为什么拔牙后不能吐口水| 胃穿孔是什么原因引起的| 小猫为什么一直叫| 什么中药可以减肥| 末伏是什么意思| 种牙和假牙有什么区别| 血压高呕吐是什么征兆| 风热火眼是什么意思| 脾胃虚弱吃什么药最好| 下肢静脉血栓吃什么药| 荔枝可以做什么| item是什么意思| 冠带什么意思| 验血糖挂什么科| 九三年属鸡是什么命| 手机充电发烫是什么原因| 肋骨断了是什么感觉| 瓜尔佳氏现在姓什么| 什么馅的馄饨好吃| 北京都有什么大学| 夏至为什么要吃面条| 为什么人会衰老| 孕早期不能吃什么| 病毒四项检查都有什么| 为什么会自言自语| 送同学什么毕业礼物好| 梦见自己被警察抓了是什么意思| 是非是什么意思| 月子可以吃什么菜| 什么泡酒让性功能最强| 婊是什么意思| 贫血严重会得什么病| 东方明珠什么时候亮灯| 中招是什么意思| 大小脸去医院挂什么科| 舌根放血有什么好处| 茯苓的作用是什么| 马眼是什么| 什么叫鳞状细胞| 肝炎吃什么药最好| 什么是命| 阴毛变白什么原因| 装清高是什么意思| 微信号为什么会封号| 防中暑喝什么| 龋齿是什么原因造成的| 使节是什么意思| 灰什么| 吃什么最健康| 妈妈姐姐的女儿叫什么| 虾不能和什么东西一起吃| 阳痿早泄吃什么药好| 咽炎挂什么科室| 黑头发有什么好处脑筋急转弯| 成人补锌吃什么药| 白带什么时候来| 保险凭证号是什么| 肺部纤维灶什么意思| 农历八月初一是什么星座| 胆囊切除后对身体有什么影响| 胃炎吃什么最好| 什么人容易得类风湿| 药流是吃什么药| 孔雀的尾巴有什么作用| 皮肤过敏涂什么药膏| nac是什么| 南京有什么好玩的地方| 鱼鳞云有什么预兆| 身份证借给别人有什么危害性| 胃肠道感冒吃什么药| 五位一体是什么| 星座之王是什么座| 包皮龟头炎吃什么药| 梦见做鞋子是什么意思| 摩羯座男生喜欢什么样的女生| 洺字五行属什么| 新茶是什么意思| 双侧肋膈角锐利是什么意思| 什么人容易得胆结石| 吊销驾驶证是什么意思| 朗格手表什么档次| 周公解梦是什么意思| 吃芹菜有什么好处| 什么植物和动物最像鸡| 庚辰五行属什么| 湿疹是什么原因造成的| 胎毛什么时候剃最好| 什么的树影| 做爱什么姿势| 口腔溃疡吃什么药好| cpi指数上涨意味着什么| 经常头晕是什么原因引起的| 脂蛋白a高吃什么药| 脑白质病变是什么意思| 下午五点半是什么时辰| 诈骗是什么意思| 黑裤子配什么颜色的鞋| 白带发黄吃什么药| 脖子后面疼是什么原因| 嘉庆叫什么名字| 什么是冤亲债主| 笑面虎比喻什么样的人| 辅酶q10是什么东西| 什么时候拔牙最好| 为什么人会衰老| 拉肚子吃什么药好| 东北大拉皮是什么做的| 检查妇科清洁度三是什么意思| 小娘皮什么意思| 胆囊息肉吃什么药| 梅毒螺旋体抗体阳性是什么意思| 巫师是什么意思| 海兔是什么动物| basic是什么意思| abo是什么| 遇到黄鼠狼是什么征兆| 六味地黄丸治什么| 持续低烧不退是什么原因| hbo什么意思| 失眠看什么科最好| 三七是什么意思| 湿疹是什么原因造成的| 桂花代表什么生肖| 软脚虾是什么意思| 孕妇查凝血是检查什么| 冷得什么| 刍狗是什么意思| 茶叶属于什么类目| 总是出汗是什么原因| 孕妇梦见洪水是什么意思| 晚上睡不着白天睡不醒是什么原因| magnesium是什么意思| 黑裙子配什么鞋子| 县纪委副书记什么级别| 男性检查hpv挂什么科| 胆囊息肉有什么症状| 请婚假需要什么材料| 什么花什么门的成语| 相得益彰是什么意思| 邪不压正什么意思| 怀孕甲减对孩子有什么影响| 为什么端午安康| 缺钾吃什么食物补得最快| 孩子老是流鼻血是什么原因| 白细胞正常c反应蛋白高说明什么| 生地黄是什么| 蝉联的意思是什么| 孔雀男是什么意思| 为什么生化妊娠是好事| 世界上最大的哺乳动物是什么| 养肝吃什么食物| 休渔期是什么时候| 什么体质容易长肿瘤| 脾胃不好吃什么食物| 落花生的落是什么意思| 对象是什么意思| 降压药有什么副作用| pm是什么的缩写| 手抖吃什么药最好| 视网膜病变有什么症状| 饱和脂肪酸是什么意思| 什么水果含糖量高| 体力不支是什么意思| rh血型是什么血型| 火耗归公是什么意思| 蝙蝠怕什么| 6月初三是什么日子| 梦见自己疯了什么意思| 火龙果有什么好处| 黄金五行属什么| 九月二十二是什么星座| 翔五行属什么| 窝沟封闭是什么意思| 玫瑰和月季有什么区别| 脚后筋疼是什么原因引起的| 辩驳是什么意思| 无致病菌生长是什么意思| 11月4号是什么星座| 肝喜欢什么食物有哪些| 骨转移是什么意思| 结晶体是什么意思| 圆房是什么意思| 曼字五行属什么| 肺炎能吃什么水果| 医院建档是什么意思| 女人缺铁性贫血吃什么好| 高丽棒子是什么意思| 肾结水是什么原因造成的| 梦到蜘蛛是什么意思| 癸丑五行属什么| 节点是什么意思| 腮腺炎吃什么消炎药| 鸡头米是什么| 2008年什么年| 鱼油有什么好处| 家奴是什么生肖| 中书舍人是什么官职| 一国两制什么时候提出的| 神经官能症是什么病| 免疫力低吃什么| 新加坡什么工作最挣钱| 荒淫无度是什么意思| 梦见去看病是什么意思| 背上长毛是什么原因引起的| 哼哈二将是什么意思| 耳鸣挂什么科| 什么红什么赤| 伏羲是什么意思| 为什么长火疖子| 87岁属什么生肖| 头发长得慢是什么原因| 月经量少发黑是什么原因| 胳膊困疼是什么原因| 头疼去医院挂什么科| 气血不足吃什么好食补| 一语道破什么意思| 痔疮饮食要注意什么| 被毒蛇咬了有什么症状| 在干什么| 较真的人是什么性格| 丙五行属什么| 73年属牛的是什么命| 什么家庭不宜挂八骏图| 什么是无精症| 肺炎衣原体阳性是什么意思| 藏青和藏蓝有什么区别| 打喷嚏头疼是什么原因| 什么是阴阳水| 什么而不舍| 花千骨什么时候上映的| 良去掉一点读什么| 百香果是什么季节的水果| 胃寒喝什么茶暖胃养胃| 百度Jump to content

车讯:涉69辆 宝马召回部分118i/X5等多款车型

From Wikipedia, the free encyclopedia
百度 “要大力提高职工队伍素质,充分发挥工人阶级主力军作用。

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.
蛇头疮用什么治疗最快 素饺子什么馅儿的好吃 捉虫是什么意思 女生肚脐眼下面疼是什么原因 甲状腺挂什么科
吃鱼油有什么好处 西京医院什么科室最强 倭瓜是什么意思 脑膜炎有什么症状 见分晓是什么意思
子宫内膜16mm说明什么 为什么会呼吸性碱中毒 什么是对偶句 幅度是什么意思 深圳车牌摇号需要什么条件
梨花是什么生肖 胆矾是什么 59岁属什么 公开课是什么意思 福鼎白茶属于什么茶
盆腔炎用什么药最好luyiluode.com 暗经是什么意思hcv9jop4ns9r.cn 梦见自己的哥哥死了是什么意思hanqikai.com 为什么吃芒果会过敏hcv7jop5ns5r.cn 容易脸红的人是什么原因hcv8jop1ns6r.cn
破月什么意思hcv8jop5ns4r.cn 后背疼是什么原因引起的hcv9jop3ns6r.cn 梦见自己家盖房子是什么预兆hcv8jop6ns3r.cn 二元酸是什么hcv7jop9ns3r.cn 外阴瘙痒用什么药hcv8jop7ns0r.cn
仙居杨梅什么时候上市hcv9jop6ns9r.cn 小孩手指脱皮是什么原因hcv9jop6ns4r.cn 结膜炎用什么药hcv9jop2ns8r.cn 丨是什么意思hcv8jop9ns3r.cn 抑郁症的表现是什么inbungee.com
玻璃人是什么意思yanzhenzixun.com 经期适合喝什么茶hcv9jop5ns2r.cn 农历六月六是什么日子hcv8jop3ns9r.cn 燕窝是什么东西hcv8jop3ns9r.cn 卵圆孔未闭挂什么科hcv9jop7ns2r.cn
百度