Dear All, I just learnt from hep-th/9507133 that it is possible and useful to consider Clifford algebras defined from a bilinear form which is not necessarily symmetric. Since present code never actually uses a symmetry of defined metrics I propose to drop such an assumption from anywhere. I include the corresponding patch (which accumulates my previous submission for idx.cpp as well). Best, Vladimir -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk -- www: http://maths.leeds.ac.uk/~kisilv/ Index: doc/tutorial/ginac.texi =================================================================== RCS file: /home/cvs/GiNaC/doc/tutorial/ginac.texi,v retrieving revision 1.159 diff -r1.159 ginac.texi 3179,3180c3179,3181 < @samp{e~i e~j + e~j e~i = B(i, j)} for some symmetric matrix (@code{metric}) < @math{B(i, j)}. Such generators are created by the function ---
@samp{e~i e~j + e~j e~i = B(i, j)} for some matrix (@code{metric}) @math{B(i, j)}, which may be non-symmetric. Such generators are created by the function Index: ginac/clifford.h =================================================================== RCS file: /home/cvs/GiNaC/ginac/clifford.h,v retrieving revision 1.53 diff -r1.53 clifford.h 194c194 < * @param metr Metric (should be of class tensmetric or a derived class, or a symmetric matrix)
* @param metr Metric (should be of class tensmetric or a derived class, or a matrix) 291c291 < * @param metr Metric (should be of class tensmetric or a derived class, or a symmetric matrix)
* @param metr Metric (should be of class tensmetric or a derived class, or a matrix) Index: ginac/clifford.cpp =================================================================== RCS file: /home/cvs/GiNaC/ginac/clifford.cpp,v retrieving revision 1.82 diff -r1.82 clifford.cpp 158c158 < return indexed(metric, symmetric2(), i, j);
return indexed(metric, i, j); 1114c1114 < S = S * e.op(j).subs(lst(ex_to<varidx>(*it) == ival, ex_to<varidx>(*it).toggle_variance() == ival), subs_options::no_pattern);
S = S * e.op(j).subs(lst(ex_to<varidx>(*it) == ival), subs_options::no_pattern);
Index: ginac/idx.cpp =================================================================== RCS file: /home/cvs/GiNaC/ginac/idx.cpp,v retrieving revision 1.62 diff -r1.62 idx.cpp 508a509,519
// Auxiliary comparison which does not mind the variance of indices struct idx_is_less : public std::binary_function<ex, ex, bool> { bool operator() (const ex &lh, const ex &rh) const { if (is_a<varidx>(lh)) return (lh.compare(rh) < 0) && (lh.compare(ex_to<varidx>(rh).toggle_variance()) < 0); else return lh.compare(rh) < 0; } };
528c539 < shaker_sort(v.begin(), v.end(), ex_is_less(), ex_swap()); ---
shaker_sort(v.begin(), v.end(), idx_is_less(), ex_swap());
Hi! On Fri, Nov 12, 2004 at 01:42:20PM +0000, Vladimir Kisil wrote:
Since present code never actually uses a symmetry of defined metrics I propose to drop such an assumption from anywhere.
Ok, but this would cause any metric tensors arising from contractions etc. to have no (specified) symmetry, thereby possibly preventing simplifications if the metric was in fact symmetric. Maybe GiNaC needs to also store the symmetry of the metric somewhere. Bye, Christian -- / Physics is an algorithm \/ http://www.uni-mainz.de/~bauec002/
"CB" == Christian Bauer <Christian.Bauer@uni-mainz.de> writes:
CB> Ok, but this would cause any metric tensors arising from CB> contractions etc. to have no (specified) symmetry, thereby CB> possibly preventing simplifications if the metric was in fact CB> symmetric. Maybe GiNaC needs to also store the symmetry of the CB> metric somewhere. A user can specify a symmetry explicitly if its presents. I added a note on it into documentation. Please see the attached patch which accumulate the discussion. -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk -- www: http://maths.leeds.ac.uk/~kisilv/ Index: doc/tutorial/ginac.texi =================================================================== RCS file: /home/cvs/GiNaC/doc/tutorial/ginac.texi,v retrieving revision 1.159 diff -r1.159 ginac.texi 3179,3180c3179,3181 < @samp{e~i e~j + e~j e~i = B(i, j)} for some symmetric matrix (@code{metric}) < @math{B(i, j)}. Such generators are created by the function ---
@samp{e~i e~j + e~j e~i = B(i, j)} for some matrix (@code{metric}) @math{B(i, j)}, which may be non-symmetric. Such generators are created by the function 3193a3195,3203
If the matrix @math{B(i, j)} is in fact symmetric you may prefer to create the Clifford algebra units with a call like that
@example ex e = clifford_unit(mu, indexed(B, sy_symm(), i, j)); @end example
since this may yield some further automatic simplifications. Index: ginac/clifford.h =================================================================== RCS file: /home/cvs/GiNaC/ginac/clifford.h,v retrieving revision 1.53 diff -r1.53 clifford.h 194c194 < * @param metr Metric (should be of class tensmetric or a derived class, or a symmetric matrix)
* @param metr Metric (should be of class tensmetric or a derived class, or a matrix) 291c291 < * @param metr Metric (should be of class tensmetric or a derived class, or a symmetric matrix)
* @param metr Metric (should be of class tensmetric or a derived class, or a matrix) Index: ginac/clifford.cpp =================================================================== RCS file: /home/cvs/GiNaC/ginac/clifford.cpp,v retrieving revision 1.82 diff -r1.82 clifford.cpp 158c158 < return indexed(metric, symmetric2(), i, j);
return indexed(metric, i, j);
participants (2)
-
Christian Bauer
-
Vladimir Kisil