Skip to content

Commit 6f206c2

Browse files
committed
much better
1 parent 289860f commit 6f206c2

File tree

3 files changed

+320
-269
lines changed

3 files changed

+320
-269
lines changed

src/sage/categories/category_with_axiom.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1690,12 +1690,11 @@ class ``Sets.Finite``), or in a separate file (typically in a class
16901690
"Commutative", "Cocommutative", "Associative",
16911691
"Inverse", "Unital", "Division", "NoZeroDivisors", "Cellular",
16921692
"AdditiveCommutative", "AdditiveAssociative", "AdditiveInverse", "AdditiveUnital",
1693-
"Distributive",
1693+
"Extremal", "Trim", "Semidistributive", "CongruenceUniform",
1694+
"Distributive", "Stone",
16941695
"Endset",
16951696
"Pointed",
1696-
"Stratified",
1697-
"Stone", "CongruenceUniform", "Semidistributive",
1698-
"Trim", "Extremal",
1697+
"Stratified"
16991698
)
17001699

17011700

src/sage/categories/finite_lattice_posets.py

Lines changed: 1 addition & 262 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from sage.categories.category_with_axiom import CategoryWithAxiom
1313
from sage.misc.cachefunc import cached_method
14-
from sage.categories.category_singleton import Category_singleton
14+
1515

