123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- % ----------------------------------------------------------------------
- % $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
|