Geometric Algebra Module - sympy/sympy GitHub Wiki

Table of Contents

Introduction

Geometric algebra is a real Clifford algebra over a real vector space of signature <math>(p,q)</math> presented in a form that is most suitable for physical applications. The main references for geometric algebra are Clifford Algebra to Geometric Calculus by Hestenes and Sobczyk, and Geometric Algebra for Physicists by Doran and Lasenby. Hestenes' book is extremely dense, so the book by Doran and Lasenby is better as introductory material. The main websites for geometric algebra are Hestenes' at http://geocalc.clas.asu.edu/, and the Cambridge group's at http://geometry.mrao.cam.ac.uk/. On the Cambridge website is the introductory paper "Imaginary Numbers are Not Real", which is a quick introduction to the subject.

Axioms

The basis of geometric algebra is to start with the vector space <math>V(p,q)</math> of signature <math>(p,q)</math> and dimension <math>n = p+q</math> over the real numbers, <math>R</math>. Then for any vectors <math>x,y,z \in V(p,q)</math> there exists a geometric product such that:

          <math>{\displaystyle x(yz) = (xy)z}</math>
          <math>{\displaystyle x(y+z) = xy+xz}</math>
          <math>{\displaystyle (x+y)z = xz+xy}</math>
          <math>xx \in R</math>

Inner and Outer Products

Next the inner and outer products are defined in terms of the geometric product. The inner product is:

          <math>x\cdot y = (xy+yx)/2</math>

and the outer product is:

          <math>x\wedge y = (xy-yx)/2</math>

The outer product for two vectors is generalized to the outer product for <math>r</math> vectors by:

          <math>x_{1}\wedge\cdots\wedge x_{r}= \frac{1}{r!}\sum_{i_{1},\dots,i_{r}}\epsilon_{1,\dots,r}^{i_{1},\dots,i_{r}}x_{i_{1}}\dots x_{i_{r}}</math>

where <math>\epsilon_{1,\dots,r}^{i_{1},\dots,i_{r}}</math> is the Levi-Civita permutation symbol. The outer product of <math>r</math> vectors is called an <math>r</math>-blade. One interpetation of an <math>r</math>-blade that a 2-blade is an oriented area and an <math>r</math>-blade is a oriented <math>r</math>-dimensional volume. The outer product is associative and a blade is antisymmetric under the exchange of two adjacent vectors. Any linear combination of <math>r</math>-blades is called an <math>r</math>-grade or grade-<math>r</math> multivector. A real scalar is a grade-0 multivector. A general mulitvector is the linear combination of grade-<math>r</math> multivectors where in a <math>n</math>-dimensional vector space <math>r</math> can take on the value from 0 to <math>n</math>.

Reverse

If a multivector is the geometric product of <math>r</math> vectors:

          <math>

A = a_{1}a_{2}\dots a_{r} then the reverse of <math>A</math> is:

          <math>

A^{\dagger} = a_{r}a_{r-1}\dots a_{1} The basic properties of the reverse are:

          <math>

\left ( A+B \right )^{\dagger}= A^{\dagger}+B^{\dagger} and:

          <math>

\left ( AB \right )^{\dagger}= B^{\dagger}A^{\dagger} There will be more on the reverse when the blade representation of a multivector is described.

Applications

Reflections

If <math>a</math> and <math>v</math> are any two vectors in the geometric algebra and <math>a^{2}\ne 0</math> then <math>a^{-1} = \frac{a}{a^{2}}</math>. If <math>\left | a^{2}\right | = 1</math> then <math>a^{-1} = \pm a</math>. The reflection of <math>v</math> about <math>a</math> is given by:

          <math>

{\displaystyle v_{reflection} = ava^{-1}} If a series of reflections are described by the vectors <math>a_{1},a_{2},\dots a_{r}</math> the effect of all the reflections on a vector <math>v</math> is:

          <math>

{\displaystyle v_{reflection} = a_{r}\dots a_{2}a_{1}ava_{1}^{-1}a_{2}^{-1}\dots a_{r}^{-1}}

Rotations

One on the major applications of geometric algebra is the rotation of various types of geometric objects. If <math>B</math> is a 2-blade in an <math>n</math>-dimensional space and we normalize <math>B</math> by:

          <math>\hat{B} =\frac{B}{\sqrt{\left |B^{2}\right |}}</math>

so that

          <math>B = \alpha\hat{B}</math>

then the rotation of the general vector <math>x</math>'s component in the plane defined by <math>\hat{B}</math> through the angle <math>\alpha</math> is given by

          <math>x_{rotation} = e^{\frac{\alpha\hat{B}}{2}}xe^{-\frac{\alpha\hat{B}}{2}}</math>

In a euclidian space <math>\hat{B}^{2} = -1</math>. For spaces of mixed signature we can have

          <math>e^{\frac{\alpha\hat{B}}{2}} = \left \{

\begin{array}{cc} \hat{B}^{2} = -1: & \cos\left ( \frac{\alpha}{2}\right )+\sin\left ( \frac{\alpha}{2}\right )\hat{B} \\ \hat{B}^{2} = 0: & 1+\frac{\alpha}{2}\hat{B} \\ \hat{B}^{2} = 1: & \cosh\left ( \frac{\alpha}{2}\right )+\sinh\left ( \frac{\alpha}{2}\right )\hat{B} \end{array} \right \} If we have a series of rotations:

          <math>

