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\)
-
sage.structure.set_factories_example.
AllPairs
¶ 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.
-
sage.structure.set_factories_example.
PairsX_
¶ The set of pairs \((x, 0), (x, 1), ..., (x, 4)\).
-
sage.structure.set_factories_example.
Pairs_Y
¶ 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
.
-
sage.structure.set_factories_example.
SingletonPair
¶
-
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
(self, x=None, y=None, policy=None)¶ Construct the subset from constraints.
Consider the set \(S\) of couples \((x,y)\) with \(x\) and \(y\) in \(I:=\{0,1,2,3,4\}\). Returns the subsets of element of \(S\) satisfying some constraints.
INPUT:
x=a
– wherea
is an integer (default toNone
).y=b
– whereb
is an integer (default toNone
).policy
– the policy passed to the created set.
See also
set_factories.SetFactoryPolicy
EXAMPLES:
Let us first create the set factory:
sage: from sage.structure.set_factories_example import XYPairsFactory sage: XYPairs = XYPairsFactory()
One can then use the set factory to construct a set:
sage: P = XYPairs(); P.list() [(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4)]
Note
This function is actually the
__call__
method ofXYPairsFactory
.
-
sage.structure.set_factories_example.
XYPairsFactory
¶ An example of set factory, for sets of pairs of integers.
See also
set_factories
for an introduction to set factories.