Hello Martin

You're certainly on track, however, as a believer in the KISS principle
I'd say there is room for improvement. Since I'm mostly interested in
homology I've not thoroughly tested the 'fundamentalGroup', yet some
questions related to homotopy:

* On
http://www.euclideanspace.com/prog/scratchpad/mycode/discrete/finiteGroup/presentation/
the sentence "Negative values indicate" ends abruptly, so what's the
exact meaning|purpose of the '<|>'? Maybe I'm confused by the result of
fundamentalGroup(fillSquare).

* I also found some discrepancies regarding the following facts: a) any
convex subset has a trivial fundamental group and b) the first singular
homology group coincides (isom) with the abelianization of the
fundamental group (if path connected), e.g. a 'cube'. I might be
mistaken because I don't understand the group presentation yet.

* Do you intend implementing higher homotopy groups?

Concerning 'homology' I find the algorithm quite elegant, however, why
do you define the function in each complex?
- FiniteSimplicialComplex
- FiniteCubicalComplex
- DeltaComplex
- ChainComplex()
For my taste it should be isolated as a general concept. Actually it
should be enough to define 'homology' on general abstract chains
represented as free abelian groups ([Z,Q,?]-Module whatever the
purpose). This would mean identifying simplices, cubes, faces, complexes
etc. with chains (not necessarily homogeneous).

What I really wanted to say is that it should be possible to achieve the
same functionality in about 300 lines of code. However, this is not so
important in the first place as to verify the algorithms.

You mentioned 'cohomology' in your source code comments related to
DeRhamComplex (lines 43 and 2718): this is of course on another level
but if you base your package on chains then it might be useful for
DeRham homology/cohomology in simple cases. Why? Because we can identify
chains as DeRham currents which are acting on cochains ~ differential
forms (already in Fricas as DeRhamComplex). There are a lot of
difficulties of course working with R-Modules in Fricas, yet with the
CAD package it might be possible for some simple algebraic varieties.

I keep up testing.

GrĂ¼sse
Kurt






