A. Propositional logic
- Informal mathematical argumentation
- Formal proof techniques: natural deduction
- Syntax and semantics
- Soundness, completeness and decidability
B. Predicate logic
- Syntax and semantics, Kripke structures
- Proof techniques: natural deduction
- Soundness, completeness and undecidability, Gödel's theorems
C. Prolog
- Resolution and logic programming: unification, backtracking, negation, intersection and box diagrams
D. Inductive proof
- Mathematical and complete induction
- Inductive definitions and structural induction
E. Temporal logic
- Syntax and semantics
- Proof techniques: model checking
F. Hoare logic
- Program semantics and specification
- Program verification
- Syntax and semantics: Kripke structures
- Proof techniques: model checking
After passing the course, the students should be able to:
- specify general properties of mathematical-computational structures and prove these by means of natural deduction in propositional logic and predicate logic,
- specify inductive definitions of data structures and prove these with structural induction,
- specify and prove system properties by means of temporal logic,
- specify and prove program properties by means of Hoare logic,
- apply methods for automatic deduction and carry out simple proofs with model checking,
- apply and explain basic concepts in logic programming: unification, backtracking, intersection, negation and different programming techniques such as generate-test
in order to
- master the proof techniques that are needed in future courses in the education.
For higher grades, the student should furthermore be able to:
- argue for the correctness of a certain proof technique: soundness and completeness,
- argue for the suitability of proof techniques to automatic deduction: decidability.