Computational Logic and Software Verification

Table of Contents

General Infromation

Courese Number: 332402
Instructor: Jyun-Ao Lin
Location: 二教 204(e)
Time: 09:10 – 12:00, Wednesday

Overviews

Computational logic has been used in a wide range of application in computer science, ranging from the deductive approach to Artificial Intelligence advocated by AI’s founder John McCarthy, to proving the absence of bugs in large industrial software such as the 14th metro line in Paris, or checking difficult theorems the as the one of Feit-Thompson in the classification of finite simple groups.

The goal of this course is to explain how logic can be used in order for modeling problems of computational or mathematical nature, and how computers can be used to achieve this.

Recommended Prerequisites

Some basic discrete mathematics, computer programming, algorithms, theory of computation.

Communication

When you need help from the course staff, please use office hours or hang around after lecture. For issues requiring privacy, please feel free to email the course instructor.

Office Hours

13:00–17:30 Monday

Topics and Class Schedule

Topics

Propositional Logic

Predicate Logic

Model Checking

Program Verification

Class Schedule

The current schedule is tentative and subject to change.

Date # Lecture Support
02/21 1 Introduction intro slide,PL-1
02/28 2 Holiday  
03/06 3 Propositional Logic PL slide
03/13 4 SAT-Solver SAT Slide
03/20 5 DPLL and CDCL DPLL/CDCL slide
03/27 6 First-Order Logic FOL slide
04/03 7 Earthquake FOT slide
04/10 8 First-Order Theory see above
04/17 9 Review  
04/24 10 Mid-term  
05/01 11 Quantifier-Elimination QE slide
05/08 12 LTL Model-Checking LTL-MC slide
05/15 13 CTL Model-Checking CTL-MC slide
05/22 14 SAT-based Model-Checking Algorithm SAT-MC slide
05/29 15 Program Verification Prog-Verf slide
06/05 16 Total Correctness Total-Corr slide
06/12 17 Final Project Presentation  
06/19 18 Final Project Presentation  

Useful References

Evalution

Asseignments (50 %)

Written Homework:

The goal of the written homework is to help you refine the fundamental skills, and better understand the theoretical underpinnings, that you will need in order to do well on the labs and exams. Grading for these assignments is based on the correctness of your answer, and the presentation of your reasoning. You should strive for clarity and conciseness, while making sure to show each step of your reasoning. Categorical answers with no explanation will not even receive partial credit, but lucid explanations of your attempt to find the answer will.

Written homework will be handed in in PDF format via teams, and should preferably be typeset in LaTeX.

Programming Homework:

The programming homework is designed to give you hands-on experience writing bug-free code with the help of formal verification tools. In general, we will ask you to implement some interesting functionality, such as a SAT solver or fault-tolerant communication protocol. The most important criterion with respect to grading programs is correctness.

Programming Homework will be send in a Unix compressed archive name.tgz. Your archive must include a README file describing how to compile and run your program. It must also include a short report (2 pages max.) describing the salient parts of your code.

Academic Integrity

Students are expected to complete each assignment on their own, and should be able to explain all of the work that they hand in. Copying code or proof material from other students, from online sources, or from prior instances of this course is not allowed. However, you are encouraged to discuss assignments with each other at a sufficiently high level to avoid the risk of duplicating implementation or proof. Examples of this would be discussing algorithms and properties referred to in the assignment, helping other students with questions about a programming language or tool required to complete the assignment, discussing a general proof technique, or referring to an online source with useful information. Similarly, you may consult online sources, tutorials, and public libraries. If you find specifically helpful material it is critical that you (a) do not copy the code or proof, but study it as a guide and then do your own work, and (b) cite the source with your classmates' names, suitable URLs and chat prompts (if you use any generative AIs) in your solution. If you have questions about whether something might be permissible, contact the course staff before you proceed.

Mid-terms (20 %)

TBA

Final Project (20 %)

TBA

Attendance (10 %)

All students are expected to attend the lectures. However I appreciate that different people learn differently. Thus the attendance won't be recorded.

Some tools you may be interested in

LaTeX

  • LaTeX for Logicians
  • mathpar There are many options for typesetting inference rules and derivation rules in LaTeX. We recommend mathpar which is included with most TeX distributions.

Acknowledgement and Credits

The course is designed based on the Introduction to Computational Logic by Bow-Yaw Wang. I thank him for providing his teaching materials including source code of slides.

Created: 2024-06-24 Mon 23:29

Validate