An example of set factory¶
The goal of this module is to exemplify the use of set factories. Note that the code is intentionally kept minimal; many things and in particular several iterators could be written in a more efficient way.
See also
set_factories
for an introduction to set
factories, their specifications, and examples of their use and
implementation based on this module.
We describe here a factory used to construct the set \(S\) of couples \((x,y)\) with \(x\) and \(y\) in \(I:=\{0,1,2,3,4\}\), together with the following subsets, where \((a, b)\in S\)

class
sage.structure.set_factories_example.
AllPairs
(policy)¶ Bases:
sage.structure.set_factories.ParentWithSetFactory
,sage.sets.disjoint_union_enumerated_sets.DisjointUnionEnumeratedSets
This parent shows how one can use set factories together with
DisjointUnionEnumeratedSets
.It is constructed as the disjoint union (
DisjointUnionEnumeratedSets
) ofPairs_Y
parents:\[S := \bigcup_{i = 0,1,..., 4} S^y\]Warning
When writing a parent
P
as a disjoint union of a family of parentsP_i
, the parentsP_i
must be constructed as facade parents forP
. As a consequence, it should be passedP.facade_policy()
as policy argument. See the source code ofpairs_y()
for an example.
check_element
(el, check)¶


class
sage.structure.set_factories_example.
PairsX_
(x, policy)¶ Bases:
sage.structure.set_factories.ParentWithSetFactory
,sage.structure.unique_representation.UniqueRepresentation
The set of pairs \((x, 0), (x, 1), ..., (x, 4)\).

an_element
()¶

check_element
(el, check)¶


class
sage.structure.set_factories_example.
Pairs_Y
(y, policy)¶ Bases:
sage.structure.set_factories.ParentWithSetFactory
,sage.sets.disjoint_union_enumerated_sets.DisjointUnionEnumeratedSets
The set of pairs \((0, y), (1, y), ..., (4, y)\).
It is constructed as the disjoint union (
DisjointUnionEnumeratedSets
) ofSingletonPair
parents:\[S^y := \bigcup_{i = 0,1,..., 4} S_i^y\]See also
AllPairs
for how to properly constructDisjointUnionEnumeratedSets
usingParentWithSetFactory
.
an_element
()¶

check_element
(el, check)¶

single_pair
(letter)¶ Construct the singleton pair parent
Construct a singleton pair for
(self.y, letter)
as a facade parent forself
.See also
AllPairs
for how to properly constructDisjointUnionEnumeratedSets
usingParentWithSetFactory
.


class
sage.structure.set_factories_example.
SingletonPair
(x, y, policy)¶ Bases:
sage.structure.set_factories.ParentWithSetFactory
,sage.structure.unique_representation.UniqueRepresentation

check_element
(el, check)¶


class
sage.structure.set_factories_example.
XYPair
(parent, value, check=True)¶ Bases:
sage.structure.element_wrapper.ElementWrapper
A class for Elements \((x,y)\) with \(x\) and \(y\) in \(\{0,1,2,3,4\}\).
EXAMPLES:
sage: from sage.structure.set_factories_example import XYPair sage: p = XYPair(Parent(), (0,1)); p (0, 1) sage: p = XYPair(Parent(), (0,8)) Traceback (most recent call last): ... ValueError: numbers must be in range(5)

sage.structure.set_factories_example.
XYPairs
= Factory for XY pairs¶

class
sage.structure.set_factories_example.
XYPairsFactory
¶ Bases:
sage.structure.set_factories.SetFactory
An example of set factory, for sets of pairs of integers.
See also
set_factories
for an introduction to set factories.
add_constraints
(cons, args_opts)¶ Add constraints to the set
cons
as perSetFactory.add_constraints
.This is a crude implementation for the sake of the demonstration which should not be taken as an example.
EXAMPLES:
sage: from sage.structure.set_factories_example import XYPairs sage: XYPairs.add_constraints((3,None), ((2,), {})) Traceback (most recent call last): ... ValueError: Duplicate value for constraints 'x': was 3 now 2 sage: XYPairs.add_constraints((), ((2,), {})) (2, None) sage: XYPairs.add_constraints((), ((2,), {'y':3})) (2, 3)
