1. 12 Jul, 2018 1 commit
  2. 08 Jul, 2018 12 commits
    • Volker Braun's avatar
      Updated SageMath version to 8.3.rc0 · 4ea72a10
      Volker Braun authored
      4ea72a10
    • Release Manager's avatar
      Trac #25686: UniversalCyclotomicField is not finite · e79526a1
      Release Manager authored
      {{{
      sage: UCF = UniversalCyclotomicField()
      sage: UCF.is_finite()
      True
      }}}
      
      This is explicitly given in the code of universal_cyclotomic_field.py:
      
      {{{
          def is_finite(self):
              r"""
              Returns ``True``.
      
              EXAMPLES::
      
                  sage: UniversalCyclotomicField().is_finite()
                  True
      
              .. TODO::
      
                  this method should be provided by the category.
              """
              return True
      }}}
      
      This has been correct before a change in April 2015 (Trac #1852). It
      looks like a mistake in connection with that ticket. The old code from
      git looked like this:
      
      {{{
      author  Jean-Philippe Labbé <labbe@math.fu-berlin.de>   2015-04-29
      17:56:59 +0300
      committer       Jean-Philippe Labbé <labbe@math.fu-berlin.de>
      2015-04-29 17:56:59 +0300
      commit  dc3de848 (patch)
      tree    2a5ed5f0daf452364580856388e5717cf47f1b60
      parent  Updated Sage version to 6.7.beta3 (diff)
      parent  Trac 18152: __neg__ for UCF elements (diff)
      
      -    def is_finite(self):
      -        r"""
      -        Returns False as ``self`` is not finite.
      -
      -        EXAMPLES::
      -
      -            sage: UCF = UniversalCyclotomicField()
      -            sage: UCF.is_finite()
      -            False
      -        """
      -        return False
      }}}
      
      Thus the task might be to restore the old code!
      
      URL: https://trac.sagemath.org/25686
      Reported by: soehms
      Ticket author(s): Sebastian Oehms
      Reviewer(s): Tomer Bauer, Luis Felipe Tabera
      e79526a1
    • Release Manager's avatar
      Trac #25677: py3: normalize repr of bound methods in doctest results · 20cfa9e6
      Release Manager authored
      Another fixer-upper for another very common (mostly) trivial doctest
      failure on Python 3.
      
      On Python 2 bound methods are represented using the class name of the
      object the method was bound to, whereas on Python 3 they are represented
      with the fully-qualified name of the function that implements the
      method.
      
      In the context of a doctest it's almost impossible to convert accurately
      from the latter to the former or vice-versa, so we simplify the reprs of
      bound methods to just the bare method name.
      
      This is slightly regressive since it means one can't use the repr of a
      bound method to test whether some element is getting a method from the
      correct class (imporant sometimes in the cases of dynamic classes).
      However, such tests could be written could be written more explicitly to
      emphasize that they are testing such behavior, and will fail on Python 3
      anyways.
      
      URL: https://trac.sagemath.org/25677
      Reported by: embray
      Ticket author(s): Erik Bray
      Reviewer(s): Frédéric Chapoton
      20cfa9e6
    • Release Manager's avatar
      Trac #25673: Add Young-Fibonacci to poset examples · 1e8e585a
      Release Manager authored
      This patch adds a new example poset.
      
      URL: https://trac.sagemath.org/25673
      Reported by: jmantysalo
      Ticket author(s): Jori Mäntysalo
      Reviewer(s): Martin Rubey
      1e8e585a
    • Release Manager's avatar
      Trac #25647: fixing invalid escape sequences in geometry · c78836cc
      Release Manager authored
      URL: https://trac.sagemath.org/25647
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Travis Scrimshaw
      c78836cc
    • Release Manager's avatar
      Trac #25586: py3: adding hash function for orders and fraction fields · 01f38968
      Release Manager authored
      + a few other details
      
      URL: https://trac.sagemath.org/25586
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Vincent Delecroix, Travis Scrimshaw, Erik Bray
      01f38968
    • Release Manager's avatar
      Trac #25579: py3: towards docbuild, work on plot.py · f95b598a
      Release Manager authored
      Goal : make more or all tests pass in plot/plot.py
      
      Some issues are just missing r before strings containing {{{\sin}}}
      
      Some others are more mysterious, with an {{{__import__}}} error
      
      URL: https://trac.sagemath.org/25579
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Travis Scrimshaw
      f95b598a
    • Release Manager's avatar
      Trac #25573: pyflakes cleanup in number fields · 418c1b3f
      Release Manager authored
      URL: https://trac.sagemath.org/25573
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Jeroen Demeyer
      418c1b3f
    • Release Manager's avatar
      Trac #25569: Speed up TorsionQuadraticModule creation · 4caec5e1
      Release Manager authored
      {{{
      sage: q = TorsionQuadraticForm(matrix.identity(30)/5)
      sage: %timeit q.submodule(q.some_elements())
      1 loop, best of 3: 514 ms per loop
      sage: fgp = q.V()/q.W()
      sage: %timeit fgp.submodule(fgp.some_elements())
      10 loops, best of 3: 27.6 ms per loop
      }}}
      The reason for this dramatic difference is that the
      Constructor for `TorsionQuadraticModules` tries to figues out the
      modulus of the quadratic form. Thus it has to compute tons of inner
      products.
      
      URL: https://trac.sagemath.org/25569
      Reported by: sbrandhorst
      Ticket author(s): Simon Brandhorst
      Reviewer(s): Paolo Menegatti
      4caec5e1
    • Release Manager's avatar
      Trac #25529: Implement Sieving to replace search enumeration · 1a81fa56
      Release Manager authored
      replace search enumeration for subschemes of dimension > 0 by sieving,
      to compute rational points
      
      URL: https://trac.sagemath.org/25529
      Reported by: raghukul01
      Ticket author(s): Raghukul Raman
      Reviewer(s): Ben Hutz
      1a81fa56
    • Release Manager's avatar
      Trac #25516: Huge delay introduced in SBox nonlinearity · 3b29678e
      Release Manager authored
      There is a regression in the computation of the nonlinearity of an SBox
      introduced from 8.1 to 8.2+
      
      Quoted from https://ask.sagemath.org/question/42492/huge-delay-in-
      sagecryptosboxsbox-method-nonlinearity-introduced-in-v82/
      {{{#!sage
      sage: for j in range(10):
      ....:     S = [x for x in range(256)];shuffle(S)
      ....:     S = sage.crypto.sbox.SBox(S)
      ....:     %time S.nonlinearity()
      }}}
      
      Results from Sage 8.1
      
      {{{
      CPU times: user 237 ms, sys: 1.87 ms, total: 239 ms
      Wall time: 236 ms
      94
      CPU times: user 208 ms, sys: 12.5 ms, total: 220 ms
      Wall time: 220 ms
      94
      CPU times: user 287 ms, sys: 1.41 ms, total: 288 ms
      Wall time: 288 ms
      92
      ....
      }}}
      
      Results from Sage 8.2
      
      {{{
      CPU times: user 5.12 s, sys: 30.6 ms, total: 5.15 s
      Wall time: 5.16 s
      92
      CPU times: user 5.04 s, sys: 14.3 ms, total: 5.05 s
      Wall time: 5.05 s
      96
      CPU times: user 5.08 s, sys: 13 ms, total: 5.09 s
      Wall time: 5.09 s
      94
      CPU times: user 5.03 s, sys: 8.56 ms, total: 5.04 s
      Wall time: 5.04 s
      92
      .....
      }}}
      
      I expect the cause being the modification of the
      `linear_approximation_matrix` Method, i.e. the following diff
      {{{#!diff
      -        B = BooleanFunction(self.m)
      -        L = []
      -        for j in range(ncols):
      -            for i in range(nrows):
      -                B[i] = ZZ(self(i)&j).popcount()
      -            L.append(B.walsh_hadamard_transform())
      +        L = [self.component_function(i).walsh_hadamard_transform() for
      i in range(ncols)]
      }}}
      
      URL: https://trac.sagemath.org/25516
      Reported by: asante
      Ticket author(s): Friedrich Wiemer
      Reviewer(s): Rusydi H. Makarim, Sebastian Oehms
      3b29678e
    • Release Manager's avatar
      Trac #25471: OEIS update (database format change, new entries, incorrect warning handling) · 6aa29cd7
      Release Manager authored
      This ticket fixes the 34 doctest failures that happen when internet is
      enabled, see [https://groups.google.com/d/msg/sage-
      release/l635YEuT7Hs/WkHCnmWhAQAJ this sage-release thread].
      
      There are 3 kinds or errors:
      
      - the oeis database gets updated with new data (this is a normal
      update),
      - the oeis database changed its internal format, and does not make
      difference between signed and unsigned sequences anymore (in particular,
      for signed sequences, the `V,W,X` fields disapear, and are replaced with
      the `S,T,U` fields),
      - the warnings triggered when a dead sequence is met were not correctly
      doctested.
      
      The 3 commits corresponds to these 3 kind of errors
      
      To test the branch:
      
      {{{
      sage -t --optional=sage,internet src/sage/databases/oeis.py
      }}}
      
      URL: https://trac.sagemath.org/25471
      Reported by: slabbe
      Ticket author(s): Thierry Monteil
      Reviewer(s): Frédéric Chapoton
      6aa29cd7
  3. 07 Jul, 2018 6 commits
  4. 06 Jul, 2018 3 commits
  5. 05 Jul, 2018 2 commits
    • Release Manager's avatar
      Trac #24973: Univariate polynomial roots bug · 79f6f2c5
      Release Manager authored
      And even
      {{{
      sage: x1 = polygen(ZZ, 'x')
      sage: x2 = polygen(ZZ['x'], 'x')
      sage: (x1 - x2)
      sage: (x1 - x2).roots()
      ValueError                                Traceback (most recent call
      last)
      <ipython-input-4-b682a0535b1b> in <module>()
            2 x2 = polygen(ZZ['x'], 'x')
            3 (x1 - x2)
      ----> 4 (x1 - x2).roots()
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/rings/polynomial/polynomial_element.pyx in
      sage.rings.polynomial.polynomial_element.Polynomial.roots
      (build/cythonized/sage/rings/polynomial/polynomial_element.c:64397)()
         7459         if hasattr(K, '_roots_univariate_polynomial'):
         7460             try:
      -> 7461                 return K._roots_univariate_polynomial(self,
      ring=ring, multiplicities=multiplicities, algorithm=algorithm, **kwds)
         7462             except NotImplementedError:
         7463                 # This does not handle something, so keep calm
      and continue on
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/rings/polynomial/polynomial_ring.pyc in
      _roots_univariate_polynomial(self, p, ring, multiplicities, algorithm,
      degree_bound)
         1660             p = p.change_ring(ring)
         1661             return p.roots(multiplicities, algorithm,
      degree_bound)
      -> 1662         roots = p._roots_from_factorization(p.factor(),
      multiplicities)
         1663         if degree_bound is not None:
         1664             if multiplicities:
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/rings/polynomial/polynomial_element.pyx in
      sage.rings.polynomial.polynomial_element.Polynomial.factor
      (build/cythonized/sage/rings/polynomial/polynomial_element.c:36957)()
         4133         if len(variables) > 1:
         4134             base = self._parent._mpoly_base_ring()
      -> 4135             ring = PolynomialRing(base, variables)
         4136             if ring._has_singular:
         4137                 try:
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/rings/polynomial/polynomial_ring_constructor.pyc in
      PolynomialRing(base_ring, *args, **kwds)
          631             raise TypeError("you must specify the names of the
      variables")
          632
      --> 633     names = normalize_names(n, names)
          634
          635     # At this point, we have only handled the "names" keyword if
      it was
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/structure/category_object.pyx in
      sage.structure.category_object.normalize_names
      (build/cythonized/sage/structure/category_object.c:9512)()
          943
          944
      --> 945 cpdef normalize_names(Py_ssize_t ngens, names):
          946     r"""
          947     Return a tuple of strings of variable names of length ngens
      given
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/structure/category_object.pyx in
      sage.structure.category_object.normalize_names
      (build/cythonized/sage/structure/category_object.c:9361)()
         1057                 names = sage.misc.defaults.variable_names(ngens,
      names)
         1058
      -> 1059     certify_names(names)
         1060     if ngens >= 0 and len(names) != ngens:
         1061        raise IndexError("the number of names must equal the
      number of generators")
      
      /opt/sage/local/lib/python2.7/site-
      packages/sage/structure/category_object.pyx in
      sage.structure.category_object.certify_names
      (build/cythonized/sage/structure/category_object.c:10028)()
         1111             raise ValueError("variable name {!r} does not start
      with a letter".format(N))
         1112         if N in s:
      -> 1113             raise ValueError("variable name {!r} appears more
      than once".format(N))
         1114         s.add(N)
         1115     return True
      
      ValueError: variable name 'x' appears more than once
      }}}
      
      URL: https://trac.sagemath.org/24973
      Reported by: vdelecroix
      Ticket author(s): Bruno Grenet
      Reviewer(s): Marc Mezzarobba
      79f6f2c5
    • Vincent Delecroix's avatar
      fix uninstall script · 50172dd8
      Vincent Delecroix authored
      50172dd8
  6. 04 Jul, 2018 11 commits
    • Julian Rüth's avatar
      Merge develop and 22983 · 966c36b9
      Julian Rüth authored
      966c36b9
    • Volker Braun's avatar
      Upgrade to Python 3.6.6 · 1594f2dc
      Volker Braun authored
      This fixes the crypt segfault on Fedora 28
      
      m
      1594f2dc
    • Frédéric Chapoton's avatar
    • Frédéric Chapoton's avatar
      813da835
    • Release Manager's avatar
      Trac #23580: Implement the Onsager and q-Onsager algebras · 321c9ee1
      Release Manager authored
      We use the commutator relations given in the recent preprint of
      Baseilhac and Kolb to implement the q-Onsager algebra:
      
      https://arxiv.org/abs/1706.08747
      
      URL: https://trac.sagemath.org/23580
      Reported by: tscrim
      Ticket author(s): Travis Scrimshaw
      Reviewer(s): Ben Salisbury
      321c9ee1
    • Release Manager's avatar
      Trac #22453: A mistake in the mq.Sbox.polynomials · aae829b8
      Release Manager authored
      There is a mistake in `gens = (RR.column(ncols-1)[1<<m:]).list()`
      string. The rank of the system may be less than 2^m.
      
      In that case this function doesn’t return any polynom. AES s-box has a
      lot of polynoms with degree=2 satisfying.
      
      This is the minimal code to verify it. There should be much more than
      one polynomials (see
      http://link.springer.com/chapter/10.1007/3-540-36178-2_17 for example).
      {{{#!sage
      sage: S = mq.SBox([99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103,
      43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212,
      162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52,
      165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7,
      18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82,
      59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106,
      203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69,
      249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188,
      182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196,
      167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70,
      238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194,
      211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169,
      108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180,
      198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3,
      246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105,
      217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13,
      191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22])
      sage: S.polynomials()
      []
      }}}
      
      URL: https://trac.sagemath.org/22453
      Reported by: thecow
      Ticket author(s): Friedrich Wiemer
      Reviewer(s): Travis Scrimshaw
      aae829b8
    • Release Manager's avatar
      Trac #22344: Parent richcmp: never use id() · 4f2c67c3
      Release Manager authored
      See #22029.
      
      URL: https://trac.sagemath.org/22344
      Reported by: jdemeyer
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Jeroen Demeyer
      4f2c67c3
    • Release Manager's avatar
      Trac #18514: Upgrade of p_group_cohomology spkg · c4bbfd90
      Release Manager authored
      In the past, p_group_cohomology-2.1.4 was an optional spkg. Sage dropped
      support for old style spkgs, and thus only an experimental spkg
      remained.
      
      The purpose of this ticket is to provide a new group cohomology package
      for Sage. I suggest to make it optional (not experimental).
      
      In the experimental version 2.1.5, I have improved the computation of
      Poincaré series, depth and filter degree type (the latter now uses a
      Hilbert-driven computation of Gröbner bases in elimination order, which
      works since in that setting the Hilbert function is easily available),
      and I added new functionality related with nilpotency.
      
      '''__Package structure__'''
      
      Version 3.0 is refactored as follows:
      
      - It depends on the optional meataxe package (see #24359), which is
      based on a fork of !MeatAxe.
      - The spkg-install script first tests whether the !SmallGroups library
      is installed in GAP. If it isn't, a warning is printed; however, the
      package still gets installed, as it only is a runtime dependency.
      - The C code written by David Green has become an autotoolized shared
      library.
      - Gap and Singular code is put into `SAGE_SHARE/`, where GAP and
      Singular libraries belong.
      - The rest of the package is formed by python and cython code, and uses
      pip for installation.
      - The documentation is built in an improved way.
      
      '''__Further changes__'''
      
      - The custom logging in the old spkg is replaced by Python's logging
      module.
      - The tests avoid side-effects by using a reset function. Hence, no
      custom doc tester is needed: `sage -t` is enough.
      - In the previous spkg, I tried to be as backward compatible as
      possible. But now I'm dropping support for very old Singular versions.
      - Some experimental options for the cohomology computation are removed.
      
      Many tests have changed, since the ring presentations of the computed
      cohomology rings, specifically for non-primepower groups, have changed.
      I do not fully understand ''why'' they changed. but it seems that it is
      a consequence of changes in Singular. The changes did (of course...) not
      affect the isomorphism types of the rings.
      
      '''__Upstream tar ball__'''
      
      https://users.fmi.uni-jena.de/cohomology/p_group_cohomology-3.0.tar.xz
      
      URL: https://trac.sagemath.org/18514
      Reported by: SimonKing
      Ticket author(s): Simon King
      Reviewer(s): Travis Scrimshaw, Jeroen Demeyer
      c4bbfd90
    • Release Manager's avatar
      Trac #24612: Move permutation groups to new coercion model · 46a4d401
      Release Manager authored
      We have
      {{{
      sage: S4 = SymmetricGroup(4)
      sage: G = S4.subgroups()[19]
      sage: f = G.coerce_map_from(S4); f
      Call morphism:
        From: Symmetric group of order 4! as a permutation group
        To:   Subgroup of (Symmetric group of order 4! as a permutation group)
      generated by [(1,3)(2,4), (1,4,3,2)]
      }}}
      This is very wrong, there is no coercion from `S4` to `G`:
      {{{
      sage: f(S4[1])
      ------------------------------------------------------------------------
      ---
      TypeError                                 Traceback (most recent call
      last)
      <ipython-input-13-9acf54a006a7> in <module>()
      ----> 1 f(S4[Integer(1)])
      
      /usr/local/src/sage-config/src/sage/categories/map.pyx in
      sage.categories.map.Map.__call__
      (build/cythonized/sage/categories/map.c:6632)()
          769         if P is D: # we certainly want to call _call_/with_args
          770             if not args and not kwds:
      --> 771                 return self._call_(x)
          772             return self._call_with_args(x, args, kwds)
          773         # Is there coercion?
      
      /usr/local/src/sage-config/src/sage/categories/morphism.pyx in
      sage.categories.morphism.CallMorphism._call_
      (build/cythonized/sage/categories/morphism.c:6790)()
          420
          421     cpdef Element _call_(self, x):
      --> 422         return self._codomain(x)
          423
          424 cdef class IdentityMorphism(Morphism):
      
      /usr/local/src/sage-config/local/lib/python2.7/site-
      packages/sage/groups/perm_gps/permgroup.pyc in __call__(self, x, check)
          678             return self.identity()
          679
      --> 680         return self._element_class()(x, self, check=check)
          681
          682     def _coerce_impl(self, x):
      
      /usr/local/src/sage-
      config/src/sage/groups/perm_gps/permgroup_element.pyx in
      sage.groups.perm_gps.permgroup_element.PermutationGroupElement.__init__
      (build/cythonized/sage/groups/perm_gps/permgroup_element.c:5749)()
          462                 P = parent._gap_()
          463                 if not P.parent()(self.__gap) in P:
      --> 464                     raise TypeError('permutation %s not in %s' %
      (g, parent))
          465
          466         Element.__init__(self, parent)
      
      TypeError: permutation (1,2) not in Subgroup of (Symmetric group of
      order 4! as a permutation group) generated by [(1,3)(2,4), (1,4,3,2)]
      }}}
      
      URL: https://trac.sagemath.org/24612
      Reported by: SimonKing
      Ticket author(s): Travis Scrimshaw
      Reviewer(s): Jeroen Demeyer
      46a4d401
    • Release Manager's avatar
      Trac #25665: Don't use installed_packages() for threejs URL · 07c3addf
      Release Manager authored
      Since Sage 8.3.beta3, running the command
      {{{
      show(sphere(), viewer='threejs', online=True)
      }}}
      in a Jupyter notebook displays nothing. It was fine in Sage <=
      8.3.beta2.
      Note that the option `online=True` is required by tools like
      http://nbviewer.jupyter.org/ and [https://cocalc.com CoCalc].
      
      It seems that the issue is due to the following change introduced in
      #25040 (which has been merged in Sage 8.3.beta3):
      {{{
      sage: installed_packages()['threejs']
      'r80.p0'
      }}}
      while in Sage <= 8.3.beta2, one has
      {{{
      sage: installed_packages()['threejs']
      'r80'
      }}}
      Indeed the value of `installed_packages()['threejs']` is used to form
      the url in lines 749-750 of
      `src/sage/repl/rich_output/display_manager.py`
      
      URL: https://trac.sagemath.org/25665
      Reported by: egourgoulhon
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Eric Gourgoulhon
      07c3addf
    • Release Manager's avatar
      Trac #25661: Primecount failures on 32-bit systems · 28aa8012
      Release Manager authored
      There are various failures of the form
      {{{
      sage -t --long src/sage/interfaces/primecount.pyx
      **********************************************************************
      File "src/sage/interfaces/primecount.pyx", line 47, in
      sage.interfaces.primecount.prime_pi
      Failed example:
          prime_pi(1000)                     # optional - primecount
      Expected:
          168
      Got:
          168L
      **********************************************************************
      }}}
      if `int64_t` is larger than a `long`.
      
      URL: https://trac.sagemath.org/25661
      Reported by: jdemeyer
      Ticket author(s): Vincent Klein
      Reviewer(s): Frédéric Chapoton
      28aa8012
  7. 03 Jul, 2018 3 commits
  8. 02 Jul, 2018 2 commits
    • Release Manager's avatar
      Trac #25712: Typo in SageTimeit documentation · fc2b6e9d
      Release Manager authored
      tiny typo change %timit to %timeit in documentation.
      
      URL: https://trac.sagemath.org/25712
      Reported by: bthompson
      Ticket author(s): Bianca Thompson
      Reviewer(s): Alex J. Best
      fc2b6e9d
    • Release Manager's avatar
      Trac #25655: Typo ticket · ba8da52b
      Release Manager authored
      Random typos found in different parts of Sage.
      
      - Modular decomposition of graphs: "- - the disjoint union of graphs is
      called a ''Parallel'' composition, and the complement of a disjoint
      union is called a ''Parallel'' composition."
      
      - `is_uniform` in lattices "A congruence is uniform if all blocks ''are
      have'' equal - -"
      
      - in "/sage/geometry/fan_morphism", there is one {{{`phi`}}} missing a
      backslash ; same in
      dynamics/arithmetic_dynamics/endPN_automorphism_group.py
      
      URL: https://trac.sagemath.org/25655
      Reported by: jmantysalo
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Jori Mäntysalo
      ba8da52b