Rename *ll* and *ul* to ll and ul in in-interval
[maxima.git] / share / tensor / itensor3.dem
blob970b670054b22a0872bab8d2499866dc69a2bb03
1 /* 
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License as
4  * published by the Free Software Foundation; either version 2 of
5  * the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be
8  * useful, but WITHOUT ANY WARRANTY; without even the implied
9  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
10  * PURPOSE.  See the GNU General Public License for more details.
11  *
12  * Indicial tensor simplification and symmetries
13  */
15 if get('itensor,'version)=false then load(itensor);
17 ("Take a tensor s. Remove any symmetry rules")$
18 remsym(s,2,0);
19 exp:ishow(s([i,j],[])-s([j,i],[]))$
21 ("The canform function applies symmetry rules. None yet defined")$
22 ishow(canform(exp))$
24 ("We tell MAXIMA that s is symmetric using decsym")$
25 decsym(s,2,0,[sym(all)],[])$
26 canform(exp);
28 ("The flag allsym causes all tensors to be treated as symmetric")$
29 allsym:true;
30 canform(a([i,j],[])-a([j,i],[]));
32 ("But this setting can lead to incorrect results, so it's off by default")$
33 allsym:false;
35 ("The function rename can be used on dummy indices")$
36 exp:ishow(a([i,j1],[])*b([],[j1,k])+a([i,j2],[])*b([],[j2,k]))$
37 ishow(rename(exp))$
39 ("The variable idummyx controls the dummy name, icounter is the counter")$
40 idummyx:n;
41 ishow(rename(exp))$
43 ("To simplify tensor expressions, use rename, canform and canten")$
44 declare(e,constant);
45 ("In this example, we want to drop terms higher order in l")$
46 (ratfac:false,ratvars(l),ratweight(l,1),ratwtlvl:1);
47 remcomps(g);
48 imetric(g);
49 components(g([i,j],[]),e([i,j],[])+2*l*p([i,j],[]));
50 components(g([],[i,j]),e([],[i,j])-2*l*p([],[i,j]));
51 ishow(g([i,j],[]))$
52 ishow(g([],[i,j]))$
53 exp:ishow(icurvature([s,u,n],[y]))$
54 exp:ev(exp)$
55 ("Look the number of terms with nterms")$
56 nterms(exp);
57 ishow(canform(contract(rename(ratexpand(exp)))))$
59 /* End of demo -- comment line needed by MAXIMA to resume demo menu */