;;;; -*- Mode: LISP; Syntax: Common-Lisp; Base: 10 -*- ;;;; --------------------------------------------------------------------------- ;;;; File name: cis.lsp ;;;; System: FIRE ;;;; Version: 1.0 ;;;; Author: Shawn Nicholson ;;;; Created: January 20, 2001 18:59:11 ;;;; Purpose: Routines which fetch and install CI info for an SME ;;;; --------------------------------------------------------------------------- ;;;; Modified: Sunday, February 8, 2004 at 13:15:10 by Kenneth Forbus ;;;; --------------------------------------------------------------------------- (in-package :fire) ;; N.B. This code is probably obsolete (defun translate-ci-form (form) (cond ((null form) nil) ((not (listp form)) form) ((eq (car form) :SKOLEM) (make-analogy-skolem-term (translate-ci-form (cdr form)))) (t (cons (translate-ci-form (car form)) (translate-ci-form (cdr form)))))) (defun extract-skolems-from-ci-form (form) (remove-duplicates (extract-skolems-from-ci-form-internal form) :test 'equal)) (defun extract-skolems-from-ci-form-internal (form) (cond ((null form) nil) ((not (listp form)) nil) ((analogy-skolem-term? form) (list form)) (t (nconc (extract-skolems-from-ci-form-internal (car form)) (extract-skolems-from-ci-form-internal (cdr form)))))) (defmethod sme::ci-form (ci) (when (listp (sme::form ci)) (compute-ci-form (sme::form ci)))) (defun compute-ci-form (exp) (cond ((null exp) nil) ((not (listp exp)) (sme::lisp-form exp)) (t (let ((pred (car exp)) (args (cdr exp))) (sme->fire (compute-ci-form pred) (mapcar 'compute-ci-form args))))))