Photo:1 Photo:2 Photo:3 Photo:4 |
| Usage | |
| 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.
The verification of these systems is done by providing a formal proof on an abstract mathematical model of the system, the correspondence between the mathematical model and the nature of the system being otherwise known by construction. Examples of mathematical objects often used to model systems are: finite state machines, labelled transition systems, Petri nets, timed automata, hybrid automata, process algebra, formal semantics of programming languages such as operational semantics, denotational semantics, axiomatic semantics and Hoare logic.[citation needed]
[edit] Tags:Verification,Proving,Correctness,Edit,Cryptographic Protocols,Combinational Circuits,Digital Circuits,Formal Proof,Mathematical Model,Finite State Machines,Labelled Transition Systems,Petri Nets,Timed Automata,Hybrid Automata,Process Algebra,Operational Semantics,Denotational Semantics,Axiomatic Semantics,Hoare Logic,Help, | |
| Approaches to formal verification | |
| 2>
One approach and formation is model checking, which consists of a systematically exhaustive exploration of the mathematical model (this is possible for finite models, but also for some infinite models where infinite sets of states can be effectively represented finitely using abstraction). 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. The properties to be verified are often described in temporal logics, such as linear temporal logic (LTL) or computational tree logic (CTL).
Another approach is logical inference. It consists of using a formal version of mathematical reasoning about the system, usually using theorem proving software such as a HOL theorem prover, the ACL2, Isabelle, or Coq theorem provers. This is usually only partially automated and is driven by the user's understanding of the system to validate. Recent tools such as Perfect Developer and Escher C Verifier attempt to automate the proof process fully.
"Non-classical" logics such as linear logic and temporal logics can also be used in logical inference, not just in model checking.
[edit] Tags:Model Checking,State Space Enumeration,Abstract Interpretation,Symbolic Simulation,Abstraction Refinement,Temporal Logics,Linear Temporal Logic,Computational Tree Logic,Hol Theorem Prover,Acl2,Isabelle,Coq,Perfect Developer,Escher C Verifier,Linear Logic, | |
| Formal verification for software | |
| 3>
Logical inference for the formal verification of software can be further divided into:
the more traditional 1970s approach in which code is first written in the usual way, and subsequently proven correct in a separate step;
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 the first approach as a special case.
A slightly different (and 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 correctness by construction.
[edit] Tags:Dependently Typed Programming,Program Derivation,Functional,Bird-meertens Formalism,Correctness By Construction, | |
| Verification and validation | |
| 2>
Main article: Verification and Validation
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?").
[edit] Tags:Verification And Validation,V & V,Use Cases,Article, | |
| Industry use | |
| 2>
The growth in complexity of designs increases the importance of formal verification techniques in the hardware industry.[2][3] At present, formal verification is used by most or all[citation needed] leading hardware companies, 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.[4]
As of 2011[update], several operating systems have been formally verified: NICTA's Secure Embedded L4 microkernel, sold commercially as seL4 by OK Labs; Green Hills Software's Integrity operating system; and SYSGO's PikeOS.[5][6]
[edit] Tags:Sel4,Integrity Operating System,Sysgo,Pikeos, | |
| See also | |
| 2>
Software Testing portal
Look up verifiability in Wiktionary, the free dictionary.
Automated theorem proving
Formal equivalence checking
LURCH
Proof checker
Property Specification Language
Selected formal verification bibliography
Static code analysis
Temporal logic in finite-state verification
Post silicon validation
Intelligent verification
Runtime verification
[edit] Tags:Automated Theorem Proving,Formal Equivalence Checking,Lurch,Proof Checker,Property Specification Language,Static Code Analysis,Temporal Logic In Finite-state Verification,Post Silicon Validation,Intelligent Verification,Runtime Verification, | |
| References | |
| 2>
^ Gerwin Klein; Kevin Elphinstone, Gernot Heiser, June Andronick, David Cock, Philip Derrin, Dhammika Elkaduwe, Kai Engelhardt, Rafal Kolanski, Michael Norrish, Thomas Sewell, Harvey Tuch, Simon Winwood et al. "seL4: Formal Verification of an OS Kernel (paper submitted to 22nd ACM Symposium on Operating Systems Principles, October 2009)". http://www.sigops.org/sosp/sosp09/papers/klein-sosp09.pdf. Retrieved 7 November 2011.
^ Harrison, J. (2003). Formal verification at Intel. pp. 45–54. doi:10.1109/LICS.2003.1210044.
^ Formal verification of a real-time hardware design. Portal.acm.org (1983-06-27). Retrieved on 2011-04-30.
^ Formal Verification in Industry
^ Christoph Baumann, Bernhard Beckert, Holger Blasum, and Thorsten Bormer Ingredients of Operating System Correctness? Lessons Learned in the Formal Verification of PikeOS
^ "A new OS has been proven to be correct using mathematical proofs. The cost: astronomical." by Jack Ganssle
Retrieved from "http://en.wikipedia.org/w/index.php?title=Formal_verification&oldid=469292317"
Categories: Electronic circuit verificationFormal methodsLogic in computer scienceTheoretical computer scienceHidden categories: Articles needing additional references from June 2009All articles needing additional referencesAll articles with unsourced statementsArticles with unsourced statements from June 2009Articles with unsourced statements from September 2009Articles with unsourced statements from December 2011Articles containing potentially dated statements from 2011All articles containing potentially dated statements
Personal tools
Log in / create account
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
Actions
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact Wikipedia
Toolbox
What links here
Related changes
Upload file
Special pages
Permanent link
Cite this page
Print/export
Create a bookDownload as PDFPrintable version
Languages
Česky
Dansk
Deutsch
Ελληνικά
Español
Français
עברית
Lietuvių
日本語
Norsk (bokmål)
Polski
Português
Русский
Slovenčina
Српски / Srpski
Українська
中文
This page was last modified on 3 January 2012 at 10:05.
Text is available under the Creative Commons Attribution-ShareAlike License;
additional terms may apply.
See Terms of use for details.
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.Contact us
Privacy policy
About Wikipedia
Disclaimers
Mobile view
if ( window.isMSIE55 ) fixalpha();
if ( window.mediaWiki ) {
mw.loader.load(["mediawiki.user", "mediawiki.util", "mediawiki.page.ready", "mediawiki.legacy.wikibits", "mediawiki.legacy.ajax", "mediawiki.legacy.mwsuggest", "ext.gadget.wmfFR2011Style", "ext.vector.collapsibleNav", "ext.vector.collapsibleTabs", "ext.vector.editWarning", "ext.vector.simpleSearch", "ext.UserBuckets", "ext.articleFeedback.startup", "ext.articleFeedbackv5.startup", "ext.markAsHelpful"]);
}
if ( window.mediaWiki ) {
mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"highlightbroken":1,"imagesize":2,"justify":0,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":5,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":false,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":4,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,
"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"flaggedrevssimpleui":1,"flaggedrevsstable":0,"flaggedrevseditdiffs":true,"flaggedrevsviewdiffs":false,"vector-simplesearch":1,"useeditwarning":1,"vector-collapsiblenav":1,"usebetatoolbar":1,"usebetatoolbar-cgd":1,"wikilove-enabled":1,"variant":"en","language":"en","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"searchNs100":false,"searchNs101":false,"searchNs108":false,"searchNs109":false,"gadget-wmfFR2011Style":1});;mw.user.tokens.set({"editToken":"+\\","watchToken":false});;mw.loader.state({"user.options":"ready","user.tokens":"ready"});
/* cache key: enwiki:resourceloader:filter:minify-js:4:b41a86ec4e0fe8329bc3ce917e792339 */
}
Tags:Formal Methods,Acm, | |
zote monety click here click here click here click here |