(DEFINE-FILE-INFO PACKAGE "USER" READTABLE "INTERLISP" BASE 10)(IL:FILECREATED " 9-Sep-94 13:49:53" ("compiled on " IL:{DSK}<lispcore>lispusers>LOGIC-DEVEL.;1) "28-Jul-94 17:28:46" IL:bcompl'd IL:in "Medley 25-Aug-94 ..." IL:dated "25-Aug-94 10:02:49")(IL:FILECREATED "19-Dec-88 15:40:33" IL:{DSK}<LISPFILES>LOGIC>MEDLEY>LOGIC-DEVEL.;7 52955 IL:changes IL:to%: (IL:VARS IL:LOGIC-DEVELCOMS) (IL:FUNCTIONS EDIT-AXIOM EDIT-SA PROMPTREAD) IL:previous IL:date%: "19-Dec-88 14:47:38" IL:{DSK}<LISPFILES>LOGIC>MEDLEY>LOGIC-DEVEL.;6)(IL:PRETTYCOMPRINT IL:LOGIC-DEVELCOMS)(IL:RPAQQ IL:LOGIC-DEVELCOMS ((IL:* IL:NOW IL:THESE IL:ARE IL:MACROS) (IL:FUNCTIONS DRIBBLEP SEE-ENV-P SET-MENU TRACINGP) (IL:* IL:THESE IL:ARE IL:FUNCTIONS) (IL:FUNCTIONS CREATE-DEVEL-THEORY CREATE-THEORY-MENU EDIT-AXIOM EDIT-SA GET-LIST-PROP GET-TB-PROPERTY GET-THEORY-INTERNAL LIST-ALL-THEORIES-INTERNAL LOAD-DEVEL-THEORY LOGIC-BUTTONFN LOGIC-DEVELOPER LOGIC-MENU-FUNCTION MERGE-THEORIES-DEVEL MY-CREATE-TBRECORD PRINT-TB-ITEMS PROMPTREAD SAVE-DEVEL-THEORY SHOW-PROFILE SOLVE-DEBUGGER START-PROVING UNIFY-DEBUGGER) (IL:ADDVARS (IL:BackgroundMenuCommands ("Logic" (QUOTE (IL:ADD.PROCESS (QUOTE (LOGIC-DEVELOPER)))) "Open a window on logic programming environment"))) (IL:VARS *LOGIC-MENU-ITEMS* *LOGIC-RELEASE-NUMBER* *LOGIC-CLOSE-ON-COMPLETION-FLG* (IL:BackgroundMenu NIL) (IL:LogicMiddleMenu NIL) IL:LogicMiddleMenuCommands) (IL:P (IL:FILESLOAD IL:TABLEBROWSER)) (IL:RECORDS IL:TABLEBROWSER IL:TABLEITEM) (IL:CONSTANTS IL:TB.LEFT.MARGIN)))(DEFMACRO DRIBBLEP (WINDOW TYPE) (IL:BQUOTE (COND ((EQ (IL:\, TYPE) (QUOTE SOLVE)) (IL:GETWINDOWPROP (IL:GETWINDOWPROP (IL:\, WINDOW) (QUOTE IL:SOLVE-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM))) ((EQ (IL:\, TYPE) (QUOTE UNIFY)) (IL:GETWINDOWPROP (IL:GETWINDOWPROP (IL:\, WINDOW) (QUOTE IL:UNIFY-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM))))))(DEFMACRO SEE-ENV-P (WINDOW) (IL:BQUOTE (IL:GETWINDOWPROP WINDOW (QUOTE IL:SEE))))(DEFMACRO SET-MENU (MENU FIELD VALUE) (IL:BQUOTE (SETF (IL:FETCH (IL:\, FIELD) IL:OF (IL:\, MENU)) (IL:\, VALUE))))(DEFMACRO TRACINGP (WINDOW TYPE) (IL:BQUOTE (COND ((EQ (IL:\, TYPE) (QUOTE SOLVE)) (EQ (IL:GETWINDOWPROP (IL:\, WINDOW) (QUOTE IL:SOLVE)) (QUOTE TRACE))) ((EQ (IL:\, TYPE) (QUOTE UNIFY)) (EQ (IL:GETWINDOWPROP (IL:\, WINDOW) (QUOTE IL:UNIFY)) (QUOTE TRACE))))))(DEFUN CREATE-DEVEL-THEORY (MAIN-WINDOW) (PROG* ((PW (IL:GETPROMPTWINDOW MAIN-WINDOW)) (THEORY-NAME (PROGN (IL:CLEARW PW) (PROMPTREAD "Theory name" PW T)))) (IL:* IL:;; "Every theory is stored in a tablebrowser as a tableitem") (AND THEORY-NAME (LET* ((ACTUAL-THEORY (MAKE-HASH-TABLE)) (TB-ITEM (MY-CREATE-TBRECORD (ACONS (QUOTE THEORY) ACTUAL-THEORY (ACONS (QUOTE THEORY-NAME) THEORY-NAME NIL))))) (IL:CLEARW PW) (IL:TB.INSERT.ITEM (IL:GETWINDOWPROP MAIN-WINDOW (QUOTE IL:TABLEBROWSER)) TB-ITEM) (IL:CLEARW PW) (FORMAT PW "~%%Theory created")))))(DEFUN CREATE-THEORY-MENU (MAINW) (IL:* IL:;; "For speed improving, the list of all theories are kept in a menu; this menu is updated every time the user makes a change") (IL:PUTWINDOWPROP MAINW (QUOTE IL:THEORIES-MENU) (PROG ((MENU (IL:CREATE IL:MENU))) (SET-MENU MENU IL:TITLE "Which theory?") (SET-MENU MENU IL:ITEMS (IL:SORT (LIST-ALL-THEORIES MAINW) (FUNCTION IL:ALPHORDER))) (RETURN MENU))))(DEFUN EDIT-AXIOM (WINDOW) (LET ((CHOOSEN-THEORY-NAME (IL:MENU (IL:GETWINDOWPROP WINDOW (QUOTE IL:THEORIES-MENU))))) (AND CHOOSEN-THEORY-NAME (LET* ((THEORY (GET-THEORY CHOOSEN-THEORY-NAME WINDOW)) (CHOOSEN-AXIOM (PROG ((MENU (IL:CREATE IL:MENU))) (SET-MENU MENU IL:TITLE "Which axiom?") (SET-MENU MENU IL:ITEMS (APPEND (LIST (QUOTE --NEW--)) (IL:SORT (ALL-PREDS THEORY)))) (RETURN (IL:MENU MENU)))) *AXIOM-TEMPLATE*) (AND CHOOSEN-AXIOM (COND ((EQ CHOOSEN-AXIOM (QUOTE --NEW--)) (LET* ((PW (IL:GETPROMPTWINDOW WINDOW)) (NEWNAME (PROGN (IL:CLEARW PW) (PROMPTREAD "Axiom name" PW T))) PROC-NAME) (PROG NIL (SETF *AXIOM-TEMPLATE* (LIST (LIST (LIST (QUOTE PREDICATE))))) LP (IL:SPAWN.MOUSE) (SETF *AXIOM-TEMPLATE* (IL:EDITE (IL:COPYALL *AXIOM-TEMPLATE*) NIL (FORMAT NIL "New Predicate: ~A in ~A theory " NEWNAME CHOOSEN-THEORY-NAME) NIL NIL (AND *LOGIC-CLOSE-ON-COMPLETION-FLG* (QUOTE (:CLOSE-ON-COMPLETION))))) (PROG ((CLAUSE-NUMBER 1) (AXS *AXIOM-TEMPLATE*)) LP1 (COND ((NULL AXS) (RETURN)) ((NOT (EQ NEWNAME (CAAAR AXS))) (IL:CLEARW PW) (FORMAT PW "Clause number ~D: incorrect predicate name: ~A" CLAUSE-NUMBER (CAAAR AXS)) (GO LP)) (T (SETF AXS (CDR AXS)) (INCF CLAUSE-NUMBER) (GO LP1)))) (SETF (GETHASH NEWNAME THEORY) *AXIOM-TEMPLATE*)))) (T (PROG NIL (IL:TTYDISPLAYSTREAM (IL:GETPROMPTWINDOW WINDOW)) (SETF *AXIOM-TEMPLATE* (GETHASH CHOOSEN-AXIOM THEORY)) LP (IL:SPAWN.MOUSE) (SETF *AXIOM-TEMPLATE* (IL:EDITE (IL:COPYALL *AXIOM-TEMPLATE*) NIL (FORMAT NIL "Predicate: ~A in ~A theory " CHOOSEN-AXIOM CHOOSEN-THEORY-NAME) NIL NIL (AND *LOGIC-CLOSE-ON-COMPLETION-FLG* (QUOTE (:CLOSE-ON-COMPLETION))))) (PROG ((CLAUSE-NUMBER 1) (AXS *AXIOM-TEMPLATE*)) LP1 (COND ((NULL AXS) (RETURN)) ((NOT (EQ CHOOSEN-AXIOM (CAAAR AXS))) (IL:CLEARW (IL:GETPROMPTWINDOW WINDOW)) (FORMAT (IL:GETPROMPTWINDOW WINDOW) "Clause number ~D: incorrect predicate name: ~A" CLAUSE-NUMBER (CAAAR AXS)) (GO LP)) (T (SETF AXS (CDR AXS)) (INCF CLAUSE-NUMBER) (GO LP1)))) (SETF (GETHASH CHOOSEN-AXIOM THEORY) *AXIOM-TEMPLATE*)))))))))(DEFUN EDIT-SA (WINDOW) (LET* ((CHOOSEN-THEORY-NAME (IL:MENU (IL:GETWINDOWPROP WINDOW (QUOTE IL:THEORIES-MENU))))) (AND CHOOSEN-THEORY-NAME (LET* ((THEORY (GET-THEORY CHOOSEN-THEORY-NAME WINDOW)) (CHOOSEN-SA (PROG ((MENU (IL:CREATE IL:MENU))) (SET-MENU MENU IL:TITLE "Which sa?") (SET-MENU MENU IL:ITEMS (APPEND (LIST (QUOTE --NEW--)) (IL:SORT (ALL-SAS THEORY)))) (RETURN (IL:MENU MENU)))) *SA-TEMPLATE*) (AND CHOOSEN-SA (COND ((EQ CHOOSEN-SA (QUOTE --NEW--)) (LET* ((PW (IL:GETPROMPTWINDOW WINDOW)) (NEWNAME (PROGN (IL:CLEARW PW) (PROMPTREAD "SA name" PW T)))) (PROGN (SETF *SA-TEMPLATE* (LIST (QUOTE LAMBDA) (LIST (QUOTE ARGS)) (QUOTE <BODY>))) (IL:SPAWN.MOUSE) (SETF *SA-TEMPLATE* (IL:EDITE (IL:COPYALL *SA-TEMPLATE*) NIL (FORMAT NIL "New SA: ~A in ~A theory " NEWNAME CHOOSEN-THEORY-NAME))) (SETF (GETHASH NEWNAME THEORY) (CONS (QUOTE SA) *SA-TEMPLATE*))))) (T (PROGN (IL:TTYDISPLAYSTREAM (IL:GETPROMPTWINDOW WINDOW)) (SETF *SA-TEMPLATE* (CDR (GETHASH CHOOSEN-SA THEORY))) (IL:SPAWN.MOUSE) (SETF *SA-TEMPLATE* (IL:EDITE (IL:COPYALL *SA-TEMPLATE*) NIL (FORMAT NIL "SA: ~A in ~A theory " CHOOSEN-SA CHOOSEN-THEORY-NAME))) (SETF (GETHASH CHOOSEN-SA THEORY) (CONS (QUOTE SA) *SA-TEMPLATE*))))))))))(DEFUN GET-LIST-PROP (TI-LIST PROPERTY) (PROG (RES) LABEL (COND ((NULL TI-LIST) (RETURN RES)) (T (SETF RES (APPEND RES (LIST (GET-TB-PROPERTY (CAR TI-LIST) PROPERTY)))) (SETF TI-LIST (CDR TI-LIST)) (GO LABEL)))))(DEFUN GET-TB-PROPERTY (ITEM PROP) (IL:LISTGET (IL:FETCH IL:TIDATA IL:OF ITEM) PROP))(DEFUN GET-THEORY-INTERNAL (THEORY-NAME &OPTIONAL WINDOW) (LET* ((TB (IL:GETWINDOWPROP WINDOW (QUOTE IL:TABLEBROWSER))) (ITEMS (IL:FETCH IL:TBITEMS IL:OF TB))) (PROG NIL LABEL (COND ((NULL ITEMS)) ((STRING-EQUAL (SYMBOL-NAME (GET-TB-PROPERTY (CAR ITEMS) (QUOTE THEORY-NAME))) (SYMBOL-NAME THEORY-NAME)) (RETURN (GET-TB-PROPERTY (CAR ITEMS) (QUOTE THEORY)))) (T (SETF ITEMS (CDR ITEMS)) (GO LABEL))))))(DEFUN LIST-ALL-THEORIES-INTERNAL (WINDOW) (GET-LIST-PROP (IL:TB.COLLECT.ITEMS (IL:GETWINDOWPROP WINDOW (QUOTE IL:TABLEBROWSER))) (QUOTE THEORY-NAME)))(DEFUN LOAD-DEVEL-THEORY (MAINW &OPTIONAL NAME-OF-THEORY) (LET* ((PW (IL:GETPROMPTWINDOW MAINW)) (THEORY-NAME (OR NAME-OF-THEORY (PROGN (IL:CLEARW PW) (PROMPTREAD "Theory name" PW T)))) (THEORY-FILE-NAME (MERGE-PATHNAMES (MAKE-PATHNAME :NAME THEORY-NAME :TYPE (QUOTE LGC)))) (ACTUAL-THEORY (MAKE-HASH-TABLE)) (TB-ITEM (MY-CREATE-TBRECORD (ACONS (QUOTE THEORY) ACTUAL-THEORY (ACONS (QUOTE THEORY-NAME) THEORY-NAME NIL))))) (IL:CLEARW PW) (OR (AND (PROBE-FILE THEORY-FILE-NAME) (PROGN (WITH-OPEN-FILE (FILE THEORY-FILE-NAME :DIRECTION :INPUT) (FORMAT PW "Loading theory ") (PROG (THEORY-NAME PRED-NUMBER SAS-NUMBER) (READ FILE) (IL:* IL:;; "skip on the theory name") (SETF SAS-NUMBER (READ FILE)) (DO ((SAS SAS-NUMBER (DECF SAS))) ((EQ SAS 0) NIL) (PROGN (FORMAT PW ".") (SETF (GETHASH (READ FILE) ACTUAL-THEORY) (READ FILE)))) (SETF PRED-NUMBER (READ FILE)) (DO ((PREDS PRED-NUMBER (DECF PREDS))) ((= PREDS 0) NIL) (PROGN (FORMAT PW ".") (SETF (GETHASH (READ FILE) ACTUAL-THEORY) (READ FILE)))))) (IL:TB.INSERT.ITEM (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)) TB-ITEM) (IL:CLEARW PW) (FORMAT PW "~%%Theory loaded") T)) (FORMAT PW "~%%Theory not found"))))(DEFUN LOGIC-BUTTONFN (WINDOW) (COND ((IL:LASTMOUSESTATE IL:LEFT) T) ((IL:LASTMOUSESTATE IL:MIDDLE) (CASE (IL:MENU (OR IL:LogicMiddleMenu (PROGN (SETF IL:LogicMiddleMenu (IL:CREATE IL:MENU)) (SET-MENU IL:LogicMiddleMenu IL:ITEMS IL:LogicMiddleMenuCommands) (SET-MENU IL:LogicMiddleMenu IL:ITEMWIDTH 60) (SET-MENU IL:LogicMiddleMenu IL:ITEMHEIGHT 14) IL:LogicMiddleMenu))) (Dribble (LET ((PW (IL:GETPROMPTWINDOW WINDOW)) (STREAM NIL) (FILENAME NIL)) (IL:CLEARW PW) (SETF FILENAME (IL:PROMPTFORWORD "Typescript to file: " NIL NIL PW)) (IL:CLEARW PW) (COND ((NULL FILENAME) (CLOSE (IL:GETWINDOWPROP WINDOW (QUOTE IL:TYPESCRIPTSTREAM))) (IL:CLEARW PW) (IL:PUTWINDOWPROP WINDOW (QUOTE IL:TYPESCRIPTSTREAM) NIL) (FORMAT PW "File closed")) (T (SETF STREAM (OPEN (MERGE-PATHNAMES (MAKE-PATHNAME :NAME FILENAME :TYPE (QUOTE TRC))) :DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :IF-DOES-NOT-EXIST :CREATE)) (IL:CLEARW PW) (FORMAT PW "~S opened" (NAMESTRING STREAM)) (IL:PUTWINDOWPROP WINDOW (QUOTE IL:TYPESCRIPTSTREAM) STREAM)))))))))(DEFUN LOGIC-DEVELOPER NIL (IN-PACKAGE (QUOTE USER)) (LET* ((LOGIC-WINDOW (IL:CREATEW NIL (FORMAT NIL "Logic ~D -- Horn clauses programming environment" *LOGIC-RELEASE-NUMBER*) 6 T)) (IL:* IL:; "the main window") (UNIFY-WINDOW (IL:CREATEW (QUOTE (10 10 400 400)) "Logic unifier Trace Window" 4 T)) (SOLVE-WINDOW (IL:CREATEW (QUOTE (410 10 400 400)) "Logic solver Trace Window" 4 T)) (REGION (IL:GETWINDOWPROP LOGIC-WINDOW (QUOTE IL:REGION))) (THEORIES-WINDOW (IL:CREATEW (IL:CREATEREGION (- (FIRST REGION) 120) (SECOND REGION) 120 (FOURTH REGION)) "Theories window" 4 T)) (TABLE-BROWSER (IL:TB.MAKE.BROWSER NIL THEORIES-WINDOW (QUOTE (IL:FONT (HELVETICA 12 BRR) IL:PRINTFN PRINT-TB-ITEMS)))) (LOGIC-CONTROL-MENU (IL:CREATE IL:MENU)) (PROC (IL:THIS.PROCESS)) LOGIC-CONTROL-MENU-WINDOW) (DECLARE (SPECIAL LOGIC-WINDOW)) (IL:CLEARW THEORIES-WINDOW) (IL:DSPSCROLL (QUOTE IL:ON) UNIFY-WINDOW) (IL:DSPSCROLL (QUOTE IL:ON) SOLVE-WINDOW) (IL:DSPSCROLL (QUOTE IL:ON) THEORIES-WINDOW) (IL:PUTWINDOWPROP UNIFY-WINDOW (QUOTE IL:BUTTONEVENTFN) (QUOTE LOGIC-BUTTONFN)) (IL:PUTWINDOWPROP SOLVE-WINDOW (QUOTE IL:BUTTONEVENTFN) (QUOTE LOGIC-BUTTONFN)) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:MODE) (QUOTE IL:FIRST)) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:TRUTH-VALUE-ONLY) T) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:WINDOWENTRYFN) (QUOTE IL:GIVE.TTY.PROCESS)) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:UNIFY-WINDOW) UNIFY-WINDOW) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:SOLVE-WINDOW) SOLVE-WINDOW) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:TABLEBROWSER) TABLE-BROWSER) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:SOLVE) (QUOTE NOTRACE)) (IL:PUTWINDOWPROP LOGIC-WINDOW (QUOTE IL:UNIFY) (QUOTE NOTRACE)) (SET-MENU LOGIC-CONTROL-MENU IL:TITLE "Control menu") (SET-MENU LOGIC-CONTROL-MENU IL:MENUCOLUMNS 1) (SET-MENU LOGIC-CONTROL-MENU IL:ITEMS *LOGIC-MENU-ITEMS*) (SET-MENU LOGIC-CONTROL-MENU IL:WHENSELECTEDFN (FUNCTION LOGIC-MENU-FUNCTION)) (SET-MENU LOGIC-CONTROL-MENU IL:CENTERFLG T) (SET-MENU LOGIC-CONTROL-MENU IL:ITEMWIDTH 105) (SET-MENU LOGIC-CONTROL-MENU IL:ITEMHEIGHT 14) (IL:ATTACHWINDOW (IL:MENUWINDOW LOGIC-CONTROL-MENU) LOGIC-WINDOW (QUOTE IL:RIGHT) (QUOTE IL:TOP)) (IL:ATTACHWINDOW THEORIES-WINDOW LOGIC-WINDOW (QUOTE IL:LEFT) (QUOTE IL:TOP)) (IL:OPENW LOGIC-WINDOW) (IL:TTYDISPLAYSTREAM LOGIC-WINDOW) (IL:USEREXEC " Logic>" NIL (FUNCTION START-PROVING)) (IL:DEL.PROCESS PROC) (IL:CLOSEW LOGIC-WINDOW) T))(DEFUN LOGIC-MENU-FUNCTION (ITEM MENU BUTTON) (LET ((ACTION (SECOND ITEM)) (MAINW (IL:MAINWINDOW (IL:WFROMMENU MENU)))) (CASE ACTION (EXIT (MAPCAR (FUNCTION IL:CLOSEW) (IL:ATTACHEDWINDOWS MAINW)) (IL:DEL.PROCESS (IL:GETWINDOWPROP MAINW (QUOTE IL:PROCESS))) (AND (STREAMP (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:SOLVE-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM))) (CLOSE (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:SOLVE-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM)))) (AND (STREAMP (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:UNIFY-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM))) (CLOSE (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:UNIFY-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM)))) (IL:CLOSEW MAINW)) (TRUTH-VALUE (IL:PUTWINDOWPROP MAINW (QUOTE IL:TRUTH-VALUE-ONLY) T)) (ALL-VALUES (IL:PUTWINDOWPROP MAINW (QUOTE IL:TRUTH-VALUE-ONLY) NIL)) (LOAD-THEORY (LOAD-DEVEL-THEORY MAINW) (CREATE-THEORY-MENU MAINW)) (SAVE-THEORY (SAVE-DEVEL-THEORY MAINW)) (CREATE-THEORY (CREATE-DEVEL-THEORY MAINW) (CREATE-THEORY-MENU MAINW)) (MERGE-THEORIES (MERGE-THEORIES-DEVEL MAINW)) (EDIT-SA (IL:ADD.PROCESS (IL:BQUOTE (EDIT-SA (IL:\, MAINW))))) (EDIT-AXIOM (IL:ADD.PROCESS (IL:BQUOTE (EDIT-AXIOM (IL:\, MAINW))))) (NO-SHOW-ENV (IL:PUTWINDOWPROP MAINW (QUOTE IL:SEE) NIL)) (DELETE-AXIOM (LET ((CHOOSEN-THEORY-NAME (IL:MENU (IL:GETWINDOWPROP MAINW (QUOTE IL:THEORIES-MENU))))) (AND CHOOSEN-THEORY-NAME (LET ((CHOOSEN-AXIOM (PROG ((MENU (IL:CREATE IL:MENU))) (SET-MENU MENU IL:TITLE "Which axiom?") (SET-MENU MENU IL:ITEMS (IL:SORT (ALL-PREDS (GET-THEORY CHOOSEN-THEORY-NAME MAINW)) (FUNCTION IL:ALPHORDER))) (RETURN (IL:MENU MENU))))) (AND CHOOSEN-AXIOM (LOGIC-DELETE CHOOSEN-AXIOM CHOOSEN-THEORY-NAME MAINW)))))) (DELETE-SA (LET ((CHOOSEN-THEORY-NAME (IL:MENU (IL:GETWINDOWPROP MAINW (QUOTE IL:THEORIES-MENU))))) (AND CHOOSEN-THEORY-NAME (LET ((CHOOSEN-SA (PROG ((MENU (IL:CREATE IL:MENU))) (SET-MENU MENU IL:TITLE "Which SA?") (SET-MENU MENU IL:ITEMS (IL:SORT (ALL-SAS (GET-THEORY CHOOSEN-THEORY-NAME MAINW)) (FUNCTION IL:ALPHORDER))) (RETURN (IL:MENU MENU))))) (AND CHOOSEN-SA (LOGIC-DELETE CHOOSEN-SA CHOOSEN-THEORY-NAME MAINW)))))) (SHOW-AXIOM (LET ((CHOOSEN-THEORY-NAME (IL:MENU (IL:GETWINDOWPROP MAINW (QUOTE IL:THEORIES-MENU))))) (AND CHOOSEN-THEORY-NAME (PROG ((MENU (IL:CREATE IL:MENU)) CHOOSEN-AXIOM (ALL-ITEMS (IL:SORT (ALL-PREDS (GET-THEORY CHOOSEN-THEORY-NAME MAINW))))) (SET-MENU MENU IL:TITLE "Which axiom?") (SET-MENU MENU IL:ITEMS ALL-ITEMS) JUMP (AND (NULL ALL-ITEMS) (RETURN)) (SETF CHOOSEN-AXIOM (IL:MENU MENU)) (AND CHOOSEN-AXIOM (PROGN (SHOW-DEFINITION CHOOSEN-AXIOM CHOOSEN-THEORY-NAME MAINW) (GO JUMP))))))) (SHOW-SA (LET ((CHOOSEN-THEORY-NAME (IL:MENU (IL:GETWINDOWPROP MAINW (QUOTE IL:THEORIES-MENU))))) (AND CHOOSEN-THEORY-NAME (PROG ((MENU (IL:CREATE IL:MENU)) CHOOSEN-SA (ALL-ITEMS (IL:SORT (ALL-SAS (GET-THEORY CHOOSEN-THEORY-NAME MAINW)) (FUNCTION IL:ALPHORDER)))) (SET-MENU MENU IL:TITLE "Which SA?") (SET-MENU MENU IL:ITEMS ALL-ITEMS) JUMP (AND (NULL ALL-ITEMS) (RETURN)) (SETF CHOOSEN-SA (IL:MENU MENU)) (AND CHOOSEN-SA (PROGN (SHOW-DEFINITION CHOOSEN-SA CHOOSEN-THEORY-NAME MAINW) (GO JUMP))))))) (FIRST (IL:PUTWINDOWPROP MAINW (QUOTE IL:MODE) (QUOTE IL:FIRST))) (SET-MODE (IL:PUTWINDOWPROP MAINW (QUOTE IL:MODE) (QUOTE IL:FIRST))) (ALL (IL:PUTWINDOWPROP MAINW (QUOTE IL:MODE) (QUOTE IL:ALL))) (INTERACTIVE (IL:PUTWINDOWPROP MAINW (QUOTE IL:MODE) (QUOTE IL:INTERACTIVE))) (TRACE-UNIFIER (IL:PUTWINDOWPROP MAINW (QUOTE IL:UNIFY) (QUOTE TRACE))) (TRACE-SOLVER (IL:PUTWINDOWPROP MAINW (QUOTE IL:SOLVE) (QUOTE TRACE))) (NOTRACE-SOLVER (PROGN (IL:PUTWINDOWPROP MAINW (QUOTE IL:SOLVE) (QUOTE NOTRACE)) (AND (STREAMP (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:SOLVE-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM))) (CLOSE (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:SOLVE-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM)))))) (NOTRACE-UNIFIER (PROGN (IL:PUTWINDOWPROP MAINW (QUOTE IL:UNIFY) (QUOTE NOTRACE)) (AND (STREAMP (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:UNIFY-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM))) (CLOSE (IL:GETWINDOWPROP (IL:GETWINDOWPROP MAINW (QUOTE IL:UNIFY-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM)))))) (DELETE-THEORY (LET ((TB (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)))) (DO ((ITEMS (IL:TB.COLLECT.ITEMS TB (QUOTE IL:SELECTED)) (CDR ITEMS))) ((NULL ITEMS)) (IL:TB.DELETE.ITEM TB (CAR ITEMS))))) (UNDELETE (LET ((TB (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)))) (DO ((ITEMS (IL:TB.COLLECT.ITEMS TB (QUOTE IL:SELECTED)) (CDR ITEMS))) ((NULL ITEMS)) (IL:TB.UNDELETE.ITEM TB (CAR ITEMS))))) (EXPUNGE (LET ((TB (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)))) (DO ((ITEMS (IL:TB.COLLECT.ITEMS TB (QUOTE IL:DELETED)) (CDR ITEMS))) ((NULL ITEMS)) (IL:TB.REMOVE.ITEM TB (CAR ITEMS))) (CREATE-THEORY-MENU MAINW))) (ERASE (LET ((TB (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)))) (DO ((ITEMS (IL:TB.COLLECT.ITEMS TB) (CDR ITEMS))) ((NULL ITEMS)) (IL:TB.REMOVE.ITEM TB (CAR ITEMS))) (CREATE-THEORY-MENU MAINW))) (SHOW-PROFILE (SHOW-PROFILE MAINW)))))(DEFUN MERGE-THEORIES-DEVEL (MAINW &OPTIONAL NEW-THEORY LIST-OF-THEORIES) (LET* ((PW (IL:GETPROMPTWINDOW MAINW)) (THEORY-NAME (OR NEW-THEORY (PROGN (IL:CLEARW PW) (PROMPTREAD "New theory name" PW T))))) (AND THEORY-NAME (LET* ((ACTUAL-THEORY (MAKE-HASH-TABLE)) (TB-ITEM (MY-CREATE-TBRECORD (ACONS (QUOTE THEORY) ACTUAL-THEORY (ACONS (QUOTE THEORY-NAME) THEORY-NAME NIL)))) (SELECTED-THEORIES (OR LIST-OF-THEORIES (IL:TB.COLLECT.ITEMS (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)) (QUOTE IL:SELECTED)))) (SELECTED-THEORY-NAMES (OR LIST-OF-THEORIES (DO ((THS SELECTED-THEORIES (CDR THS)) (RESULT NIL)) ((NULL THS) RESULT) (SETQ RESULT (APPEND RESULT (LIST (GET-TB-PROPERTY (CAR THS) (QUOTE THEORY-NAME))))))))) (IL:CLEARW PW) (IL:TB.INSERT.ITEM (IL:GETWINDOWPROP MAINW (QUOTE IL:TABLEBROWSER)) TB-ITEM) (IL:CLEARW PW) (MERGE-INTERNAL THEORY-NAME SELECTED-THEORY-NAMES MAINW) (CREATE-THEORY-MENU MAINW) (FORMAT PW "Theories merged")))))(DEFUN MY-CREATE-TBRECORD (ALIST) (PROG ((ELTS ALIST) (TI (IL:CREATE IL:TABLEITEM))) LABEL (COND ((NULL ELTS) (RETURN TI)) (T (LET* ((PAIR (CAR ELTS)) (PROP (CAR PAIR)) (VALUE (CDR PAIR))) (CASE PROP (SELECTED (SET-MENU TI IL:TISELECTED VALUE)) (DELETED (SET-MENU TI IL:TIDELETED VALUE)) (UNDELETABLE (SET-MENU TI IL:TIUNDELETABLE VALUE)) (UNSELECTABLE (SET-MENU TI IL:TIUNSELECTABLE VALUE)) (DATA (SET-MENU TI IL:TIDATA VALUE)) (T (SET-MENU TI IL:TIDATA (APPEND (IL:FETCH IL:TIDATA IL:OF TI) (LIST PROP VALUE))))) (SETF ELTS (CDR ELTS)) (GO LABEL))))))(DEFUN PRINT-TB-ITEMS (BROWSER ITEM WINDOW) (IL:DSPXPOSITION 10 WINDOW) (SETF *PRINT-PRETTY* NIL) (FORMAT WINDOW "~S~%%" (GET-TB-PROPERTY ITEM (QUOTE THEORY-NAME))) (SETF *PRINT-PRETTY* T))(DEFUN PROMPTREAD (PROMPTSTRING WINDOW SAMELINE?) (PROG (NEWVALUE (MAINWINDOW (IL:WINDOWPROP WINDOW (QUOTE IL:MAINWINDOW)))) (IL:RESETLST (IL:RESETSAVE (IL:TTYDISPLAYSTREAM (OR WINDOW IL:PROMPTWINDOW))) (IL:RESETSAVE (IL:TTY.PROCESS (IL:THIS.PROCESS))) (IL:CLRPROMPT) (IL:RESETSAVE (IL:PRINTLEVEL 4 3)) (FORMAT T "~A: " PROMPTSTRING) (IL:CLEARBUF T T) (IL:* IL:; "clear tty buffer because it sometimes has stuff left.") (IL:ALLOW.BUTTON.EVENTS) (UNWIND-PROTECT (SETF NEWVALUE (CAR (IL:ERSETQ (IL:TTYINREAD T T)))))) (RETURN NEWVALUE)))(DEFUN SAVE-DEVEL-THEORY (MAINWINDOW) (LET ((PW (OR (CAR (IL:GETWINDOWPROP MAINWINDOW (QUOTE IL:PROMPTWINDOW))) (IL:GETPROMPTWINDOW MAINWINDOW)))) (DO ((TI-SELECTED (PROGN (IL:CLEARW PW) (IL:TB.COLLECT.ITEMS (IL:GETWINDOWPROP MAINWINDOW (QUOTE IL:TABLEBROWSER)) (QUOTE IL:SELECTED))) (CDR TI-SELECTED))) ((NULL TI-SELECTED) (FORMAT PW "done")) (PROG ((THEORY-NAME (GET-TB-PROPERTY (CAR TI-SELECTED) (QUOTE THEORY-NAME))) (THEORY (GET-TB-PROPERTY (CAR TI-SELECTED) (QUOTE THEORY)))) (WITH-OPEN-FILE (FILE (MERGE-PATHNAMES (MAKE-PATHNAME :NAME THEORY-NAME :TYPE (QUOTE LGC))) :DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :IF-DOES-NOT-EXIST :CREATE) (LET ((PREDS (IL:SORT (ALL-PREDS THEORY))) (SAS (IL:SORT (ALL-SAS THEORY)))) (PROGN (IL:CLEARW PW) (FORMAT PW "Saving ~A" THEORY-NAME) (FORMAT FILE "~S~%%" THEORY-NAME) (FORMAT FILE "~D~%%" (LENGTH SAS)) (DO ((SA-NAME SAS (CDR SA-NAME))) ((NULL SA-NAME) NIL) (PROGN (FORMAT PW ".") (FORMAT FILE "~S ~S ~%%" (CAR SA-NAME) (GETHASH (CAR SA-NAME) THEORY)))) (FORMAT FILE "~D~%%" (LENGTH PREDS)) (DO ((PRED-NAME PREDS (CDR PRED-NAME))) ((NULL PRED-NAME) NIL) (PROGN (FORMAT PW ".") (FORMAT FILE "~S ~S ~%%" (CAR PRED-NAME) (GETHASH (CAR PRED-NAME) THEORY)))))))))))(DEFUN SHOW-PROFILE (WINDOW) (LET ((PW (IL:GETPROMPTWINDOW WINDOW))) (IL:CLEARW PW) (FORMAT PW "~%%Mode: ~A /Unifier: ~A /Solver: ~A /Values: ~A" (IL:GETWINDOWPROP WINDOW (QUOTE IL:MODE)) (IL:GETWINDOWPROP WINDOW (QUOTE IL:UNIFY)) (IL:GETWINDOWPROP WINDOW (QUOTE IL:SOLVE)) (NOT (IL:GETWINDOWPROP WINDOW (QUOTE IL:TRUTH-VALUE-ONLY))))))(DEFUN SOLVE-DEBUGGER (TREE FORMULA CLAUSES WINDOW) (COND ((TRACINGP WINDOW (QUOTE SOLVE)) (IL:* IL:;; "This is the part for debugging:  the main features of the language are shown to the user  in specified windows") (FORMAT (IL:GETWINDOWPROP WINDOW (QUOTE IL:SOLVE-WINDOW)) "Formula is ~A,~%%clauses are ~A,~%%conjs are ~A~%%~%%" FORMULA CLAUSES (CONJ (AND-LEVEL TREE))) (AND (DRIBBLEP WINDOW (QUOTE SOLVE)) (FORMAT (IL:GETWINDOWPROP (IL:GETWINDOWPROP WINDOW (QUOTE IL:SOLVE-WINDOW)) (QUOTE IL:TYPESCRIPTSTREAM)) "Formula is ~A,~%%clauses are ~A,~%%conjs are ~A~%%~%%" FORMULA CLAUSES (CONJ (AND-LEVEL TREE)))))))(DEFUN START-PROVING (CONJS LINE) (IN-PACKAGE (QUOTE USER)) (LET* ((*VARIABLES-COUNTER* 0) (SELECTED-TIS (IL:TB.COLLECT.ITEMS (IL:GETWINDOWPROP LOGIC-WINDOW (QUOTE IL:TABLEBROWSER)) (QUOTE IL:SELECTED))) (THEORIES (APPEND (LIST (QUOTE *BACKGROUND-THEORY*)) (GET-LIST-PROP SELECTED-TIS (QUOTE THEORY-NAME)))) (TREE (MAKE-TREE (MAKE-AND-NODE CONJS NIL THEORIES) NIL)) (TRUTH-VALUE-ONLY (IL:GETWINDOWPROP LOGIC-WINDOW (QUOTE IL:TRUTH-VALUE-ONLY))) RESULT NEXT-OR) (DECLARE (SPECIAL *VARIABLES-COUNTER*)) (PROG NIL JUMP (SETF RESULT (LOGIC-PROVE TREE LOGIC-WINDOW)) (COND ((NULL RESULT) (IL:* IL:; "The proof is failed")) (T (CASE (IL:GETWINDOWPROP LOGIC-WINDOW (QUOTE IL:MODE)) (IL:FIRST (OR (AND TRUTH-VALUE-ONLY (PROGN (FORMAT T "~A~%%" T) T)) (FORMAT T "~S~%%" (LOOKUP CONJS (UNIFICATION-ENV (AND-LEVEL RESULT)))))) (IL:ALL (OR (AND TRUTH-VALUE-ONLY (PROGN (FORMAT T "~A~%%" T) T)) (PROGN (FORMAT T "~S~%%" (LOOKUP CONJS (UNIFICATION-ENV (AND-LEVEL RESULT)))) T)) (SETF NEXT-OR (FIRST (OR-LEVELS RESULT))) (SETF TREE (SOLVE (NEW-TREE RESULT NEXT-OR) (FORMULA-OR NEXT-OR) (CLAUSES-OR NEXT-OR))) (GO JUMP)) (IL:INTERACTIVE (OR (AND TRUTH-VALUE-ONLY (PROGN (FORMAT T "~A~%%" T) T)) (PROGN (FORMAT T "~S~%%" (LOOKUP CONJS (UNIFICATION-ENV (AND-LEVEL RESULT)))) T)) (FORMAT T "More? ") (AND (Y-OR-N-P) (PROGN (SETF NEXT-OR (FIRST (OR-LEVELS RESULT))) (SETF TREE (SOLVE (NEW-TREE RESULT NEXT-OR) (FORMULA-OR NEXT-OR) (CLAUSES-OR NEXT-OR))) (GO JUMP))))))))) T)(DEFUN UNIFY-DEBUGGER (PATT DAT ENV WINDOW) (IL:* IL:;; " This part is devoted to debugging, on the window and on the file") (LET* ((TRACE-WINDOW (IL:GETWINDOWPROP WINDOW (QUOTE IL:UNIFY-WINDOW))) (DRIBBLE? (DRIBBLEP WINDOW (QUOTE UNIFY))) (STREAM (AND DRIBBLE? (IL:GETWINDOWPROP TRACE-WINDOW (QUOTE IL:TYPESCRIPTSTREAM))))) (FORMAT TRACE-WINDOW "~%%Unifying ~A ~%%with ~A~%%in ~A~%%" PATT DAT ENV) (AND DRIBBLE? (FORMAT STREAM "~%%Unifying ~A ~%%with ~A~%%in ~A~%% " PATT DAT ENV))))(IL:ADDTOVAR IL:BackgroundMenuCommands ("Logic" (QUOTE (IL:ADD.PROCESS (QUOTE (LOGIC-DEVELOPER)))) "Open a window on logic programming environment"))(IL:RPAQQ *LOGIC-MENU-ITEMS* (("Show profile" SHOW-PROFILE "Show the profile on env") ("Truth value only" TRUTH-VALUE "The proof returns only T or NIL" (IL:SUBITEMS ("All values " ALL-VALUES "Returns the goal with all the variables"))) ("Show(Axiom)" SHOW-AXIOM "Shows definition of an axiom" (IL:SUBITEMS ("Show SA" SHOW-SA "Shows definition of a semantic attachment"))) ("Edit(Axiom)" EDIT-AXIOM "Edits the specified axiom" (IL:SUBITEMS ("Edit SA" EDIT-SA "Edits the specified SA"))) ("Delete(Axiom)" DELETE-AXIOM "Deletes the specified axiom" (IL:SUBITEMS ("Delete SA" DELETE-SA "Deletes the specified semantic attachment"))) ("Set Mode(First)" SET-MODE "Set mode of demonstration" (IL:SUBITEMS ("First" FIRST "Stops at first solution reached") ("All" ALL "Finds out all solutions") ("Interactive" INTERACTIVE "Ask user to continue"))) ("Trace unifier" TRACE-UNIFIER "Trace the unifier" (IL:SUBITEMS ("No trace" NOTRACE-UNIFIER "Do not trace unifier"))) ("Trace solver" TRACE-SOLVER "Trace the solver" (IL:SUBITEMS ("No trace" NOTRACE-SOLVER "Do not trace solver"))) ("Create theory" CREATE-THEORY "Creates new theory") ("Delete theory" DELETE-THEORY "Deletes the labelled theories" (IL:SUBITEMS ("Expunge deleted theories" EXPUNGE "Expunged deleted theories") ("Undelete theories" UNDELETE "Undelete theories"))) ("Merge theories" MERGE-THEORIES "Merges the selected theories") ("Load theory" LOAD-THEORY "Prompts user for theory to load") ("Save theory" SAVE-THEORY "Saves selected theories") ("Erase env" ERASE "Erases all the environment") ("Exit" EXIT "Closes development window")))(IL:RPAQQ *LOGIC-RELEASE-NUMBER* "1.3")(IL:RPAQQ *LOGIC-CLOSE-ON-COMPLETION-FLG* T)(IL:RPAQQ IL:BackgroundMenu NIL)(IL:RPAQQ IL:LogicMiddleMenu NIL)(IL:RPAQQ IL:LogicMiddleMenuCommands ((DRIBBLE (QUOTE Dribble) "Dribbles on file")))(IL:FILESLOAD IL:TABLEBROWSER)(IL:DATATYPE IL:TABLEBROWSER ((IL:TBREADY IL:FLAG) (NIL 7 IL:FLAG) (IL:TBITEMS IL:POINTER) (IL:TB#ITEMS IL:WORD) (IL:TB#DELETED IL:WORD) (IL:TB#LINESPERITEM IL:WORD) (IL:TBFIRSTSELECTEDITEM IL:WORD) (IL:TBLASTSELECTEDITEM IL:WORD) (NIL IL:WORD) (IL:TBMAXXPOS IL:WORD) (IL:TBFONTHEIGHT IL:WORD) (IL:TBFONTASCENT IL:WORD) (IL:TBFONTDESCENT IL:WORD) (IL:TBWINDOW IL:POINTER) (IL:TBLOCK IL:POINTER) (IL:TBUSERDATA IL:POINTER) (IL:TBFONT IL:POINTER) (IL:TBEXTENT IL:POINTER) (IL:TBUPDATEFROMHERE IL:POINTER) (IL:TBCOLUMNS IL:POINTER) (IL:TBPRINTFN IL:POINTER) (IL:TBCOPYFN IL:POINTER) (IL:TBFONTCHANGEFN IL:POINTER) (IL:TBCLOSEFN IL:POINTER) (IL:TBAFTERCLOSEFN IL:POINTER) (IL:TBTITLEEVENTFN IL:POINTER) (IL:TBAFTEREXPUNGEFN IL:POINTER) (IL:TBORIGIN IL:POINTER) (NIL IL:POINTER) (NIL IL:POINTER) (NIL IL:POINTER)))(IL:DATATYPE IL:TABLEITEM ((IL:TISELECTED IL:FLAG) (IL:TIDELETED IL:FLAG) (IL:TIUNDELETABLE IL:FLAG) (IL:TIUNSELECTABLE IL:FLAG) (IL:TIUNCOPYSELECTABLE IL:FLAG) (NIL 3 IL:FLAG) (IL:TIDATA IL:POINTER) (IL:TI# IL:WORD) (NIL IL:WORD)))(IL:/DECLAREDATATYPE (QUOTE IL:TABLEBROWSER) (QUOTE (IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:POINTER IL:WORD IL:WORD IL:WORD IL:WORD IL:WORD IL:WORD IL:WORD IL:WORD IL:WORD IL:WORD IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER)) (QUOTE ((IL:TABLEBROWSER 0 (IL:FLAGBITS . 0)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 16)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 32)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 48)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 64)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 80)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 96)) (IL:TABLEBROWSER 0 (IL:FLAGBITS . 112)) (IL:TABLEBROWSER 0 IL:POINTER) (IL:TABLEBROWSER 2 (IL:BITS . 15)) (IL:TABLEBROWSER 3 (IL:BITS . 15)) (IL:TABLEBROWSER 4 (IL:BITS . 15)) (IL:TABLEBROWSER 5 (IL:BITS . 15)) (IL:TABLEBROWSER 6 (IL:BITS . 15)) (IL:TABLEBROWSER 7 (IL:BITS . 15)) (IL:TABLEBROWSER 8 (IL:BITS . 15)) (IL:TABLEBROWSER 9 (IL:BITS . 15)) (IL:TABLEBROWSER 10 (IL:BITS . 15)) (IL:TABLEBROWSER 11 (IL:BITS . 15)) (IL:TABLEBROWSER 12 IL:POINTER) (IL:TABLEBROWSER 14 IL:POINTER) (IL:TABLEBROWSER 16 IL:POINTER) (IL:TABLEBROWSER 18 IL:POINTER) (IL:TABLEBROWSER 20 IL:POINTER) (IL:TABLEBROWSER 22 IL:POINTER) (IL:TABLEBROWSER 24 IL:POINTER) (IL:TABLEBROWSER 26 IL:POINTER) (IL:TABLEBROWSER 28 IL:POINTER) (IL:TABLEBROWSER 30 IL:POINTER) (IL:TABLEBROWSER 32 IL:POINTER) (IL:TABLEBROWSER 34 IL:POINTER) (IL:TABLEBROWSER 36 IL:POINTER) (IL:TABLEBROWSER 38 IL:POINTER) (IL:TABLEBROWSER 40 IL:POINTER) (IL:TABLEBROWSER 42 IL:POINTER) (IL:TABLEBROWSER 44 IL:POINTER) (IL:TABLEBROWSER 46 IL:POINTER))) (QUOTE 48))(IL:/DECLAREDATATYPE (QUOTE IL:TABLEITEM) (QUOTE (IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:FLAG IL:POINTER IL:WORD IL:WORD)) (QUOTE ((IL:TABLEITEM 0 (IL:FLAGBITS . 0)) (IL:TABLEITEM 0 (IL:FLAGBITS . 16)) (IL:TABLEITEM 0 (IL:FLAGBITS . 32)) (IL:TABLEITEM 0 (IL:FLAGBITS . 48)) (IL:TABLEITEM 0 (IL:FLAGBITS . 64)) (IL:TABLEITEM 0 (IL:FLAGBITS . 80)) (IL:TABLEITEM 0 (IL:FLAGBITS . 96)) (IL:TABLEITEM 0 (IL:FLAGBITS . 112)) (IL:TABLEITEM 0 IL:POINTER) (IL:TABLEITEM 2 (IL:BITS . 15)) (IL:TABLEITEM 3 (IL:BITS . 15)))) (QUOTE 4))(IL:RPAQQ IL:TB.LEFT.MARGIN 8)(IL:CONSTANTS IL:TB.LEFT.MARGIN)(IL:PUTPROPS IL:LOGIC-DEVEL IL:COPYRIGHT ("ROBERTO GHISLANZONI" 1987 1988))NIL