婴儿蚊虫叮咬红肿用什么药| 氨咖黄敏胶囊是治什么的| 赖床什么意思| 头顶痛吃什么药效果好| 阳历2月份是什么星座| 荭是什么意思| 中国的国菜是什么| 一直流鼻血是什么原因| 女人梦到火是什么预兆| 幽灵蛛为什么不能打死| 缠腰蛇是什么症状图片| 卫生湿巾是干什么用的| cheese什么意思| 腰酸是什么原因女性| 长目飞耳是什么动物| 做梦梦见水是什么意思| 染色体异常是什么意思| 肠梗阻吃什么药| 超敏c反应蛋白正常说明什么| 肠道肿瘤有什么症状| 无纺布是什么| 拉肚子不能吃什么| 蝙蝠长什么样| 脱水什么意思| 痢疾是什么原因引起的| 舌苔白腻吃什么中成药| 热火朝天是什么生肖| 说风就是雨什么意思| 内科主要看什么病| 佛法的真谛是什么| 口腔溃疡是什么原因| 黄瓜有什么营养| 较重闭合性跌打损伤是什么意思| 韩世忠为什么不救岳飞| 热火朝天是什么意思| 浸猪笼是什么意思| 角化型足癣用什么药| 利妥昔单抗是治什么病| 与自己和解什么意思| 李世民是什么生肖| 单恋是什么意思| 自来水养鱼为什么会死| 舌苔白吃什么药效果好| 钳子什么牌子好| 一头雾水什么意思| 白细胞酯酶是什么意思| s925是什么| 辅警政审主要审些什么| 1月1日是什么日子| 扭伤挂什么科| 异曲同工是什么意思| 黄瓜籽粉有什么作用| 十月十二号是什么星座| 慢性前列腺炎有什么症状| 什么叫眼睛散光| 减肥吃什么水果| 虾跟什么不能一起吃| 房间朝向什么方向最好| 人工流产和无痛人流有什么区别| 什么是cos| 棕色搭配什么颜色好看| 脸上长疙瘩是什么原因| 1月1日是什么星座| 窥见是什么意思| 血压的低压高是什么原因| 1984年属鼠五行属什么| 短发女人吸引什么男人| 属鸡的本命佛是什么佛| 蛛网膜囊肿挂什么科| 糖尿病是什么原因造成的| 吃什么利尿最快| 卵巢钙化灶是什么意思| 女汉子什么意思| 来例假吃什么食物好| 香油是什么| 灵媒是什么意思| 县长什么级别干部| 花胶适合什么人吃| 什么是单核细胞百分比| 雪花飘飘北风萧萧是什么歌| 羔羊跪乳是什么意思| hm是什么牌子| 杨梅什么时候上市| 头痛反胃想吐什么原因| 查血型挂什么科| 一抹多是什么意思| 血氨高是什么原因| 吃什么降三高最好| 高炮是什么| 吃银耳有什么好处和坏处| 静怡是什么意思| 知柏地黄丸对男性功能有什么帮助| 眼睛痒是怎么回事用什么药| 1965年属什么生肖| 牛标志的车是什么牌子| 人越来越瘦是什么原因| 命里有时终须有命里无时莫强求什么意思| 黄芪喝多了有什么副作用| 什么时候收复台湾| 榻榻米床垫什么材质的好| 什么手串最好| 月经期间喝酒会有什么影响| 老板喜欢什么样的员工| 粉红粉红的什么填空| 一什么黑板| 1938年属什么生肖| 臣字五行属什么| 宫腔粘连有什么危害| 心肝火旺吃什么中成药| 下聘是什么意思| 老是犯困想睡觉是什么原因| 百香果什么时候吃最好| 天干是什么| 于文华朱之文什么关系| romantic是什么意思| 谨言慎行下一句是什么| 什么是薪级工资| 荷花什么时候开放| 牙齿遇冷热都痛是什么原因| 早早孕有什么征兆| 睡眠不好挂什么科门诊| 埋伏是什么意思| 胃炎吃什么药| 飞黄腾达是什么意思| 血糖高适合喝什么汤| 生意兴隆是什么生肖| 海胆什么味道| 良代表什么生肖| 光纤和宽带有什么区别| 裸贷是什么意思| 吃黑豆有什么好处和坏处| 优衣库属于什么档次| 舌苔很白是什么原因| 斯什么意思| 毛豆不能和什么一起吃| 气机是什么意思| 花胶是什么东西| 海绵宝宝是什么生物| 李耳为什么叫老子| 什么东西最好卖| 小螳螂吃什么| 肌层彩色血流星点状是什么意思| 唐僧是什么菩萨| bid医学上是什么意思| 风寒感冒咳嗽吃什么药| 一暴十寒什么意思| 肩膀上有痣代表什么| 印度属于什么亚| 肺炎挂什么科| 孕妇感染弓形虫有什么症状| 膝盖缝里面疼什么原因| 豆腐吃多了有什么坏处| 为什么性生活会出血| 什么是造影| 梦见鼻子出血是什么意思| 黄瓜什么时候种植| ld是什么意思| 十月十七是什么星座| 孙子兵法是什么生肖| 胸前长痘痘是什么原因| 烦躁是什么原因| 水瓶座前面是什么星座| 肺结节吃什么药散结节最快| 血小板偏高是什么意思| 皮肤经常痒是什么原因| 阴道炎用什么药效果最好| 梦见自己输液是什么意思| 2023年是属什么生肖| 少女怀春是什么意思| 胃泌素释放肽前体高是什么原因| 月经老提前是什么原因| 蓟是什么意思| 送男生什么礼物| 98年属什么的| 铁蛋白偏高是什么原因| 做梦梦到鱼是什么意思| claire是什么意思| 老年人尿血是什么原因| 检查肾挂什么科| 外耳道耵聍什么意思| 总维生素d偏低会导致什么| mh是什么意思| 大小便失禁是什么意思| 子宫内膜什么时候脱落| 为什么怀孕会孕酮低| 梦见晒被子是什么意思| 印度为什么用手吃饭| 人中长代表什么| 汗毛多是什么原因| 什么口什么心| 负离子什么意思| 葡萄胎是什么| 胃部彩超能检查出什么| 经常不吃晚饭对身体有什么影响| 龟头炎用什么软膏最好| 膝关节积液是什么原因造成的| 馒头是什么做的| 六月六是什么节日| 仰卧起坐有什么好处| 神经病吃什么药效果好| 风寒咳嗽吃什么药| 淋巴细胞偏低是什么原因| 精液是什么味| 开火上下结构念什么| 鼻窦炎是什么| 阴道炎是什么| 别有什么什么| 唐筛主要检查什么| 黔鱼是什么鱼| 子宫后壁低回声是什么意思| 炖鸭汤放什么食材最好| 看嗓子去医院挂什么科| 什么是金融行业| 亟须什么意思| 什么的森林| 赵子龙属什么生肖| 炎症用什么药最好| 什么时候人流| 口水臭是什么原因引起的| 什么是精索静脉曲张| 白带多用什么药效果好| 月经失调是什么原因引起的| 月经量少是什么原因啊| 耳朵一直痒是什么原因| 天蝎座是什么象| 宋朝前面是什么朝代| 汗毛多是什么原因| 什么的屏障| 1972年五行属什么| 做梦坐飞机是什么意思| 为什么会痛经| 交尾是什么意思| 早上8点到9点是什么时辰| 结节是什么原因引起的| 什么是屈光不正| 什么什么不乐| 人体缺钾会有什么症状| 困惑什么意思| 梦见自己疯了什么意思| 7月16号是什么星座| 秦始皇为什么叫祖龙| 温州什么最出名| 什么名字好听| 贷款是什么意思| 什么药可以降肌酐| 互粉是什么意思| 周公吐哺天下归心是什么意思| 活泼的近义词是什么| 胃泌素17是什么检查| 一件代发是什么意思| 中暑吃什么好| 裤裙配什么上衣好看| 什么车最省油| 粉底液是干什么用的| 眩晕症是什么引起的| 什么叫化学| 胎盘早剥是什么意思| 什么是肺部腺性肿瘤| 香仪是什么意思| 交公粮是什么意思| 开水冲服是什么意思| 治甲沟炎用什么药膏好| 孕酮是什么| k值是什么意思| 百度
百度 这几个赛季蔡慧康虽然球技没怎么涨,但在上港队内,他还是一道关键的防线,从埃里克森、博阿斯、佩雷拉,这几任教练对于蔡慧康的使用都是铁打主力,也就证明了蔡慧康的实力,技术流中场需要,但蔡慧康这样的蓝领也需要,这就是他的存在价值!为了孩子,蔡慧康从南宁奔袭到上海,为了国家队,蔡慧康再从上海奔袭到南宁,来回共计3千多公里,这两者的背后都是爱!为了孩子的爱,为了国足的爱,蔡慧康成了一个铁人,明天对阵捷克队的比赛,期待他的表现!(代古龙)

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.
鼻子有臭味是什么原因 阴道息肉长什么样 ket是什么 女性更年期潮热出汗吃什么药 蓝色配什么色好看
来月经能吃什么水果 脖子肿了是什么原因 积液是什么原因造成的 定坤丹什么时候吃最好 吃什么雌激素会增多
淡紫色配什么颜色好看 为什么地球是圆的 龟头发炎用什么药 山开念什么 人突然晕倒是什么原因引起的
男人什么时候精子最强 hbeag是什么意思 葵水是什么 梦到门坏了是什么意思 案例是什么意思
拜谢是什么意思hcv9jop5ns4r.cn 膀胱炎做什么检查能看出来hcv8jop7ns4r.cn 炖牛肉不放什么调料hcv8jop2ns9r.cn 什么是命中注定hcv8jop1ns8r.cn 什么窃什么盗dayuxmw.com
内瘘是什么意思hcv9jop3ns9r.cn 孔子孟子什么关系hcv8jop6ns5r.cn 偏头痛是什么原因hcv9jop6ns4r.cn 急性支气管炎吃什么药baiqunet.com 周杰伦为什么喜欢昆凌hcv8jop5ns3r.cn
潴留囊肿是什么意思hcv7jop4ns6r.cn 喜欢绿色的女人是什么性格hcv7jop7ns4r.cn 领结婚证需要准备什么hcv8jop1ns4r.cn 什么树叶hcv9jop3ns6r.cn 食色性也是什么意思hcv8jop7ns6r.cn
左卵巢囊性回声什么意思hcv8jop9ns8r.cn bosch是什么牌子hcv8jop0ns6r.cn 雷什么风什么成语yanzhenzixun.com 兵字五行属什么hcv9jop0ns8r.cn 早上适合做什么运动hcv8jop2ns8r.cn
百度