Opened 3 years ago

Last modified 2 years ago

## #28176 closed defect

# Fix few bugs in ClusterAlgebra discovered while working on #26771 — at Initial Version

Reported by: | etn40ff | Owned by: | |
---|---|---|---|

Priority: | major | Milestone: | sage-8.9 |

Component: | algebra | Keywords: | ClusterAlgebras |

Cc: | tscrim, gmoose05, stumpc5, gh-EBanaian, drupel, gh-kelleye | Merged in: | |

Authors: | Salvatore Stella | Reviewers: | |

Report Upstream: | N/A | Work issues: | |

Branch: | Commit: | ||

Dependencies: | Stopgaps: |

### Description

As pointed out by the people at #26771, `ClusterAlgebra`

has few bugs.

- Default arguments do not play nicely with
`UniqueRepresentation`

sage: A1 = ClusterAlgebra(['A',2]) sage: A2 = ClusterAlgebra(['A',2], cluster_variable_prefix='x') sage: A1 is A2 False

`mutate_initial`

keeps the same variable names; In theory this is not a problem but may create confusion. For example suppose we are looking at the Grassmannian of planes in a 4 dimensional vector space. Then the associate cluster algebra is

sage: A = ClusterAlgebra( matrix(5,[0,1,-1,1,-1]), cluster_variable_names=['p13'], coefficient_names=['p12','p23','p34','p41'], scalars=QQbar); A A Cluster Algebra with cluster variable p13 and coefficients p12, p23, p34, p41 over Algebraic Field

Swapping out

`p13`

from the initial seed should give`p24`

or, at the very least *not*`p13`

. Getting`p24`

requires some understanding of what the ring in question really is that goes beyond the scope of this class. Currently we get

sage: A.mutate_initial(0) A Cluster Algebra with cluster variable p13 and coefficients p12, p23, p34, p41 over Algebraic Field

`mutate_initial`

does not compute all the required F-polynomials and it does not enforce the fact that they are not rational expressions

sage: A1 = ClusterAlgebra(['A',[2,1],1]) sage: A2 = A1.mutate_initial([0,1,0]) sage: len(A2.g_vectors_so_far()) == len(A2.F_polynomials_so_far()) False sage: all(parent(f) == A2._U for f in A2.F_polynomials_so_far()) False

- finally
`mutate_initial`

does not enforce the fact that initial g-vectors belong to the initial cluster but rather prepend the performed mutation sequence to all the paths already known.

sage: A2.find_g_vector((0,0,1)) [0, 1, 0]

This, while technically not false, may generate confusion.

This ticket deals with all these issues.

**Note:**See TracTickets for help on using tickets.