R_{i} = e^{\frac{\alpha_{i}\hat{B}_{i}}{2}}: 1 \le i \le r then the total rotation is given by (note that the reverse of a 2-blade is minus the blade so that <math>\hat{B}^{\dagger} = -\hat{B}</math>):

          <math>

x_{rotation} = R_{r}\dots R_{1}xR_{1}^{\dagger}\dots R_{r}^{\dagger} Geometric algebra makes it simple to combine multiple reflections and rotations.

Dirac Spinors

In the case of the vector space being <math>\displaystyle V(1,3)</math>, spacetime, the geometric algebra representation make representing Lorentz transformations trivial. Let the basis vectors of spacetime be <math>\displaystyle \gamma_{0}</math>, <math>\displaystyle \gamma_{1}</math>, <math>\displaystyle \gamma_{2}</math>, and <math>\displaystyle \gamma_{3}</math> and the metric:

          <math>

g = \left [\begin{array}{cccc} 1] the <math>\displaystyle\gamma_{\mu}</math>'s are orthogonal for our choice of <math>g</math> and we have:

          <math>

{\displaystyle \gamma_{\mu}\gamma_{\nu}+\gamma_{\nu}\gamma_{\mu} = 2g_{\mu\nu}} which are the anticommutation relations for the Dirac matrices. Any even multivector of the geometric algebra we have defined is a Dirac spinor. That is to say space time spinors are of the form (see section on "Outer Multiplication of Blades" for explanation of <math>\left\langle \right\rangle_{i}</math> operator):

          <math>

\psi = \left\langle \psi \right\rangle_{0}+\left\langle \psi \right\rangle_{2}+\left\langle \psi \right\rangle_{4} Another representation for <math>{\displaystyle\psi}</math> is:

          <math>

\psi = R\left ( \alpha+\beta I\right ) = R\left ( \sqrt{\rho}\cos\left ( \frac{\mu}{2}\right )+

 \sqrt{\rho}\sin\left ( \frac{\mu}{2}\right )  I\right) = \sqrt{\rho}Re^{\frac{\mu I}{2}}

where <math>R</math> is a rotor <math>\left ( RR^{\dagger} = 1\right )</math> and <math>\alpha</math> and <math>\beta</math> are scalars defining the amplitude of the spinor <math>\left ( \rho = \alpha^{2}+\beta^{2}\mbox{, where }\psi\psi^{\dagger} = \rho \right )</math> and <math>\displaystyle I</math> is the pseudo-scalar (note that for spacetime <math>\displaystyle I^{2}=-1</math>). Additionally in this geometric algebra a general Lorentz transformation can be represented and a product of rotations (the product of a spatial rotation and a spacetime boost) and reflections.

Module

Accessing

Attention: the galgebra module was removed from SymPy in version 1.0. It is now maintained separately at https://github.com/brombo/galgebra.

The geometric algebra module is accessed via import sympy.galgebra.GAsympy or from sympy.galgebra.GAsympy import *. In the following examples we assume that all start with the code:

from sympy.galgebra.GAsympy import *
from sympy import *
set_main(sys.modules[])

The "set_main" allows the geometric algebra module to broadcast sympy and multivector symbols to the users program. In the module there is the function make_symbols which if executed in a python program as follows:

make_symbols('s c Binv M S C alpha')

means that the sympy symbols s, c, Binv, M, S, C, and alpha are available to the program. In using make_symbols the program variable and the text name of the symbol are always the same. If you wish the program variable name and the output name of the symbol to be different you need to use the standard sympy function for symbol instantciation. In addition to make_symbols the multivector class setup function, MV.setup(), broadcasts various vector and scalar symbols to the users program so that they can be accessed by the users program if required.

Initializing the Multivector (MV) Class

The multivector class is initialize by the static function setup(). The two structures that define the MV (multivector) class are the symbolic basis vectors and the symbolic pseudometric. The symbolic basis vectors are input as a string with the symbol name separated by spaces. For example if we are calculating the geometric algebra of a system with three vectors that we wish to denote as a0, a1, and a2 we would define the string variable:

basis = 'a0 a1 a2'
that would be input into the setup function. The next step would be to define the symbolic pseudometric for the geometric algebra of the basis we have defined. The default pseudometric is the most general case and is the matrix of the following symbols:
 <math>

g = \left [ \begin{array}{ccc} a0**2] where each of the <math>g_{ij}</math> is a symbol representing all of the dot products of the basis vectors. Note that the symbols are named so that <math>g_{ij} = g_{ji}</math> since for the symbol function<math>(a0.a1) \ne (a1.a0)</math>.

Note that the strings shown are only used when the values of <math>g_{ij}</math> are output (printed). In the GAsympy module the <math>g_{ij}</math> symbols are stored in a static member list of the multivector class as the double list MV.metric (<math>g_{ij} = </math> MV.metric[i][j]).

