Knowledge Representation in a Proof Checker for Logic Programs

Formal methods are techniques based on mathematics which aim to make software production an engineering subject as well as to increase the quality of software. Formal verification, in the context of software systems, 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. Formal program verification is the process of formally proving that a computer program does exactly what is stated in the program specification it was written to realize. Automated techniques for producing proofs of correctness of software systems fall into two general categories: 1) Automated theorem proving (Loveland, 1986), in which a system attempts to produce a formal proof given a description of the system, a set of logical axioms, and a set of inference rules. 2) Model checking, in which a system verifies certain properties by means of an exhaustive search of all possible states that a system could enter during its execution.