Am 30.06.2016 um 17:50 schrieb Martin Baker:
> Does anyone have any validated examples that I could use to check my
> homology (using Waldeks method) and homotopy code?
> 
> Below are some examples of homology and homotopy from simplicial and
> cubical complexes. I think the results are starting to look quite
> promising. There is obviously a problem with the homotopy since
> fundamental group is giving a different result for triangle and square.
> Looks like there is also a problem with projective plane since this
> gives [Z,C2,0] but sage gives:
> RP4 = simplicial_complexes.RealProjectiveSpace(2)
> RP4.homology()
> {0: 0, 1: C2, 2: 0}
> 
> I would appreciate any help to improve and validate the code.
> 
> Here are some results from my SPAD code:
> (Note: low dimensions are on the left)
> 
> fillTriangle := sphereSolid(2)$SimplicialComplexFactory
> 
>    (1)
>         (1,2,3)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(fillTriangle)
> 
>    (2)  [Z,0,0]
>                                      Type: List(Homology)
> fundamentalGroup(fillTriangle)
> 
>    (3)  <  |  >
>                                   Type: GroupPresentation
> fillSquare := sphereSolid(2)$CubicalComplexFactory
> 
>    (4)
>         (1..2,1..2)
>                       Type: FiniteCubicalComplex(VertexSetAbstract)
> homology(fillSquare)
> 
>    (5)  [Z,0,0]
>                                      Type: List(Homology)
> fundamentalGroup(fillSquare)
> 
>    (6)  <d |  >
>                                   Type: GroupPresentation
> fillTetra := sphereSolid(3)$SimplicialComplexFactory
> 
>    (7)
>         (1,2,3,4)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(fillTetra)
> 
>    (8)  [Z,0,0,0]
>                                      Type: List(Homology)
> fundamentalGroup(fillTetra)
> 
>    (9)  <  |  >
>                                   Type: GroupPresentation
> fillCube := sphereSolid(3)$CubicalComplexFactory
> 
>    (10)
>          (1..2,1..2,1..2)
>                       Type: FiniteCubicalComplex(VertexSetAbstract)
> homology(fillCube)
> 
>    (11)  [Z,0,0,0]
>                                      Type: List(Homology)
> fundamentalGroup(fillCube)
> 
>                - 1
>    (12)  <k l m n |   m*l   *k>
> 
>                                   Type: GroupPresentation
> triangle := sphereSurface(2)$SimplicialComplexFactory
> 
>    (13)
>          (1,2)
>          -(1,3)
>          (2,3)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(triangle)
> 
>    (14)  [Z,Z]
>                                      Type: List(Homology)
> fundamentalGroup(triangle)
> 
>    (15)  <c |  >
>                                   Type: GroupPresentation
> tetra := sphereSurface(3)$SimplicialComplexFactory
> 
>    (16)
>          (1,2,3)
>          -(1,2,4)
>          (1,3,4)
>          -(2,3,4)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(tetra)
> 
>    (17)  [Z,0,Z]
>                                      Type: List(Homology)
> fundamentalGroup(tetra)
> 
>    (18)  <  |  >
>                                   Type: GroupPresentation
> torus := torusSurface()$SimplicialComplexFactory
> 
>    (19)
>          (1,2,3)
>          (2,3,5)
>          (2,4,5)
>          (2,4,7)
>          (1,2,6)
>          (2,6,7)
>          (3,4,6)
>          (3,5,6)
>          (3,4,7)
>          (1,3,7)
>          (1,4,5)
>          (1,4,6)
>          (5,6,7)
>          (1,5,7)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(torus)
> 
>    (20)  [Z,Z*2,Z]
>                                      Type: List(Homology)
> fundamentalGroup(torus)
> 
>              - 1          - 1
>    (21)  <o t w |   o*w   *t   o*t*w   >
> 
>                                   Type: GroupPresentation
> proj := projectivePlane()$SimplicialComplexFactory
> 
>    (22)
>          (1,2,3)
>          (1,3,4)
>          (1,2,6)
>          (1,5,6)
>          (1,4,5)
>          (2,3,5)
>          (2,4,5)
>          (2,4,6)
>          (3,4,6)
>          (3,5,6)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(proj)
> 
>    (23)  [Z,C2,0]
>                                      Type: List(Homology)
> fundamentalGroup(proj)
> 
>    (24)  <p |   p*p>
>                                   Type: GroupPresentation
> klein := kleinBottle()$SimplicialComplexFactory
> 
>    (25)
>          (3,4,8)
>          (2,3,4)
>          (2,4,6)
>          (2,6,8)
>          (2,5,8)
>          (3,5,7)
>          (2,3,7)
>          (1,2,7)
>          (1,2,5)
>          (1,3,5)
>          (4,5,8)
>          (4,5,7)
>          (4,6,7)
>          (1,6,7)
>          (1,3,6)
>          (3,6,8)
>                    Type: FiniteSimplicialComplex(VertexSetAbstract)
> homology(klein)
> 
>    (26)  [Z,Z+C2,0]
>                                      Type: List(Homology)
> fundamentalGroup(klein)
> 
>              - 1
>    (27)  <v w z |   w*z   *v   v*z*w>
> 
>                                   Type: GroupPresentation
> 
> 
> If anyone would like to try the code it is in usual place:
> 
> https://github.com/martinbaker/multivector/blob/master/logic.spad
> https://github.com/martinbaker/multivector/blob/master/graph.spad
> https://github.com/martinbaker/multivector/blob/master/groupPresentation.spad
> 
> https://github.com/martinbaker/multivector/blob/master/algebraictopology.spad
> 
> 
> Then compile as follows:
> 
> )boot $createLocalLibDb:=false
> )co logic
> )co graph
> )co groupPresentation
> )boot $bootStrapMode := true
> )co algebraictopology
> )co algebraictopology
> )boot $bootStrapMode := false
> )co algebraictopology
> 
> Martin B
> 

-- 
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 https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to