The default definition of <math>g</math> can be overwritten by specifying a string that will define <math>g</math> . As an example consider a symbolic representation for conformal geometry. Define for a basis

basis = 'a0 a1 a2 n nbar'
and for a metric
metric = '# # # 0 0, # # # 0 0, # # # 0 0, 0 0 0 0 2, 0 0 0 2 0'
which is processed by
MV.setup(basis,metric)
to yield (stored in data structure)
 <math>

g = \left [ \begin{array}{ccccc} a0**2]

Here we have specified that n and nbar are orthogonal to all the a's, n**2 = nbar**2 = 0, and (n.nbar)= 2. Using # in the metric definition string just tells the program to use the default symbol for that value.

At the time setup is executed the multivector representations of the basis local to the program are instantciated. For our first example that means that the symbolic multivectors named a0, a1, and a2 are created and broadcast to the programmer for future calculations.

In addition to the basis vectors the <math>g_{ij}</math> are also made available to the programmer with the following convention. If a0 and a1 are basis vectors, then their dot products are denoted by a0sq, a2sq, and a0dota1 for use as python program variables. If you print a0sq the output would be a0**2 and the output for a0dota1 would be (a0.a1). If the default values are overridden the new values are output by print. For example if <math>g_{00} = 0</math> then print a0sq would output 0.

Multivector Representation

In our representation of the symbolic geometric algebra we assume that all multivectors of interest to us can be obtained from the symbolic bases vectors we have input, via the different operations available to geometric algebra. The first problem we have is representing the general multivector in terms terms of the basis vectors. To do this we form the ordered geometric products of the basis vectors and develop an internal representation of these products in terms of python classes. The ordered geometric products are all multivectors of the form <math>a_{i_{1}}a_{i_{2}}\dots a_{i_{r}}</math> where <math></math>i_{1}<i_{2}<\dots *.

="" ="" operator.

="Outer" Blades="&#10;&#10;For" \sum_&#123;r="0&amp;#125;^&amp;#123;n&amp;#125;A_&amp;#123;r&amp;#125;&amp;lt;/math&amp;gt;" \sum_&#123;i="0&amp;#125;^&amp;#123;n&amp;#125;\left\langle" a_&#123;n&#125; &lt;/math&gt;

="Inner" Multivectors="&#10;&#10;If" \sum_&#123;s="0&amp;#125;^&amp;#123;n&amp;#125;B_&amp;#123;s&amp;#125;&amp;lt;/math&amp;gt;" algebra.

=""></i_{2}<\dots>vectors.

In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;1&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; from sympy.galgebra.GAsympy import &amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;2&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; from sympy import &amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;3&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; set_main(sys.modules&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;95&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;95&amp;&#35;59&#59;name&amp;amp&#59;&amp;&#35;35&#59;95&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;95&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;4&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; metric &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; &amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;1 &amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59; &amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59;,&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;+ \
   ...&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59;                          &amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59; 1 &amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59;,&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;+ \
   ...&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59;                          &amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59; &amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59; 1,&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;5&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; MV.setup(&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;e1 e2 e3&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;,metric)
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;5&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; &amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;Setup of e1 e2 e3 complete&amp;amp&#59;&amp;&#35;35&#59;33&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;6&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; E &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; e1^e2^e3
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;7&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; Esq &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E&amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;E)()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;8&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; Esq_inv &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; 1/Esq
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;9&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; E1 &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (e2^e3)&amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;E
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;10&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; E2 &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (&amp;amp&#59;&amp;&#35;35&#59;45&amp;&#35;59&#59;1)&amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;(e1^e3)&amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;E
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;11&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; E3 &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (e1^e2)&amp;amp&#59;&amp;&#35;35&#59;42&amp;&#35;59&#59;E
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;12&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E1&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e2)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;13&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w.collect(MV.g)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;14&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;15&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;15&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 0
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;16&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E1&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e3)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;17&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w.collect(MV.g)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;18&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;19&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;19&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 0
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;20&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E2&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e1)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;21&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w.collect(MV.g)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;22&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;23&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;23&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 0
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;24&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E2&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e3)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;25&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w.collect(MV.g)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;26&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;27&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;27&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 0
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;28&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E3&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e1)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;29&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w.collect(MV.g)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;30&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;31&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;31&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 0
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;32&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E3&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e2)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;33&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w.collect(MV.g)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;34&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;35&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;35&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 0
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;36&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E1&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e1)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;37&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;38&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; Esq &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; Esq.expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;39&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w/Esq
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;39&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 1
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;40&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E2&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e2)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;41&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;42&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w/Esq
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;42&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 1
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;43&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; (E3&amp;amp&#59;&amp;&#35;35&#59;124&amp;&#35;59&#59;e3)
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;44&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; w().expand()
In &amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;45&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; w/Esq
Out&amp;amp&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;45&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;58&amp;&#35;59&#59; 1

Category:Modules

⚠️ **GitHub.com Fallback** ⚠️