File: adjform.cc

package info (click to toggle)
cadabra2 2.4.3.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,796 kB
  • sloc: ansic: 133,450; cpp: 92,064; python: 1,530; javascript: 203; sh: 184; xml: 182; objc: 53; makefile: 51
file content (28 lines) | stat: -rw-r--r-- 676 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "cadabra2++.hh"
#include <iostream>

using namespace cadabra;
using namespace cadabra::cpplib;

int main(int, char**)
{
	Kernel k(true);
	pprint_enable_utf8();
    //{\mu,\nu}::Indices(vector).
    //tr{#}::Trace.
    //u^{\mu}::SelfNonCommuting.
    //u^{\mu}::ImplicitIndex.
    //ex:=tr{A u^{\nu} u^{\mu} u^{\mu} u^{\nu} + B u^{\mu} u^{\mu} u^{\nu} u^{\nu}}:
    //meld(_);

	inject_property<SelfNonCommuting>(k, "{A,B,C,D }");
	inject_property<Trace>(k, "tr{#}");

	auto ex = R"(tr(A B C D + B C D A)"_ex(k);
	meld m(k, *ex);
	std::cout << pprint(k, ex) << '\n';
	m.apply_pre_order();
	std::cout << pprint(k, ex) << '\n';
	// assert ex == $2 * Tr{ A B C D }$
	
}