Logic is the mathematical foundation of computer programming. There are two approaches to using logic directly to solve problems.
1. SAT solving: The problem is encoded as a formula in propositional logic and the SAT solver software searches for a satisfying interpretation, from which a solution to the problem is obtained.
2. Logic programming: A logic program is a set of formulas in first-order logic that expresses facts and rules about the problem. A goal asks the inference engine software to find a substitution that makes the goal true. This substitution give the solution to the problem.
The course will discuss the theoretical and practical aspects of problem solving using logic:
- Propositional logic: syntax, interpretations, semantic tableaux, soundness and completeness, clausal form, resolution, DPLL algorithm for SAT solving, solving problems using a SAT solver.
- First-order logic: syntax, interpretations, semantic tableaux, clausal form, Horn clauses, resolution, SLD-resolution, unification, writing a logic problem in Prolog.