#| ******************************************************************************* PRODIGY Version 2.01 Copyright 1989 by Mike Miller The PRODIGY System was designed and built by Steven Minton, Craig Knoblock, Dan Kuokka and Jaime Carbonell. Additional contributors include Henrik Nordin, Yolanda Gil, Manuela Veloso, Robert Joseph, Santiago Rementeria, Alicia Perez, Ellen Riloff, Michael Miller, and Dan Kahn. The PRODIGY system is experimental software for research purposes only. This software is made available under the following conditions: 1) PRODIGY will only be used for internal, noncommercial research purposes. 2) The code will not be distributed to other sites without the explicit permission of the designers. PRODIGY is available by request. 3) Any bugs, bug fixes, or extensions will be forwarded to the designers. Send comments or requests to: prodigy@cs.cmu.edu or The PRODIGY PROJECT, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA 15213. *******************************************************************************|# ;; This domain is a propositional logic domain according to the rules ;; outlined in Logic and Structure by D. van Dalen. ;; The information about a formula is described by the quinternary relation... ;; ;; ;; (formula ) ;; ;; where each variable is ;; ;; := a symbol gensymmed by connective type. ;; := assumed | derived ;; := term | negation | conjunction | disjunction | ;; implication | existential | universal ;; := available | not-available ;; := the time the formula was created. ;; ;; examples... ;; ;; (formula c-1 assumed conjunction available 0) ... let c-1 = (p & p) ;; (formula t-1 assumed term not-available 0) ... let t-1 = p [inside c-1] ;; (formula t-2 derived term available 3) ... let c-1 = p ;; s.t. [c-1 |- t-2] ;; ;; ;; The actual formula is described by the relation ... ;; ;; ( is
[] [] [...] ) ;; 1 2 3 ;; ;; where each variable is ;; ;; := a symbol gensymmed by a connective type ;; := | ;; ;; := and | or | implies | not | forall | exists ;; ;; ;; examples... ;; ;; (t-1 is p), (c-1 is t-1 and t-1) ...asing (p & p) ;; (t-1 is p), (n-1 is not p), (d-2 is t-1 or n-1) ... representing (p V ~p) ;; (t-2 is p), (t-4 is q), (c-33 is t-2 and t-4) ... representing (p & q) ;; ;; ;; (setq *OPERATORS* '( (CONJUNCTION-INTRODUCTION (params (

)) (preconds (and (formula

available ) (formula available ) (genformula conjunction ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (define as

and )) (add (formula derived conjunction available ))))) (CONJUNCTION-ELIMINATION (params ()) (preconds (and (define as

and ) (formula conjunction available ) (formula

) (formula ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (formula

derived available )) (add (formula derived available ))))) (IMPLICATION-INTRODUCTION (params (

)) (preconds (and (formula

available ) (formula derived available ) (before ) (genformula implication ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (define as

implies )) (add (formula derived implication available ))))) (IMPLICATION-ELIMINATION (params ()) (preconds (and (define as

implies ) (formula implication available ) (formula

available ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (formula available ))))) (NEGATION-INTRODUCTION (params (

)) (preconds (and (formula

available ) (define as falsum) (formula derived term available ) (before ) (genformula negation ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (define as not

)) (add (formula derived negation available ))))) (NEGATION-ELIMINATION (params (

)) (preconds (and (formula

available ) (define as not

) (formula negation available ) (genformula falsum ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (define as falsum)) (add (formula derived term available ))))) (REDUTIO-AD-ABSURDUM (params (

)) (preconds (and (define

as not ) (formula

negation ) (formula ) (define as falsum) (formula derived term available ) (before ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (formula derived available ))))) (FALSUM-RULE (params ()) (preconds (and (define

as falsum) (formula

term available ) (formula ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (formula derived available ))))) (EQUIVALENCE-INTRODUCTION (params (

)) (preconds (and (define

as implies ) (formula

implication available ) (define as implies ) (formula implication available ) (equal-p ) (equal-p ) (genformula equivalence ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (define as equivalent )) (add (formula derived equivalence available ))))) (EQUIVALENCE-ELIMINATION (params ()) (preconds (and (define as

equivalent ) (formula equivalence available ) (formula

) (formula ) (current-time ) (increment-time ))) (effects ((del (current-time )) (add (current-time )) (add (define

derived available )) (add (define derived available ))))) )) (setq *INFERENCE-RULES* nil)