Martin Baker wrote: > > On 19/09/16 11:17, Waldek Hebisch wrote: > > AFAICS code which allows omiting lower > > dimensional faces is buggy, if we include lower dimensional > > faces we get duplicate simplices. In particular, all > > faces of triangle are duplicated and we get three extra > > loops. > > Are sure this is buggy? > AFAICS we need to take orientation into account and orientation requires > a consistent set of notation standards. Could it be that other programs > are using different conventions? > > (1) -> triangle := sphereSolid(2)$SimplicialComplexFactory > > (1) > (1,2,3) > Type: FiniteSimplicialComplex(VertexSetAbstract) > (2) -> delta(triangle) > > (2) > (1,2) > -(1,3) > (2,3) > Type: FiniteSimplicialComplex(VertexSetAbstract) > > So [(1,2),-(1,3), (2,3)] represents a circular chain (boundary of a > triangle). > > Which can be notated [(1,2),(3,1), (2,3)] > > OTOH [(1,2), (1,3), (2,3)] represents two parallel chains, starting and > ending at the same vertices. This will have different homology.

## Advertising

You are confused. As a face (part of simplical complex) (1,3) and (3, 1) are the same face. And problem is not due to wrong orientation of input: v2b:List(List(NNI)) := [[1,2],[3,1],[2,3],[1,2,3]] si2 := simplicialComplex(vertexSeta(3::NNI),v2b)$ASIMP (20) -> homology(si2) (20) [Z,Z*3,0] Type: List(Homology) (21) -> addImpliedFaces(si2) (21) [[(1,2),-(1,3),(2,3),(2,3),(1,3),(1,2)],[(1,2,3)]] Type: List(List(OrientedFacet)) Here orientation of one-dimensional edges agrees with boundary of two-dimensional simplex, but we get duplicated edges. AFAICS the problem is that 'addImpliedFaces' detects duplicates between boundary faces, but ignores possible duplication between explicitely provided faces and boundary faces. Oriententin in 'addImpliedFaces' just add some unnecessary complication because duplication should be detected diregarding orientation so it would be simpler to use unoriented faces here. Working with oriented faces means the we need something like your signed 'position' from OrientedFacet. > These conventions make sense to me because all we need to do is order > the facets (left entry is most significant) and then alternate the sign. > > This is what concerns me about your proposal, for changing the VertexSet > structure, the user interface could then loose this ordering information. > > So is this Cyclic? > [(a,b),-(a,c), (b,c)] > > I would say yes, but only if a<b<c or a>b>c, but the user can't know > this because they can't see the underlying index ordering. Hmm: - apparently you want chains here. Chains are not the same as complexes. - in homology cyclic means that boudary is zero. You get zero boundary from the chain _regardless_ of underlying index ordering. Different ordering can change orientation of edges and hence boundaries of edges, but the boundary of chain will change in consistent way, in partucular zero boundary will remain zero boudary. - you may be thinking homotopy here. You can get the same one-dimensional chain (in fact cycle) from two inequivalent loops. -- Waldek Hebisch -- 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 fricas-devel+unsubscr...@googlegroups.com. To post to this group, send email to fricas-devel@googlegroups.com. Visit this group at https://groups.google.com/group/fricas-devel. For more options, visit https://groups.google.com/d/optout.