-
Notifications
You must be signed in to change notification settings - Fork 126
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
Add something like GAP'sExtRepOfObj
+ ObjByExtRep
or Magma's Eltseq
to Oscar?
#4151
Comments
stupid question: |
another stupid question: this sound like reinventing serialization/deserialization without all the safety guarantees? Edit: I heavily use |
On Thu, Sep 26, 2024 at 05:42:34AM -0700, Tommy Hofmann wrote:
another stupid question: this sound like reinventing serialization/deserialization without all the safety guarantees?
Yes/no/maybe.
In many situations that allows for easy manipulation within a session.
Starting point here really was my "quest" to deal with group extensions.
Here fundamentally I have two free groups and I need the map,
efficiently, that maps G[i] -> H[i+N]
Thus enter sylables, word, letters and the reverse
Thus the question of putting as many of them as useful under the "same"
name, think Eltseq in magma...
… --
Reply to this email directly or view it on GitHub:
#4151 (comment)
You are receiving this because you are subscribed to this thread.
Message ID: ***@***.***>
|
Concerning the relation between serialization and the proposed new concept: The main aims of defining an "external representation" of an object are to create an object of the type in question from simpler ingredients and to map an object to these ingredients. Claus' example shows this nicely: Take a group element that is essentially given by some word, extract this word-like information, perhaps modify the data, and finally turn the result again into a group element, perhaps of a different group of a perhaps different type. If the external representation of an object corresponds to the defining fields of the object then creating the object is cheap (use a keyword argument |
One more thought: |
In GAP there is a function
ExtRepOfObj
which can be applied to many kinds of objects: words of fp groups, elements of f.d. algebras or Lie algebra, polynomials¹ etc.) and which turns that into a "basic" object (consisting of just "basic" types like lists, integers, dictionaries, ...) which is easy to process and transform. This can then be turned back into an object with a functionObjByExtRep
.In Magma there is a similar concept via
Eltseq
andparent(data)
.The main thing interesting about these functions is that due to their uniform name, it is really easy to "find" them. In contrast, in OSCAR you'll need a bit to figure out
syllables
andletters
exist to turn a free group element into such a "basic" obejct, and afterwards you still might have a hard time figuring out how to turn them back into group elements.So we were wondering if we should think about adding something in this vein to OSCAR. For the sake of discussion, let's suppose they are called as
data = ext_rep(x)
andobj_by_ext_rep(parent(x), data)
(or maybe we can just require the converse to beparent(x)(data)
resp.someParentObject(data)
)We could implement this with just a few types to start, but the list could grow if the concept is useful. This wouldn't replace existing functions like
letters
orcoefficients
but rather complement them. E.g. we could even haveExtRepPolynomialRatFun
/ExtRepNumeratorRatFun
/ExtRepDenominatorRatFun
but that's for a reason that doesn't apply to us: GAP, univariate and multivariate polynomials and rational functions all have the same type. So you have to convey in the function name that you want to regard an object "as a polynomial".The text was updated successfully, but these errors were encountered: