return inherited::let_op(i);
}
+ex clifford::subs(const exmap & m, unsigned options) const
+{
+ ex subsed = inherited::subs(m, options);
+ if(is_a<clifford>(subsed)) {
+ ex prevmetric = ex_to<clifford>(subsed).metric;
+ ex newmetric = prevmetric.subs(m, options);
+ if(!are_ex_trivially_equal(prevmetric, newmetric)) {
+ clifford c = ex_to<clifford>(subsed);
+ c.metric = newmetric;
+ subsed = c;
+ }
+ }
+ return subsed;
+}
+
int clifford::compare_same_type(const basic & other) const
{
GINAC_ASSERT(is_a<clifford>(other));
// Slashed vectors are actually stored as a clifford object with the
// vector as its base expression and a (dummy) index that just serves
// for storing the space dimensionality
- return clifford(e, varidx(0, dim), 0, rl);
+
+ static varidx xi((new symbol)->setflag(status_flags::dynallocated), dim),
+ chi((new symbol)->setflag(status_flags::dynallocated), dim);
+ return clifford(e, varidx(0, dim), indexed((new minkmetric)->setflag(status_flags::dynallocated), symmetric2(), xi, chi), rl, true);
}
/** Check whether a given tinfo key (as returned by return_type_tinfo()