-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementing overdot notation #19
Comments
Pros:
Cons:
To summarize, it's highly unlikely for me to pull this off in the near future, the primary goal now is probably to make the original functionalities of galgebra usable for users, fixing bugs, increasing test coverage and improving documentations. But with the potential help from the community, it's possible and I'm glad to assist. @FreddyBaudine , can you elaborate on the usecase scenario and expected syntax a little bit more? |
This behavior is intentional and you may see #15 (comment) for the solution. I do hope to change this behavior someday. |
Dear Utensil, Sorry for the trouble, I should have known better. I totally forgot about this solution of yours. Kind regards, |
Yes, it's also by (brombo's) design. These files are considered to be byproduct during generating the pdf. But TeX file could be useful, there should be an option to preserve it. Sent with GitHawk |
Also it's very dangerous to remove files, so I do plan to change these behaviors. Sent with GitHawk |
Dear Utensil, I am coming back to my comment above dated March 2, 2019 relating to inner products. I have discovered that if you replace raw numerals with declared constant through the member function mv of the algebra Ga, correct results obtains. n5 = st4.mv(5) Then, replacing the raw numerals 5 and 11 by the constants n5 and n11 respectively where things used to go wrong in the original code, we end up with the correct results. You will observe that it not necessary to do this at every place where the above numerals are used, which is somewhat paradoxical. Alan Bromborsky explains, in the footnote of Section 3.2 of his book, Instantiating a Multivector, that Ga.mv is used systematically in order to ensure that the instantiated multivector is associated with the correct algebra. What are your thoughts on all this? Kind regards, |
Dear @FreddyBaudine , sorry for the delay, I was working on #9 this week and will be working on issues related to #15, #18, #19 next week. |
Dear Utensil, You don’t have to be sorry after the superb job you have done with the documentation. Alas, it is while I was perusing it, more specifically the bit related to submanifolds, that I discovered that you had added a LateX output that I am totally unable to reproduce. To be more precise, I am referring to the program written on page 56 of Galgebra: a Geometric Algebra Module for Sympy (April 13, 2016). It is explicitly stated there that the output of this program is that given on the following page, that is, on page 57. However, when you run the program, the output relating to the one-dimensional manifold is not that given in the listing. To wit, the basis vectors are not normalised and the metric tensor, possibly as a consequence of the foregoing is wrong. It looks as if the output, as far as one-dimensional submanifolds are concerned is utterly insensitive to the norm being set to true. I have written two versions of the program both evincing the same mishaps. In the light of these results, I decided to verify systematically all the results given by galgebra. The calculations in question were performed through using the Physics package of Maple for second-dimensional submanifolds. As for the one-dimensional submanifolds, I had to do the reckoning by hand for the Physics package has been designed to work with space dimension greater than one. Look forward to having your views on all this. Kind regards, |
I have an implementation of the overdot. The question is whether it makes sense? Assume you have product of multivector differential operators and multivectors. An example would be The main problem that I see is checking the original expression to see where there are only two dotted terms one being a differential operator and one being a multivector. Also making sure that the dotted differential operator applies to the multivector. That is if the differential operator operates to the right is the multivector to it's right and vice versa. All how should more than one differential operator in the expression be interpreted or if that even makes sense. Comments and suggestions are welcome. |
I forgot one thing with regard to the overdot. You must use parenthesis to define the order of the operations in the original expression. This is especially important if you have both |
Yeah, after Freddy Baudine brought this up, I've been struggling with the design of this overdot notation from time to time. In my design, Instead of just add a flag to the original type, calling odot on an object will return a placeholder, symbolically recording the operations afterwards as the context, and once it meets another overdot that's compatible with the first overdot, it emits an ordinary GA expression. IMHO this design will solve part of the "make sense" problem and it works better for me, one who's less familiar with the internal of GAlgebra and didn't want to change it significantly and even mess it up just to implement the overdot, also it seems to be less coupled in the sense of object-oriented abstraction. Sent with GitHawk |
I wonder if this is worthwhile at all. If you have some expression like
then can you not just write it:
Or in python notation:
I suppose this is difficult because we have no mechanism to substitute whole multivectors at once. |
Overdot in math smells insufficient notational support for truly representing the underlying semantics (Just check out Structure and Interpretation of Classical Mechanics and Functional Differential Geometry for the criticism on mathematical notations ). But @eric-wieser 's proposal is even less clear in conveying the semantics so aesthetically I disagree with the proposal. The proper notation in this case should be attached to the grad so the grad can be manipulated freely, the P.S. Overdot is an important part of @abrombo 's work in his new branch, although the implementation could be less coupled. |
From what I've seen of the branch, the only bit implemented is I've bumped this to the next release, since we're no closer than we were last release. |
On 5/29/20 8:37 AM, Eric Wieser wrote:
P.S. Overdot is an important part of @abrombo
<https://github.com/abrombo> 's work in his new branch, although
the implementation could be less coupled.
From what I've seen of the branch, the only bit implemented is
|a.odot()| setting a flag - nothing looks at that flag at the moment.
I've bumped this to the next release, since we're no closer than we
were last release.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#19 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN3TFRGZDALPP7VTMJNJINTRT6T7JANCNFSM4G3JH5XQ>.
The saga of overdot is as follows. /odot()/ sets a flag on either a
/dop/ or an /mv /object. If there is an operation between a dotted
/dop/ and an undotted /mv/ all differentiation is deferred the result
being another /dop/. If both the /dop/ and the /mv/ are dotted the
differentiation is performed and the result is an /mv/. The code for
doing this was in the overloaded /dop/ operators. I got this working
when using sympy 1.2. It stopped working for any later versions of
sympy generating an error in sympy. The sympy people looked at my code
and traced the error and said they could not understand what happened
and that was the end of it for then.
|
Do you still have a copy of that code anywhere? All I can see is c4ec678, which has only the |
I found the mailing list thread at https://groups.google.com/forum/#!searchin/sympy/brombo%7Csort:date/sympy/x9nD3huSRBU/YQfj0XOiAgAJ, and pushed the code to https://github.com/pygae/galgebra/tree/recovered-history/galgebra3.tar.gz
|
Seems to be the implementation I imagined it......before the latest discussion on Slack. |
This is an old issue and I almost forgot what I said above, but I've just come across something similar that might shed some light on the design of this, so I add the notes here: There's an operation in QFT called Wick contraction, what it does is not relevant here, but the notation and its LaTeX implementation might be inspiring. The notation and LaTeX syntax looks like: Check out https://jpellis.me/projects/simpler-wick/ (there's a PDF documentation in it) and https://tex.stackexchange.com/questions/460657/how-do-i-do-wick-contraction-with-dirac-bracket for further info. The core ideas that I get from it are:
These might seem obvious in retrospect, but it's good to have some reference. |
As brought up by @FreddyBaudine here, @brombe originally described a way to implement the overdot notation in Python as Split Differential Operator which is described in 2.3.4 of GAlgebra: a Geometric Algebra Module for Sympy by Alan Bromborsky .
The overdot notation is used for describing the scope of ∇ which has been used in Geometric Algebra for Physicists by Chris Doran; Anthony Lasenby and many other books and papers. A very brief definition would be
( a snapshot taken from hout07.pdf in Course materials of Physical Applications of Geometric Algebra
on http://geometry.mrao.cam.ac.uk/home/teaching-resources/ )
This issue does not mean there is a development plan for implementing overdot notation as either Split Differential Operator or other forms but a place to discuss it.
The text was updated successfully, but these errors were encountered: