![]() |
Cadabra
Computer algebra system for field theory problems
|
Decompose a product of tensors by applying Young projectors.
#include <decompose_product.hh>
Public Member Functions | |
| decompose_product (const Kernel &, Ex &tr) | |
| virtual bool | can_apply (iterator) override |
| virtual result_t | apply (iterator &) override |
| Public Member Functions inherited from cadabra::Algorithm | |
| Algorithm (const Kernel &, Ex &) | |
| Initialise the algorithm with a reference to the expression tree, but do not yet do anything with this tree. | |
| virtual | ~Algorithm () |
| void | set_progress_monitor (ProgressMonitor *) |
| Provide the algorithm with a ProgressMonitor object on which to register (nested) progress information, to be reported out-of-band to a client. | |
| result_t | apply_generic (bool deep=true, bool repeat=false, unsigned int depth=0) |
| The main entry points for running algorithms, which traverse the tree post-order ('child before parent'). | |
| result_t | apply_generic (iterator &, bool deep, bool repeat, unsigned int depth) |
| result_t | apply_pre_order (bool repeat=false) |
| Apply algorithm with alternative traversal: starting from the top node, traverse the tree pre-order ('parent before child') and once the algorithm acts at a given node, do not traverse the subtree below anymore. | |
| bool | check_consistency (iterator) const |
| Given an expression top node, check index consistency. | |
| bool | check_index_consistency (iterator) const |
| bool | check_degree_consistency (iterator) const |
| Given an expression top node, check differential form degree consistency. | |
| void | report_progress (const std::string &, int todo, int done, int count=2) |
| index_iterator | begin_index (iterator it) const |
| index_iterator | end_index (iterator it) const |
| unsigned int | number_of_indices (iterator it) |
| std::string | get_index_set_name (iterator it) const |
| bool | rename_replacement_dummies (iterator, bool still_inside_algo=false) |
| Rename the dummies in the sub-tree starting with head at the given iterator. | |
| void | pushup_multiplier (iterator) |
| Determines whether the indicated node is 'like a factor in a product'. | |
| template<class BinaryPredicate> | |
| unsigned int | intersection_number (sibling_iterator, sibling_iterator, sibling_iterator, sibling_iterator, BinaryPredicate) const |
| Determine the number of elements in the first range which also occur in the second range. | |
| void | node_zero (iterator) |
| void | node_one (iterator) |
| void | node_integer (iterator, int) |
| Public Member Functions inherited from cadabra::ExManip | |
| ExManip (const Kernel &, Ex &) | |
| bool | prod_wrap_single_term (iterator &) |
| Take a single non-product node in a sum and wrap it in a product node, so it can be handled on the same footing as a proper product. | |
| bool | prod_unwrap_single_term (iterator &) |
| bool | sum_wrap_single_term (iterator &) |
| bool | sum_unwrap_single_term (iterator &) |
| bool | is_single_term (iterator) |
| Is the indicated node a single term in an expression? | |
| bool | is_nonprod_factor_in_prod (iterator) |
| void | force_node_wrap (iterator &, std::string) |
| Wrap a term in a product or sum in a node with indicated name, irrespective of its parent (it usually makes more sense to call the safer prod_wrap_single_term or sum_wrap_single_term above). | |
Private Types | |
| typedef young_project::name_tab_t | sibtab_t |
| typedef yngtab::tableaux< sibtab_t > | sibtabs_t |
| typedef young_project::pos_tab_t | numtab_t |
| typedef yngtab::tableaux< numtab_t > | numtabs_t |
Private Member Functions | |
| const Indices * | indices_equivalent (iterator it) const |
| Test that all indices on the product are equivalent, that is, have the same Indices property attached to them. | |
| void | fill_asym_ranges (TableauBase::tab_t &tab, int offset, combin::range_vector_t &) |
| 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) |
Private Attributes | |
| iterator | f1 |
| iterator | f2 |
| const TableauBase * | t1 |
| const TableauBase * | t2 |
| TableauBase::tab_t | t1tab |
| TableauBase::tab_t | t2tab |
| const Indices * | ind1 |
| const Indices * | ind2 |
| unsigned int | dim |
| yngtab::filled_tableau< iterator > | nt1 |
| yngtab::filled_tableau< iterator > | nt2 |
| combin::range_vector_t | asym_ranges |
Additional Inherited Members | |
| Public Types inherited from cadabra::Algorithm | |
| typedef std::set< Ex, tree_exact_less_obj > | Ex_set_t |
| typedef Ex::result_t | result_t |
| Public Types inherited from cadabra::ExManip | |
| typedef Ex::iterator_base | iterator_base |
| typedef Ex::iterator | iterator |
| typedef Ex::post_order_iterator | post_order_iterator |
| typedef Ex::sibling_iterator | sibling_iterator |
| Static Public Member Functions inherited from cadabra::Algorithm | |
| static unsigned int | number_of_indices (const Properties &, iterator it) |
| static unsigned int | number_of_direct_indices (iterator it) |
| static bool | is_termlike (iterator) |
| Determines whether the indicated node is 'like a term in a sum'. | |
| Public Attributes inherited from cadabra::Algorithm | |
| bool | interrupted |
| unsigned int | number_of_calls |
| unsigned int | number_of_modifications |
| bool | suppress_normal_output |
| bool | discard_command_node |
| Stopwatch | index_sw |
| Stopwatch | get_dummy_sw |
| Stopwatch | report_progress_stopwatch |
| Protected Attributes inherited from cadabra::Algorithm | |
| bool | traverse_ldots |
| Protected Attributes inherited from cadabra::ExManip | |
| const Kernel & | kernel |
| Ex & | tr |
|
private |
|
private |
|
private |
|
private |
|
overridevirtual |
++ntt; ++ntt; ++ntt;
break;
|
overridevirtual |
|
private |
Test that all indices on the product are equivalent, that is, have the same Indices property attached to them.
Return this property.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |