I am using sage in a graduate algebra class, and would like to expand
to
other courses. I've found a few things that are incomplete,
inconsistent or
that would be confusing to students and realized it might be good to
organize and
catalogue them for sage developers, to give a user/teacher's
perspective.
This critique is offered with the utmost respect and gratitude for
what you have all created!
This post concerns abelian groups.
It seems like abelian groups is a backwater in sage;
I suppose they are not terribly interesting for research!
They can be valuable pedagogically. As such, it is important
that the notation be consistent and simple.
I like AdditiveAbelianGroups more than
AbelianGroups for the purposes of teaching,
since the GAP notation of the latter is more
intimidating for students.
********
AddAbGrp: (short for AdditiveAbelianGroup) lacks some functionality.
(1) elementary divisors()
(2) subgroups()
(3) subgroup
(3) A.addition_table() hangs my machine
(4) A.direct_sum (or direct_product, cartesian_product returns a set
not an AddAbGrp)
(5) In
A = AdditiveAbelianGroup([8, 5])
Additive abelian group isomorphic to Z/40
I would rather be told
Additive abelian group Z/8 + Z/5
Since that is how I created it and that is how elements will be
written.
The following is not good in my opinion.
A = AdditiveAbelianGroup([5, 5,8])
A([1,1,3])
error
A([1,2])
(1, 1, 2)
********
AbelianGroups: has some bugs.
(1) is_cyclic() is sometimes incorrect
B= AbelianGroup([3,4,5])
sage: B.is_cyclic()
False
sage: B= AbelianGroup([3,4])
sage: B.is_cyclic()
True
(2) B.quotient() is not implemented.
(3) B.elementary divisors returns the invariant factors.
B.invariants returns the integers used to define the group,
not the invariant factors.
sage: B= AbelianGroup([10,12,25])
sage: B.invariants()
[10, 12, 25]
sage: B.elementary_divisors()
[10, 300]
*********
Wish list: For AddAbGrp
(0) Given a list of elements do the elements generate the group
(is_generating() )
(1) Create a homomorphism A -> B or be told my hom is ill-defined.
(2) Create a quotient and hom to the quotient.
(3) Compute direct product
(4) Create an isomorphism to the invariant factor group and the
elementary divisor group.
(5) Compute the automorphism group of an abelian group AddAbGrp ->
PermutationGrp
A.permutation_group() creates the image but I dont think it gives
the map.
(6) Coerce an abelian group in some other category into AddAbGrp (so
that I can get its invariants).
(a) Given an abelian permutation group G, or matrix group, create an
isomorphism to an abelian group.
(b) Given an the unit group of a commutative ring (say
Zn.unit_group()) create an iso to an AbelianGroup.
--
You received this message because you are subscribed to the Google Groups
"sage-edu" 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/sage-edu?hl=en.