Programming Lab 3: First-Order Unification

Submission deadline: Wednesday, July 6, 2016 (11:59 p.m.)

TA: Diego Alejandro Montoya-Zapata

Introduction

The aim of this programming assignment is to implement unification in first-order logic (FOL). Unification is one of the main steps to perform resolution in FOL.

A substitution of terms for variables is a set

        {x1 ← t1, ..., xn ← tn}
      

where each xi is a distinct variable and each ti is a term which is not identical to the corresponding variable xi. The empty substution is the empty set [Ben-Ari (2012), Definition 10.4].

Let U = {A1, ..., An} be a set of atoms. A unifier θ is a substitution such that:

        A1θ = ... = Anθ.
      

A most general unifier (MGU) for U is a unifier μ such that any unifier θ of U can be expressed as:

        θ = μλ
      

for some substitution λ [Ben-Ari (2012), Definition 10.11].

Assignment (80%)

Clean code (10%)

Before submitting your code, clean it up! Clean code:

Submission (10%)

Submission is electronic. Send an email to asr(at)eafit(dot)edu(dot)co and dmonto39(at)eafit(dot)edu(dot)co and attach a compressed file (.zip or .tar.gz) with your solution.

Your submission has to include the following:

Notes

Bibliography

Ben-Ari, Mordechai (2012). Mathematical Logic for Computer Science. 3rd ed. Springer.


CM0845 Logic Valid XHTML
        1.1