Cadabra
Computer algebra system for field theory problems
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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:58
Basic storage class for symbolic mathemematical expressions.
Definition: Storage.hh:130
iterator f2
Definition: decompose_product.hh:37
void fill_asym_ranges(TableauBase::tab_t &tab, int offset, combin::range_vector_t &)
Definition: decompose_product.cc:74
virtual result_t apply(iterator &) override
Definition: decompose_product.cc:94
const Indices * ind2
Definition: decompose_product.hh:40
young_project::name_tab_t sibtab_t
Definition: decompose_product.hh:22
Definition: Indices.hh:8
Definition: YoungTab.hh:81
yngtab::tableaux< sibtab_t > sibtabs_t
Definition: decompose_product.hh:23
Definition: young_project.hh:9
decompose_product(const Kernel &, Ex &tr)
Definition: decompose_product.cc:10
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
combin::range_vector_t asym_ranges
Definition: decompose_product.hh:44
yngtab::filled_tableau< iterator > nt2
Definition: decompose_product.hh:42
unsigned int dim
Definition: decompose_product.hh:41
yngtab::tableaux< numtab_t > numtabs_t
Definition: decompose_product.hh:25
Definition: TableauBase.hh:9
Ex::iterator iterator
Definition: Algorithm.hh:69
virtual bool can_apply(iterator) override
Definition: decompose_product.cc:29
const TableauBase * t1
Definition: decompose_product.hh:38
Decompose a product of tensors by applying Young projectors.
Definition: decompose_product.hh:14
const TableauBase * t2
Definition: decompose_product.hh:38
iterator f1
Definition: decompose_product.hh:37
const Indices * ind1
Definition: decompose_product.hh:40
TableauBase::tab_t t2tab
Definition: decompose_product.hh:39
young_project::pos_tab_t numtab_t
Definition: decompose_product.hh:24
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:265
TableauBase::tab_t t1tab
Definition: decompose_product.hh:39
std::vector< range_t > range_vector_t
Definition: Combinatorics.hh:40
Definition: Kernel.hh:15
result_t
Keeping track of what algorithms have done to this expression.
Definition: Storage.hh:149
Ex & tr
Definition: Algorithm.hh:146
yngtab::filled_tableau< iterator > nt1
Definition: decompose_product.hh:42