# Grassmann.jl Library

AbstractTensors.TensorGradedType
TensorGraded{V,n} <: Manifold{n} <: TensorAlgebra

Graded elements of a TensorAlgebra in a Manifold topology.

AbstractTensors.valueMethod
value(::TensorAlgebra)

Returns the internal representation of a TensorAlgebra element value.

AbstractTensors.volumeMethod
pseudoscalar(::TensorAlgebra)

Return the pseudoscalar (full rank) part of any TensorAlgebra element.

Base.ndimsMethod
ndims(t::TensorAlgebra)

Dimensionality of the pseudoscalar, rank(Manifold(t)) of an element.

LinearAlgebra.rankMethod
rank(::Manifold{n})

Dimensionality n of the Manifold{n} subspace representation.

DirectSum.BasisType
DirectSum.Basis{V} <: SubAlgebra{V} <: TensorAlgebra{V}

Grassmann basis container with cache of SubManifold elements and their Symbol names.

DirectSum.ExtendedBasisType
DirectSum.ExtendedBasis{V} <: SubAlgebra{V} <: TensorAlgebra{V}

Grassmann basis container without a dedicated SubManifold cache (only lazy caching).

DirectSum.SimplexType
Simplex{V,G,B,𝕂} <: TensorTerm{V,G} <: TensorGraded{V,G}

Simplex type with pseudoscalar V::Manifold, grade/rank G::Int, B::SubManifold{V,G}, field 𝕂::Type.

DirectSum.SparseBasisType
DirectSum.SparseBasis{V} <: SubAlgebra{V} <: TensorAlgebra{V}

Grassmann basis with sparse cache of SubManifold{G,V} elements and their Symbol names.

DirectSum.SubManifoldType
SubManifold{V,G,B} <: TensorGraded{V,G} <: Manifold{G}

Basis type with pseudoscalar V::Manifold, grade/rank G::Int, bits B::UInt64.

DirectSum.TensorBundleType
TensorBundle{n,ℙ,g,ν,μ} <: Manifold{n}

Let n be the rank of a Manifold{n}. The type TensorBundle{n,ℙ,g,ν,μ} uses byte-encoded data available at pre-compilation, where ℙ specifies the basis for up and down projection, g is a bilinear form that specifies the metric of the space, and μ is an integer specifying the order of the tangent bundle (i.e. multiplicity limit of Leibniz-Taylor monomials). Lastly, ν is the number of tangent variables.

Base.:~Method
reverse(ω::TensorAlgebra)

Reverse of a MultiVector element: ~ω = (-1)^(grade(ω)(grade(ω)-1)/2)ω

Base.conjFunction
~(ω::TensorAlgebra)

Reverse of a MultiVector element: ~ω = (-1)^(grade(ω)(grade(ω)-1)/2)ω

Base.imagMethod
imag(ω::TensorAlgebra)

The imag part (ω-(~ω))/2 is defined by abs2(imag(ω)) == -(imag(ω)^2).

Base.realMethod

real(ω::TensorAlgebra)

The real part (ω+(~ω))/2 is defined by abs2(real(ω)) == real(ω)^2.

DirectSum.basisFunction
basis(V::Manifold,:V,"v","w","∂","ϵ")

Generates Basis declaration having Manifold specified by V. The first argument provides pseudoscalar specifications, the second argument is the variable name for the Manifold, and the third and fourth argument are variable prefixes of the SubManifold vector names (and covector basis names).

DirectSum.cliffordFunction
clifford(ω::TensorAlgebra)

Clifford conjugate of a MultiVector element: clifford(ω) = involute(conj(ω))

DirectSum.getbasisMethod
getbasis(V::Manifold,v)

Fetch a specific SubManifold{G,V} element from an optimal SubAlgebra{V} selection.

DirectSum.χMethod
χ(::TensorAlgebra)

Compute the Euler characteristic χ = ∑ₚ(-1)ᵖbₚ.

DirectSum.@basisMacro
@basis

Generates SubManifold elements having Manifold specified by V. As a result of this macro, all of the SubManifold{V,G} elements generated by that TensorBundle become available in the local workspace with the specified naming. The first argument provides pseudoscalar specifications, the second argument is the variable name for the Manifold, and the third and fourth argument are variable prefixes of the SubManifold vector names (and covector basis names). Default for @basis M is @basis M V v w ∂ ϵ.

DirectSum.@dualbasisMacro
@dualbasis

Generates SubManifold elements having Manifold specified by V'. As a result of this macro, all of the SubManifold{V',G} elements generated by that TensorBundle become available in the local workspace with the specified naming. The first argument provides pseudoscalar specifications, the second argument is the variable name for the dual Manifold, and the third and fourth argument are variable prefixes of the SubManifold covector names (and tensor field basis names). Default for @dualbasis M is @dualbasis M VV w ϵ.

DirectSum.@mixedbasisMacro
@mixedbasis

Generates SubManifold elements having Manifold specified by V⊕V'. As a result of this macro, all of the SubManifold{V⊕V',G} elements generated by that TensorBundle become available in the local workspace with the specified naming. The first argument provides pseudoscalar specifications, the second argument is the variable name for the Manifold, and the third and fourth argument are variable prefixes of the SubManifold vector names (and covector basis names). Default for @mixedbasis M is @mixedbasis M V v w ∂ ϵ.

Grassmann.ChainMethod
Chain{V,G,𝕂} <: TensorGraded{V,G}

Chain type with pseudoscalar V::Manifold, grade/rank G::Int, scalar field 𝕂::Type.

source
Grassmann.MultiGradeType
MultiGrade{V,G} <: TensorMixed{V} <: TensorAlgebra{V}

Sparse multivector type with pseudoscalar V::Manifold and grade encoding G::UInt64.

source
Grassmann.MultiVectorMethod
MultiVector{V,𝕂} <: TensorMixed{V} <: TensorAlgebra{V}

Chain type with pseudoscalar V::Manifold and scalar field 𝕂::Type.

source
Grassmann.SparseChainType
SparseChain{V,G} <: TensorGraded{V,G}

Sparse chain type with pseudoscalar V::Manifold and grade/rank G::Int.

source
AbstractLattices.:∨Method
∨(ω::TensorAlgebra,η::TensorAlgebra)

Regressive product as defined by the DeMorgan's law: ∨(ω...) = ⋆⁻¹(∧(⋆.(ω)...))

source
AbstractTensors.:⊘Function
⊘(ω::TensorAlgebra,η::TensorAlgebra)

General sandwich product: ω⊘η = involute(η)\ω⊖η

For normalized even grade η it is ω⊘η = (~η)⊖ω⊖η

source
AbstractTensors.:⊙Method
⊙(ω::TensorAlgebra,η::TensorAlgebra)

Symmetrization projection: ⊙(ω...) = ∑(∏(σ.(ω)...))/factorial(length(ω))

source
AbstractTensors.:⊠Method
⊠(ω::TensorAlgebra,η::TensorAlgebra)

Anti-symmetrization projection: ⊠(ω...) = ∑(∏(πσ.(ω)...))/factorial(length(ω))

source
Base.:&Function
∨(ω::TensorAlgebra,η::TensorAlgebra)

Regressive product as defined by the DeMorgan's law: ∨(ω...) = ⋆⁻¹(∧(⋆.(ω)...))

source
Base.:*Method
*(ω::TensorAlgebra,η::TensorAlgebra)

Geometric algebraic product: ω⊖η = (-1)ᵖdet(ω∩η)⊗(Λ(ω⊖η)∪L(ω⊕η))

source
Base.:<<Function
⊙(ω::TensorAlgebra,η::TensorAlgebra)

Symmetrization projection: ⊙(ω...) = ∑(∏(σ.(ω)...))/factorial(length(ω))

source
Base.:>>Function
⊠(ω::TensorAlgebra,η::TensorAlgebra)

Anti-symmetrization projection: ⊠(ω...) = ∑(∏(πσ.(ω)...))/factorial(length(ω))

source
Base.:>>>Function
>>>(ω::TensorAlgebra,η::TensorAlgebra)

Sandwich product: ω>>>η = ω⊖η⊖(~ω)

source