From b9805bbb5eeb96276f001f5ad11baf0b0b4d19aa Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Wed, 14 Feb 2024 12:23:09 +0530 Subject: [PATCH 01/11] Modified the doc to display the HTML nicely --- .../sets/media/recursively-enumerated-set.pdf | Bin 0 -> 22396 bytes .../sets/media/recursively-enumerated-set.png | Bin 0 -> 27161 bytes src/sage/sets/recursively_enumerated_set.pyx | 45 ++---------------- 3 files changed, 4 insertions(+), 41 deletions(-) create mode 100644 src/doc/en/reference/sets/media/recursively-enumerated-set.pdf create mode 100644 src/doc/en/reference/sets/media/recursively-enumerated-set.png diff --git a/src/doc/en/reference/sets/media/recursively-enumerated-set.pdf b/src/doc/en/reference/sets/media/recursively-enumerated-set.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0c14b3febc842e68b18a71e0ff5f3ea4daf03254 GIT binary patch literal 22396 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%0Af?L+sv6P+tui)R+b=#Y-}v|21Yg3VH#|ZcCI~p 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 literal 0 HcmV?d00001 diff --git a/src/doc/en/reference/sets/media/recursively-enumerated-set.png b/src/doc/en/reference/sets/media/recursively-enumerated-set.png new file mode 100644 index 0000000000000000000000000000000000000000..54864b24b6fdddce40e5aab67704f859e9bfd6ad GIT binary patch literal 27161 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 literal 0 HcmV?d00001 diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index 66720d924e5..27ef65c4e6a 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -9,7 +9,7 @@ sets that are described by some ``seeds`` and a successor function graded, forest) or not. The elements of a set having a symmetric, graded or forest structure can be enumerated uniquely without keeping all of them in memory. Many kinds of iterators are provided in this module: depth first -search, breadth first search or elements of given depth. +search, breadth first search and elements of given depth. See :wikipedia:`Recursively_enumerable_set`. @@ -20,8 +20,6 @@ AUTHORS: - Sébastien Labbé, April 2014, at Sage Days 57, Cernay-la-ville -EXAMPLES: - No hypothesis on the structure ------------------------------ @@ -173,43 +171,8 @@ Only two things are necessary to define a set using a :class:`RecursivelyEnumeratedSet` object (the other classes being very similar): -.. MATH:: - - \begin{picture}(-300,0)(600,0) - % Root - \put(0,0){\circle*{7}} - \put(0,10){\makebox(0,10){``\ ''}} - % First Children - \put(-150,-60){\makebox(0,10){``a''}} - \put(0,-60){\makebox(0,10){``b''}} - \put(150,-60){\makebox(0,10){``c''}} - \multiput(-150,-70)(150,0){3}{\circle*{7}} - % Second children - \put(-200,-130){\makebox(0,10){``aa''}} - \put(-150,-130){\makebox(0,10){``ab''}} - \put(-100,-130){\makebox(0,10){``ac''}} - \put(-50,-130){\makebox(0,10){``ba''}} - \put(0,-130){\makebox(0,10){``bb''}} - \put(50,-130){\makebox(0,10){``bc''}} - \put(100,-130){\makebox(0,10){``ca''}} - \put(150,-130){\makebox(0,10){``cb''}} - \put(200,-130){\makebox(0,10){``cc''}} - \multiput(-200,-140)(50,0){9}{\circle*{7}} - % Legend - \put(100,-5){\makebox(0,10)[l]{1) An initial element}} - \put(-250,-5){\makebox(0,10)[l]{2) A function of an element enumerating}} - \put(-235,-20){\makebox(0,10)[l]{its children (if any)}} - % Arrows - \thicklines - \put(0,-10){\vector(0,-1){30}} - \put(-15,-5){\vector(-2,-1){110}} - \put(15,-5){\vector(2,-1){110}} - \multiput(-150,-80)(150,0){3}{\vector(0,-1){30}} - \multiput(-160,-80)(150,0){3}{\vector(-1,-1){30}} - \multiput(-140,-80)(150,0){3}{\vector(1,-1){30}} - \put(90,0){\vector(-1,0){70}} - \put(-215,-30){\vector(1,-1){40}} - \end{picture} +.. figure:: ../../media/recursively-enumerated-set.png + :scale: 67 % For the previous example, the two necessary pieces of information are: @@ -256,7 +219,7 @@ This example was provided by Florent Hivert. Here is a little more involved example. We want to iterate through all permutations of a given set `S`. One solution is to take elements of `S` one -by one an insert them at every positions. So a node of the generating tree +by one and insert them at every positions. So a node of the generating tree contains two pieces of information: - the list ``lst`` of already inserted element; From 7e22d869744338adade880b9a29d4e263f91eb39 Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Wed, 14 Feb 2024 12:44:39 +0530 Subject: [PATCH 02/11] Corrected a spelling error --- src/sage/sets/recursively_enumerated_set.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index 27ef65c4e6a..d865914b2e9 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -219,7 +219,7 @@ This example was provided by Florent Hivert. Here is a little more involved example. We want to iterate through all permutations of a given set `S`. One solution is to take elements of `S` one -by one and insert them at every positions. So a node of the generating tree +by one and insert them at every position. So a node of the generating tree contains two pieces of information: - the list ``lst`` of already inserted element; From d39eedc29961cbb153881958a8d3d852d752f05d Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Wed, 14 Feb 2024 13:11:30 +0530 Subject: [PATCH 03/11] Corrected some typos --- src/sage/sets/recursively_enumerated_set.pyx | 36 ++++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index d865914b2e9..5ecb32bdb1a 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -13,7 +13,7 @@ search, breadth first search and elements of given depth. See :wikipedia:`Recursively_enumerable_set`. -See documentation of :func:`RecursivelyEnumeratedSet` below for the +See the documentation of :func:`RecursivelyEnumeratedSet` below for the description of the inputs. AUTHORS: @@ -25,7 +25,7 @@ No hypothesis on the structure What we mean by "no hypothesis" is that the set is not known to be a forest, symmetric, or graded. However, it may have other -structure, like not containing an oriented cycle, that does not +structures, such as not containing an oriented cycle, that do not help with the enumeration. In this example, the seed is 0 and the successor function is either ``+2`` @@ -139,7 +139,7 @@ Forest structure ---------------- The set of words over the alphabet `\{a,b\}` can be generated from the -empty word by appending letter `a` or `b` as a successor function. This set +empty word by appending the letter `a` or `b` as a successor function. This set has a forest structure:: sage: seeds = [''] @@ -182,7 +182,7 @@ For the previous example, the two necessary pieces of information are: lambda x: [x + letter for letter in ['a', 'b', 'c'] -This would actually describe an **infinite** set, as such rules describes +This would actually describe an **infinite** set, as such rules describe "all words" on 3 letters. Hence, it is a good idea to replace the function by:: lambda x: [x + letter for letter in ['a', 'b', 'c']] if len(x) < 2 else [] @@ -283,7 +283,7 @@ def RecursivelyEnumeratedSet(seeds, successors, structure=None, A set `S` is called recursively enumerable if there is an algorithm that enumerates the members of `S`. We consider here the recursively - enumerated set that are described by some ``seeds`` and a successor + enumerated sets that are described by some ``seeds`` and a successor function ``successors``. Let `U` be a set and ``successors`` `:U \to 2^U` be a successor function @@ -369,7 +369,7 @@ def RecursivelyEnumeratedSet(seeds, successors, structure=None, .. WARNING:: - If you do not set the good structure, you might obtain bad results, + If you do not set a good structure, you might obtain bad results, like elements generated twice:: sage: f = lambda a: [a-1,a+1] @@ -744,8 +744,8 @@ cdef class RecursivelyEnumeratedSet_generic(Parent): r""" Iterate over the elements of ``self`` of given depth. - An element of depth `n` can be obtained applying `n` times the - successor function to a seed. + An element of depth `n` can be obtained by applying the + successor function `n` times to a seed. INPUT: @@ -810,7 +810,7 @@ cdef class RecursivelyEnumeratedSet_generic(Parent): r""" Iterate on the elements of ``self`` (breadth first). - This code remembers every elements generated and uses python + This code remembers every element generated and uses python queues. It is 3 times slower than the other one. See :wikipedia:`Breadth-first_search`. @@ -839,7 +839,7 @@ cdef class RecursivelyEnumeratedSet_generic(Parent): r""" Iterate on the elements of ``self`` (in no particular order). - This code remembers every elements generated. + This code remembers every element generated. TESTS: @@ -868,7 +868,7 @@ cdef class RecursivelyEnumeratedSet_generic(Parent): r""" Iterate on the elements of ``self`` (depth first). - This code remembers every elements generated. + This code remembers every element generated. The elements are traversed right-to-left, so the last element returned by the successor function is visited first. @@ -1515,7 +1515,7 @@ def search_forest_iterator(roots, children, algorithm='depth'): [0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] - This allows for iterating trough trees of infinite depth:: + This allows for iterating through trees of infinite depth:: sage: it = search_forest_iterator([[]], lambda l: [l+[0], l+[1]], algorithm='breadth') sage: [ next(it) for i in range(16) ] @@ -1537,7 +1537,7 @@ def search_forest_iterator(roots, children, algorithm='depth'): [0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]] """ # Little trick: the same implementation handles both depth and - # breadth first search. Setting position to -1 makes a depth search + # breadth first search. Setting the position to -1 makes a depth search # (you ask the children for the last node you met). Setting # position on 0 makes a breadth search (enumerate all the # descendants of a node before going on to the next father) @@ -1883,8 +1883,8 @@ class RecursivelyEnumeratedSet_forest(Parent): def _elements_of_depth_iterator_rec(self, depth=0): r""" Return an iterator over the elements of ``self`` of given depth. - An element of depth `n` can be obtained applying `n` times the - children function from a root. This function is not affected + An element of depth `n` can be obtained by applying the + children function `n` times from the root. This function is not affected by post processing. EXAMPLES:: @@ -1914,8 +1914,8 @@ class RecursivelyEnumeratedSet_forest(Parent): def elements_of_depth_iterator(self, depth=0): r""" Return an iterator over the elements of ``self`` of given depth. - An element of depth `n` can be obtained applying `n` times the - children function from a root. + An element of depth `n` can be obtained by applying the + children function `n` times from the root. EXAMPLES:: @@ -1973,7 +1973,7 @@ class RecursivelyEnumeratedSet_forest(Parent): depth first search and breadth first search failed. The following example enumerates all ordered pairs of nonnegative integers, starting from an infinite set of roots, where each - roots has an infinite number of children:: + root has an infinite number of children:: sage: from sage.sets.recursively_enumerated_set import RecursivelyEnumeratedSet_forest sage: S = RecursivelyEnumeratedSet_forest(Family(NN, lambda x : (x, 0)), From 62437bbcd34c3314606e61a8b072f3e7eb2f6b43 Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Fri, 16 Feb 2024 18:52:07 +0530 Subject: [PATCH 04/11] Fixed the documentation --- src/sage/sets/recursively_enumerated_set.pyx | 33 +++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index 5ecb32bdb1a..c38cd85ef85 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -25,7 +25,7 @@ No hypothesis on the structure What we mean by "no hypothesis" is that the set is not known to be a forest, symmetric, or graded. However, it may have other -structures, such as not containing an oriented cycle, that do not +structure, such as not containing an oriented cycle, that does not help with the enumeration. In this example, the seed is 0 and the successor function is either ``+2`` @@ -171,8 +171,25 @@ Only two things are necessary to define a set using a :class:`RecursivelyEnumeratedSet` object (the other classes being very similar): -.. figure:: ../../media/recursively-enumerated-set.png - :scale: 67 % +.. MATH:: + + \begin{array}{rcl} + & ^{``}\hspace{0.5em}^{"} \\ + \swarrow & \downarrow & \searrow \\[5pt] + ^{``}a^{"} \hspace{3.125em} & ^{``}b^{"} & \hspace{3.125em}^{``}c^{"} \\ + \begin{array}{rcl} + \swarrow & \downarrow & \searrow \\[5pt] + ^{``}aa^{"}\: & ^{``}ab^{"} & \:^{``}ac^{"} \\ + \end{array} & + \begin{array}{rcl} + \swarrow & \downarrow & \searrow \\[5pt] + ^{``}ba^{"}\: & ^{``}bb^{"} & \:^{``}bc^{"} \\ + \end{array} & + \begin{array}{rcl} + \swarrow & \downarrow & \searrow \\[5pt] + ^{``}ca^{"}\: & ^{``}cb^{"} & \:^{``}cc^{"} \\ + \end{array} + \end{array} For the previous example, the two necessary pieces of information are: @@ -369,7 +386,7 @@ def RecursivelyEnumeratedSet(seeds, successors, structure=None, .. WARNING:: - If you do not set a good structure, you might obtain bad results, + If you do not set a valid structure, you might obtain bad results, like elements generated twice:: sage: f = lambda a: [a-1,a+1] @@ -1537,9 +1554,9 @@ def search_forest_iterator(roots, children, algorithm='depth'): [0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]] """ # Little trick: the same implementation handles both depth and - # breadth first search. Setting the position to -1 makes a depth search + # breadth first search. Setting position to -1 initiates a depth search # (you ask the children for the last node you met). Setting - # position on 0 makes a breadth search (enumerate all the + # position on 0 initiates a breadth search (enumerate all the # descendants of a node before going on to the next father) if algorithm == 'depth': position = -1 @@ -1884,7 +1901,7 @@ class RecursivelyEnumeratedSet_forest(Parent): r""" Return an iterator over the elements of ``self`` of given depth. An element of depth `n` can be obtained by applying the - children function `n` times from the root. This function is not affected + children function `n` times from a root. This function is not affected by post processing. EXAMPLES:: @@ -1915,7 +1932,7 @@ class RecursivelyEnumeratedSet_forest(Parent): r""" Return an iterator over the elements of ``self`` of given depth. An element of depth `n` can be obtained by applying the - children function `n` times from the root. + children function `n` times from a root. EXAMPLES:: From 5014db8c04ca6441ee3d1710db930d0761101d03 Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Fri, 16 Feb 2024 19:00:10 +0530 Subject: [PATCH 05/11] Removed the unnecessary sets/media folder --- .../sets/media/recursively-enumerated-set.pdf | Bin 22396 -> 0 bytes .../sets/media/recursively-enumerated-set.png | Bin 27161 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/doc/en/reference/sets/media/recursively-enumerated-set.pdf delete mode 100644 src/doc/en/reference/sets/media/recursively-enumerated-set.png diff --git a/src/doc/en/reference/sets/media/recursively-enumerated-set.pdf b/src/doc/en/reference/sets/media/recursively-enumerated-set.pdf deleted file mode 100644 index 0c14b3febc842e68b18a71e0ff5f3ea4daf03254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22396 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%0Af?L+sv6P+tui)R+b=#Y-}v|21Yg3VH#|ZcCI~p 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 diff --git a/src/doc/en/reference/sets/media/recursively-enumerated-set.png b/src/doc/en/reference/sets/media/recursively-enumerated-set.png deleted file mode 100644 index 54864b24b6fdddce40e5aab67704f859e9bfd6ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27161 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 From ba1f5d78ad688760aa12e882aa26336a7085ccd4 Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Sat, 17 Feb 2024 09:28:52 +0530 Subject: [PATCH 06/11] Modified the Forest structure to display HTML nicely --- src/sage/sets/recursively_enumerated_set.pyx | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index c38cd85ef85..08ab505a4e7 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -173,21 +173,21 @@ classes being very similar): .. MATH:: - \begin{array}{rcl} - & ^{``}\hspace{0.5em}^{"} \\ - \swarrow & \downarrow & \searrow \\[5pt] - ^{``}a^{"} \hspace{3.125em} & ^{``}b^{"} & \hspace{3.125em}^{``}c^{"} \\ - \begin{array}{rcl} - \swarrow & \downarrow & \searrow \\[5pt] - ^{``}aa^{"}\: & ^{``}ab^{"} & \:^{``}ac^{"} \\ - \end{array} & - \begin{array}{rcl} - \swarrow & \downarrow & \searrow \\[5pt] - ^{``}ba^{"}\: & ^{``}bb^{"} & \:^{``}bc^{"} \\ - \end{array} & - \begin{array}{rcl} - \swarrow & \downarrow & \searrow \\[5pt] - ^{``}ca^{"}\: & ^{``}cb^{"} & \:^{``}cc^{"} \\ + \begin{array}{ccc} + & ``\," \\ + \hfil\swarrow & \downarrow & \searrow\hfil\\ + ``a" & ``b" & ``c" \\ + \begin{array}{ccc} + \swarrow & \downarrow & \searrow \\ + ``aa" & ``ab" & ``ac" \\ + \end{array} & + \begin{array}{ccc} + \swarrow & \downarrow & \searrow \\ + ``ba" & ``bb" & ``bc" \\ + \end{array} & + \begin{array}{ccc} + \swarrow & \downarrow & \searrow \\ + ``ca" & ``cb" & ``cc" \\ \end{array} \end{array} From 191993a82a0f24a7c44fbbdace09f4cccdb217db Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Sun, 18 Feb 2024 22:45:50 +0530 Subject: [PATCH 07/11] Removed some trailing spaces --- src/sage/sets/recursively_enumerated_set.pyx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index 08ab505a4e7..e40bf792f43 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -180,11 +180,11 @@ classes being very similar): \begin{array}{ccc} \swarrow & \downarrow & \searrow \\ ``aa" & ``ab" & ``ac" \\ - \end{array} & + \end{array} & \begin{array}{ccc} \swarrow & \downarrow & \searrow \\ ``ba" & ``bb" & ``bc" \\ - \end{array} & + \end{array} & \begin{array}{ccc} \swarrow & \downarrow & \searrow \\ ``ca" & ``cb" & ``cc" \\ From de98279e9fb04d7b7d7a52310c00077b890fcde6 Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Sun, 25 Feb 2024 13:03:51 +0530 Subject: [PATCH 08/11] Added Examples tag before the examples --- src/sage/sets/recursively_enumerated_set.pyx | 30 +++++++++++--------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index e40bf792f43..c6913e9ae23 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -28,6 +28,8 @@ to be a forest, symmetric, or graded. However, it may have other structure, such as not containing an oriented cycle, that does not help with the enumeration. +EXAMPLES: + In this example, the seed is 0 and the successor function is either ``+2`` or ``+3``. This is the set of non negative linear combinations of 2 and 3:: @@ -53,7 +55,9 @@ Symmetric structure The origin ``(0, 0)`` as seed and the upper, lower, left and right lattice point as successor function. This function is symmetric since `p` is a -successor of `q` if and only if `q` is a successor or `p`:: +successor of `q` if and only if `q` is a successor or `p`: + +EXAMPLES:: sage: succ = lambda a: [(a[0]-1,a[1]), (a[0],a[1]-1), (a[0]+1,a[1]), (a[0],a[1]+1)] sage: seeds = [(0,0)] @@ -88,7 +92,9 @@ Graded structure ---------------- Identity permutation as seed and ``permutohedron_succ`` as successor -function:: +function: + +EXAMPLES:: sage: succ = attrcall("permutohedron_succ") sage: seed = [Permutation([1..5])] @@ -138,6 +144,8 @@ Graded components (set of elements of the same depth):: Forest structure ---------------- +EXAMPLES: + The set of words over the alphabet `\{a,b\}` can be generated from the empty word by appending the letter `a` or `b` as a successor function. This set has a forest structure:: @@ -160,10 +168,7 @@ Breadth first search iterator:: sage: [next(it) for _ in range(6)] ['', 'a', 'b', 'aa', 'ab', 'ba'] -Example: Forest structure -------------------------- - -This example was provided by Florent Hivert. +The following example of Forest structure was provided by Florent Hivert. How to define a set using those classes? @@ -229,10 +234,7 @@ or:: sage: S.list() ['', 'a', 'aa', 'ab', 'ac', 'b', 'ba', 'bb', 'bc', 'c', 'ca', 'cb', 'cc'] -Example: Forest structure 2 ---------------------------- - -This example was provided by Florent Hivert. +The following example of Forest structure was provided by Florent Hivert. Here is a little more involved example. We want to iterate through all permutations of a given set `S`. One solution is to take elements of `S` one @@ -386,7 +388,7 @@ def RecursivelyEnumeratedSet(seeds, successors, structure=None, .. WARNING:: - If you do not set a valid structure, you might obtain bad results, + If you do not set a good structure, you might obtain bad results, like elements generated twice:: sage: f = lambda a: [a-1,a+1] @@ -1554,9 +1556,9 @@ def search_forest_iterator(roots, children, algorithm='depth'): [0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]] """ # Little trick: the same implementation handles both depth and - # breadth first search. Setting position to -1 initiates a depth search + # breadth first search. Setting position to -1 results in a depth search # (you ask the children for the last node you met). Setting - # position on 0 initiates a breadth search (enumerate all the + # position on 0 results in a breadth search (enumerate all the # descendants of a node before going on to the next father) if algorithm == 'depth': position = -1 @@ -1690,6 +1692,8 @@ class RecursivelyEnumeratedSet_forest(Parent): recover the corresponding integers, and discard tuples finishing by zero. + EXAMPLES: + A first approach is to pass the ``roots`` and ``children`` functions as arguments to :meth:`RecursivelyEnumeratedSet_forest.__init__`:: From 1f5d1d720d5c66d132e39261674a409509f1061f Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Fri, 1 Mar 2024 01:14:30 +0530 Subject: [PATCH 09/11] Corrected the positions of example tags --- src/sage/sets/recursively_enumerated_set.pyx | 22 ++++++++------------ 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index c6913e9ae23..047338518de 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -20,6 +20,8 @@ AUTHORS: - Sébastien Labbé, April 2014, at Sage Days 57, Cernay-la-ville +EXAMPLES: + No hypothesis on the structure ------------------------------ @@ -28,8 +30,6 @@ to be a forest, symmetric, or graded. However, it may have other structure, such as not containing an oriented cycle, that does not help with the enumeration. -EXAMPLES: - In this example, the seed is 0 and the successor function is either ``+2`` or ``+3``. This is the set of non negative linear combinations of 2 and 3:: @@ -55,9 +55,7 @@ Symmetric structure The origin ``(0, 0)`` as seed and the upper, lower, left and right lattice point as successor function. This function is symmetric since `p` is a -successor of `q` if and only if `q` is a successor or `p`: - -EXAMPLES:: +successor of `q` if and only if `q` is a successor or `p`:: sage: succ = lambda a: [(a[0]-1,a[1]), (a[0],a[1]-1), (a[0]+1,a[1]), (a[0],a[1]+1)] sage: seeds = [(0,0)] @@ -92,9 +90,7 @@ Graded structure ---------------- Identity permutation as seed and ``permutohedron_succ`` as successor -function: - -EXAMPLES:: +function:: sage: succ = attrcall("permutohedron_succ") sage: seed = [Permutation([1..5])] @@ -144,7 +140,7 @@ Graded components (set of elements of the same depth):: Forest structure ---------------- -EXAMPLES: +.. RUBRIC:: Forest structure [Ex 1] The set of words over the alphabet `\{a,b\}` can be generated from the empty word by appending the letter `a` or `b` as a successor function. This set @@ -168,7 +164,7 @@ Breadth first search iterator:: sage: [next(it) for _ in range(6)] ['', 'a', 'b', 'aa', 'ab', 'ba'] -The following example of Forest structure was provided by Florent Hivert. +This example was provided by Florent Hivert. How to define a set using those classes? @@ -234,7 +230,9 @@ or:: sage: S.list() ['', 'a', 'aa', 'ab', 'ac', 'b', 'ba', 'bb', 'bc', 'c', 'ca', 'cb', 'cc'] -The following example of Forest structure was provided by Florent Hivert. +.. RUBRIC:: Forest structure [Ex 2] + +This example was provided by Florent Hivert. Here is a little more involved example. We want to iterate through all permutations of a given set `S`. One solution is to take elements of `S` one @@ -1692,8 +1690,6 @@ class RecursivelyEnumeratedSet_forest(Parent): recover the corresponding integers, and discard tuples finishing by zero. - EXAMPLES: - A first approach is to pass the ``roots`` and ``children`` functions as arguments to :meth:`RecursivelyEnumeratedSet_forest.__init__`:: From 3abd66fce2e634b28accbeaac4d0c5c1081221dc Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Sun, 3 Mar 2024 19:55:41 +0530 Subject: [PATCH 10/11] Added .. RUBRIC:: for example headings --- src/sage/sets/recursively_enumerated_set.pyx | 26 ++++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index 047338518de..b4c61ae49ad 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -22,8 +22,7 @@ AUTHORS: EXAMPLES: -No hypothesis on the structure ------------------------------- +.. RUBRIC:: No hypothesis on the structure What we mean by "no hypothesis" is that the set is not known to be a forest, symmetric, or graded. However, it may have other @@ -50,8 +49,7 @@ Depth first search:: sage: [next(it) for _ in range(10)] [0, 3, 6, 9, 12, 15, 18, 21, 24, 27] -Symmetric structure -------------------- +.. RUBRIC:: Symmetric structure The origin ``(0, 0)`` as seed and the upper, lower, left and right lattice point as successor function. This function is symmetric since `p` is a @@ -86,8 +84,7 @@ Levels (elements of given depth):: sage: sorted(C.graded_component(2)) [(-2, 0), (-1, -1), (-1, 1), (0, -2), (0, 2), (1, -1), (1, 1), (2, 0)] -Graded structure ----------------- +.. RUBRIC:: Graded structure Identity permutation as seed and ``permutohedron_succ`` as successor function:: @@ -137,10 +134,7 @@ Graded components (set of elements of the same depth):: sage: sorted(R.graded_component(10)) [[5, 4, 3, 2, 1]] -Forest structure ----------------- - -.. RUBRIC:: Forest structure [Ex 1] +.. RUBRIC:: Forest structure (Example 1) The set of words over the alphabet `\{a,b\}` can be generated from the empty word by appending the letter `a` or `b` as a successor function. This set @@ -175,20 +169,20 @@ classes being very similar): .. MATH:: \begin{array}{ccc} - & ``\," \\ + & \emptyset \\ \hfil\swarrow & \downarrow & \searrow\hfil\\ - ``a" & ``b" & ``c" \\ + a & b & c \\ \begin{array}{ccc} \swarrow & \downarrow & \searrow \\ - ``aa" & ``ab" & ``ac" \\ + aa & ab & ac \\ \end{array} & \begin{array}{ccc} \swarrow & \downarrow & \searrow \\ - ``ba" & ``bb" & ``bc" \\ + ba & bb & bc \\ \end{array} & \begin{array}{ccc} \swarrow & \downarrow & \searrow \\ - ``ca" & ``cb" & ``cc" \\ + ca & cb & cc \\ \end{array} \end{array} @@ -230,7 +224,7 @@ or:: sage: S.list() ['', 'a', 'aa', 'ab', 'ac', 'b', 'ba', 'bb', 'bc', 'c', 'ca', 'cb', 'cc'] -.. RUBRIC:: Forest structure [Ex 2] +.. RUBRIC:: Forest structure (Example 2) This example was provided by Florent Hivert. From 162c152663fa38bebe932b73e1ba05387064e248 Mon Sep 17 00:00:00 2001 From: Omegaconstant Date: Mon, 4 Mar 2024 22:43:55 +0530 Subject: [PATCH 11/11] Changed 'Recursively enumerated set' to 'Recursively Enumerated Sets' --- src/sage/sets/recursively_enumerated_set.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sage/sets/recursively_enumerated_set.pyx b/src/sage/sets/recursively_enumerated_set.pyx index b4c61ae49ad..fa5c20293da 100644 --- a/src/sage/sets/recursively_enumerated_set.pyx +++ b/src/sage/sets/recursively_enumerated_set.pyx @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- r""" -Recursively enumerated set +Recursively Enumerated Sets A set `S` is called recursively enumerable if there is an algorithm that enumerates the members of `S`. We consider here the recursively enumerated