Cadabra
Computer algebra system for field theory problems
decompose_product.hh
Go to the documentation of this file.
1 
2 #pragma once
3 
6 #include "properties/Indices.hh"
7 
8 namespace cadabra {
9 
13 
14  class decompose_product : public Algorithm {
15  public:
16  decompose_product(const Kernel&, Ex& tr);
17 
18  virtual bool can_apply(iterator) override;
19  virtual result_t apply(iterator&) override;
20 
21  private:
26 
29  const Indices *indices_equivalent(iterator it) const;
30 
33  const TableauBase *tt, iterator ff,
34  int offset, const TableauBase::tab_t& thetab,
35  bool remove_traces);
36 
38  const TableauBase *t1, *t2;
40  const Indices *ind1, *ind2;
41  unsigned int dim;
43 
45  };
46 
47  }
Base class for all algorithms, containing generic routines and in particular the logic for index clas...
Definition: Algorithm.hh:59
Ex::iterator iterator
Definition: Algorithm.hh:70
Ex & tr
Definition: Algorithm.hh:151
Basic storage class for symbolic mathemematical expressions.
Definition: Storage.hh:142
result_t
Keeping track of what algorithms have done to this expression.
Definition: Storage.hh:164
Definition: Indices.hh:8
Definition: Kernel.hh:15
Definition: TableauBase.hh:9
Decompose a product of tensors by applying Young projectors.
Definition: decompose_product.hh:14
young_project::name_tab_t sibtab_t
Definition: decompose_product.hh:22
young_project::pos_tab_t numtab_t
Definition: decompose_product.hh:24
yngtab::filled_tableau< iterator > nt2
Definition: decompose_product.hh:42
const TableauBase * t2
Definition: decompose_product.hh:38
yngtab::filled_tableau< iterator > nt1
Definition: decompose_product.hh:42
void fill_asym_ranges(TableauBase::tab_t &tab, int offset, combin::range_vector_t &)
Definition: decompose_product.cc:74
virtual bool can_apply(iterator) override
Definition: decompose_product.cc:29
decompose_product(const Kernel &, Ex &tr)
Definition: decompose_product.cc:10
void project_onto_initial_symmetries(Ex &rep, iterator rr, young_project &yp, const TableauBase *tt, iterator ff, int offset, const TableauBase::tab_t &thetab, bool remove_traces)
Definition: decompose_product.cc:266
iterator f2
Definition: decompose_product.hh:37
TableauBase::tab_t t1tab
Definition: decompose_product.hh:39
yngtab::tableaux< numtab_t > numtabs_t
Definition: decompose_product.hh:25
TableauBase::tab_t t2tab
Definition: decompose_product.hh:39
unsigned int dim
Definition: decompose_product.hh:41
combin::range_vector_t asym_ranges
Definition: decompose_product.hh:44
virtual result_t apply(iterator &) override
Definition: decompose_product.cc:94
const Indices * ind1
Definition: decompose_product.hh:40
iterator f1
Definition: decompose_product.hh:37
yngtab::tableaux< sibtab_t > sibtabs_t
Definition: decompose_product.hh:23
const Indices * indices_equivalent(iterator it) const
Test that all indices on the product are equivalent, that is, have the same Indices property attached...
Definition: decompose_product.cc:15
const Indices * ind2
Definition: decompose_product.hh:40
const TableauBase * t1
Definition: decompose_product.hh:38
Definition: young_project.hh:9
Definition: YoungTab.hh:350
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Adjform.cc:83
std::vector< range_t > range_vector_t
Definition: Combinatorics.hh:40