1616
class FiniteLatticePosets(CategoryWithAxiom):
1717
r"""
@@ -242,264 +242,3 @@ def is_lattice_morphism(self, f, codomain) -> bool:
242242
if f(self.meet(x, y)) != codomain.meet(f(x), f(y)):
243243
return False
244244
return True
245-
246-
class SubcategoryMethods:
247-
def Stone(self):
248-
r"""
249-
A Stone lattice `(L, \vee, \wedge)` is a pseudo-complemented
250-
distributive lattice such that `a^* \vee a^{**} = 1`.
251-
252-
See :wikipedia:`Stone algebra`.
253-
254-
EXAMPLES::
255-
256-
sage: P = posets.DivisorLattice(24)
257-
sage: P in FiniteLatticePosets().Stone()
258-
True
259-
"""
260-
return self._with_axioms(("Semidistributive", "CongruenceUniform",
261-
"Distributive", "Stone"))
262-
263-
def Distributive(self):
264-
r"""
265-
A lattice `(L, \vee, \wedge)` is distributive if meet
266-
distributes over join: `x \wedge (y \vee z) = (x \wedge y)
267-
\vee (x \wedge z)` for every `x,y,z \in L`.
268-
269-
From duality in lattices, it follows that then also join
270-
distributes over meet.
271-
272-
See :wikipedia:`Distributive lattice`.
273-
274-
EXAMPLES::
275-
276-
sage: P = posets.ChainPoset(2).order_ideals_lattice()
277-
sage: P in FiniteLatticePosets().Distributive()
278-
True
279-
"""
280-
return self._with_axioms(("Semidistributive", "CongruenceUniform",
281-
"Distributive"))
282-
283-
def CongruenceUniform(self):
284-
r"""
285-
A finite lattice `(L, \vee, \wedge)` is congruence uniform if it
286-
can be constructed by a sequence of interval doublings
287-
starting with the lattice with one element.
288-
289-
EXAMPLES::
290-
291-
sage: P = posets.TamariLattice(2)
292-
sage: P in FiniteLatticePosets().CongruenceUniform()
293-
True
294-
"""
295-
return self._with_axioms(("Semidistributive", "CongruenceUniform"))
296-
297-
def Semidistributive(self):
298-
r"""
299-
A finite lattice `(L, \vee, \wedge)` is semidistributive if
300-
it is both join-semidistributive and meet-semidistributive.
301-
302-
A finite lattice is join-semidistributive if
303-
for all elements `e, x, y` in the lattice we have
304-
305-
.. MATH::
306-
307-
e \vee x = e \vee y \implies e \vee x = e \vee (x \wedge y)
308-
309-
Meet-semidistributivity is the dual property.
310-
311-
EXAMPLES::
312-
313-
sage: P = posets.TamariLattice(2)
314-
sage: P in FiniteLatticePosets().Semidistributive()
315-
True
316-
"""
317-
return self._with_axiom("Semidistributive")
318-
319-
def Trim(self):
320-
r"""
321-
A finite lattice `(L, \vee, \wedge)` is trim if it is extremal
322-
and left modular.
323-
324-
This notion is defined in [Thom2006]_.
325-
326-
EXAMPLES::
327-
328-
sage: P = posets.TamariLattice(2)
329-
sage: P in FiniteLatticePosets().Trim()
330-
True
331-
"""
332-
return self._with_axioms(["Extremal", "Trim"])
333-
334-
def Extremal(self):
335-
r"""
336-
A finite lattice `(L, \vee, \wedge)` is extremal if
337-
if it has a chain of length `n` (containing `n+1` elements)
338-
and exactly `n` join-irreducibles and `n` meet-irreducibles.
339-
340-
This notion was defined by George Markowsky.
341-
342-
EXAMPLES::
343-
344-
sage: P = posets.TamariLattice(2)
345-
sage: P in FiniteLatticePosets().Extremal()
346-
True
347-
"""
348-
return self._with_axiom("Extremal")
349-
350-
class Semidistributive(CategoryWithAxiom):
351-
"""
352-
The category of semidistributive lattices.
353-
354-
EXAMPLES::
355-
356-
sage: cat = FiniteLatticePosets().Semidistributive(); cat
357-
Category of finite semidistributive lattice posets
358-
359-
sage: cat.super_categories()
360-
[Category of finite lattice posets]
361-
"""
362-
class ParentMethods:
363-
def is_semidistributive(self):
364-
"""
365-
Return whether ``self`` is a semidistributive lattice.
366-
367-
EXAMPLES::
368-
369-
sage: posets.TamariLattice(4).is_semidistributive()
370-
True
371-
"""
372-
return True
373-
374-
class CongruenceUniform(CategoryWithAxiom):
375-
"""
376-
The category of congruence uniform lattices.
377-
378-
EXAMPLES::
379-
380-
sage: cat = FiniteLatticePosets().CongruenceUniform(); cat
381-
Category of finite congruence uniform semidistributive lattice posets
382-
sage: cat.super_categories()
383-
[Category of finite semidistributive lattice posets]
384-
"""
385-
class ParentMethods:
386-
def is_congruence_uniform(self):
387-
"""
388-
Return whether ``self`` is a congruence uniform lattice.
389-
390-
EXAMPLES::
391-
392-
sage: posets.TamariLattice(4).is_congruence_uniform()
393-
True
394-
"""
395-
return True
396-
397-
class Distributive(CategoryWithAxiom):
398-
"""
399-
The category of distributive lattices.
400-
401-
EXAMPLES::
402-
403-
sage: cat = FiniteLatticePosets().Distributive(); cat
404-
Category of finite distributive lattice posets
405-
406-
sage: cat.super_categories()
407-
[Category of finite lattice posets]
408-
"""
409-
@cached_method
410-
def extra_super_categories(self):
411-
r"""
412-
Return a list of the super categories of ``self``.
413-
414-
This encode implications between properties.
415-
416-
EXAMPLES::
417-
418-
sage: FiniteLatticePosets().Distributive().super_categories()
419-
[Category of finite lattice posets]
420-
"""
421-
return [FiniteLatticePosets().Trim()]
422-
423-
class ParentMethods:
424-
def is_distributive(self):
425-
"""
426-
Return whether ``self`` is a distributive lattice.
427-
428-
EXAMPLES::
429-
430-
sage: P = posets.Crown(4).order_ideals_lattice()
431-
sage: P.is_distributive()
432-
True
433-
"""
434-
return True
435-
436-
class Stone(CategoryWithAxiom):
437-
"""
438-
The category of Stone lattices.
439-
440-
EXAMPLES::
441-
442-
sage: cat = FiniteLatticePosets().Stone(); cat
443-
Category of finite distributive stone lattice posets
444-
445-
sage: cat.super_categories()
446-
[Category of finite distributive lattice posets]
447-
"""
448-
class ParentMethods:
449-
def is_stone(self):
450-
"""
451-
Return whether ``self`` is a Stone lattice.
452-
453-
EXAMPLES::
454-
455-
sage: posets.DivisorLattice(12).is_stone()
456-
True
457-
"""
458-
return True
459-
460-
class Extremal(CategoryWithAxiom):
461-
"""
462-
The category of extremal uniform lattices.
463-
464-
EXAMPLES::
465-
466-
sage: cat = FiniteLatticePosets().Extremal(); cat
467-
Category of finite extremal lattice posets
468-
469-
sage: cat.super_categories()
470-
[Category of finite lattice posets]
471-
"""
472-
class ParentMethods:
473-
def is_extremal(self):
474-
"""
475-
Return whether ``self`` is an extremal lattice.
476-
477-
EXAMPLES::
478-
479-
sage: posets.TamariLattice(4).is_extremal()
480-
True
481-
"""
482-
return True
483-
484-
class Trim(CategoryWithAxiom):
485-
"""
486-
The category of trim uniform lattices.
487-
488-
EXAMPLES::
489-
490-
sage: cat = FiniteLatticePosets().Trim(); cat
491-
Category of finite trim extremal lattice posets
492-
sage: cat.super_categories()
493-
[Category of finite extremal lattice posets]
494-
"""
495-
class ParentMethods:
496-
def is_trim(self):
497-
"""
498-
Return whether ``self`` is a trim lattice.
499-
500-
EXAMPLES::
501-
502-
sage: posets.TamariLattice(4).is_trim()
503-
True
504-
"""
505-
return True

0 commit comments

Comments
 (0)