Opened 4 years ago

Last modified 4 days ago

#24176 new enhancement

ConditionSet, ImageSet: Implement formal Set comprehension

Reported by: rws Owned by:
Priority: major Milestone: sage-9.4
Component: symbolics Keywords:
Cc: tscrim Merged in:
Authors: Ralf Stephan Reviewers:
Report Upstream: N/A Work issues:
Branch: u/mkoeppe/implement_formal_set_comprehension (Commits, GitHub, GitLab) Commit: 24789baf9f77ae75de9500085d196ad0a322aed5
Dependencies: #24171, #32013 Stopgaps:

Status badges

Description (last modified by mkoeppe)

In order to be able to express solution sets from SymPy's solveset a set comprehension constructor as equivalent to SymPy's imageset / ConditionSet is needed. As the arguments are symbolic the most natural way to do this would be a formal symbolic function named like set_of_all taking a term argument and a list argument containing element_of(...) function expressions.

This set would convert to a SymPy ImageSet or ConditionSet

Related: ImageManifoldSubset (#31653)

Change History (17)

comment:1 Changed 4 years ago by rws

  • Dependencies set to #24171

comment:2 Changed 4 years ago by rws

  • Dependencies changed from #24171 to #24171, pynac-0.7.13

Accepting lists requires the function being a GinacFunction.

comment:3 Changed 4 years ago by rws

  • Branch set to u/rws/implement_formal_set_comprehension

comment:4 Changed 4 years ago by rws

  • Commit set to 9c77312e611f2d9fe5643e3e7a5bff51e511aa87
  • Dependencies changed from #24171, pynac-0.7.13 to #24171, #24262

New commits:

669ea2224171: Formal set membership function
34c977324171: make RealSet inherit from Set_generic
af8271724171: remove RealSet import; SR set coercion doctests
592ce8724171: Py3 fixes
82b7c6fMerge branch 'u/rws/formal_set_membership_function' of git://trac.sagemath.org/sage into t/24176/implement_formal_set_comprehension
ae2989524176: check set argument of element_of()
9c7731224176: Implement formal Set comprehension

comment:5 Changed 4 years ago by rws

  • Branch changed from u/rws/implement_formal_set_comprehension to u/rws/24176

comment:6 Changed 4 years ago by rws

  • Authors set to Ralf Stephan
  • Branch changed from u/rws/24176 to u/rws/implement_formal_set_comprehension
  • Dependencies changed from #24171, #24262 to #24171, #24329

comment:7 Changed 2 weeks ago by mkoeppe

  • Branch changed from u/rws/implement_formal_set_comprehension to u/mkoeppe/implement_formal_set_comprehension

comment:8 Changed 2 weeks ago by mkoeppe

  • Commit changed from 9c77312e611f2d9fe5643e3e7a5bff51e511aa87 to ec393090edb11c220c0e0e39529445015a00623d
  • Dependencies changed from #24171, #24329 to #24171
  • Milestone changed from sage-8.2 to sage-9.4

Rebased on top of rebased #24171


New commits:

72565f224171: Formal set membership function
71bbf3824171: Formal set membership function
6811a7624171: make RealSet inherit from Set_generic
0a66f7824171: remove RealSet import; SR set coercion doctests
e35349a24171: Py3 fixes
26ef67d24176: check set argument of element_of()
ec3930924176: Implement formal Set comprehension

comment:9 Changed 2 weeks ago by git

  • Commit changed from ec393090edb11c220c0e0e39529445015a00623d to 24789baf9f77ae75de9500085d196ad0a322aed5

Branch pushed to git repo; I updated commit sha1. This was a forced push. Last 10 new commits:

51c8152Merge branch 't/31877/refine_category_of_realset' into t/24171/set-membership-rebased
5e623bbRealSet.is_finite: Remove, inherited from category
7d19916Do not use QQ.completion(oo,oo) - not implemented
9b4e22424176: check set argument of element_of()
5310e04Function_elementof: Remove use of is_Set
46d979524171: Formal set membership function
6995d1e24171: make RealSet inherit from Set_generic
a41c5fc24171: remove RealSet import; SR set coercion doctests
2a9c49a24171: Py3 fixes
24789ba24176: Implement formal Set comprehension

comment:10 Changed 2 weeks ago by mkoeppe

Rebased on top of updated #24171, which cherry-picked 1 commit from here.

Not sure about the changes on this ticket marked 24171. They are either from a newer or older version of 24171.

comment:11 Changed 2 weeks ago by mkoeppe

  • Cc tscrim added

The fix to RealSet.__bool__ in 6995d1e/2a9c49a can go to #31941 (Make empty RealSet false).

Unclear to me whether 6995d1e (make RealSet inherit from Set_generic) should be done

comment:12 Changed 2 weeks ago by mkoeppe

  • Description modified (diff)

comment:13 Changed 2 weeks ago by mkoeppe

  • Description modified (diff)

comment:14 follow-up: Changed 2 weeks ago by mkoeppe

I think the approach on the current branch may be tied a bit too closely to SR functions.

I think it's better to first implement:

  • ImageSubset (as an abstract subobject of the codomain) for arbitrary Maps -- this would be a generalization of ImageManifoldSubset (#31653). No relation to SR (but by relaxing the code from #24171 that only allows some sets to be coerced to SR, one would be able to coerce it to SR).
  • ConditionSet (as an abstract subobject of a parent in the Sets category) - defined via the element constructor of the parent and an SR expression with truth value.

comment:15 Changed 6 days ago by mkoeppe

  • Summary changed from Implement formal Set comprehension to ConditionSet, ImageSet: Implement formal Set comprehension

comment:16 in reply to: ↑ 14 Changed 6 days ago by mkoeppe

Replying to mkoeppe:

  • ConditionSet (as an abstract subobject of a parent in the Sets category) - defined via the element constructor of the parent and an SR expression with truth value.

more precisely... an element of CallableSymbolicExpression (see #32008 for making this safer)

comment:17 Changed 4 days ago by mkoeppe

  • Dependencies changed from #24171 to #24171, #32013
Note: See TracTickets for help on using tickets.