#| ******************************************************************************* PRODIGY Version 2.01 Copyright 1989 by Manuela Veloso 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. *******************************************************************************|# ; ; Manuela Veloso - Jan 22, 88 ; ; This file contains the set of operators for gaussian elimination ; ; Note: Functions are all the predicates whose name is dashed with an f ; Ex: range-f. ; (setq *OPERATORS* '( (TRIANGULIZE (params ()) (preconds (and (dimension ) (pred-f ) (forall () (range-f 1 ) (put-k-zeros 0)))) (effects ((add (triangular ))))) ; Updates an element by scaling and adding a row with the current row (UPDATE_ELT_SC_ADD (params ( )) (preconds (and (rowpivotfor ) (const ) (scaled&added ) (allcopied))) (effects ((add (clearedelt )) (del (allcopied))))) ; Updates an element by scaling its row (UPDATE_ELT_SC (params ( )) (preconds (and (const ) (scaledrow ))) (effects ((add (clearedelt ))))) ; Updates an element just by adding two rows (UPDATE_ELT_ADD (params ( )) (preconds (and (rowpivotfor ) (added ))) (effects ((add (clearedelt ))))) ; Adds row1 and row2 and substitutes row1 by the obtained sum (ADD_ROWS (params ( )) (preconds (and (dimension ) (forall () (range-f 1 ) (and (mat ) (mat ) (sum-f ) (changed ))))) (effects ((add (added ))))) ; Multiplies a row by mconst and substitutes row by the obtained result (SCALE_ROW (params ( )) (preconds (and (dimension ) (forall () (range-f 1 ) (and (mat ) (mult-f ) (changed ))))) (effects ((add (scaledrow ))))) ; Scales a row pivot and adds it to the working row (SCALE_ADD (params ( )) (preconds (and (dimension ) (forall () (range-f 1 ) (and (mat ) (mat ) (mult-f ) (sum-f ) (changed ))))) (effects ((add (scaled&added ))))) ; Selects a working row (WORK_OUT_ROW (params ( )) (preconds (and (row ) (~ (workedout )) (forall () (range-f 1 ) (clearedelt )))) (effects ((add (workedout )) (add (put-k-zeros 0))))) ; Selects a row for pivoting (CHOOSE_ROW_PIVOT (params ( )) (preconds (and (row ) (diff-f ))) (effects ((add (rowpivotfor ))))) ; Creates the right multiplicative constant to get a zero element (CREATE_CONST0 (params ( )) (preconds (and (rowpivotfor ) (mat ) (mat ) (div-f ) (neg-f ))) (effects ((add (const 0 ))))) ; Creates the right multiplicative constant to get a specific ; element (CREATE_CONST_GEN (params ( )) (preconds (and (mat ) (div-f ))) (effects ((add (const ))))) ; Creates temporary predicates (CREATE-TEMP-ELEMENTS (params ( )) (preconds (mat )) (effects ((add (changed )) (add (newmat ))))) ; Updates all (COPYALL (params ()) (preconds (and (dimension ) (forall () (range-f 1 ) (~ (newmat ))))) (effects ((add (allcopied))))) ; Substitutes old elements for temporary ones (PERFORM-UPDATES (params ()) (preconds (and (newmat ) (mat ))) (effects ((del (newmat )) (del (mat )) (add (mat )) (if (and (clearedelt ) (diff-f )) (del (clearedelt )))))) )) (setq *INFERENCE-RULES* '())