-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDocumentation.nb
899 lines (894 loc) · 42.6 KB
/
Documentation.nb
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 0, 0]
NotebookDataLength[ 43610, 898]
NotebookOptionsPosition[ 42841, 871]
NotebookOutlinePosition[ 43371, 890]
CellTagsIndexPosition[ 43328, 887]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[CellGroupData[{
Cell["Documentation", "Section",
CellChangeTimes->{{3.690220594031942*^9, 3.690220603131773*^9}, {
3.690392460474176*^9, 3.690392461511745*^9}, {3.690392521788485*^9,
3.690392524598116*^9}},ExpressionUUID->"17a443f8-29fb-439e-bb35-\
2523a67c3a7a"],
Cell[TextData[{
"\nThe new user should first read the Read Me First file, followed by the \
Installation Guide, then Quick Start, Working Tutorial notebook, and then \
this file.\n\nThis package was written using Mathematica version 10, then 11 \
and 12, so it should work in all of these versions. The Palette is the best \
source of documentation for this package as well as the center piece for \
entering equations. The best way to get started is to examine and play with \
the palette as described below. Doing this should make you comfortable and \
ready to see example computations in the Working Tutorial notebook.\n\n Open \
a new notebook*. If the palette is not open, select it from the Palette menu. \
Click on various items to see what they do. Hover over items to see tooltips. \
\n\nStart by selecting your ",
StyleBox["initialization options",
FontColor->RGBColor[1, 0, 1]],
" (or use the default) and then click on the \[OpenCurlyDoubleQuote]Needs\
\[CloseCurlyDoubleQuote] statement in the palette to enable the GA package \
for this notebook. You\[CloseCurlyQuote]ll need to do this for each new \
notebook you open. \n\nIn the 2nd section of the palette, ",
StyleBox["Typing Aids, Subscripts and Operators",
FontColor->RGBColor[1, 0, 1]],
", click on ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"51d4279e-febc-4433-92ac-dd27ced9641d"],
", then ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "2"], TraditionalForm]],ExpressionUUID->
"138363f0-d7ee-4955-8bb9-dc85d2403868"],
". Hover over the 6 operators (geometric, wedge/exterior, scalar, and dot \
products and right and left contractions) until you find the small diamond \
that represents geometric product, and click it. Then click on ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"5ec3b417-45e7-4735-a377-b2c0cd65f0c7"],
" again and press \[EnterKey] on the number pad or Shift-\[EnterKey] on the \
key pad to evaluate the expression. Try other examples and use the \
wedge(a.k.a. exterior) and dot operators to examine the results. Observe that \
the tooltips explain how to enter the operators from the keyboard. If you \
find the operator symbols too small to see, click on a magnification icon at \
the bottom of the palette. Zoom back when you wish to restore a smaller \
palette.\n\nCaution. Always use parentheses in your operations. For example, ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
RowBox[{
SubscriptBox["e", "2"], "\[Diamond]",
SubscriptBox["e", "2"]}]}], TraditionalForm]],ExpressionUUID->
"4e7da499-b419-4a67-bd09-d752b3dcfb6f"],
" is not the same as (",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"fd673aae-cb33-49a7-b543-21b648d51614"],
") \[Diamond] ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "2"], TraditionalForm]],ExpressionUUID->
"a5fa3640-82ce-43cd-a624-b4ecb002daab"],
". Also, wedge product (",
Cell[BoxData[
FormBox["\[Wedge]", TraditionalForm]],ExpressionUUID->
"68e2be36-74f8-4bb7-bb6d-c807811b5f9a"],
") is associative so you are safe when you enter x \[Diamond] y \[Diamond] \
z, but not when you enter x \[CenterDot] y \[CenterDot] z, x ",
Cell[BoxData[
FormBox["\[Star]", TraditionalForm]],ExpressionUUID->
"ac9a40c1-6574-4605-a4b8-a199c5992aef"],
" y ",
Cell[BoxData[
FormBox["\[Star]", TraditionalForm]],ExpressionUUID->
"908a571d-c7e3-44ff-90c1-4a8e079c563b"],
" z, etc. For convenience, all the operators have been given default \
definitions mirroring the following example:\n\n\tx \[CenterDot] y \
\[CenterDot] z = (x \[CenterDot] y) \[CenterDot] z\n\tx \[CenterDot] y \
\[CenterDot] z \[CenterDot] w = ( (x \[CenterDot] y) \[CenterDot] z) \
\[CenterDot] w\n\nJust remember that in general (x \[CenterDot] y) \
\[CenterDot] z \[NotEqual] x \[CenterDot]( y \[CenterDot] z). \n\nAnd, you \
should use parentheses when you mix operators like x \[CenterDot] y ",
Cell[BoxData[
FormBox[
RowBox[{" ", "\[Wedge]"}], TraditionalForm]],ExpressionUUID->
"dc37e6c7-dddb-4ad7-a2e4-4b142d5af8d6"],
" z.\n\nThe blade, clif , and vector operators in the Typing Aids section \
are pretty straight-forward except that at this time (2017) there seems not \
to be a consistent vocabulary for terms like multivector, n-vector, and \
blade. For example, is a 2-vector a vector in 2-space, or is it a bivector, \
or a grade 2 multivector? The vocabulary used in this package is illustrated \
in the spreadsheet named Multivector Terminology and is also explained in the \
tooltips.\n\nRotors are used to perform rotations in any number of \
dimensions. They are used in Clifford algebras and there are examples in the \
Working Tutorial notebook.\n\nThe last 2 items in this section are Complex \
numbers and Quaternions. The complex numbers are the Clifford subalgebra {a + \
b i} with i = ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"f7c0ddb4-f781-4f2c-a3f9-6e815bca838b"],
" and a and b are reals. Quaternions are the Clifford subalgebra of elements \
{a + b i + c j + d k} where a, b, c, & d are real numbers and i, j, and k are \
as explained in the palette (remember to hover your mouse to reveal \
tooltips). The GA quaternions are a left-handed system unlike the standard \
quaternions that are right-handed. (Left-handed is the correct, natural \
definition.) GA operations that are appropriate (such as InverseG and NormG) \
for complex numbers or quaternions will also work when restricted to these \
subalgebras. To use this package to perform complex multiplication, simply \
type e1e2 where you would normally type i. Similarly, for Quaternions, type \
e2e3 for i, -",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"cd8fc1c2-a55c-40c1-b8cc-62640b8d96c9"],
"for j, and ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"d068506e-cea4-402a-83ab-71404192a400"],
" for k. If you wish you can define i to be ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"e4170762-eb1b-4fa5-88f7-e919332113c6"],
" , etc. in order to enter your equations using i, j, and k. In order to see \
your output in terms of i, j, and k, append the rule below to your last \
calculation.\n\n i=.; j=.; k=.; (to make sure you \
haven\[CloseCurlyQuote]t previously assigned values to i, j, or k)\n \
ruleQ={ ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"f56039b5-4531-4381-a704-f5b425d6f49d"],
" ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "2"], "\[Rule]", "k"}], TraditionalForm]],
ExpressionUUID->"3d686dab-425f-4c05-9a0b-31764e47f981"],
", ",
Cell[BoxData[
FormBox[
RowBox[{
RowBox[{
RowBox[{
SubscriptBox["e", "2"],
SubscriptBox["e", "3"]}], "\[Rule]", "i"}], ","}], TraditionalForm]],
ExpressionUUID->"ec85b1cd-74ba-410d-bfba-48b6adae4899"],
" ",
Cell[BoxData[
FormBox[
RowBox[{
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"]}], "\[Rule]",
RowBox[{"-", "j"}]}], TraditionalForm]],ExpressionUUID->
"bbd6c7d8-17c2-4f8b-a00e-d629a34b483b"],
" } (- j because j = ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "3"],
SubscriptBox["e", "1"]}], TraditionalForm]],ExpressionUUID->
"73e36bf7-ca94-428f-b167-5849f321e38b"],
" and Mathematica uses ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"4d010107-c350-4075-a9ea-58192999d895"],
")\n Example. a + d ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"eb60c15a-d631-4abe-984d-5a4a4b0994e6"],
" - c ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"0c148da6-f6cf-4436-9cef-64cda5ffb476"],
" + b ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "2"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"aceddacd-39f2-40f3-b876-9b58e5a861cc"],
" //.ruleQ\n\nFYI. Octonions are non-associative and so cannot be \
represented using geometric products.\n\nThere are a few things I wish to \
clarify. First, unlike other GA packages, this package uses standard notation \
for subscripts. It was a LOT of work to program this way, and I was \
discouraged from doing so by several of the Mathematica gurus, but I believe \
it is up to the programmer to make a package friendly for the user rather \
than making the work easy for the programmer.\n\nThe second thing is the \
matter of dimension. Other than computation time, there is no constraint on \
dimension. The odd thing that I wish to point out is that there is no need \
for the user to specify dimension except in rare cases such as the Hodge \
Dual. It might seem that the dimension n would be required input for, say, \
the wedge product of two multivectors (or clifs, as I prefer to call them). \
The message is to not worry about the dimension of your space. Just enter \
your clifs and the operations take care of dimension for you. \n\nA 3rd item \
is that of basis. For vectors, the basis used is clear: ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"59aeccdd-fe3a-40bd-888b-12d5ebeb29c7"],
" , ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "2"], TraditionalForm]],ExpressionUUID->
"a454159e-2d27-4711-b39f-92500f43640c"],
" , ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "3"], TraditionalForm]],ExpressionUUID->
"b244c5eb-ef2f-4f13-ad09-2f8b3cea031d"],
" , \[Ellipsis] But, for grade 2 I do not find any need to define which of ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "2"],
SubscriptBox["e", "4"]}], TraditionalForm]],ExpressionUUID->
"e6ef9d30-cea4-477a-a7bd-7fdb8bcf6939"],
" or ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "4"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"9167d173-35e3-4434-9baa-c98998234676"],
" is in the basis. When the palette generates a general multivector it uses \
the Mathematica default of numerical order. That is, it uses ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"eb4d35f2-5fa0-4c2a-b116-7daaad318dd4"],
". But this package doesn\[CloseCurlyQuote]t use or manipulate bases. It \
simply computes things like ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"aa6813d1-3c6e-42d6-9abf-2e416601680a"],
" \[Diamond]",
Cell[BoxData[
FormBox[
SubscriptBox["e", "3"], TraditionalForm]],ExpressionUUID->
"c9c6319c-1ba1-431d-b81b-bbcf63ce9801"],
" so bases are never mentioned. \n\nI apologize for not using the standard \
symbols for left and right contractions, but those symbols are not set up in \
Mathematica for use as binary operators. It is possible to utilize the \
correct symbols but is a lot of work. \n\nFinally, the geometric product is \
usually represented by juxtaposition but the \[Diamond] operator is used in \
this package since Mathematica already uses juxtaposition for regular \
multiplication.\n\nIn the 3rd section of the palette, ",
StyleBox["Typing Aids, Multivector Generators",
FontColor->RGBColor[1, 0, 1]],
", you may need to click the triangle to expand the section. (Click it again \
to hide the section.) In the 1st column enter a command by selecting it. In \
the workbook, press \[EnterKey]. The output should be the same as the \
corresponding entry in the right-hand column of the palette. Now modify some \
parameters of the formula you just inputted, say, change the letter a to the \
letter b, or dimension 3 to dimension 4, and press \[EnterKey] again. Next, \
select something from column 2. This generates the same output, but now it is \
provided in the input area for you to use, saving you from having to copy and \
paste the output. Finally, hoover over the commands in both columns to get \
more information. These functions have been provided to hopefully simplify \
typing by providing inputs that you modify rather than having to type all \
inputs from scratch.\n\nThe 4rd section of the palette contains the main \
Geometric Algebra (GA) operations. The Geometric Product can be entered using \
the first command in this section, or by using the \[Diamond] symbol, \
entering from the palette manually typing. Some texts restrict the Geometric \
Product to homogenous multivectors; that is, multivectors whose terms are all \
of the same grade. These texts then discuss \[OpenCurlyDoubleQuote]extensions\
\[CloseCurlyDoubleQuote], or define other terms, to discuss the natural \
extensions of geometric products to non-homogeneous multivectors. This \
Mathematica package simply uses the term Geometric Product to cover products \
of any two (or more) multivectors, whether or not homogeneous.\n\nThe same \
thing goes for Wedge, Dot, and Scalar products and Contractions. The user can \
enter homogeneous or non-homogeneous multivectors. The Wedge Product of 2 \
multivectors is computed by taking the terms of the Geometric Product whose \
grade is the sum of the grades of its factors. That is,\n\n\tA ",
Cell[BoxData[
FormBox["\[Wedge]", TraditionalForm]],ExpressionUUID->
"c2b2c9ba-ee4f-4bfb-92f9-d81049329fe4"],
" B = [ A \[Diamond] B ",
Cell[BoxData[
FormBox[
SubscriptBox[
RowBox[{"]", " "}],
RowBox[{"p", "+", "q"}]], TraditionalForm]],ExpressionUUID->
"6454723f-6a42-483d-9561-b8bb4a8c3b88"],
" where p = Grade [A] and q = Grade [B].\n\nSimilarly,\n\n\tA \[CenterDot] B \
= [ A \[Diamond] B ",
Cell[BoxData[
FormBox[
SubscriptBox[
RowBox[{"]", " "}],
RowBox[{"Abs", " ", "[",
RowBox[{"p", "\[Dash]", "q"}], "]"}]], TraditionalForm]],ExpressionUUID->
"8c60064e-b280-4d71-a365-06b95785771a"],
" (Dot Product)\n\tA \[LeftTee] B = [ A \[Diamond] B ",
Cell[BoxData[
FormBox[
SubscriptBox[
RowBox[{"]", " "}],
RowBox[{"q", "\[Dash]", "p"}]], TraditionalForm]],ExpressionUUID->
"4c636176-6c6f-4e72-92a7-9798d8db4523"],
" (Left Contraction)\n\tA \[RightTee] B = [ A \[Diamond] B ",
Cell[BoxData[
FormBox[
SubscriptBox[
RowBox[{"]", " "}],
RowBox[{"p", "\[Dash]", "q"}]], TraditionalForm]],ExpressionUUID->
"f13037dd-bb91-44f2-815d-57f88541098f"],
" (Right Contraction)\n\tA ",
Cell[BoxData[
FormBox["\[Star]", TraditionalForm]],ExpressionUUID->
"4747f6ad-92df-4e06-83ca-8006fe9a1491"],
Cell[BoxData[
FormBox[
RowBox[{" ",
RowBox[{"B", " ", "=", " ",
SubscriptBox[
RowBox[{
RowBox[{"[", " ",
RowBox[{"A", " ", "\[Diamond]", " ", "B"}], " ", "]"}], " "}],
"0"]}]}], TraditionalForm]],ExpressionUUID->
"9544360a-5235-4bfa-81aa-7ab928557ee9"],
" (Scalar Product)\n\nThere are several different definitions given \
in current literature for the Hodge Dual so I have provided a couple of Hodge \
functions to allow the user freedom of choice. The equations defining the two \
I have chosen are shown in the tooltips (hover the mouse over the palette). \
The first definition is consistent with the implicit definition that the \
Hodge Dual is the unique operator that satisfies clif2 ",
Cell[BoxData[
FormBox["\[Wedge]", TraditionalForm]],ExpressionUUID->
"38948c43-5d77-4420-ad1e-a037442c8480"],
Cell[BoxData[
FormBox[
RowBox[{" ",
RowBox[{
RowBox[{"Hodge", "[", " ", "clif", " ", "]"}], " ", "=", " "}]}],
TraditionalForm]],ExpressionUUID->"57b87fb1-245b-43fc-aab0-9273d3c9c08d"],
"( clif \[CenterDot] clif2 ) \[Diamond] i for all multivectors clif2 and \
where i is the pseudoscalar. By using this package I was able to \
experimentally verify that the simple explicit definition I use in function \
HodgeDualG satisfies this definition. The HodgeDual2G definition does NOT \
satisfy the implicit equations but does have nice geometric properties and \
seems to be pretty commonly used. Hover your mouse over the palette to view \
these definitions in the tooltips.\n\nGorm is basically the square of the \
norm. The Working Tutorial notebook illustrates both of these. \n\nInverseG \
computes the inverse of a multivector. If the inverse does not exist, an \
error message is given and a value of 0 is returned.\n\nThe reverse of ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"],
SubscriptBox["e", "4"]}], TraditionalForm]],ExpressionUUID->
"29cac770-70f6-4cbe-afb0-cd23e57d052a"],
" is ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "4"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"0ad9401b-65ea-4462-8a9f-5f2405d88d74"],
Cell[BoxData[
FormBox[
RowBox[{" ",
RowBox[{
SubscriptBox["e", "1"], ".", " "}]}], TraditionalForm]],ExpressionUUID->
"80434d79-0ccf-4a30-8bf5-17bb600e4581"],
"You cannot enter ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "4"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"182dd46f-f4b7-44b0-bc52-bb90888f5446"],
" ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"efda21e2-c021-4cdb-a279-9f1bb2f1422a"],
" in Mathematica because Mathematica always sorts the order back to ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"],
SubscriptBox["e", "4"]}], TraditionalForm]],ExpressionUUID->
"c26148ee-b83b-41ac-971c-0d1050f4e582"],
".Thus, the ReverseG function simply returns the original multivector \
preceded by the appropriate \[NotEqual]1. For example, GormG[ ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"], " ",
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"231fe829-fc4b-4b4c-857c-e4a95fd7af19"],
" ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "4"], " "}], TraditionalForm]],ExpressionUUID->
"f97f51c9-5242-4358-8be8-47335affae4f"],
"] = - ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"], " ",
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"5a7f967c-1d76-40ae-9a81-62bc252515f5"],
" ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "4"], " "}], TraditionalForm]],ExpressionUUID->
"cf08fc79-4e22-4b3e-b935-11dad68c9b8a"],
".\n\nDefinitions of the terms can either be found in the tooltips and by \
examining the source code. The source code organization mirrors the \
organization in the toolbar.\n\nMost of the operators in the 5th section, ",
StyleBox["Multivector Support",
FontColor->RGBColor[1, 0, 1]],
", facilitate extracting portions of a multivector. ConstantG will pick out \
the constant term or terms, if any, in a multivector. Similarly, FreeTermG \
will pick out the non-constant term or terms, if any. \n\npSliceG will pick \
out the grade p term(s), if any, of a multivector. EijTermG is even more \
selective. It will pick out only the terms, if any, that have ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "ij"], TraditionalForm]],ExpressionUUID->
"15b580f6-2e54-48ec-bf1d-19926a415f06"],
" as a factor, where ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "ij"], TraditionalForm]],ExpressionUUID->
"d172f851-8f10-463c-806d-3175e58a0582"],
" is a blade such as 1, ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"], ","}], TraditionalForm]],ExpressionUUID->
"710a86cc-55bf-4037-a8dd-13a5405718b6"],
Cell[BoxData[
FormBox[
RowBox[{" ",
SubscriptBox["e", "4"]}], TraditionalForm]],ExpressionUUID->
"2c5be28a-981a-46ee-aed8-25a90b441c12"],
Cell[BoxData[
FormBox[
SubscriptBox["e", "5"], TraditionalForm]],ExpressionUUID->
"0c9db4eb-d23d-49d9-a6df-d8087112acb4"],
", ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "2"], TraditionalForm]],ExpressionUUID->
"91744104-b830-488f-946a-7b6bf157ee8c"],
Cell[BoxData[
FormBox[
SubscriptBox["e", "3"], TraditionalForm]],ExpressionUUID->
"e29cfd6a-d078-4104-b37a-ac884dd29767"],
Cell[BoxData[
FormBox[
SubscriptBox["e", "4"], TraditionalForm]],ExpressionUUID->
"5358f6d0-c770-4e9b-81b8-1df07aa2e594"],
", etc. \n\nExpandG and CollectG help simplify multivector expressions \
similarly to Mathematica\[CloseCurlyQuote]s Expand and Collect commands \
except these are blade-aware, able to expand and collect with respect to ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "i"], TraditionalForm]],ExpressionUUID->
"b471f634-6d32-41f3-b634-bc9f0a6ec71c"],
" terms. \n\nReduceG is used internally to reduce squares of basis elements. \
In the event that the user creates his own products, not using the GA \
operators, ReduceG can be used to reduce the squares according to the GA \
initialization specified by the user in step 1. c\n\nMaxDimG will find the \
highest basis subscript among the terms of a multivector. \n\nIt is not \
necessary to revert to lists in order to perform most operations. This \
package allows straight-forward operation on the multivectors themselves \
using standard mathematical notation. However, it can be convenient to use \
lists for complex operations where one needs to keep the terms of a \
multivector in a particular order in order to operate on them. (Mathematica, \
has its own inimitable and mostly-uncontrollable order.) Thus, the last \
section of the palette,",
StyleBox[" List Operations and Support",
FontColor->RGBColor[1, 0, 1]],
", is list-related. The top two operators quickly switch between a \
multivector and its corresponding list of term, a more difficult task than it \
would at first seem. \n\nThe 2nd row generates two lists from a multivector. \
SubscriptListG provides a list of the subscripts of the blades of the \
multivector terms. For example, SubscriptListG[ 2 + ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "4"]}], TraditionalForm]],ExpressionUUID->
"2bee365d-7ce8-4c50-901d-21d833f6194b"],
"] = { {0}, {1,4} }. EijListG generates a similar list but with the \
subscripts represented as e-subscripts. For example, EijListG[ 2 + ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"], " "}], TraditionalForm]],ExpressionUUID->
"2bfa35e2-023d-449c-88a2-6640344df278"],
Cell[BoxData[
FormBox[
SubscriptBox["e", "4"], TraditionalForm]],ExpressionUUID->
"efcff134-694e-4224-964b-6965271472b8"],
"] = { 0, ",
Cell[BoxData[
FormBox[
SubscriptBox["e",
RowBox[{"1", ",", " ", "4"}]], TraditionalForm]],ExpressionUUID->
"d278a5f8-14cc-4f04-ac73-dad0d8181d1c"],
" }. Both lists can come in handy. \n\nGradeListG generates a list of \
integers that represent the grades of the terms in a multivector. The order \
of the grades matches the order of the terms in ClifListG [clif]. That allows \
you to perform (or check) GA operations on each terms of a clif.\n\nThe last \
item is a Signature operator that extends Mathematica\[CloseCurlyQuote]s \
signature function. Mathematica\[CloseCurlyQuote]s operator will find the \
signature of a list of, say, integers as long as the integers are all \
distinct. But, in GA we often as not deal with duplicate integers such as in ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "2"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"d0e8ce47-a68f-4204-914e-f7ff9645ecc9"],
Cell[BoxData[
FormBox["\[Wedge]", TraditionalForm]],ExpressionUUID->
"481ef799-a917-47f2-a712-5ec695771f3f"],
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "3"]}], TraditionalForm]],ExpressionUUID->
"c7410e87-89c2-4cc7-b590-fec3cc6aaf74"],
". SignatureG will find the signature for { 2, 3, 1, 3 } whereas Signature \
will not. I believe, actually, that Signature G will find the signature for \
any class of items for which Mathematica\[CloseCurlyQuote]s Signature \
function works but I have not extensively tested this. \n\nSignature is a \
measure of the number of pairwise transpositions of adjacent terms required \
to put the list in natural order. An odd number of transpositions reverses \
sign and an even number preserves the sign. It is used to determine the \
correct sign during antisymmetrization operations. For example, ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"1ecd97d2-5b93-4a3f-a24c-1c213d5817e5"],
" ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "2"], TraditionalForm]],ExpressionUUID->
"3d5c9bb5-0b09-421b-ba82-8a3e8f12edc4"],
Cell[BoxData[
FormBox[
RowBox[{"\[Wedge]",
SubscriptBox["e", "1"]}], TraditionalForm]],ExpressionUUID->
"80d86ea6-9aa0-4886-aaef-3803c3ccd934"],
"= - ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "2"], TraditionalForm]],ExpressionUUID->
"aac1457f-63b5-4a50-8741-6c8db5467362"],
" in 2-space in a + + Clifford algebra.\n\n",
StyleBox["Cautions and Work-Arounds", "Text",
FontSize->16,
FontColor->RGBColor[0, 0, 1]],
"\n 1. If you receive a warning about ",
StyleBox["context shadowing",
Background->RGBColor[0.9, 1, 1]],
" or if you notice ",
Cell[BoxData[
FormBox[
SuperscriptBox[
SubscriptBox["e", "i"], "2"], TraditionalForm]],ExpressionUUID->
"4d7a1719-92e3-4674-b9d4-20632ddc3e45"],
" terms in your output, you should quit the kernel using the Evaluation \
menu, close and reopen the palette, and reset your GA initialization settings \
in the palette. \n\n 2. Until such time as the author might implement \
operator precedence, it is necessary to put parentheses around your \
multivectors when using the binary operator symbols (see 1st section of \
palette). For example, you must enter (2 ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"271de5ff-950f-4107-b1ad-4cf300b4f946"],
") \[CenterDot] (3 + ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"531a91a0-754e-4016-9bcf-10c9bdc5daee"],
"). \[CapitalEta]owever, if \[CapitalAlpha] = 2 ",
Cell[BoxData[
FormBox[
SubscriptBox["e", "1"], TraditionalForm]],ExpressionUUID->
"de1db2ff-5706-4e08-8828-a2ed6bb36c30"],
" and \[CapitalBeta] = 3 + ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}], TraditionalForm]],ExpressionUUID->
"dbfb443a-cc81-4a11-912f-2b42e5723d92"],
" then \[CapitalAlpha] \[CenterDot] \[CapitalBeta] is \[CapitalOmicron]\
\[CapitalKappa]. So is DotPrdtG [ ",
Cell[BoxData[
FormBox[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"2",
SubscriptBox["e", "1"]}], ",", " ",
RowBox[{"3", " ", "+", " ",
RowBox[{
SubscriptBox["e", "1"],
SubscriptBox["e", "2"]}]}]}], " ", "]"}], "."}], TraditionalForm]],
ExpressionUUID->"c4dfedfd-bdab-4e42-befd-07d4ffb0aed9"],
"\n\nThis package contains only a very basic set of GA operations, but other \
GA operations can easily be built upon them. The geometric product is \
somewhat complicated to program because it must handle antisymmetrization. \
Most GA operations are easy to implement once the geometric product is \
defined. Thus, the benefits of this package are:\n\n 1. It uses natural \
mathematical notation for subscripts and standard wedge and dot symbols, not \
requiring you to learn new notation. (Both geometric product and Mathematica\
\[CloseCurlyQuote]s product use a space. To distinguish them, we use a \
diamond for geometrical product.)\n 2. Operations are performed naturally, \
not by converting back and forth to lists (though lists are supported)\n 3. \
The function definitions are generally very short, self-documented, and easy \
to follow, thus easily modified or extended\n 4. The palette greatly \
simplifies typing input, entering sample multivectors that can quickly be \
edited \n 5. Because symbolic coefficients are handled (as well as \
numeric), it is easy to generate generic formulas and to test hypotheses such \
as whether an identity works in dimensions higher than, say, 3 or whether an \
identity can be expanded from vectors to blades or beyond.\n 6. The numeric \
capabilities allow you to instantly carry out computations that would require \
an extensive amount of time and tedium to do manually\n 7. One can quickly \
configure, or switch between, spatial dimensions and space and space-time.\n \
8. Except for printouts (which can be pages long in higher dimensions) most \
operations compute instantly even in higher dimensions. The definitions are \
written entirely without inefficient \[OpenCurlyDoubleQuote]for loops\
\[CloseCurlyDoubleQuote] and other such constructs.\n\nFinally, the author is \
retired and built this package working in a vacuum as a way of teaching \
himself both GA and Mathematica. If you are using this package, consider \
yourself a beta-tester. Let me know of any bugs you find. I might find time \
to correct them. I have thoroughly tested - + + + and somewhat tested + - - - \
Clifford algebras. Contact me at uvw@sbcglobal.net.\n\n\n* You can use the \
notebook as is or else implement a private notebook context. Private cell \
contexts have not been tested but are likely compatible. The issue is that \
the author has had to take great care to manage the context of the symbol e \
used in the basis ",
Cell[BoxData[
FormBox[
RowBox[{
SubscriptBox["e", "1"], ",", " ",
SubscriptBox["e", "2"], ",", " ",
RowBox[{"...", " ", ".", " ", "."}]}], TraditionalForm]],ExpressionUUID->
"093512b7-b981-4df2-844e-ba684eba0cc3"],
" This is because only the multivector symbols, like A, are passed to the \
package yet the package manipulates the basis elements contained in A. Were \
the package \[OpenCurlyDoubleQuote]e\[CloseCurlyDoubleQuote] to have a \
different context than the notebook \[OpenCurlyDoubleQuote]e\
\[CloseCurlyDoubleQuote], those manipulations would fail.\n\n\n"
}], "Text",
CellChangeTimes->{{3.690220627457881*^9, 3.690221159129568*^9}, {
3.690221214249576*^9, 3.690221647753193*^9}, {3.6902217987675743`*^9,
3.690221884507244*^9}, {3.690221946363057*^9, 3.690221976324597*^9}, {
3.690222021888039*^9, 3.690222205659092*^9}, {3.6902222578426447`*^9,
3.6902225991216927`*^9}, {3.690222635895948*^9, 3.6902226441682158`*^9}, {
3.690223402003695*^9, 3.6902234293315887`*^9}, {3.6902235029698477`*^9,
3.690223604339479*^9}, {3.690223636623301*^9, 3.690223724424255*^9}, {
3.6902237725597153`*^9, 3.690224040976597*^9}, {3.6902240799396467`*^9,
3.690225268714959*^9}, {3.690225359052948*^9, 3.69022536155757*^9},
3.69022601276604*^9, 3.6902260728200703`*^9, 3.690226248512381*^9, {
3.6902262846904163`*^9, 3.690226289960484*^9}, 3.690226320438218*^9, {
3.690226453105798*^9, 3.690226457748454*^9}, 3.690226573800996*^9, {
3.690229270033553*^9, 3.690229325546369*^9}, {3.690229386880629*^9,
3.690229389964439*^9}, {3.69022945824294*^9, 3.6902294864695873`*^9}, {
3.6902295203176947`*^9, 3.690229656542444*^9}, {3.690229869250367*^9,
3.690229871478753*^9}, {3.690229948155706*^9, 3.690229958329833*^9}, {
3.6902299915861464`*^9, 3.690229993992199*^9}, {3.690230119379198*^9,
3.690230137588632*^9}, {3.690230199031416*^9, 3.6902302087116537`*^9}, {
3.690230239774667*^9, 3.690230301547369*^9}, {3.690232505626642*^9,
3.690232564559026*^9}, {3.6902326121760073`*^9, 3.690232632413225*^9}, {
3.690232741098394*^9, 3.690233219454867*^9}, {3.690233288510297*^9,
3.6902333301718693`*^9}, {3.690233366626815*^9, 3.690233367155498*^9},
3.6903813553764067`*^9, {3.690381428305646*^9, 3.690381452971223*^9}, {
3.690381498331566*^9, 3.69038150607417*^9}, {3.690381574772512*^9,
3.6903816668380747`*^9}, {3.6903817004614573`*^9, 3.690381709069059*^9}, {
3.6903817464447403`*^9, 3.690382037344945*^9}, {3.690382069081039*^9,
3.690382116949985*^9}, {3.690382147874434*^9, 3.69038230709873*^9}, {
3.6903823384538603`*^9, 3.690382497368915*^9}, {3.690382536994369*^9,
3.690382558292448*^9}, 3.690382596756497*^9, {3.6903826711872673`*^9,
3.690382776367221*^9}, {3.690382826693898*^9, 3.690382883451593*^9}, {
3.690383041540007*^9, 3.690383184465918*^9}, {3.690383951126672*^9,
3.690383951457296*^9}, {3.6903885836519117`*^9, 3.690388600027852*^9}, {
3.6903895957708197`*^9, 3.690389631255232*^9}, {3.690389999453937*^9,
3.690390148637292*^9}, {3.690390213788431*^9, 3.69039023038234*^9}, {
3.6903922828781652`*^9, 3.6903923252938223`*^9}, {3.6903924771094933`*^9,
3.690392490507182*^9}, {3.690392561449929*^9, 3.69039278718006*^9}, {
3.69039281736336*^9, 3.6903928777417192`*^9}, {3.6903929174250317`*^9,
3.69039295702008*^9}, {3.690392998476769*^9, 3.690393049513288*^9}, {
3.690393090232897*^9, 3.690393569558009*^9}, {3.690393609069454*^9,
3.690393842114031*^9}, {3.6903939117224073`*^9, 3.690393912767527*^9}, {
3.6903939499389353`*^9, 3.690394034485299*^9}, {3.690394107943692*^9,
3.6903941982461023`*^9}, {3.690394234587799*^9, 3.690394291576169*^9}, {
3.690394328465876*^9, 3.6903943378889914`*^9}, {3.6903960102072153`*^9,
3.690396099029976*^9}, {3.69039615082224*^9, 3.6903962160594378`*^9}, {
3.690396290583662*^9, 3.6903963452516947`*^9}, {3.69039650260045*^9,
3.690396694095615*^9}, {3.690396729664632*^9, 3.6903970358649893`*^9}, {
3.690397073427163*^9, 3.690397122332676*^9}, {3.690397154600328*^9,
3.690397159363697*^9}, {3.690397223416815*^9, 3.690397306360038*^9}, {
3.690397357726946*^9, 3.6903973789858017`*^9}, {3.69039743864469*^9,
3.690397548546801*^9}, 3.690397600715446*^9, {3.690397691798705*^9,
3.6903977603497877`*^9}, 3.690397830659396*^9, {3.690397875885807*^9,
3.690397910120747*^9}, {3.690398026653585*^9, 3.690398026909342*^9}, {
3.6903980739722652`*^9, 3.690398176605606*^9}, {3.690398240170021*^9,
3.6903984074879017`*^9}, {3.690398442247344*^9, 3.690398447803707*^9}, {
3.690398484290226*^9, 3.690398704124454*^9}, {3.6903987476734858`*^9,
3.690398750663403*^9}, {3.690405648708377*^9, 3.6904056649074373`*^9}, {
3.6904056990272903`*^9, 3.6904057000488*^9}, 3.690405845590397*^9,
3.690406039209449*^9, {3.690406183333818*^9, 3.690406193252252*^9},
3.690406238240418*^9, 3.690406275391851*^9, 3.6904064259237833`*^9, {
3.690406464123914*^9, 3.6904064935590887`*^9}, {3.690406561866547*^9,
3.6904065784956837`*^9}, {3.690406853725759*^9, 3.690406889158929*^9}, {
3.690495718455055*^9, 3.690495784187035*^9}, 3.690496133405141*^9, {
3.692571800679339*^9, 3.692571827017172*^9}, {3.692571868694385*^9,
3.6925722182324057`*^9}, {3.692572249537302*^9, 3.692572287206916*^9},
3.692572321434681*^9, {3.692572612213114*^9, 3.692572614292485*^9}, {
3.692572645468986*^9, 3.692572667802022*^9}, 3.6927342287406597`*^9, {
3.6927343477524977`*^9, 3.6927343563505583`*^9}, {3.692734502976609*^9,
3.692734506584001*^9}, {3.692736389520771*^9, 3.692736403278708*^9}, {
3.692736579348284*^9, 3.6927365816360207`*^9}, {3.692736804923664*^9,
3.6927368149451647`*^9}, 3.692736859652051*^9, {3.69273702703314*^9,
3.6927370945090437`*^9}, {3.6927371332563477`*^9, 3.692737191439633*^9}, {
3.6927372365200377`*^9, 3.692737338299015*^9}, 3.6927374306527576`*^9, {
3.692745073942712*^9, 3.6927450846329203`*^9}, {3.69275070644508*^9,
3.6927507070714273`*^9}, {3.6927510801523533`*^9, 3.69275119814283*^9}, {
3.693094330582232*^9, 3.693094361068074*^9}, {3.6935190327611523`*^9,
3.69351904071395*^9}, {3.693519082205858*^9, 3.693519094020596*^9}, {
3.6935194162914658`*^9, 3.693519469429647*^9}, {3.693519502019067*^9,
3.6935195139803247`*^9}, 3.69351958696239*^9, 3.6935196351700773`*^9, {
3.693519779567959*^9, 3.69351992854697*^9}, {3.69352025539128*^9,
3.693521101088049*^9}, {3.693521144785718*^9, 3.693521226791297*^9}, {
3.69352132282089*^9, 3.693521512869576*^9}, {3.693521572924871*^9,
3.693521579328197*^9}, {3.693521684857161*^9, 3.693521687231865*^9}, {
3.693521720829801*^9, 3.693521808791739*^9}, 3.693522102951294*^9, {
3.693522147856304*^9, 3.693522167030353*^9}, {3.6935229705501947`*^9,
3.693523075866927*^9}, {3.693523128863879*^9, 3.693523136284278*^9}, {
3.6935235918119392`*^9, 3.6935235918276663`*^9}, {3.693524196286886*^9,
3.6935243156301327`*^9}, {3.693524378943584*^9, 3.693524380460091*^9}, {
3.693524424402763*^9, 3.69352443211583*^9}, {3.693524481212639*^9,
3.6935244915110197`*^9}, {3.6935245488946533`*^9,
3.6935245525910673`*^9}, {3.693524611547266*^9, 3.6935246143142757`*^9}, {
3.693524649809154*^9, 3.693524685270125*^9}, {3.69352486177422*^9,
3.693524863414918*^9}, {3.6935249444146748`*^9, 3.693524945037766*^9}, {
3.6935250106479797`*^9, 3.693525055131514*^9}, {3.6935743219118137`*^9,
3.693574331815793*^9}, {3.696684316216568*^9, 3.6966843176752357`*^9}, {
3.696684374892305*^9, 3.69668474820704*^9}, {3.6966849156062813`*^9,
3.696684986260263*^9}, {3.6966850288093443`*^9, 3.6966850414192057`*^9}, {
3.696685140412258*^9, 3.69668519617537*^9}, {3.696685263585847*^9,
3.696685286281969*^9}, {3.696685358099679*^9, 3.696685419462625*^9}, {
3.696685466937647*^9, 3.6966854688737307`*^9}, {3.6966855523675203`*^9,
3.696685616569036*^9}, 3.696968393363078*^9, 3.696975903670785*^9, {
3.6969759428700953`*^9, 3.696975970501871*^9}, {3.6969760508863487`*^9,
3.696976063926525*^9}, {3.6969761508666286`*^9, 3.69697615547469*^9}, {
3.6969763777295513`*^9, 3.6969764338715*^9}, {3.696976477720029*^9,
3.696976480894065*^9}, {3.6969766331092787`*^9, 3.696976633767613*^9}, {
3.696976721026115*^9, 3.696976722403994*^9}, {3.696976792998651*^9,
3.6969767985183287`*^9}, {3.696976854645953*^9, 3.696976855836274*^9}, {
3.696976983818902*^9, 3.696977499597177*^9}, {3.6969782296170797`*^9,
3.696978237489105*^9}, {3.6969784526221437`*^9, 3.696978591841899*^9}, {
3.6969789379492607`*^9, 3.696978938490004*^9}, {3.696979426792774*^9,
3.696979617579562*^9}, {3.6969797713982573`*^9, 3.6969798312009497`*^9}, {
3.6969798834415197`*^9, 3.696979895333639*^9}, {3.6969799273410463`*^9,
3.696979967714038*^9}, {3.696980172410158*^9, 3.696980174908537*^9}, {
3.6969802642951403`*^9, 3.696980499112348*^9}, {3.696980559326745*^9,
3.696980559895091*^9}, {3.69698086649219*^9, 3.696980914356948*^9},
3.6969809662924433`*^9, {3.696981006298256*^9, 3.696981008518876*^9}, {
3.696981067426126*^9, 3.696981067721719*^9}, {3.696981353792078*^9,
3.6969813544219437`*^9}, {3.696981441488512*^9, 3.696981462987528*^9}, {
3.696981536583365*^9, 3.6969815369813967`*^9}, 3.774128146402429*^9, {
3.774128191499625*^9, 3.774128452661088*^9}, {3.774128495972678*^9,
3.774128507263865*^9}, {3.774128539220437*^9, 3.774128613619438*^9}, {
3.774128645379526*^9, 3.774128701686737*^9}, {3.7741287598708057`*^9,
3.7741287797827463`*^9}, {3.77412891277498*^9, 3.77412918959691*^9}, {
3.774129239695895*^9, 3.7741292915845423`*^9}, {3.7741293243543863`*^9,
3.7741294448671017`*^9}, {3.775834496518281*^9, 3.775834499002741*^9},
3.775834569466712*^9, {3.775834663550172*^9, 3.775834679057778*^9},
3.7758347967731857`*^9, {3.775834853975623*^9, 3.7758350557730618`*^9}, {
3.775835087486866*^9, 3.7758351162469187`*^9}, 3.775835197470118*^9,
3.775835341355837*^9, {3.775835378053329*^9, 3.775835456027166*^9}, {
3.775835486329712*^9, 3.775835486342649*^9}, {3.7758355213605537`*^9,
3.775835605249885*^9}, {3.7758357364675217`*^9, 3.775835793439763*^9}, {
3.775835826235826*^9, 3.775835842502676*^9}, 3.7758360089779663`*^9, {
3.775836045198626*^9, 3.77583607099638*^9}, 3.775836170010542*^9, {
3.775836327050555*^9, 3.7758363292862597`*^9}, {3.7758364601102953`*^9,
3.775836465150757*^9}, {3.775836537149234*^9, 3.775836687230216*^9}, {
3.775836742760491*^9, 3.775836745465225*^9}, {3.775836781627335*^9,
3.7758367868291807`*^9}, {3.7758368186863956`*^9, 3.775836846357375*^9}, {
3.775836898400977*^9, 3.775836940715334*^9}, {3.775836986628243*^9,
3.775836993461475*^9}, {3.777908096918542*^9, 3.7779081168891993`*^9}, {
3.777909070429467*^9, 3.777909117485179*^9}, {3.77790917420744*^9,
3.7779091862662277`*^9}, {3.778338075798194*^9, 3.7783380768274117`*^9}, {
3.778338141921815*^9, 3.77833814401296*^9}, {3.77833823058384*^9,
3.778338232075305*^9}, {3.778338373405718*^9, 3.778338378411518*^9}, {
3.7783406933517303`*^9, 3.7783407150352592`*^9}, {3.779827225557349*^9,
3.779827274084942*^9}, {3.7798273698751793`*^9, 3.779827394161108*^9},
3.7798275524402*^9, {3.779827685376893*^9, 3.779827703652396*^9}, {
3.779827830280714*^9, 3.779827880451159*^9}, {3.7798280074281607`*^9,
3.77982801351567*^9}, {3.779828100086512*^9, 3.779828123914197*^9},
3.77991390110331*^9, {3.7799142835384007`*^9, 3.779914308789319*^9}, {
3.779914369748817*^9, 3.779914432514009*^9}, {3.779914978704814*^9,
3.779914980432913*^9}, 3.779915200376697*^9, 3.779915462348751*^9,
3.779915509554006*^9, {3.779915588039569*^9, 3.779915591716434*^9}, {
3.779915631971335*^9, 3.779915632479529*^9}, {3.779915712382256*^9,
3.779915713940271*^9}, {3.77991586978188*^9, 3.779915879443565*^9}, {
3.816041123580134*^9, 3.8160411461061068`*^9}, 3.816041329090496*^9,
3.816041442244336*^9, 3.816041480118606*^9, {3.816082349845583*^9,
3.816082350491835*^9}, {3.818002063504139*^9, 3.8180020689001417`*^9}, {
3.821018868899732*^9, 3.821018881716092*^9}, {3.821019178804018*^9,
3.821019209105164*^9}},
FontFamily->"Arial",
FontSize->14,ExpressionUUID->"b6194025-9ee4-45a6-811c-910e54f90562"]
}, Open ]]
},
WindowSize->{710, 1162},
WindowMargins->{{Automatic, 298}, {Automatic, 1}},
SpellingDictionaries->{"CorrectWords"->{
"Multivector", "Multivectors", "Gorm", "clif", "multivector", "multivectors",
"Arounds"}},
FrontEndVersion->"12.1 for Mac OS X x86 (64-bit) (June 19, 2020)",
StyleDefinitions->"Default.nb",
ExpressionUUID->"5bdc5fe7-ad22-490d-9756-9cbde15d9960"
]
(* End of Notebook Content *)
(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[422, 15, 253, 4, 67, "Section",ExpressionUUID->"17a443f8-29fb-439e-bb35-2523a67c3a7a"],
Cell[678, 21, 42147, 847, 4797, "Text",ExpressionUUID->"b6194025-9ee4-45a6-811c-910e54f90562"]
}, Open ]]
}
]
*)