Artifact 3aa8ff1f4af64824eea6645894e5cca030aa3cacab842118e5de21f15d4dac98:
- Executable file
r38/packages/redlog/cl.red
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 11715) [annotate] [blame] [check-ins using] [more...]
% ---------------------------------------------------------------------- % $Id: cl.red,v 1.14 2002/08/23 12:32:10 dolzmann Exp $ % ---------------------------------------------------------------------- % Copyright (c) 1995-1999 Andreas Dolzmann and Thomas Sturm % ---------------------------------------------------------------------- % $Log: cl.red,v $ % Revision 1.14 2002/08/23 12:32:10 dolzmann % Added local quantifier elimination. % % Revision 1.13 2002/05/28 13:21:54 sturm % Added black box rl_fbqe() and corresponding switch rlqefb. % That is, for ofsf, rlqe uses rlcad in case of failure now. % % Revision 1.12 1999/04/13 13:17:57 sturm % Reformatted one comment. % % Revision 1.11 1999/04/12 09:28:16 sturm % Updated comments for exported procedures. % % Revision 1.10 1999/03/22 17:06:09 dolzmann % Changed copyright information. % Added list of exported procedures. % Reformatted comments. % % Revision 1.9 1997/08/24 16:18:47 sturm % Added service rl_surep with black box rl_multsurep. % Added service rl_siaddatl. % % Revision 1.8 1996/10/23 11:27:11 dolzmann % Added switch rlqevarsel and corresponding code. % % Revision 1.7 1996/10/10 10:14:27 sturm % Added missing fluid declarations for !*rlsipw and !*rlsipo. % % Revision 1.6 1996/10/01 10:24:53 reiske % Introduced new service rltnf and related code. % % Revision 1.5 1996/09/26 11:50:23 dolzmann % Fixed a bug in the fluid declaration. % % Revision 1.4 1996/09/05 11:11:06 dolzmann % Added fluid declaration of !*rlbnfsac and !*rltabib. % % Revision 1.3 1996/06/07 08:52:14 sturm % Do not load assist anymore. % % Revision 1.2 1996/05/12 08:26:33 sturm % Loading rltools now. % Introduced new internal switch !*rlqegen. % % Revision 1.1 1996/03/22 10:31:24 sturm % Moved and split. % % Revision 1.22 1996/03/18 15:45:28 sturm % Moved rl operator classification predicates to module rl. % Added procedure cl_atml. % Changed specification of rl_fctrat: the content is dropped now. % % Revision 1.21 1996/03/11 13:18:40 reiske % Added procedures cl_apnf, cl_freevp, and cl_ifacl. % % Revision 1.20 1996/03/10 13:03:15 sturm % Changed verbosity output in module clqe. Added switch !*rlqeheu and % corresponding code there. % % Revision 1.19 1996/03/10 12:48:12 dolzmann % Minor changes in module clbnf. Procedures use the rl access functions % for handling strict normal forms. % Bug fixes in code for order theoretical subsumption and cut. % % Revision 1.18 1996/03/09 13:34:07 sturm % Added procedure cl_matrix. % Modification in module clqe: pass the ans flag to the "trygauss" black % box, and via cl_qeatal to the "translat" black box. % Turned black box smacros into procedures and moved them to the module % rl changing the "cl_" prefixes into "rl_" accordingly. % Moved the constructors and access functions to module rl. They have % been renamed according to the following table: % cl_op -> rl_op % cl_arg1 -> rl_arg1 % cl_arg2l -> rl_arg2l % cl_arg2r -> rl_arg2r % cl_argn -> rl_argn % cl_var -> rl_var % cl_mat -> rl_mat % cl_constr1 -> rl_mk1 % cl_constr2 -> rl_mk2 % cl_constrn -> rl_mkn % cl_sconstrn -> rl_smkn % cl_constrq -> rl_mkq % Renamed the operator test predicates as follows: % cl_quantifierp -> cl_quap % cl_junctorp -> cl_junctp % cl_basboolopp -> cl_basbp % cl_extboolopp -> cl_extbp % cl_boolopp -> cl_boolp % cl_truthvalp -> cl_tvalp % cl_opp -> cl_cxp % Renamed formula test predicates: % cl_cop -> cl_cxfp % cl_atp -> cl_atfp % cl_atlp -> cl_atflp % % Revision 1.17 1996/03/04 17:00:56 sturm % Added loading of assist package. % Changes in module clqe: % Added black boxes updatr, transform. % Modified container data structure and added constructors and access % functions. % Modified QE code for handling answer transformations. % Made requantification work. % Renamed procedure cl_alist!-union to cl_alpunion. % % Revision 1.16 1996/03/04 13:08:55 dolzmann % Added switch !*rlbnfsac. % Removed switch !*rlbnfsm. % Addes black boxes sacat, sacatlp, bnfsimpl. % Added procedures cl_atlp, cl_ncflp, cl_dnfp, cl_cnfp, cl_bnfp. % Removed treatment of !*rlbnfsb in cl_gdnf. % Added procedure cl_sac. % % Revision 1.15 1996/02/28 13:13:29 sturm % Major changes in cl_atl. Now available: cl_atl, cl_atl1, cl_atml1. % % Revision 1.14 1996/02/26 12:34:43 sturm % Moved treatment of elimination failures from the black box translat to % cl_qeatal1. % % Revision 1.13 1996/02/18 13:48:47 sturm % Added theory to black boxes cl_translat and cl_varsel. % Added black box cl_trygauss. % Added switch !*rlqegsd and corresonding call to ofsf_gsd in QE, Dirty! % Removed superfluous scalars from cl_simpl1. % Major changes in module clqe: Added theory and prepared for quadratic % elimination. % % Revision 1.12 1996/02/18 12:35:28 dolzmann % Modified cl_gdnf: Turned on !*rlidentify in dependence on !*rlbnfsb. % Additionally, turned on !*rlsiso then. % % Revision 1.11 1995/11/16 08:03:56 sturm % Added extra parameter to cl_closure, cl_ex, and cl_all. % Modified module clqe: The all case is handled by explicit negation now. % Removed module clxr. % % Revision 1.10 1995/10/18 08:38:34 sturm % Added switches rlbnfsb, rlbnfsm, parameter rlsubsumption!*, and % respective code. % % Revision 1.9 1995/09/05 08:02:20 sturm % Reimplemented parts of smart simplification. Support for switches % rlsipo, rlsipw; fixed a bug in smart simplification of impl. % % Revision 1.8 1995/08/30 07:58:37 sturm % Added procedure cl_cop. % Changes in cl_simpl. Added parameter rl_smsimpl!-equiv1!*. % Renamed scalar help to hlp in cl_setrel for DOS compatibility. % Renamed procedure cl_qe!-atfal to cl_qeatal. % Added switch rlqepnf. % Started reimplementation of tableau methods (not available in AM). % % Revision 1.7 1995/08/08 10:12:05 sturm % Changes in smart simplification: Added treatment of quantifiers, % atomic formulas, impl, repl, and equiv. % % Revision 1.6 1995/08/02 07:42:29 sturm % Rewritten simplifier. % Changed copyright messages. % % Revision 1.5 1995/07/12 15:02:57 sturm % Major changes in module clbnf. % Added parameter function rl_ordatp!*. % Added identification of atomic formulas to cl_smsimpl. % Added procedure cl_identifyonoff and changed some local bindings of % !*rlidentify to applications of on1 and off1. % % Revision 1.4 1995/07/07 10:53:13 sturm % Removed remflag statement for load!-package. % Removed "_" in switch names, renamed switch rl_smsimpl to rlsism, % added switch rlqeans. % Changes cl_qe, added parameter function rl_qemkans!*. % Changed cl_pnf, its argument formula is now made positive first. % Removed cl_terpri and cl_prinf. % % Revision 1.3 1995/06/21 07:28:56 sturm % Removed module tri. % Adapted preceedence of not to REDUCE 3.6. % Removed declarations of non-used local variables. % Minor changes in verbosity output of module qe. % Commented create!-package out. % % Revision 1.2 1995/06/01 13:26:41 dolzmann % Rewritten procedure cl_gand!-col. Renamed switch rl_nocheck to % rl_sichk with opposite semantic. % Fixed a bug in cl_nnf1. % % Revision 1.1 1995/05/29 14:47:17 sturm % Initial check-in. % % ---------------------------------------------------------------------- lisp << fluid '(cl_rcsid!* cl_copyright!*); cl_rcsid!* := "$Id: cl.red,v 1.14 2002/08/23 12:32:10 dolzmann Exp $"; cl_copyright!* := "(c) 1995-1999 A. Dolzmann and T. Sturm" >>; module cl; % Common logic. Generic functions on first order formulas. This module % contains context independent code possibly addressing some black % boxes. create!-package('(cl clsimpl clbnf clnf clqe cltab clmisc),nil); load!-package 'rltools; exports cl_atfp,cl_cxfp,cl_atflp,cl_ncflp,cl_dnfp,cl_cnfp,cl_bnfp,cl_simpl, cl_sitheo,cl_ordp,cl_smcpknowl,cl_smrmknowl,cl_smupdknowl,cl_smmkatl, cl_smsimpl!-impl,cl_smsimpl!-equiv1,cl_siaddatl,cl_susimkatl,cl_susicpknowl, cl_susiupdknowl,cl_dnf,cl_cnf,cl_bnf!-cartprod,cl_bnfsimpl,cl_sacatlp, cl_sacat,cl_expand!-extbool,cl_nnf,cl_nnfnot,cl_pnf,cl_rename!-vars,cl_fvarl, cl_fvarl1,cl_bvarl,cl_bvarl1,cl_varl,cl_varl1,cl_apnf,cl_freevp,cl_tnf, cl_gqe,cl_gqea,cl_qe,cl_qea,cl_qeipo,cl_qews,cl_trygauss,cl_specelim,cl_tab, cl_atab,cl_itab,cl_gentheo,cl_apply2ats,cl_apply2ats1,cl_apply2ats2,cl_atnum, cl_f2ml,cl_atml,cl_atml1,cl_atl,cl_atl1,cl_identifyonoff,cl_ifacml, cl_ifacml1,cl_ifacl,cl_ifacl1,cl_matrix,cl_closure,cl_all,cl_ex,cl_flip, cl_cflip,cl_subfof,cl_termml,cl_termml1,cl_terml,cl_terml1,cl_struct, cl_ifstruct,cl_surep,cl_splt; imports rltools; fluid '(cl_identify!-atl!* cl_pal!* cl_lps!* cl_theo!* !*rlidentify !*rlsichk !*rlsism !*rlsiexpla !*rlbnfsm !*rlverbose !*rlsiidem !*rlsiso !*rlqepnf !*rlqedfs !*rlqeans !*rlqegsd !*rlqeheu !*rlqegen !*rlbnfsac !*rltabib !*rltnft !*rlsipw !*rlsipo !*rlqevarsel !*rlspgs !*rlsithok !*rlqefb !*rlqelocal); procedure cl_atfp(x); % Common logic atomic formula predicate. [x] is a formula. Returns % non-[nil] iff [x] is an atomic formula. not rl_cxp rl_op x; procedure cl_cxfp(x); % Common logic complex formula predicate. [x] is a formula. Returns % non-[nil] iff [x] is a complex, i.e. non-atomic, formula. rl_cxp rl_op x; procedure cl_atflp(fl); % Common logic atomic formula list predicate. [fl] is a list of % formulas. Returns [T] or [nil]. [T] is returned if and only if % [fl] is a list of atomic formulas. null fl or (cl_atfp car fl and cl_atflp cdr fl); procedure cl_ncflp(fl); % Common logic non-complex formula list predicate. [fl] is a list % of formulas. Returns [T] or [nil]. [T] is returned if and only if % [fl] is a list of atomic formulas and truth values. null fl or ((cl_atfp car fl or rl_tvalp car fl) and cl_ncflp cdr fl); procedure cl_dnfp(f); % Common logic disjunctive normal form predicate. [f] is a formula. % Returns [T] or [nil]. [T] is returned iff [f] is in disjunctive % normal form. (rl_tvalp f) or (cl_atfp f) or (rl_op f eq 'and and cl_ncflp rl_argn f) or ((rl_op f eq 'or) and cl_dnfp1 rl_argn f); procedure cl_dnfp1(fl); % Common logic disjunctive normal form predicate subroutine. [f] is % a formula. Returns [T] or [nil]. (null fl) or ((rl_tvalp car fl) or (cl_atfp car fl) or ((rl_op car fl eq 'and) and (cl_ncflp rl_argn car fl))) and (cl_dnfp1 cdr fl); procedure cl_cnfp(f); % Common logic conjunctive normal form predicate. [f] is a formula. % Returns [T] or [nil]. [T] is returned iff [f] is in conjunctive % normal form. (rl_tvalp f) or (cl_atfp f) or (rl_op f eq 'or and cl_ncflp rl_argn f) or ((rl_op f eq 'and) and cl_cnfp1 rl_argn f); procedure cl_cnfp1(fl); % Common logic conjunctive normal form predicate subroutine . [f] % is a formula. Returns [T] or [nil]. [T] is returned iff [f] is in % conjunctive normal form. (null fl) or ((rl_tvalp car fl) or (cl_atfp car fl) or ((rl_op car fl eq 'or) and (cl_ncflp rl_argn car fl))) and (cl_cnfp1 cdr fl); procedure cl_bnfp(f); % Common logic boolean normal form predicate. [f] is a formula. % Returns [T] or [nil]. [T] is returned iff [f] is in disjunctive % or conjunctive normal form. (rl_tvalp f) or (cl_atfp f) or (cl_ncflp rl_argn f) or ((rl_op f eq 'and) and cl_cnfp1 rl_argn f) or ((rl_op f eq 'or) and cl_dnfp1 rl_argn f); endmodule; % [cl] end; % of file