 Learning goals
Objectives
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 the concepts of logic programming, and explain the connection with mathematical logic.
 Content
Course description
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 then continue by studying connections to other logicrelated programming and specification paradigms: Binary Decision Diagrams, SAT solving and logic programming.
 Assumed previous knowledge   Required materialsBookM. BenAri, Mathematical Logic for Computer Science (3rd ed.). Springer, 2012, ISBN 9781447121280 
 Recommended materialsInstructional modesLecture
 Self study without assistance
 Tutorial

 TestsWritten exam Remark50% tentamen, 50% huiswerkopdrachten


 