Opened 11 months ago
Closed 10 months ago
#32089 closed enhancement (fixed)
ConditionSet
Reported by: | mkoeppe | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-9.4 |
Component: | symbolics | Keywords: | |
Cc: | tscrim, egourgoulhon | Merged in: | |
Authors: | Matthias Koeppe | Reviewers: | Travis Scrimshaw |
Report Upstream: | N/A | Work issues: | |
Branch: | f135a05 (Commits, GitHub, GitLab) | Commit: | f135a05bd39d633e8ce5ed45cfe24d0eaf10bf5d |
Dependencies: | #32013, #32015 | Stopgaps: |
Description (last modified by )
(from #24176).
We define a class ConditionSet
for subsets of elements given by a logical "and" of finitely many predicates.
If the given predicates (condition) are symbolic, a ConditionSet
can be converted to a SymPy ConditionSet
; the _sympy_
method falls back to creating a SageSet
wrapper otherwise.
As an application, we provide Chart
and RealChart
with a method codomain
.
Change History (48)
comment:1 Changed 11 months ago by
- Description modified (diff)
- Summary changed from ConditionSet_callable_symbolic_expression to ConditionSet, ConditionSet_callable_symbolic_expression
comment:2 Changed 11 months ago by
- Branch set to u/mkoeppe/conditionset__conditionset_callable_symbolic_expression
comment:3 Changed 11 months ago by
- Cc tscrim egourgoulhon added
- Commit set to 2d5d4b9550eebe91aaa4f46a46a2e07a109c0e9a
comment:4 Changed 11 months ago by
- Commit changed from 2d5d4b9550eebe91aaa4f46a46a2e07a109c0e9a to 8c2cce8eb5aef51c981ef0bf116c3193603ab712
Branch pushed to git repo; I updated commit sha1. New commits:
8c2cce8 | ConditionSet: Complete basic implementation
|
comment:5 Changed 11 months ago by
- Commit changed from 8c2cce8eb5aef51c981ef0bf116c3193603ab712 to 126773766f68934ef1f7f99836c837ca2284a63e
Branch pushed to git repo; I updated commit sha1. New commits:
1267737 | ConditionSet: Add example
|
comment:6 Changed 11 months ago by
I'm going to extend it to lists of several conditions
comment:7 Changed 11 months ago by
- Dependencies changed from #32013 to #31931, #32013
comment:8 Changed 11 months ago by
- Commit changed from 126773766f68934ef1f7f99836c837ca2284a63e to 44f72930283a95afb6aa860fa905f57d28e4d513
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
6e5cac6 | sage.interfaces.sympy_wrapper, Sets.ParentMethods._sympy_: New
|
3cac256 | sage.interfaces.sympy_wrapper: Add doctests
|
eef604e | SageSet: Finish docstrings; handle symbolic _contains
|
2baae58 | Sets.ParentMethods._sympy_: Call sympy_init
|
153b3e5 | Merge #31938
|
c06c965 | sage.interfaces.sympy_wrapper.SageSet: Add another doctest
|
f535127 | Merge #31938
|
32cdd5c | Merge #31877
|
36e742d | Merge #31931
|
44f7293 | ConditionSet: Accept several predicates
|
comment:9 Changed 11 months ago by
- Commit changed from 44f72930283a95afb6aa860fa905f57d28e4d513 to 720bed24066b1adf00935238edf14ab88c8d4e45
comment:10 Changed 11 months ago by
- Description modified (diff)
comment:11 Changed 11 months ago by
- Commit changed from 720bed24066b1adf00935238edf14ab88c8d4e45 to 1c13f2d16eb2afd3bd0ff6b722aca5035bf1d81b
comment:12 Changed 11 months ago by
- Commit changed from 1c13f2d16eb2afd3bd0ff6b722aca5035bf1d81b to b31b2c7a3116336b6cc9e2cd0744b7ddec4ec0ee
Branch pushed to git repo; I updated commit sha1. New commits:
b31b2c7 | ConditionSet: Support generator notation, add examples
|
comment:13 Changed 11 months ago by
- Dependencies changed from #31931, #32013 to #31931, #32013, #32015
comment:14 Changed 11 months ago by
- Commit changed from b31b2c7a3116336b6cc9e2cd0744b7ddec4ec0ee to bb67e1139268b0b5cc69ad8af3959be798d48258
comment:15 Changed 11 months ago by
- Commit changed from bb67e1139268b0b5cc69ad8af3959be798d48258 to eb975f37a99b8390a1fc7f042f47982d5a6704f5
Branch pushed to git repo; I updated commit sha1. New commits:
eb975f3 | ConditionSet: Remove unnecessary subclass, add examples
|
comment:16 Changed 11 months ago by
- Commit changed from eb975f37a99b8390a1fc7f042f47982d5a6704f5 to 468f621faec4ae084e70e3a4ae6fbe16275fe653
comment:17 Changed 11 months ago by
- Description modified (diff)
- Status changed from new to needs_review
- Summary changed from ConditionSet, ConditionSet_callable_symbolic_expression to ConditionSet
comment:18 Changed 11 months ago by
- Commit changed from 468f621faec4ae084e70e3a4ae6fbe16275fe653 to a745649024059791d35da56b1376fc0f0ef6e0c0
Branch pushed to git repo; I updated commit sha1. New commits:
a745649 | Chart.codomain, _restrict_set: Handle set/frozenset as ANDs in anticipation of #32102
|
comment:19 follow-ups: ↓ 20 ↓ 21 Changed 11 months ago by
Note that this is duplicating some of the framework in sage/combinat/combinat.py
with FilteredCombinatorialClass
.
What do we want the intersection of two condition sets to be? Mainly, do we want the generic intersection? It could be another condition set object naturally, which would be more direct for operations such as containment check or iteration.
comment:20 in reply to: ↑ 19 ; follow-up: ↓ 22 Changed 11 months ago by
Replying to tscrim:
Note that this is duplicating some of the framework in
sage/combinat/combinat.py
withFilteredCombinatorialClass
.
Thanks for the pointer! I was not aware of this. But it looks to me like this whole *CombinatorialClass
business is deprecated?
comment:21 in reply to: ↑ 19 ; follow-up: ↓ 23 Changed 11 months ago by
Replying to tscrim:
What do we want the intersection of two condition sets to be? Mainly, do we want the generic intersection? It could be another condition set object naturally, which would be more direct for operations such as containment check or iteration.
A specialized intersection
method is of course a natural candidate to be added in a follow-up ticket. If for nothing else, certainly for more succinct printing.
comment:22 in reply to: ↑ 20 Changed 11 months ago by
Replying to mkoeppe:
Replying to tscrim:
Note that this is duplicating some of the framework in
sage/combinat/combinat.py
withFilteredCombinatorialClass
.Thanks for the pointer! I was not aware of this. But it looks to me like this whole
*CombinatorialClass
business is deprecated?
Indeed, but some of it is still used without a true replacement ready IIRC.
comment:23 in reply to: ↑ 21 Changed 11 months ago by
Replying to mkoeppe:
Replying to tscrim:
What do we want the intersection of two condition sets to be? Mainly, do we want the generic intersection? It could be another condition set object naturally, which would be more direct for operations such as containment check or iteration.
A specialized
intersection
method is of course a natural candidate to be added in a follow-up ticket. If for nothing else, certainly for more succinct printing.
Why can't we do it on this ticket? It seems simple enough to check if other
is a ConditionSet
, and then just create a new such instance with the concatenation of the conditions.
comment:24 Changed 11 months ago by
- Commit changed from a745649024059791d35da56b1376fc0f0ef6e0c0 to 28a51bb362092bfd69b12b4761070e1a0f73ca15
comment:25 Changed 11 months ago by
OK, here we go. Caught and fixed a bug along the way.
comment:26 Changed 11 months ago by
- Commit changed from 28a51bb362092bfd69b12b4761070e1a0f73ca15 to ac561ae53e341043a75609f1f0ccec86b8983daa
Branch pushed to git repo; I updated commit sha1. New commits:
ac561ae | Chart._restrict_set: Update doctest output
|
comment:27 Changed 11 months ago by
- Reviewers set to Travis Scrimshaw
- Status changed from needs_review to positive_review
Thank you. LGTM (modulo the doctest failure for the dependency).
comment:28 Changed 11 months ago by
- Commit changed from ac561ae53e341043a75609f1f0ccec86b8983daa to 4844cd6efb0763e340d4171a1660500d07851722
- Status changed from positive_review to needs_review
comment:29 Changed 11 months ago by
- Dependencies changed from #31931, #32013, #32015 to #32013, #32015
comment:30 Changed 11 months ago by
- Status changed from needs_review to positive_review
comment:31 Changed 11 months ago by
Thank you!
comment:32 Changed 11 months ago by
- Commit changed from 4844cd6efb0763e340d4171a1660500d07851722 to 82f12e2420069109ff25311057516cc4d409e848
- Status changed from positive_review to needs_review
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. Last 10 new commits:
2a23cb5 | Unicode symbol 2202 (partial) for the text display of coordinate frames
|
5d096f1 | f-string for unicode_symbol in TensorProductFunctor and SignedTensorProductFunctor
|
76c2fd5 | Use Unicode symbol for the Riemann sphere example
|
5167e6c | Use Unicode symbol for default text display of RealLine
|
332410b | Use unicode_otimes in TensorProductFunctor and SignedTensorProductFunctor
|
f5d15d2 | Merge branch 'public/manifolds/unicode_art' of git://trac.sagemath.org/sage into Sage 9.4.beta4.
|
d87d09b | #30473: fix doctest error in DiffMap.pullback
|
f2ae50e | #30473: fix doctests outside sage/manifolds and sage/tensor/modules
|
55240bb | Merge #30473
|
82f12e2 | Merge #32013
|
comment:33 Changed 11 months ago by
Merged updated #32013.
comment:34 Changed 11 months ago by
- Status changed from needs_review to needs_work
Unfortunately the sort order of the symbolic conditions is not stable. I'll have to fix this
comment:35 Changed 11 months ago by
- Commit changed from 82f12e2420069109ff25311057516cc4d409e848 to 69d045a4556bc20f6b3d6aaf65c0e1241ecfbdc2
comment:36 Changed 11 months ago by
- Status changed from needs_work to needs_review
Also the doctests that tried to use (ZZ^2).rename("ZZ^2")
for cosmetic reasons were not stable. I have removed this complication.
comment:37 Changed 11 months ago by
- Status changed from needs_review to positive_review
For future reference, you can simply call X.rename()
to revert back to the default name. This can be used to make the doctest stable.
comment:38 Changed 11 months ago by
Thanks!
comment:39 Changed 11 months ago by
- Status changed from positive_review to needs_work
[docpdf] Underfull \hbox (badness 10000) in paragraph at lines 5889--5891 [docpdf] \T1/txtt/m/sl/10 set.Set_boolean_operators\T1/qtm/m/n/10 , \T1/txtt/m/sl/10 sag [docpdf] e.sets.set.Set_add_sub_operators\T1/qtm/m/n/10 , [][]\T1/txtt/m/n/10 sage.struc [docpdf] ture. [docpdf] ! Missing $ inserted. [docpdf] <inserted text> [docpdf] $ [docpdf] l.5923 ...us{}even at 0x...\PYGZgt{}(x) \PYGZcb{}} [docpdf] [docpdf] ? [docpdf] ! Emergency stop.
comment:40 Changed 11 months ago by
- Commit changed from 69d045a4556bc20f6b3d6aaf65c0e1241ecfbdc2 to 1eb270a5e34e0ae634e73054d644499f10c16779
comment:41 Changed 11 months ago by
- Status changed from needs_work to needs_review
comment:43 Changed 11 months ago by
Thanks.
comment:44 Changed 10 months ago by
- Commit changed from 1eb270a5e34e0ae634e73054d644499f10c16779 to 141ecde3a8382635148f88aa8f5a736fd2f29a95
- Status changed from positive_review to needs_review
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. New commits:
2682469 | src/sage/interfaces/sympy_wrapper.py: Use Family, not Set, in doctests to make sure that the SageSet wrapper is actually used
|
753babb | Set_object_enumerated._sympy_: Translate empty sets to EmptySet
|
141ecde | Merge #32015
|
comment:45 Changed 10 months ago by
- Status changed from needs_review to positive_review
comment:46 Changed 10 months ago by
- Commit changed from 141ecde3a8382635148f88aa8f5a736fd2f29a95 to f135a05bd39d633e8ce5ed45cfe24d0eaf10bf5d
- Status changed from positive_review to needs_review
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. Last 10 new commits:
f85e710 | Chart: in the description of the argument coord_restrictions, replace all instances of 'restrictions' by 'coord_restrictions'
|
80f6195 | Chart, RealChart: In class docstring, order arguments as they appear in __classcall__/__init__
|
a39e6fc | DiffChart, RealDiffChart: In class docstring, order arguments as they appear in __classcall__/__init__; add description of argument coord_restrictions
|
cdf20b0 | TopologicalManifold.chart: Add description of argument coord_restrictions
|
741fd2e | TopologicalManifold.chart: Add an example of using coord_restrictions
|
bf62543 | Merge branch 't/32089/conditionset__conditionset_callable_symbolic_expression' into t/32009/eliminate_direct_use_of_the_chart__domain_attribute
|
141ccb5 | Merge #32009
|
c89c697 | Merge #32102
|
451f5cf | Sets.ParentMethods: Update doctest
|
f135a05 | Merge #32015
|
comment:47 Changed 10 months ago by
- Status changed from needs_review to positive_review
comment:48 Changed 10 months ago by
- Branch changed from u/mkoeppe/conditionset__conditionset_callable_symbolic_expression to f135a05bd39d633e8ce5ed45cfe24d0eaf10bf5d
- Resolution set to fixed
- Status changed from positive_review to closed
Last 10 new commits:
InternalRealInterval, RealSet: Remove extra whitespace in latex, add documentation
PiecewiseFunction: Adjust doctests for changed RealSet repr
src/sage/functions/piecewise.py: Add coding header
Merge #31880
Merge #31877
RealSet: Inherit from Set_base, Set_boolean_operators, Set_add_sub_operators
RealSet.symmetric_difference: New
Set_base._test_as_set_object: Skip _test_pickling
Merge #32013
sage.sets.condition_set: New