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 student should be able to:
- use logic to express formal properties of data structures, algorithms and computer systems
- use the Prolog logic programming language
- conduct proofs to derive conclusions from given premises
- use different proof techniques, such as natural deduction, induction, Hoare logic for programme verification and temporal logic for system verification
- formulate logical formulae to give a precise mathematical (model-theoretic) meaning to various mathematical and computer science statements
- discuss important properties of evidence systems, such as soundness, completeness and decidability
- justify and apply methods of automatic deduction such as performing simple proofs with model checking
in order to
- master the proof techniques that are needed in future courses in the education
- obtain a broader perspective on programming.