Nicolas,

Sage should be told that End(O) is a monoid for any object O in a category Cat()
that is a subcategory of Sets().

Say that a morphism f in Hom(A,B,Cat()) is computable
if it comes equipped with an algorithm that computes f(a) for every a in A.
Clearly the composition of computable morphisms is computable and an identity 
morphism
is computable.  Therefore the computable elements of End(O) form a submonoid.

Say that an isomorphism f in End(O) is bicomputable if it is computable
and its inverse is also computable.  Then the bicomputable elements
form a subgroup of Aut(O).

The implementation of the computable submonoid of End(O)
is obvious: each new element comes equipped with a set-theoretic function
and the multiplication is function composition.  One could perform
some mild general simplification by having the designated identity morphism
and building its triviality into the product explicitly.

The bicomputable subgroup of Aut(O) could be implemented as
a free group with dynamically createable generators, each of which
comes equipped with an evaluation map. When an element gets created,
one must supply both the algorithm for its evaluation as well as that
for its inverse.

Of course with the presence of evaluation maps,
one is actually working in a quotient of the free monoid/group
but alas, one cannot test true equality of elements
if O is infinite. Of course we cannot test whether a supplied 
set-theoretic function yields an honest morphism either.

--Mark

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to