Artifact a89b63f192c0a1670807777c8854684d7994d164a1a1bde62e236b219e7b927a:
- Executable file
r37/packages/assist/cantens.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: 3934) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/packages/assist/cantens.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: 3934) [annotate] [blame] [check-ins using]
module cantens; % header module tested for REDUCE 3.6 and 3.7. create!-package('(cantens ctintro auxitens gentens spaces partitns checkind opertens contrtns), '(contrib cantens)); % This package requires ASSIST and DUMMY. % % ************************************************************************ % % Authors: H. Caprasse <hubert.caprasse@ulg.ac.be> % : F. Fontaine <pascal.fontaine@ulg.ac.be> % % Version and Date: Version 1.11, 15 January 1999. % %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % ***** This package is delivered for free. % % ***** No modification on it may be made without % % ***** due permission of H. Caprasse. % %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % % Revision history to versions 1.0 and 1.1: % 15/12/98 : Flag 'LOOSE' removed on DEPENDS in order to % : allow its redefinition in CSL. % : SIMPTENSOR, NUM_EPSI_NON_EUCLID, MATCH_KVALUE and % : SIMPMETRIC modified. % : MAKE_PARTIC_TENS no longer protected by the 'reserved' % : flag. % : Modifications to SYMTREE_ZEROP and DV_SKEL2FACTOR1 % : to allow proper compilation under CSL. %% ****************************************************************** % % an extension of the REDUCE command 'depend': % patch to extend depend to tensors... remflag('(depends),'loose); % because of csl symbolic procedure depends(u,v); if null u or numberp u or numberp v then nil else if u=v then u else if atom u and u memq frlis!* then t %to allow the most general pattern matching to occur; else if (lambda x; x and ldepends(cdr x,v)) assoc(u,depl!*) then t else if not atom u and idp car u and get(car u,'dname) then (if depends!-fn then apply2(depends!-fn,u,v) else nil) where (depends!-fn = get(car u,'domain!-depends!-fn)) else if not atom u and (ldepends(cdr u,v) or depends(car u,v)) then t else if atom v or idp car v and get(car v,'dname) then nil % else dependsl(u,cdr v); else if flagp(u,'tensor) and pairp v and u=car v then t else nil; % an "importation" from EXCALC: symbolic procedure permp!:(u,v); % True if v is an even permutation of u NIl otherwise. if null u then t else if car u = car v then permp!:(cdr u,cdr v) else not permp!:(cdr u,subst(car v,car u,cdr v)); % global and fluid variables defined. lisp remflag(list 'minus,'intfn); global '(dimex!* sgn!* signat!* spaces!* numindxl!* pair_id_num!*) ; lisp (pair_id_num!*:= '((!0 . 0) (!1 . 1) (!2 . 2) (!3 . 3) (!4 . 4) (!5 . 5) (!6 . 6) (!7 . 7) (!8 . 8) (!9 . 9) (!10 . 10) (!11 . 11) (!12 . 12) (!13 . 13))); fluid('(dummy_id!* g_dvnames epsilon!*)); % g_dvnames is a vector. switch onespace; !*onespace:=t; % working inside a unique space is the default. % Various smacros smacro procedure id_cov u; % to get the covariant identifier % u is the output of get_n_index cadr u; smacro procedure id_cont u; % to get the contravariant identifier % u is the output of get_n_index u; smacro procedure careq_tilde u; eqcar(u,'!~); smacro procedure careq_minus u; eqcar(u,'minus); smacro procedure lowerind u; list('minus,u); smacro procedure raiseind u; cadr u; smacro procedure id_switch_variance u; if eqcar(u,'minus) then cadr u else list ('minus, u); smacro procedure get!-impfun!-args u; % Get dependencies of id u. cdr assoc(u,depl!*); endmodule; end;