This course introduces a paradigm where computation arises from proof search in a logic according to a fixed, predictable strategy. It thereby unifies logical specification and implementation in a way that is quite different from functional or imperative programming. This course pro- vides a thorough, modern introduction to logic programming. It intro- duces the basic concepts and techniques of logic programming followed by successive refinement towards more efficient implementations or ex- tensions to richer logical concepts. It covers a variety of logics and operational interpretations.The aim of the course is to provide a basic introduction to the logic programming language, Prolog. It aims at introducing a number of logical systems of importance in computer science.
By the end of the subject, students should: