Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#28916 closed enhancement (fixed)

MixedFormAlgebra - More Flexible Coercions

Reported by: Michael Jung Owned by:
Priority: major Milestone: sage-9.1
Component: geometry Keywords: manifolds, mixed-forms
Cc: Eric Gourgoulhon, Travis Scrimshaw Merged in:
Authors: Michael Jung Reviewers: Travis Scrimshaw
Report Upstream: N/A Work issues:
Branch: 37863df (Commits, GitHub, GitLab) Commit:
Dependencies: Stopgaps:

Status badges

Description (last modified by Michael Jung)

This makes the coercion model of mixed forms more robust against modifications regarding differential forms. For instance: As soon as all differential forms of another mixed form have a coerce map, the mixed form has one too. The same now holds for any algebraic element which is coercible into a single differential form.

At this stage, the method degree is used and special cases are handled separately. But notice that not all coercible objects provide this method (symbolic ring). Or conversely, having this method doesn't mean being coercible into a differential form. Hence this invocation is now entirely avoided.

In particular we have:

sage: M = Manifold(2, 'M')
sage: Omega = M.mixed_form_algebra()
sage: Omega1 = M.diff_form_module(1)
sage: T01 = M.tensor_field_module((0,1))
sage: Omega1.has_coerce_map_from(T01)
True

But at this stage:

sage: Omega.has_coerce_map_from(T01)
False

With this ticket:

sage: Omega.has_coerce_map_from(T01)
True

Change History (23)

comment:1 Changed 3 years ago by Michael Jung

Branch: u/gh-DeRhamSource/mixedformalgebra___more_flexible_coercions

comment:2 Changed 3 years ago by Michael Jung

Cc: Eric Gourgoulhon Travis Scrimshaw added
Commit: 4ba780eeb294c0390f3d83f1ffc355802590e018
Component: PLEASE CHANGEgeometry
Description: modified (diff)
Keywords: manifolds mixed-forms added
Status: newneeds_review
Type: PLEASE CHANGEenhancement

This makes the coercion model of mixed forms more robust against modifications regarding differential forms. For instance: As soon as differential forms of every degree have coerce maps, the mixed form has one too.


New commits:

4ba780eTrac 28916: Flexible coercion of mixed forms

comment:3 Changed 3 years ago by git

Commit: 4ba780eeb294c0390f3d83f1ffc355802590e0183132acc35ea82346bafe2eecc81ca97f6adf5e2b

Branch pushed to git repo; I updated commit sha1. New commits:

3132accTrac 28916: Bugs fixed and code cleaned

comment:4 Changed 3 years ago by Michael Jung

I spared the try...except block now completely. I think this is a negligible loss of computation time. Also this is more robust and works everytime.

comment:5 Changed 3 years ago by git

Commit: 3132acc35ea82346bafe2eecc81ca97f6adf5e2b6775b86a3a5c4dd10185bc1e7e2eb25136c31041

Branch pushed to git repo; I updated commit sha1. New commits:

6775b86Trac 28916: try...except removed

comment:6 Changed 3 years ago by Michael Jung

Authors: Michael Jung

comment:7 Changed 3 years ago by Travis Scrimshaw

Do you have some examples that demonstrates that this change now covers something that it didn't (correctly) do before? If so, please add them to the documentation, but if not, can you give a more detailed explanation as to why you think this is better?

comment:8 Changed 3 years ago by Michael Jung

Fair enough. I'm not sure this change covers even more at this stage.

The only improvement so far: There might be objects with a method degree which are not coercible into differential forms. Or conversely there are coercible objects without having a degree method (like elements of the symbolic ring). So I avoid invoking degree completely.

Assume in a future version there come more objects not having a degree method but are coercible into differential forms (I admit, I have no idea what else it could be). Nevertheless, these cases have to be handled separately now. But with this changes, all potential coercions are covered.

Was that clearer? What do you think about it? And how could I improve my description?

By the way: Merry christmas retrospectively. :)

Last edited 3 years ago by Michael Jung (previous) (diff)

comment:9 Changed 3 years ago by Michael Jung

Description: modified (diff)

comment:10 Changed 3 years ago by Michael Jung

Description: modified (diff)
Milestone: sage-9.0sage-9.1

comment:11 Changed 3 years ago by git

Commit: 6775b86a3a5c4dd10185bc1e7e2eb25136c31041ee4ad9352b5ac563b7ea1efde674d423ab8cc9b8

Branch pushed to git repo; I updated commit sha1. New commits:

ee4ad93Merge branch 'develop' into t/28916/mixedformalgebra___more_flexible_coercions

comment:12 Changed 3 years ago by Travis Scrimshaw

Yes, that is more clear, thank you. So can you please add such an example that now coerces that previously did not?

comment:13 Changed 3 years ago by Michael Jung

Description: modified (diff)

comment:14 Changed 3 years ago by git

Commit: ee4ad9352b5ac563b7ea1efde674d423ab8cc9b8dc5b909ab4f9fa2c0e5e7b5fff0747b5d92a0508

Branch pushed to git repo; I updated commit sha1. New commits:

dc5b909Trac #28916: Any iteration

comment:15 Changed 3 years ago by Travis Scrimshaw

Thank you, but can you add that example as a doctest?

comment:16 Changed 3 years ago by git

Commit: dc5b909ab4f9fa2c0e5e7b5fff0747b5d92a050837863dffe422080bacb83e930ad22b7c92f92749

Branch pushed to git repo; I updated commit sha1. New commits:

37863dfTrac #28916: Doctest for coerce map added

comment:17 Changed 3 years ago by Michael Jung

Like this or something in more detail?


New commits:

37863dfTrac #28916: Doctest for coerce map added

comment:18 Changed 3 years ago by Travis Scrimshaw

Reviewers: Travis Scrimshaw
Status: needs_reviewpositive_review

Yep, exactly. Thank you.

comment:19 Changed 3 years ago by Volker Braun

Branch: u/gh-DeRhamSource/mixedformalgebra___more_flexible_coercions37863dffe422080bacb83e930ad22b7c92f92749
Resolution: fixed
Status: positive_reviewclosed

comment:20 Changed 3 years ago by Michael Jung

Branch: 37863dffe422080bacb83e930ad22b7c92f92749u/gh-DeRhamSource/37863dffe422080bacb83e930ad22b7c92f92749

comment:21 Changed 3 years ago by Michael Jung

Commit: 37863dffe422080bacb83e930ad22b7c92f9274936e68ad95ba5be50c6c745d91489211d0d9407cd

Damn it. I thought the tickets are still open...


New commits:

36e68adTrac #28916: Merge branch 'develop' into t/28916/mixedformalgebra___more_flexible_coercions

comment:22 Changed 3 years ago by Michael Jung

Branch: u/gh-DeRhamSource/37863dffe422080bacb83e930ad22b7c92f9274937863dffe422080bacb83e930ad22b7c92f92749
Commit: 36e68ad95ba5be50c6c745d91489211d0d9407cd

comment:23 Changed 3 years ago by Michael Jung

I hope that is it. Sorry!

Note: See TracTickets for help on using tickets.