Artifact 92587815d8e2d5250271b600ccd5ffe887779345ef9256719d91e8eb1657b68d:
- Executable file
r38/packages/redlog/dcfsfmisc.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: 4097) [annotate] [blame] [check-ins using] [more...]
% ---------------------------------------------------------------------- % $Id: dcfsfmisc.red,v 1.2 2004/04/26 16:24:12 dolzmann Exp $ % ---------------------------------------------------------------------- % Copyright (c) 2004 Thomas Sturm % ---------------------------------------------------------------------- % $Log: dcfsfmisc.red,v $ % Revision 1.2 2004/04/26 16:24:12 dolzmann % Procedure dcfsf_varlat now returns a list of variables in the sense of logic % and not a list of kernels containing these variables. % % Revision 1.1 2004/03/22 12:31:49 sturm % Initial check-in. % Mostly copied from acfsf. % Includes Diploma Thesis by Kacem plus wrapper for this. % % ---------------------------------------------------------------------- lisp << fluid '(dcfsf_misc_rcsid!* dcfsf_misc_copyright!*); dcfsf_misc_rcsid!* := "$Id: dcfsfmisc.red,v 1.2 2004/04/26 16:24:12 dolzmann Exp $"; dcfsf_misc_copyright!* := "Copyright (c) 2004 T. Sturm" >>; module dcfsfmisc; % Differentially closed field standard form miscellaneous. Submodule % of [dcfsf]. procedure dcfsf_termprint(u); % Differentialally closed field term print. [u] is a % term. The return value is not specified. Prints [u] AM-like. << sqprint !*f2q u where !*nat=nil; ioto_prin2 nil >>; procedure dcfsf_clnegrel(r,flg); % Differentialally closed field conditionally logically negate % relation. [r] is a relation. Returns for [flg] equal to [nil] a % relation $R$ such that for terms $t_1$, $t_2$ we have % $R(t_1,t_2)$ equivalent to $\lnot [r](t_1,t_2)$. Returns [r] for % non-[nil] [flg]. if flg then r else dcfsf_lnegrel r; procedure dcfsf_lnegrel(r); % Differentialally closed field logically negate relation. [r] is a % relation. Returns a relation $R$ such that for terms $t_1$, $t_2$ % we have $R(t_1,t_2)$ equivalent to $\lnot [r](t_1,t_2)$. if r eq 'equal then 'neq else if r eq 'neq then 'equal else rederr {"dcfsf_lnegrel: unknown operator ",r}; procedure dcfsf_fctrat(atf); % Differentialally closed field factorize atomic formula. [atf] is an % atomic formula. Returns the factorized left hand side of [atf] as % a list $(...,(f_i . n_i),...)$, where the $f_i$ are the factors % as SF's and the $n_i$ are the corresponding multiplicities. The % integer content is dropped. cdr fctrf dcfsf_arg2l atf; procedure dcfsf_negateat(f); % Differentialally closed field negate atomic formula. [f] is an % atomic formula. Returns an atomic formula equivalent to $\lnot % [f]$. dcfsf_mkn(dcfsf_lnegrel dcfsf_op f,dcfsf_argn f); procedure dcfsf_varlat(atform); % Differentialally closed field variable list of atomic formula. % [atform] is an atomic formula. Returns the set of variables % contained in [atform] as a list. dcfsf_varlat1 kernels dcfsf_arg2l(atform); procedure dcfsf_varlat1(kl); foreach k in kl join if pairp k and car k eq 'd then {cadr k} else {k}; procedure dcfsf_varsubstat(atf,new,old); % Differentialally closed substitute variable for variable in atomic % formula. [atf] is an atomic formula; [new] and [old] are % variables. Returns [atf] with [new] substituted for [old]. dcfsf_0mk2(dcfsf_op atf,numr subf(dcfsf_arg2l atf,{old . new})); procedure dcfsf_ordatp(a1,a2); % Differentialally closed field order predicate for atomic formulas. % [a1] and [a2] are atomic formulas. Returns [T] iff [a1] is % strictly less than [a2] wrt. some syntactical ordering; returns % [nil] else. The specification that [nil] is returned if % $[a1]=[a2]$ is used in [dcfsf_subsumeandcut]. begin scalar lhs1,lhs2; lhs1 := dcfsf_arg2l a1; lhs2 := dcfsf_arg2l a2; if lhs1 neq lhs2 then return ordp(lhs1,lhs2); return dcfsf_ordrelp(dcfsf_op a1,dcfsf_op a2) end; procedure dcfsf_ordrelp(r1,r2); % Differentialally closed field standard form relation order % predicate. [r1] and [r2] are dcfsf-relations. Returns a [T] iff % $[r1] <= [r2]$. r1 eq r2 or r1 eq 'equal; endmodule; % [dcfsfmisc] end; % of file