25 using ExpanderEmitter = std::function<bool(csl::Expr const&)>;
26 using ExpanderReceiver = std::function<bool(csl::Expr const&, csl::Expr const&)>;
28 bool haveCommonIndices(
34 void PartialExpandImplementation(
36 ExpanderEmitter
const &isEmitter,
37 ExpanderReceiver
const &isReceiver
40 void PartialExpandImplementation(
42 ExpanderEmitter
const &isEmitter,
43 ExpanderEmitter
const &isReceiver
46 inline void PartialExpandImplementation(
48 ExpanderEmitter
const &isEmitterReceiver
51 return PartialExpandImplementation(
60 ExpanderEmitter
const &isEmitter,
61 ExpanderReceiver
const &isReceiver
65 ExpanderEmitter
const &isEmitter,
66 ExpanderReceiver
const &isReceiver
68 Expr DeepPartialExpanded(
70 ExpanderEmitter
const &isEmitter,
71 ExpanderReceiver
const &isReceiver
73 void DeepPartialExpand(
75 ExpanderEmitter
const &isEmitter,
76 ExpanderReceiver
const &isReceiver
79 inline Expr PartialExpanded(
81 ExpanderEmitter
const &isEmitter,
82 ExpanderEmitter
const &isReceiver
85 return PartialExpanded(
89 return bool(isReceiver(a));
92 inline void PartialExpand(
94 ExpanderEmitter
const &isEmitter,
95 ExpanderEmitter
const &isReceiver
102 return bool(isReceiver(a));
105 inline Expr DeepPartialExpanded(
107 ExpanderEmitter
const &isEmitter,
108 ExpanderEmitter
const &isReceiver
111 return DeepPartialExpanded(
115 return bool(isReceiver(a));
118 inline void DeepPartialExpand(
120 ExpanderEmitter
const &isEmitter,
121 ExpanderEmitter
const &isReceiver
128 return bool(isReceiver(a));
132 inline Expr PartialExpanded(
134 ExpanderEmitter
const &isEmitter
137 return PartialExpanded(init, isEmitter, isEmitter);
139 inline void PartialExpand(
141 ExpanderEmitter
const &isEmitter
144 PartialExpand(init, isEmitter, isEmitter);
146 inline Expr DeepPartialExpanded(
148 ExpanderEmitter
const &isEmitter
151 return DeepPartialExpanded(init, isEmitter, isEmitter);
153 inline void DeepPartialExpand(
155 ExpanderEmitter
const &isEmitter
158 DeepPartialExpand(init, isEmitter, isEmitter);
Namespace for csl library.
Definition: abreviation.h:34
Vector space that has a name, a dimension, a delta tensor and possibly a non-trivial metric...
Definition: space.h:64
Base classes for all exprs in the program.
Expression type/.
Definition: abstract.h:1573