### Navigation

- index
- modules |
- next |
- previous |
- Category Theory »

# Sets With a Grading

class `sage.categories.sets_with_grading.``SetsWithGrading`(s=None)

  Bases: `sage.categories.category.Category`

  The category of sets with a grading.

  A set with a grading is a set \(S\) equipped with a grading by some other set \(I\) (by default the set \(\NN\) of the non-negative integers):

  \[S = \biguplus_{i\in I} S_i\]

  where the graded components \(S_i\) are (usually finite) sets. The grading function maps each element \(s\) of \(S\) to its grade \(i\), so that \(s\in S_i\).

  From implementation point of view, if the graded set is enumerated then each graded component should be enumerated (there is a check in the method `_test_graded_components()`). The contrary needs not be true.

  To implement this category, a parent must either implement `graded_component()` or `subset()`. If only `subset()` is implemented, the first argument must be the grading for compatibility with `graded_component()`. Additionally either the parent must implement `grading()` or its elements must implement a method `grade()`. See the example `sage.categories.examples.sets_with_grading.NonNegativeIntegers`.

  Finally, if the graded set is enumerated (see `EnumeratedSets`) then each graded component should be enumerated. The contrary needs not be true.

  EXAMPLES:

  A typical example of a set with a grading is the set of non-negative integers graded by themselves:

      sage: N = SetsWithGrading().example(); N
      Non negative integers
      sage: N.category()
      Category of facade sets with grading
      sage: N.grading_set()
      Non negative integers

  The grading function is given by `N.grading`:

      sage: N.grading(4)
      4

  The graded component \(S_i\) is the set of all integer partitions of \(i\):

      sage: N.graded_component(grade = 5)
      {5}
      sage: N.graded_component(grade = 42)
      {42}

  Here are some information about this category:

      sage: SetsWithGrading()
      Category of sets with grading
      sage: SetsWithGrading().super_categories()
      [Category of sets]
      sage: SetsWithGrading().all_super_categories()
      [Category of sets with grading,
       Category of sets,
       Category of sets with partial maps,
       Category of objects]

  Todo

  - This should be moved to `Sets().WithGrading()`.
  - Should the grading set be a parameter for this category?
  - Does the enumeration need to be compatible with the grading? Be careful that the fact that graded components are allowed to be finite or infinite make the answer complicated.

  TESTS:

      sage: C = SetsWithGrading()
      sage: TestSuite(C).run()

  class `ParentMethods`
    `generating_series`()

      Default implementation for generating series.

      OUTPUT:

      A series, indexed by the grading set.

      EXAMPLES:

          sage: N = SetsWithGrading().example(); N
          Non negative integers
          sage: N.generating_series()
          1/(-z + 1)

    `graded_component`(grade)

      Return the graded component of `self` with grade `grade`.

      The default implementation just calls the method `subset()` with the first argument `grade`.

      EXAMPLES:

          sage: N = SetsWithGrading().example(); N
          Non negative integers
          sage: N.graded_component(3)
          {3}

    `grading`(elt)

      Return the grading of the element `elt` of `self`.

      This default implementation calls `elt.grade()`.

      EXAMPLES:

          sage: N = SetsWithGrading().example(); N
          Non negative integers
          sage: N.grading(4)
          4

    `grading_set`()

      Return the set `self` is graded by. By default, this is the set of non-negative integers.

      EXAMPLES:

          sage: SetsWithGrading().example().grading_set()
          Non negative integers

    `subset`(*args, **options)

      Return the subset of `self` described by the given parameters.

      See also

      -`graded_component()`

      EXAMPLES:

          sage: W = WeightedIntegerVectors([3,2,1]); W
          Integer vectors weighted by [3, 2, 1]
          sage: W.subset(4)
          Integer vectors of 4 weighted by [3, 2, 1]

  `SetsWithGrading.``super_categories`()

    EXAMPLES:

        sage: SetsWithGrading().super_categories()
        [Category of sets]

### Navigation

- index
- modules |
- next |
- previous |
- Category Theory »