
Directsum.jl – Abstract tangent bundle vector space type operations - DreamScatter
https://github.com/chakravala/DirectSum.jl
======
dan-robertson
I feel like the readme could do with a better introduction. At the moment it
seems like weird mix of mathematically technical definitions, code examples (I
guess related to api specifics), and some random Julia type-system/size-limit
technicalities thrown in too.

But that said, I don’t think I know anything about this sort of geometry or
algebra so maybe instead I should want a paragraph telling me to give up.

Also is V"++++" the same as S"++++" (or rather, is V the same as S?), this
looked like maybe the notation just changed? But like I say, I couldn’t really
follow the readme so I’m likely wrong here.

~~~
DreamScatter
The difference between V"++++" and S"++++" is that the S" specifically
constructs a Signature concrete type, while the V" is for automatically
selecting an appropriate type of the VectorBundle category, which is not
limited to Signature specifically, making it a more general constructor call.

------
adamnemecek
If this tickles your fancy, check out the bivector.net community.

Check the demo

[https://observablehq.com/@enkimute/animated-
orbits](https://observablehq.com/@enkimute/animated-orbits)

Join the discord

[https://discord.gg/vGY6pPk](https://discord.gg/vGY6pPk)

~~~
ganzuul
Cool!

------
DreamScatter
Related: Grassmann.jl – Differential Geometric Algebra -
[https://news.ycombinator.com/item?id=22076368](https://news.ycombinator.com/item?id=22076368)

------
ganzuul
What problem is one solving when this becomes useful? Is it a compressed
representation of something?

~~~
DreamScatter
Correct, it is an encoding to represent SubManifold spaces used in the multi-
linear Grassmann algebra. It might seem strange on its own, but the advantage
it provides in Grassmann.jl is specialized automatic pre-compilation for
differential geometric algebras based on a vector bundle manifold. For
example, see
[https://grassmann.crucialflow.com](https://grassmann.crucialflow.com)

------
aesthesia
I'm not sure I understand how the different types in this library---Manifold,
VectorBundle, SubManifold---correspond to the standard definitions of these
mathematical objects. How is a manifold represented here? Can arbitrary
manifolds be represented?

~~~
dan-robertson
I think a complication is that there are abstract types and concrete types.
The abstract types let you say “give me a tangent bundle where ...” and the
concrete types actually implement the thing as eg a vector or a sparse vector
or ...

An alternative example would be that in Julia you can talk about abstract
vector types of which dense and sparse form disjoint subtypes

~~~
DreamScatter
Indeed, the Manifold{n} type from AbstractTensors.jl
([https://github.com/chakravala/AbstractTensors.jl](https://github.com/chakravala/AbstractTensors.jl))
is defined as an abstract type in Julia. The parameter `n` is used to specify
the Manifold dimension, which is locally isomorphic to R^n.

A VectorBundle is another abstract type, which standardizes an encoding format
for concrete Signature and DiagonalForm types, or more. SubManifold can select
subspaces of a VectorBundle or generally an arbitrary Manifold.

The design of the type system was optimized for algebra interoperability and
adaptive subspace precompilation.

~~~
aesthesia
Okay, so say I want to do computations with differential forms on some
particular manifold, like a torus or RP^n. Maybe I want to evaluate the Hodge
Laplacians on some forms. What would I need to do to implement that within
this system? I see references to computing Betti numbers and Euler
characteristics in the documentation, so I assume something like this is
possible.

I'm not very familiar with geometric algebra or its computational
implementation, so apologies if this is either obvious or not even wrong. This
looks very cool and useful, I just don't know how to connect it to the things
I understand.

------
smallcharleston
Do people do these kinds of computations often in practice?

~~~
DreamScatter
This is part of the foundations of my geometric algebra implementation, which
you can find out more about at
[https://grassmann.crucialflow.com](https://grassmann.crucialflow.com)

------
jhales
This is very cool, but what is the use case?

~~~
DreamScatter
It is used as a type system for code generation and high performance
calculation with discrete differential goemetry sub algebras. More information
is at [https://grassmann.crucialflow.com](https://grassmann.crucialflow.com)
or also at [https://bivector.net](https://bivector.net)

