File: linear.cdb

package info (click to toggle)
cadabra 1.46-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,244 kB
  • sloc: cpp: 33,188; ansic: 2,724; makefile: 329; yacc: 180; sh: 157; python: 45; lex: 38; lisp: 19
file content (92 lines) | stat: -rw-r--r-- 2,059 bytes parent folder | download | duplicates (6)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# consistent
obj1:= { a0+2*a2 + a3= 3, -a0 - a2 + a3= - (8/3) , a3 = 3};
@lsolve(%){a0,a2,a3};
tst1:=  {a0 = 34/3, a2 = (-17/3), a3 = 3} - @(obj1);
@collect_terms!(%);
@assert(tst1);

# overconstrained
obj2:= { a0 + a1 = 0, a0 - a1 = 0, a0 = 2 };
@lsolve(%){a0,a1};
tst2:= {a0 + a1 = 0, a0 - a1 = 0, a0 = 2} - @(obj2);
@collect_terms!(%);
@assert(tst2);

# overspecified but consistent
obj3:= { a0 + a1 = 0, a0 - a1 = 0, a0 = 0 };
@lsolve(%){a0,a1};
tst3:= {a0 = 0, a1 = 0} - @(obj3);
@collect_terms!(%);
@assert(tst3);

# underconstrained
obj4:= { a0 + a1 + a2 = 0, a1 + a2 = 3 };
@lsolve(%){a0,a1,a2};
tst4:= {a0 = (-3), a1 + a2 = 3} - @(obj4);
@collect_terms!(%);
@assert(tst4);

# Test 5 - 7:= decomposing monomials
#
basis:= { a*a, a*b, a*c };
obj5:= a b;
@decompose(%){@(basis)};
tst5:= {0,1,0}-@(obj5);
@collect_terms!(%);
@assert(tst5);

@reset;
basis:= { a*a + a*b, a*a - a*b };
obj5b:= a*b;
@decompose(%){@(basis)};
tst5b:= {1/2, (-1/2)} - @(obj5b);
@collect_terms!(%);
@assert(tst5b);

@reset;
{m,n,p,q,r,s,t,u}::Indices(vector).
R_{m n p q}::WeylTensor.
basis:= { 2*A*R_{m n p q}, A*R_{m p q n} };
obj6:= 3*A*R_{m q n p};
@decompose!(%){@(basis)};
tst6:= {-3/2,-3} - @(obj6);
@collect_terms!(%);
@assert(tst6);

obj6b:= { @(obj6), @(basis) };
@inner(%);
tst6b:= 3 * A * R_{m n p q} + 3 * A * R_{m p q n} + @(obj6b);
@collect_terms!(%);
@assert(tst6b);

# The result above implies that the following
# expression vanishes:
#
tst7:= A*R_{m n p q} + A*R_{m p q n} + A*R_{m q n p};
@young_project_tensor!(%);
@distribute!(%);
@canonicalise!(%);
@collect_terms!(%);
@assert(tst7);

{m,n,p,q,r,s,t,u}::Indices(vector).
R_{m n p q}::WeylTensor.
basis8:= { 3*R_{m n p q}*R_{m n p q} };
obj8:= 2 R_{m n p q} R_{m p n q};
@decompose!(%){@(basis8)};
tst8:= \comma{1/3}-@(obj8);
@collect_terms!(%);
@assert(tst8);

@young_project_tensor!(basis8){ModuloMonoterm};
@distribute!(%):
@canonicalise!(%);
@collect_terms!(%);
obj8b:= 2 R_{m n p q} R_{m p n q};
@decompose!(%){@(basis8)}{DontProject};


# tst9:= Inner product.
#
tst9:= {{a,b,c},{d,e,f}};
@inner(%);