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.DisjointUnionEnumeratedSetsThis parent shows how one can use set factories together with
DisjointUnionEnumeratedSets.It is constructed as the disjoint union (
DisjointUnionEnumeratedSets) ofPairs_Yparents:\[S := \bigcup_{i = 0,1,..., 4} S^y\]Warning
When writing a parent
Pas a disjoint union of a family of parentsP_i, the parentsP_imust 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.UniqueRepresentationThe 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.DisjointUnionEnumeratedSetsThe set of pairs \((0, y), (1, y), ..., (4, y)\).
It is constructed as the disjoint union (
DisjointUnionEnumeratedSets) ofSingletonPairparents:\[S^y := \bigcup_{i = 0,1,..., 4} S_i^y\]See also
AllPairsfor how to properly constructDisjointUnionEnumeratedSetsusingParentWithSetFactory.- 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
AllPairsfor how to properly constructDisjointUnionEnumeratedSetsusingParentWithSetFactory.
- 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.ElementWrapperA 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.SetFactoryAn example of set factory, for sets of pairs of integers.
See also
set_factoriesfor an introduction to set factories.- add_constraints(cons, args_opts)¶
Add constraints to the set
consas 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)