From c9885a03b74cc2b7fc3d9cc933721e75631ec763 Mon Sep 17 00:00:00 2001 From: carlos alquezar Date: Sun, 20 Aug 2023 00:55:01 +0200 Subject: [PATCH] fixed max_depth error at injectivity_step and other changes --- aplK.py | 17 +++----- minimalModel.py | 6 +-- notebook/tutorial AplK.ipynb | 77 ++++++++++++++++++++---------------- test_minimal_model.py | 2 +- 4 files changed, 52 insertions(+), 50 deletions(-) diff --git a/aplK.py b/aplK.py index fb702e5..8ab9975 100644 --- a/aplK.py +++ b/aplK.py @@ -904,7 +904,7 @@ class AlgebraAplK(UniqueRepresentation, Parent): def __init__(self, parent, values): Element.__init__(self, parent) self.elements = self._reduce(values) - # self.check() + #self.check() def _repr_(self): """ @@ -1123,20 +1123,16 @@ class AlgebraAplK(UniqueRepresentation, Parent): primitive_basis[simplex.tuple()] = [] # add primitive elements related to the assigned polynomial pol = self.elements[simplex.tuple()] - primitive_basis[simplex.tuple( - )] += pol._get_primitive_basis() - primitive_basis[simplex.tuple()] = list( - set(primitive_basis[simplex.tuple()])) + primitive_basis[simplex.tuple()] += pol._get_primitive_basis() + primitive_basis[simplex.tuple()] = list(set(primitive_basis[simplex.tuple()])) primitive_basis[simplex.tuple()].sort(reverse=False) # propagate the primitive basis through its faces for f in range(n+1): simplex_face = S.face(simplex, f).tuple() if simplex_face not in primitive_basis.keys(): primitive_basis[simplex_face] = [] - primitive_basis[simplex_face] += self._face_basis( - primitive_basis[simplex.tuple()], f) - primitive_basis[simplex_face] = list( - set(primitive_basis[simplex_face])) + primitive_basis[simplex_face] += self._face_basis(primitive_basis[simplex.tuple()], f) + primitive_basis[simplex_face] = list(set(primitive_basis[simplex_face])) primitive_basis[simplex_face].sort(reverse=False) return primitive_basis @@ -1162,8 +1158,7 @@ class AlgebraAplK(UniqueRepresentation, Parent): for n in reversed(range(min_dim, dim+1)): for simplex in S._n_cells_sorted(n): prim_diff_basis = primitive_basis[simplex.tuple()] - differential_basis[simplex.tuple()] = self._diff_basis( - prim_diff_basis) + differential_basis[simplex.tuple()] = self._diff_basis(prim_diff_basis) return differential_basis def _get_differential_matrix(self, p_basis, d_basis): diff --git a/minimalModel.py b/minimalModel.py index f406187..e7eb2f0 100644 --- a/minimalModel.py +++ b/minimalModel.py @@ -221,7 +221,7 @@ def minimal_model(S, max_depth=5, max_dim=5): # Now we have an isomorphism in the first non-null cohomology group # we check if phi is a monomorphism [M, phi, names, degrees, differentials, limit] = injectivity_step(M, phi, first_dim+1, names, - degrees, differentials, A, index=0, depth=0, max_depth=5) + degrees, differentials, A, index=0, depth=0, max_depth=max_depth) if limit: print( "The algorithm has reach the injectivity depth-limit at dimension ", first_dim) @@ -234,10 +234,10 @@ def minimal_model(S, max_depth=5, max_dim=5): [M, phi, names, degrees, cohomology_correspondence] = surjective_step(A, M, phi, i, names, degrees, differentials, cohomology_correspondence) [M, phi, names, degrees, differentials, limit] = injectivity_step(M, phi, i+1, names, - degrees, differentials, A, index=0, depth=0, max_depth=5) + degrees, differentials, A, index=0, depth=0, max_depth=max_depth) if limit: print( - "The algorithm has reach the injectivity depth-limit at dimension", dim) + "The algorithm has reach the injectivity depth-limit at dimension", i+1) break return [M, phi, cohomology_correspondence] diff --git a/notebook/tutorial AplK.ipynb b/notebook/tutorial AplK.ipynb index ee0bbd9..6df97ae 100644 --- a/notebook/tutorial AplK.ipynb +++ b/notebook/tutorial AplK.ipynb @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -135,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -159,7 +159,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -235,7 +235,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -253,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -281,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -309,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -353,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -392,7 +392,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -410,7 +410,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -445,7 +445,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -508,7 +508,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -526,7 +526,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -562,7 +562,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -586,7 +586,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -604,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -625,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -669,7 +669,7 @@ "- $p^i \\in \\mathbb{Q}[t_1, \\dots, t_n]$\n", "- $(k_{1}^{i}, \\dots , k_{n}^{i}) \\neq (k_{1}^{j}, \\dots, k_{n}^{j})$ if $i \\neq j$\n", "\n", - "It is easy to see that $p$ will have as much as $2^n-1$ non-null terms in the variables $y_j$.\n", + "It is easy to see that $p$ will have at most $2^n-1$ non-null terms in the variables $y_j$.\n", "\n", "As we have set the lexicographic monomial ordering, for every two consecutive non-null terms in a polynomial $p$\n", "\n", @@ -796,7 +796,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -945,7 +945,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -963,7 +963,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -984,7 +984,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1065,7 +1065,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1214,7 +1214,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1232,7 +1232,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1253,7 +1253,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1332,7 +1332,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1388,7 +1388,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1406,7 +1406,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -1427,7 +1427,14 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1446,7 +1453,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1485,7 +1492,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -5487,7 +5494,7 @@ ], "metadata": { "kernelspec": { - "display_name": "SageMath 9.5.beta2", + "display_name": "SageMath 9.2", "language": "sage", "name": "sagemath" }, @@ -5501,7 +5508,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.5" }, "toc-autonumbering": false, "toc-showmarkdowntxt": false diff --git a/test_minimal_model.py b/test_minimal_model.py index 1224e78..f1b1942 100644 --- a/test_minimal_model.py +++ b/test_minimal_model.py @@ -16,5 +16,5 @@ print(S.facets()) ####################################################### # S = simplicial_complexes.ProjectivePlane().wedge(simplicial_complexes.Sphere(2), is_mutable=False) ####################################################### -[sullivan_model, model_morphism, cohomology_correspondence] = minimal_model(S, max_depth=5, max_dim=8) +[sullivan_model, model_morphism, cohomology_correspondence] = minimal_model(S, max_depth=10, max_dim=12) print(sullivan_model)