After completing this course successfully, the student can:
- Indicate the relevance of formal logical methods in computer science.
- Explain the role of and the relationship between formal syntax and semantics of proposition and predicate logic.
- Explain the principles of Binary Decision Diagrams, and manipulate them.
- Explain the principles of SAT solving and apply them to simple examples
- Apply proof systems (semantic tableaus, Gentzen and Hilbert style deduction, resolution) and prove their equivalence.
- Explain the meaning of soundness and completeness and how these apply to the aforementioned proof systems.
- Understand and be able to work with a computer implementation of one of the topics.
In logic, many aspects of computer science are treated in a theoretical way. Examples are the relationship between syntax and semantics, computability, and concepts of programming languages. In a more direct sense, logic is applied in, e.g., logic programming, but also in programming by contract and other types of formal verification.
In this course we study the formal syntax and semantics of proposition and predicate logic. Several proof systems (semantic tableaux, Hilbert and Gentzen style systems, resolution) and their equivalence are presented, and soundness and completeness are discussed. We also study connections to other logic-related programming and specification paradigms: Binary Decision Diagrams, SAT solving and one of their implementations.
20% take-home assignments