Several
notations and methods have been developed to help the designer specify
clear and unambiguous system requirements, verify that the requirements
are consistent and correct, and verify that the refined design meets its
specification. However, these methods are time-consuming and error-prone,
and can be applied more effectively if there are tools to check their
correctness. The goal of the course is to emphasize formal notations and
methods that have tool support. We will cover the basis of underlying
theory for the tools. The course will use material from the following
references:
The first book will be used as the main text for the
course
Prerequisite
Experience with formal methods, although
helpful, is not necessary. However, the course assumes familiarity with
basic mathematical and computer science concepts: relations, functions,
graph theory, and finite-state machines.
Syllabus
1System Verification
·Definitions and motivation
·Methods: Simulation, Testing, Formal Verification, Model Checking,
Automated Theorem Proving
·Industrial Case Studies
2Introduction to Propositional and Predicate Logic
·Propositional Logic: Natural Deduction, Semantics of PL, Normal
Forms
·Predicate Logic: PL as a formal language, Proof theory of PL,
Semantics of PL, Undecidability of PL
To encourage hands-on experience, there will be
a set of verification and specification assignments involving
prototype-quality verification CASE tools. In addition, each student will
have to complete a research project to specify and verify a larger
example. Reports on the projects will be written up, and results will be
presented in class.
·Assignments
60%
·Project30%
·Project
presentation 10%
Credit hours
Students
will receive 3 hours of credit for this course.