6

Click here to load reader

Verifications, proofs, and automated debugging

Embed Size (px)

Citation preview

Page 1: Verifications, proofs, and automated debugging

Verifications, Proofs, and Automated DebuggingSafeBytes Software

Page 2: Verifications, proofs, and automated debugging

In the arena of computer science, verifications, proofs, and automated debugging of hardware design includes formal reasoning or proof systems and logical arguments. Efficiently finding bugs, diagnosing bugs, finding solutions for bug elimination, and confirming the absence of bugs using automated theorem proving. While all this sounds rather lofty and complex, one can understand the meaning by breaking it down, term by term. Formal reasoning simply refers to reasoning based on logic. Logic is the use of reason according to strict rules to determine strict knowledge or, according to Socrates, justifiable true belief. Logic is divided into inductive and deductive reasoning. Deduction leads to a specific answer by examining general principles. Induction is the opposite, going from the specific to generalities. Deductive reasoning requires repetitive experimentation to arrive at a sound conclusion. Inductive reasoning is what one more commonly uses in daily living.

Page 3: Verifications, proofs, and automated debugging

Failure often precedes success. Such is the nature of deductive reasoning and such is the arduous task of debugging as it is in learning from failed attempts at debugging that issues are resolved. Computer networks can be programmed to operate using deductive methodologies to identify the source of computer bugs.  So what exactly is a bug in terms of a computer? A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to behave in an unexpected way or to produce an unintended or incorrect result. Much like the common termite’s destruction of one’s house, a software bug can infiltrate and destroy or corrupt one’s computer.

Page 4: Verifications, proofs, and automated debugging

Program verification is the primary safeguard against such software bugs. Program verification helps to establish the reliability of the softwares system. There are two trains of thought regarding program verification. The first line of thinking is formalistic and insists a mathematical approach is the appropriate means to accurate, consistent program verification. The other train of thought asserts that programming is the activity which is fundamental to computer science and therefore cannot be resolved by the use of mathematics due to significant differences. In computer science, proofs refer to the sequences of logical deductions which are based on logical assumptions and statements which have previously been proved correct and verifying the accuracy of a statement. Proofs utilize discrete math which is not continuous but actually has an end answer.

Page 5: Verifications, proofs, and automated debugging

By teaching (programming) the computer system about verification and proofs, automatic debugging is possible. However, a computer is only as smart as its programmers. While computer science is moving rapidly towards automation, computer programs still rely on human input which is at times flawed and imperfect.  The “brain” of a computer cannot yet outsmart the human brain (at least not every human brain) but the implications for future advancement in computerized deduction and reasoning are exciting and somewhat frightening at the same time.

Page 6: Verifications, proofs, and automated debugging

Thankfully at this time computers still need humans in order to function properly. While computer software bugs may be the product of human programming error, the resolution and elimination of the bugs is reliant upon human remedy.