Kurt Pagani wrote:
>
> It was indeed not very difficult. A simplex can be represented most
> favourably as a matrix (rows = points of F) and FreeAbelianGroup will do
> the rest.
I admit that I got lost in this thread. However, what you do looks
strange so I wonder if you really want this. Namely, simplical
complexes are normally defined on vertices from some abstract
set. It does not matter what the nature of set is, just which
point are equal or not. Of course, you can take Expression(Integer)
as your set, but for computability one prefers finite sets.
In case of finite set using some initial interval of integers
is normal practice.
In case of de Rham theory one has a manifold and triangulates
it. Triangulation means that we have mapping from some abstract
simplical complex into our manifold and this mapping is a
homeomorphizm. De Rham duality says that homology of the mainfold
(which is the same as homology of the complex) with real coefficients
is in duality with homology of complex of differential forms.
The duality is given by integration of a form over a chain.
Note, that in such setting coefficients of forms are functions
on the mainfold, while elemenst of chain are functions from
simplices to the manifold. There is extra condition, namely
if lower dimensional simplex S1 is a side of higher dimensional
simplex S2 function on S1 must agree with restriction of function
on S2.
Now, I do not see how your domain Simplex implement simplices.
In abstract case simplex is given by list of vertices (list
because we want orientation). Two simplices are equal if
one is evan permutation of the other. Odd permutation
change sign.
In case of triangulation we need mapping from simplices
to manifold. For n-dimensional manifold such mappings
may be given by n-tuple of elements of Expression(Integer).
But your implementation is quite unlike this.
> However, it's not quite satisfactory (imo). I'd like to unite the
> k-chains into one space
> (like a graded algebra) so I tried 'Union' recursively which displays
> 'horrible' Type terms.
>
> Union(Union(Union(Union(Union(Union(SimplicialChain(3,0,Expression(Integer)),
>
> SimplicialChain(3,1,Expression(Integer))),SimplicialChain(3,2,Expression(Inte
>
> ger))),SimplicialChain(3,3,Expression(Integer))),SimplicialChain(3,1,Expressi
>
> on(Integer))),SimplicialChain(3,2,Expression(Integer))),SimplicialChain(3,3,E
> xpression(Integer)))
> Type:
> Type
>
> Can this be supressed somehow or is there another (better) method?
Well, if you define a type whose Rep is a Union then normally
you will see the type and not the representation. In principle
this may even work for defining a graded algebra, but you may
easily hit bugs (no part of current algebra uses such recursive
Union with recursion depth depending on parameters).
I do not see why you want to take union way: what you
want is a module where coordinates come from different spaces.
So, if any recusive direct product would be more appropriate.
However, it looks simpler to define the whole direct product
from the start and if needed define components by restriction.
> ----
> )abbrev domain SMPLX Simplex
> Simplex(n,k,F) : Exports == Implementation where
>
> NNI ==> NonNegativeInteger
> n : NNI
> k : NNI
> F : Field
>
> Exports == Join(SetCategory, CoercibleTo OutputForm) with
>
> coerce : List(List F) -> %
> coerce : Matrix(F) -> %
> --coerce : % -> OutputForm
>
> Implementation == Matrix(F) add
>
> Rep := Matrix(F)
Why Matrix???
--
Waldek Hebisch
[email protected]
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.