
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 logicrelated programming and specification paradigms: Binary Decision Diagrams, SAT solving and one of their implementations.
Assessment
80% exam
20% takehome assignments




  Required materialsBookM. BenAri, Mathematical Logic for Computer Science (3rd ed.). Springer, 2012, ISBN 9781447141280 

 Recommended materialsInstructional modesLecturePresence duty   Yes 
 Self study without assistancePresence duty   Yes 
 TutorialPresence duty   Yes 

 TestsWritten exam, Takehome assignments


 