@@ -1,440 +1,440 @@ -REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... - - -% test of DUMMY package version 1.0 running in REDUCE 3.5 -% DATE: 15 February 1994 -% Authors: A. Dresse -% H. Caprasse -% -% Case of commuting operator: -% -operator co1,co2; - - - -% declare dummy indices - -% first syntax : base -% -dummy_base dv; - - -dv - - -% dummy indices are dv1, dv2, dv3, ... - -exp := co2(dv2)*co2(dv2)$ - - -c_exp := canonical(exp); - - - 2 -c_exp := co2(dv1) - - -exp := dv2*co2(dv2)*co2(dv2)$ - - -c_exp := canonical(exp); - - - 2 -c_exp := co2(dv1) *dv1 - - -exp := c_exp * co1(dv3); - - - 2 -exp := co1(dv3)*co2(dv1) *dv1 - -c_exp := canonical(exp); - - - 2 -c_exp := co1(dv2)*co2(dv1) *dv1 - - -% aliases for dummy indices -% -dummy_names i,j,k; - - -t - -canonical(c_exp); - - - 2 -co1(j)*co2(i) *i - - -% remove dummy_names -clear_dummy_names; - - -t - - -% Case of anticommuting operators -% -operator ao1, ao2; - - -anticom ao1, ao2; - - -% product of anticommuting operators with FREE indices -a_exp := ao1(s1)*ao1(s2) - ao1(s2)*ao1(s1); - - -a_exp := ao1(s1)*ao1(s2) - ao1(s2)*ao1(s1) - -a_exp := canonical(a_exp); - - -a_exp := 2*ao1(s1)*ao1(s2) - - -% the indices are summed upon, i.e. are DUMMY indices -a_exp := ao1(dv1)*ao1(dv2)$ - - -canonical(a_exp); - - -0 - - -a_exp := ao1(dv1)*ao1(dv2) - ao1(dv2)*ao1(dv1); - - -a_exp := ao1(dv1)*ao1(dv2) - ao1(dv2)*ao1(dv1) - -a_exp := canonical(a_exp); - - -a_exp := 0 - - -a_exp := ao1(dv2,dv3)*ao2(dv1,dv2)$ - - -a_exp := canonical(a_exp); - - -a_exp := ao1(dv2,dv1)*ao2(dv1,dv3) - - -a_exp := ao1(dv1)*ao1(dv3)*ao2(dv3)*ao2(dv1)$ - - -a_exp := canonical(a_exp); - - -a_exp := - ao1(dv1)*ao1(dv2)*ao2(dv1)*ao2(dv2) - - -% Case of non commuting operators -% -operator no1, no2, no3; - - -noncom no1, no2, no3; - - - -n_exp := no3(dv2)*no2(dv3)*no1(dv1) + no3(dv3)*no2(dv1)*no1(dv2) - + no3(dv1)*no2(dv2)*no1(dv3); - - -n_exp := no3(dv1)*no2(dv2)*no1(dv3) + no3(dv2)*no2(dv3)*no1(dv1) - - + no3(dv3)*no2(dv1)*no1(dv2) - - -n_exp:=canonical n_exp; - - -n_exp := 3*no3(dv3)*no2(dv2)*no1(dv1) - - -% Case of mixed commutation properties -% *** -% The example below displays a restriction of the package i.e -% The non commuting operators are ASSUMED to COMMUTE with the -% anticommuting operators. -% *** -exp := co1(dv1)*ao1(dv2,dv1,dv4)*no1(dv1,dv5)*co2(dv3)*ao1(dv1,dv3); - - -exp := co1(dv1)*co2(dv3)*(ao1(dv2,dv1,dv4)*no1(dv1,dv5)*ao1(dv1,dv3)) - -canonical(exp); - - - - co1(dv1)*co2(dv2)*ao1(dv2,dv1)*ao1(dv4,dv1,dv3)*no1(dv5,dv1) - - -exp := c_exp * a_exp * no3(dv2)*no2(dv3)*no1(dv1); - - - 2 -exp := - co1(dv2)*co2(dv1) *dv1*ao1(dv1)*ao1(dv2)*ao2(dv1)*ao2(dv2)*no3(dv2) - - *no2(dv3)*no1(dv1) - -can_exp := canonical(exp); - - - 2 -can_exp := - co1(dv2)*co2(dv1) *dv1*ao1(dv1)*ao1(dv2)*ao2(dv1)*ao2(dv2) - - *no3(dv2)*no2(dv3)*no1(dv1) - - -% Case of internal symmetries of operators -% -operator as1, as2; - - -antisymmetric as1, as2; - - -clear_dummy_base ; - - -t - -dummy_base s; - - -s - -% First a non trivial expression: - -asc_exp:=as1(s1,s2)*as1(s1,s3)*as1(s3,s4)*co1(s3)*co1(s4)+ - 2*as1(s1,s2)*as1(s1,s3)*as1(s3,s4)*co1(s2)*co1(s4)$ - - - -canonical asc_exp; - - - - as1(s1,s2)*as1(s1,s3)*as1(s3,s4)*co1(s3)*co1(s4) - -% Second simple illustrative examples: - -clear_dummy_base; - - -t - -dummy_base dv; - - -dv - - -exp1 := ao1(dv1)*ao1(dv2)$ - - -canonical(exp1); - - -0 - - -exp2 := as1(dv1,dv2)$ - - -canonical(exp2); - - -0 - - -canonical(exp1*exp2); - - - - as1(dv1,dv2)*ao1(dv1)*ao1(dv2) - - -canonical(as1(dv1,dv2)*as2(dv2,dv1)); - - - - as1(dv1,dv2)*as2(dv1,dv2) - - -operator ss1, ss2; - - -symmetric ss1, ss2; - - - -exp := ss1(dv1,dv2)*ss2(dv1,dv2) - ss1(dv2,dv3)*ss2(dv2,dv3); - - -exp := ss1(dv1,dv2)*ss2(dv1,dv2) - ss1(dv2,dv3)*ss2(dv2,dv3) - -canonical(exp); - - -0 - - -exp := as1(dv1,dv2)*as1(dv3,dv4)*as1(dv1,dv4); - - -exp := as1(dv1,dv2)*as1(dv1,dv4)*as1(dv3,dv4) - -canonical(exp); - - -0 - -% Indeed the result is equal to half the sum given below: -% -exp + sub(dv2 = dv3, dv3 = dv2, dv1 = dv4, dv4 = dv1, exp); - - -0 - - -exp1 := as2(dv3,dv2)*as1(dv3,dv4)*as1(dv1,dv2)*as1(dv1,dv4); - - -exp1 := - as1(dv1,dv2)*as1(dv1,dv4)*as1(dv3,dv4)*as2(dv2,dv3) - -canonical(exp1); - - -as1(dv1,dv2)*as1(dv1,dv3)*as1(dv3,dv4)*as2(dv2,dv4) - - -exp2 := as2(dv1,dv4)*as1(dv1,dv3)*as1(dv2,dv4)*as1(dv2,dv3); - - -exp2 := as1(dv1,dv3)*as1(dv2,dv3)*as1(dv2,dv4)*as2(dv1,dv4) - -canonical(exp2); - - -as1(dv1,dv2)*as1(dv1,dv3)*as1(dv3,dv4)*as2(dv2,dv4) - - -canonical(exp1-exp2); - - -0 - - -% Indeed: -% -exp2 - sub(dv1 = dv3, dv2 = dv1, dv3 = dv4, dv4 = dv2, exp1); - - -0 - - -% Declare the internal symmetry properties of the Riemann tensor -% -operator r; - - -symtree (r, {!+, {!-, 1, 2}, {!-, 3, 4}}); - - - -canonical( r(x,y,z,t) ); - - - - r(t,z,x,y) - -canonical( r(x,y,t,z) ); - - -r(t,z,x,y) - -canonical( r(t,z,y,x) ); - - - - r(t,z,x,y) - - -exp := r(dv1, dv2, dv3, dv4) * r(dv2, dv1, dv4, dv3)$ - - -canonical(exp); - - - 2 -r(dv4,dv3,dv2,dv1) - - -exp := r(dv1, dv2, dv3, dv4) * r(dv1, dv3, dv2, dv4)$ - - -canonical(exp); - - -r(dv4,dv2,dv3,dv1)*r(dv4,dv3,dv2,dv1) - - -dummy_names i,j,k,l; - - -t - -canonical(exp); - - -r(l,j,k,i)*r(l,k,j,i) - - -exp := r(i,j,k,l)*ao1(i,j)*ao1(k,l); - - -exp := r(i,j,k,l)*ao1(i,j)*ao1(k,l) - -canonical(exp); - - -0 - - -exp := r(k,i,l,j)*as1(k,i)*as1(k,j); - - -exp := as1(i,k)*as1(j,k)*r(k,i,l,j) - -canonical(exp); - - - - as1(i,j)*as1(i,k)*r(l,j,k,i) - - -clear_dummy_names; - - -t - clear_dummy_base; - - -t - - -exp := co1(dv3)$ - - -c_exp := canonical(exp); - - -c_exp := co1(dv3) - - -end; -(TIME: dummy 420 420) +REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... + + +% test of DUMMY package version 1.0 running in REDUCE 3.5 +% DATE: 15 February 1994 +% Authors: A. Dresse +% H. Caprasse +% +% Case of commuting operator: +% +operator co1,co2; + + + +% declare dummy indices + +% first syntax : base +% +dummy_base dv; + + +dv + + +% dummy indices are dv1, dv2, dv3, ... + +exp := co2(dv2)*co2(dv2)$ + + +c_exp := canonical(exp); + + + 2 +c_exp := co2(dv1) + + +exp := dv2*co2(dv2)*co2(dv2)$ + + +c_exp := canonical(exp); + + + 2 +c_exp := co2(dv1) *dv1 + + +exp := c_exp * co1(dv3); + + + 2 +exp := co1(dv3)*co2(dv1) *dv1 + +c_exp := canonical(exp); + + + 2 +c_exp := co1(dv2)*co2(dv1) *dv1 + + +% aliases for dummy indices +% +dummy_names i,j,k; + + +t + +canonical(c_exp); + + + 2 +co1(j)*co2(i) *i + + +% remove dummy_names +clear_dummy_names; + + +t + + +% Case of anticommuting operators +% +operator ao1, ao2; + + +anticom ao1, ao2; + + +% product of anticommuting operators with FREE indices +a_exp := ao1(s1)*ao1(s2) - ao1(s2)*ao1(s1); + + +a_exp := ao1(s1)*ao1(s2) - ao1(s2)*ao1(s1) + +a_exp := canonical(a_exp); + + +a_exp := 2*ao1(s1)*ao1(s2) + + +% the indices are summed upon, i.e. are DUMMY indices +a_exp := ao1(dv1)*ao1(dv2)$ + + +canonical(a_exp); + + +0 + + +a_exp := ao1(dv1)*ao1(dv2) - ao1(dv2)*ao1(dv1); + + +a_exp := ao1(dv1)*ao1(dv2) - ao1(dv2)*ao1(dv1) + +a_exp := canonical(a_exp); + + +a_exp := 0 + + +a_exp := ao1(dv2,dv3)*ao2(dv1,dv2)$ + + +a_exp := canonical(a_exp); + + +a_exp := ao1(dv2,dv1)*ao2(dv1,dv3) + + +a_exp := ao1(dv1)*ao1(dv3)*ao2(dv3)*ao2(dv1)$ + + +a_exp := canonical(a_exp); + + +a_exp := - ao1(dv1)*ao1(dv2)*ao2(dv1)*ao2(dv2) + + +% Case of non commuting operators +% +operator no1, no2, no3; + + +noncom no1, no2, no3; + + + +n_exp := no3(dv2)*no2(dv3)*no1(dv1) + no3(dv3)*no2(dv1)*no1(dv2) + + no3(dv1)*no2(dv2)*no1(dv3); + + +n_exp := no3(dv1)*no2(dv2)*no1(dv3) + no3(dv2)*no2(dv3)*no1(dv1) + + + no3(dv3)*no2(dv1)*no1(dv2) + + +n_exp:=canonical n_exp; + + +n_exp := 3*no3(dv3)*no2(dv2)*no1(dv1) + + +% Case of mixed commutation properties +% *** +% The example below displays a restriction of the package i.e +% The non commuting operators are ASSUMED to COMMUTE with the +% anticommuting operators. +% *** +exp := co1(dv1)*ao1(dv2,dv1,dv4)*no1(dv1,dv5)*co2(dv3)*ao1(dv1,dv3); + + +exp := co1(dv1)*co2(dv3)*(ao1(dv2,dv1,dv4)*no1(dv1,dv5)*ao1(dv1,dv3)) + +canonical(exp); + + + - co1(dv1)*co2(dv2)*ao1(dv2,dv1)*ao1(dv4,dv1,dv3)*no1(dv5,dv1) + + +exp := c_exp * a_exp * no3(dv2)*no2(dv3)*no1(dv1); + + + 2 +exp := - co1(dv2)*co2(dv1) *dv1*ao1(dv1)*ao1(dv2)*ao2(dv1)*ao2(dv2)*no3(dv2) + + *no2(dv3)*no1(dv1) + +can_exp := canonical(exp); + + + 2 +can_exp := - co1(dv2)*co2(dv1) *dv1*ao1(dv1)*ao1(dv2)*ao2(dv1)*ao2(dv2) + + *no3(dv2)*no2(dv3)*no1(dv1) + + +% Case of internal symmetries of operators +% +operator as1, as2; + + +antisymmetric as1, as2; + + +clear_dummy_base ; + + +t + +dummy_base s; + + +s + +% First a non trivial expression: + +asc_exp:=as1(s1,s2)*as1(s1,s3)*as1(s3,s4)*co1(s3)*co1(s4)+ + 2*as1(s1,s2)*as1(s1,s3)*as1(s3,s4)*co1(s2)*co1(s4)$ + + + +canonical asc_exp; + + + - as1(s1,s2)*as1(s1,s3)*as1(s3,s4)*co1(s3)*co1(s4) + +% Second simple illustrative examples: + +clear_dummy_base; + + +t + +dummy_base dv; + + +dv + + +exp1 := ao1(dv1)*ao1(dv2)$ + + +canonical(exp1); + + +0 + + +exp2 := as1(dv1,dv2)$ + + +canonical(exp2); + + +0 + + +canonical(exp1*exp2); + + + - as1(dv1,dv2)*ao1(dv1)*ao1(dv2) + + +canonical(as1(dv1,dv2)*as2(dv2,dv1)); + + + - as1(dv1,dv2)*as2(dv1,dv2) + + +operator ss1, ss2; + + +symmetric ss1, ss2; + + + +exp := ss1(dv1,dv2)*ss2(dv1,dv2) - ss1(dv2,dv3)*ss2(dv2,dv3); + + +exp := ss1(dv1,dv2)*ss2(dv1,dv2) - ss1(dv2,dv3)*ss2(dv2,dv3) + +canonical(exp); + + +0 + + +exp := as1(dv1,dv2)*as1(dv3,dv4)*as1(dv1,dv4); + + +exp := as1(dv1,dv2)*as1(dv1,dv4)*as1(dv3,dv4) + +canonical(exp); + + +0 + +% Indeed the result is equal to half the sum given below: +% +exp + sub(dv2 = dv3, dv3 = dv2, dv1 = dv4, dv4 = dv1, exp); + + +0 + + +exp1 := as2(dv3,dv2)*as1(dv3,dv4)*as1(dv1,dv2)*as1(dv1,dv4); + + +exp1 := - as1(dv1,dv2)*as1(dv1,dv4)*as1(dv3,dv4)*as2(dv2,dv3) + +canonical(exp1); + + +as1(dv1,dv2)*as1(dv1,dv3)*as1(dv3,dv4)*as2(dv2,dv4) + + +exp2 := as2(dv1,dv4)*as1(dv1,dv3)*as1(dv2,dv4)*as1(dv2,dv3); + + +exp2 := as1(dv1,dv3)*as1(dv2,dv3)*as1(dv2,dv4)*as2(dv1,dv4) + +canonical(exp2); + + +as1(dv1,dv2)*as1(dv1,dv3)*as1(dv3,dv4)*as2(dv2,dv4) + + +canonical(exp1-exp2); + + +0 + + +% Indeed: +% +exp2 - sub(dv1 = dv3, dv2 = dv1, dv3 = dv4, dv4 = dv2, exp1); + + +0 + + +% Declare the internal symmetry properties of the Riemann tensor +% +operator r; + + +symtree (r, {!+, {!-, 1, 2}, {!-, 3, 4}}); + + + +canonical( r(x,y,z,t) ); + + + - r(t,z,x,y) + +canonical( r(x,y,t,z) ); + + +r(t,z,x,y) + +canonical( r(t,z,y,x) ); + + + - r(t,z,x,y) + + +exp := r(dv1, dv2, dv3, dv4) * r(dv2, dv1, dv4, dv3)$ + + +canonical(exp); + + + 2 +r(dv4,dv3,dv2,dv1) + + +exp := r(dv1, dv2, dv3, dv4) * r(dv1, dv3, dv2, dv4)$ + + +canonical(exp); + + +r(dv4,dv2,dv3,dv1)*r(dv4,dv3,dv2,dv1) + + +dummy_names i,j,k,l; + + +t + +canonical(exp); + + +r(l,j,k,i)*r(l,k,j,i) + + +exp := r(i,j,k,l)*ao1(i,j)*ao1(k,l); + + +exp := r(i,j,k,l)*ao1(i,j)*ao1(k,l) + +canonical(exp); + + +0 + + +exp := r(k,i,l,j)*as1(k,i)*as1(k,j); + + +exp := as1(i,k)*as1(j,k)*r(k,i,l,j) + +canonical(exp); + + + - as1(i,j)*as1(i,k)*r(l,j,k,i) + + +clear_dummy_names; + + +t + clear_dummy_base; + + +t + + +exp := co1(dv3)$ + + +c_exp := canonical(exp); + + +c_exp := co1(dv3) + + +end; +(TIME: dummy 420 420)