Martin Rubey wrote:
> 
> I think that FriCAS should be able to do the following:
> 
> sage: K.<a,b> = QQ.extension([x^2 + 1, x^3 - 2]); K
> Number Field in a with defining polynomial x^2 + 1 over its base field
> sage: L.<c> = K.absolute_field()
> sage: to_L=(L.structure())[1]
> sage: to_L(a)^2
> -1
> sage: to_L(b)^3
> 2
> sage: to_L(a)
> -6/11*c^5 - 9/22*c^4 - 20/11*c^3 - 39/11*c^2 - 39/11*c + 91/22
> sage: to_L(b)
> -6/11*c^5 - 9/22*c^4 - 20/11*c^3 - 39/11*c^2 - 50/11*c + 91/22
> 
> If I'm not mistaken, currently it cannot.  Sage uses pari to find the
> "absolute_polynomial", i.e., the minimal polynomial in K.  Maybe we could make
> SAE take optionally a list of polynomials as second argument, and have several
> generators?
> 

1) It is not fully clear what FieldExtension(K, [p1, p2]) should
   do.  One possibility (assuming p2 is irreducible in extension
   corresponding to p1) is to build tower of extensions.  Another
   possibility (apparently pari/sage is doing this) is to find
   primitive element in the tower and ins minimal polynomial over K
   and build corresponding simple extension.  When working in positive
   characteristic primitive elements not always exist, so only
   tower is guaranted to work.  Otherwise choice is probably
   matter of performance: if primitive poly has small coefficients
   then using single extension is more efficient.  But primitive poly
   may have very large coefficients, and due to this tower may
   be better.

2) I think we have all tools to do actual computations: we can factorise
   in algebraic extensions, so we can verify irreducibility assumptions.
   We have functions to compute primitive elements.

3) Currently constructors can not be overloaded, so any extra
   argument to SAE would be mandatory.  One could try something
   like:

   SimpleAlgebraicExtension(R:CommutativeRing, _
     UP:UnivariatePolynomialCategory R, M: Union(UP, List UP)) == ...

   but that would complicate SAE.  Also, there are problems with
   arbitrary conditionals when choosing representation.  So
   I think that I would rather try a new domain (say 'AlgebraicTower').
   I am not sure how much work such domain would require.  Basicaly
   we are the edge of what Spad allows -- in principle definition
   could be quite simple but if one have to work around limitations
   then it could be much more complicated.
   
4) Another possibilty would be to add type-valued function in the
   interpreter.  This may be simple (again modulo bugs/limitations).

5) There is a question how domain like AlgebraicTower would interact
   with coercion mechanism in the interpreter.  If domain is built
   as tower of simple domains, then interpreter can synthtize coercion
   for the whole tower from coercions of ingredients.  Using complex
   domains (such that tower structure is hidden) would break this
   and require more work (either explicitly giving coercions for
   AlgebraicTower or making interpreter smarter).  OTOH I am not
   sure how good coercion for SAE are now...


-- 
                              Waldek Hebisch
[EMAIL PROTECTED] 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/fricas-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to