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)