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.