-
-
Notifications
You must be signed in to change notification settings - Fork 568
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve is_empty and is_finite in a few cases #39444
Improve is_empty and is_finite in a few cases #39444
Conversation
Documentation preview for this PR (built with commit 20f0012; changes) is ready! 🎉 |
I tried to add Will probably patch it by adding it to There's the (existing) issue of #39447 which I'm not entirely sure how to fix. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. LGTM. (It probably would have been better to do the formatting for unrelated files in a separate PR, but what's done is done.)
sagemathgh-39444: Improve is_empty and is_finite in a few cases * `is_empty` for cartesian_product now returns True as long as some factor can be determined to be empty, even if other factors' emptiness is unknown. * `is_finite` for cartesian_product now correctly return "unknown" in case (unknown empty set × infinite set). * as a consequence of the above, `is_empty` must be provided for e.g. `FiniteWords("ab")` for tests to pass. (Unfortunately Sage has two different functions `is_empty` and `__bool__` that does almost the exact same thing, I guess we will have to live with it.) * `is_empty` for union of two sets now returns False as long as the first set is nonempty, regardless of the second set. (also performance optimization, no need to compute the cardinality.) * `LazyFamily` now has `is_finite` implemented in more cases. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [x] I have created tests covering the changes. - [x] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> URL: sagemath#39444 Reported by: user202729 Reviewer(s): Travis Scrimshaw, user202729
is_empty
for cartesian_product now returns True as long as some factor can be determined to be empty, even if other factors' emptiness is unknown.is_finite
for cartesian_product now correctly return "unknown" in case (unknown empty set × infinite set).is_empty
must be provided for e.g.FiniteWords("ab")
for tests to pass. (Unfortunately Sage has two different functionsis_empty
and__bool__
that does almost the exact same thing, I guess we will have to live with it.)is_empty
for union of two sets now returns False as long as the first set is nonempty, regardless of the second set. (also performance optimization, no need to compute the cardinality.)LazyFamily
now hasis_finite
implemented in more cases.📝 Checklist
⌛ Dependencies