Cadabra
Computer algebra system for field theory problems
Loading...
Searching...
No Matches
cadabra::eliminate_converter Class Referenceabstract

#include <eliminate_metric.hh>

Inheritance diagram for cadabra::eliminate_converter:
cadabra::Algorithm cadabra::IndexClassifier cadabra::eliminate_metric cadabra::eliminate_vielbein

Public Member Functions

 eliminate_converter (const Kernel &, Ex &, Ex &, bool)
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::IndexClassifier
 IndexClassifier (const Kernel &)
void fill_index_position_map (Ex::iterator, const index_map_t &, index_position_map_t &) const
 Routines to find and classify all indices in an expression, taking into account sums and products.
void fill_map (index_map_t &, Ex::sibling_iterator, Ex::sibling_iterator) const
void print_classify_indices (std::ostream &, Ex::iterator) const
void determine_intersection (index_map_t &one, index_map_t &two, index_map_t &target, bool move_out=false) const
 Determine those indices in 'two' which have a name which is identical to an index name occurring in 'one'.
void classify_add_index (Ex::iterator it, index_map_t &ind_free, index_map_t &ind_dummy) const
void classify_indices_up (Ex::iterator, index_map_t &ind_free, index_map_t &ind_dummy) const
 Classify indices bottom-up, that is, given a node, it goes up the tree to find.
void classify_indices (Ex::iterator, index_map_t &ind_free, index_map_t &ind_dummy) const
 Classify indices top-down, that is, finds the free indices and all dummy index pairs used in the full subtree below a given node.
int max_numbered_name_one (const std::string &nm, const index_map_t *one) const
int max_numbered_name (const std::string &, const index_map_t *m1, const index_map_t *m2=0, const index_map_t *m3=0, const index_map_t *m4=0, const index_map_t *m5=0) const
Ex get_dummy (const list_property *, const index_map_t *m1, const index_map_t *m2=0, const index_map_t *m3=0, const index_map_t *m4=0, const index_map_t *m5=0) const
Ex get_dummy (const list_property *, Ex::iterator) const
Ex get_dummy (const list_property *, Ex::iterator, Ex::iterator) const
bool index_in_set (Ex, const index_map_t *) const
void dumpmap (std::ostream &, const index_map_t &) const
index_map_t::iterator find_modulo_parent_rel (Ex::iterator it, index_map_t &imap) const
 Find an index in the set, not taking into account index position.

Protected Member Functions

virtual bool is_conversion_object (iterator) const =0

Private Member Functions

bool handle_one_index (index_iterator i1, index_iterator i2, iterator fit, sibling_iterator objs)
 See if the conversion which turns index 'i1' into index 'i2' can be applied on the expression, so that it gets a factor in the expression closer to the 'fit' form.

Private Attributes

Ex preferred
index_map_t ind_dummy
index_map_t ind_free
bool redundant

Additional Inherited Members

Public Types inherited from cadabra::Algorithm
typedef Ex::iterator iterator
typedef Ex::post_order_iterator post_order_iterator
typedef Ex::sibling_iterator sibling_iterator
typedef Ex::result_t result_t
Public Types inherited from cadabra::IndexClassifier
typedef std::multimap< Ex, Ex::iterator, tree_exact_less_for_indexmap_objindex_map_t
 A map from a pattern to the position where it occurs in the tree.
typedef std::map< Ex::iterator, int, Ex::iterator_base_less > index_position_map_t
 A map from the position of each index to the sequential index.
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::IndexClassifier
const Kernelkernel

Constructor & Destructor Documentation

◆ eliminate_converter()

eliminate_converter::eliminate_converter ( const Kernel & k,
Ex & e,
Ex & pref,
bool redun )

Member Function Documentation

◆ apply()

Algorithm::result_t eliminate_converter::apply ( iterator & it)
overridevirtual

◆ can_apply()

bool eliminate_converter::can_apply ( iterator it)
overridevirtual

◆ handle_one_index()

bool eliminate_converter::handle_one_index ( index_iterator i1,
index_iterator i2,
iterator fit,
sibling_iterator objs )
private

See if the conversion which turns index 'i1' into index 'i2' can be applied on the expression, so that it gets a factor in the expression closer to the 'fit' form.

The two indices 'i1' and 'i2' are objects on the convertor object, so they need to appear with opposite parent rel in the expression if they are to be applied (if the index position type is 'fixed').

◆ is_conversion_object()

virtual bool cadabra::eliminate_converter::is_conversion_object ( iterator ) const
protectedpure virtual

Member Data Documentation

◆ ind_dummy

index_map_t cadabra::eliminate_converter::ind_dummy
private

◆ ind_free

index_map_t cadabra::eliminate_converter::ind_free
private

◆ preferred

Ex cadabra::eliminate_converter::preferred
private

◆ redundant

bool cadabra::eliminate_converter::redundant
private

The documentation for this class was generated from the following files: