Description of the course

Logic began as the formal study of truth, reasoning, and provability. In computer science, it has become a fundamental language for specifying and analyzing computation: logical formulas can describe the behavior of programs, hardware, databases, and distributed systems, and they can also express the properties these systems are meant to satisfy. This course introduces the foundations behind these applications. Starting from propositional logic and first-order logic, we study the distinction between syntax and semantics, proof systems such as resolution, and the algorithmic questions that arise when logical statements are given as input. Which properties can be checked automatically? Which problems are efficiently solvable, and which are undecidable? By addressing questions such as satisfiability, validity, and finite-model reasoning, the course provides a first step toward more advanced topics in formal methods, model checking, automated reasoning, and formal verification.

Course organisation

  • Lecturer: Prof. Dr. Antoine Wiehe
  • Summer semesters
  • Bachelor students in Technomathematik, Master students in Technomathematik, Master students in Computer Science
  • 6 ECTS
  • 2 meetings per week (1.5 hour lectures, 1.5 hour tutorials)

Prerequisites

There are no formal prerequisites to register to this course.

Syllabus

  • Propositional Logic
  • First-order Logic
  • Resolution as a tool for automated theorem proving
  • Church's theorem and Trakhtenbrot's theorem
  • Ehrenfeucht-Fraïssé games
  • Logic programming