ACL2 Workshop 2004. Supporting materials for the paper:

Title: A Formally Verified Quadratic Unification Algorithm
Authors: J.L. Ruiz-Reina, J.A. Alonso, M.J. Hidalgo and F.J. Martin
-------------------------------------------------------------------

Contents description:
=====================

* basic.lisp, lists.lisp, terms.lisp, matching.lisp, subsumption.lisp
  and subsumption-subst.lisp:

  These books are a basic theory of first-order terms, alraedy developed
  for other formalization project and reused now. 

* prefix-unification-rules.lisp: 

  A rule-based specification of unification for terms in prefix notation
  (Section 3 of the paper)

* dags.lisp:

  A collection of results about directed acyclic graphs.
  (Section 4 of the paper)

* dag-unification-rules.lisp:
  
  A rule-based specification of unification for terms dags
  (Section 5 of the paper)

* q-dag-unification-rules.lisp

  A rule-based specification of quadratic unification for term dags
  (Section 6 of the paper)

* terms-as-dag.lisp:

   Functions for transforming a prefix rpresentation of terms in a dag
   representation.

*  q-dag-unification.lisp

   The definition and verification of the quadratic unification
   algorithm (Sections 7 and 8 of the paper) 

* q-dag-unification-st.lisp

   Making the implementation executable, with stobj and defexec (Section
   9 of the paper). 

----------------------------------------------------------------

C implementation
----------------

 We also include a C implementation of the unification algorithm, a
 straightforward  translation of the ACL2 implementation. Se the
 directory dag-quadratic-C and the README file in that dierctory. 