Waldek,

I would be grateful if you could consider this patch before the next FriCAS release. It is a patch to alg_top.spad, this brings it up to 3 pending patches from me.

Patch is here:
https://github.com/martinbaker/fricasAlgTop/blob/master/alg_top3.patch
Full file is here:
https://github.com/martinbaker/fricasAlgTop/blob/master/alg_top.spad

I have modified bugs2016.input to match the code changes here:

Patch for this file is here:
https://github.com/martinbaker/fricasAlgTop/blob/master/bugs2016.patch
Full file is here:
https://github.com/martinbaker/fricasAlgTop/blob/master/bugs2016.input

These changes address some of your earlier comments about the algebraic topology code. The changes include:

* Remove SPAD test code.
* Remove existing vetexset domains
* Add numpoints parameter to rep of FiniteSimplecticalComplex and display this in output. * Change representation of DeltaComplex to indicate each point and reverse order of map.
* Add cochain
* Add type parameter to factory domains.
* Rename boundary function from delta to boundary.

Note: the order of the Maps in DeltaComplex is reversed in constructor, output and Rep so I had to change bugs2016.input to match this.

In accordance with your preference I have not yet changed the documentation (well I have changed some -- and ++ comments, I don't know if they count as documentation?)

With this code we can now convert from FiniteSimplicialComplex to DeltaComplex and back and the points are correctly translated regardless of whether they are included in higher order facets or not. Or even if the points are not used at all, like this:

(5) -> ASIMP := FiniteSimplicialComplex(Integer)

   (5)  FiniteSimplicialComplex(Integer)
                                               Type: Type
(6) -> v1:List(List(NNI)) := [[1::NNI,2::NNI],[4::NNI]]

   (6)  [[1,2],[4]]
                     Type: List(List(NonNegativeInteger))
(7) -> sc1 := deltaComplex(simplicialComplex([],4,v1)$ASIMP)

   (7)
            1D:[[1,- 2]]
         0D:[[0],[0],[],[0]]
                              Type: DeltaComplex(Integer)
(8) -> d1 := simplicialComplexIfCan(sc1)

   (8)  points 1..4
            (4)
           (1,2)
        Type: Union(FiniteSimplicialComplex(Integer),...)

The new cochain code allows us to assign AbelianGroup values to vertices and then calculate differences like this:

(1) -> FACTORY := SimplicialComplexFactory(Integer)

   (1)  SimplicialComplexFactory(Integer)
                                      Type: Type
(2) -> b1 := sphereSolid(2)$FACTORY

   (2)  points 1..3
          (1,2,3)
          Type: FiniteSimplicialComplex(Integer)
(3) -> d1 := deltaComplex(b1)

   (3)
                2D:[[1,- 2,3]]
         1D:[[1,- 2],[1,- 3],[2,- 3]]
               0D:[[0],[0],[0]]
                     Type: DeltaComplex(Integer)
(4) -> c1 := chain(d1)

                  + 1    1    0 + + 1 +
                  |             | |   |
   (4)  [0  0  0],|- 1   0    1 |,|- 1|,[]
                  |             | |   |
                  + 0   - 1  - 1+ + 1 +
                              Type: ChainComplex
(5) -> cc1 := coChain(d1)

                       +1  - 1   0 + +0+
                       |           | | |
   (5)  [],[1  - 1  1],|1   0   - 1|,|0|
                       |           | | |
                       +0   1   - 1+ +0+
                   Type: CoChainComplex(Integer)
(6) -> cb1 := coboundary(cc1,2::NNI,_
                   [3::Integer,4::Integer,5::Integer])

   (6)  [1,2,1]
                             Type: List(Integer)
(7) -> cb2 := coboundary(cc1,3::NNI,cb1)

   (7)  [0]
                             Type: List(Integer)

Thanks,

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