Comments (6)
Can we create this subtype in Reachability
instead?
I think it does not make much sense in this library.
from lazysets.jl.
the VoidSet
type was introduced as a "useful type" having both behaviors (neutral and absorbing, depending on the operation), and i didn't find any standard name at the moment.. that said, maybe it's time to discuss & do something about this!
the convention is that for any binary set operation op(., .)
and any set X
:
op(AbsorbingEelement_op, X) -> AbsorbingElement_op
(aka annihilating element, or zero element in some contexts)op(NeutralElement_op, X) -> X
(aka identity element)
(and similarly when the arguments are swapped)
I think it is a bit confusing, maybe we have to split both concepts?
we can do it by eliminating VoidSet
in favor of both EmptySet
and ZeroSet
, ensuring that:
op |
NeutralElement |
AbsorbingElement |
---|---|---|
M-sum | ZeroSet |
EmptySet |
Cart prod | EmptySet |
|
CH | EmptySet |
i think we had this discussion about evaluating the support vectors for these special sets. ATM the support vector of a VoidSet
V along direction d is zeros(length(d))
(irrespective of the dimension of V). what do you think for the new types?
from lazysets.jl.
I agree that we use this type in different contexts with different meanings, which is confusing.
We need it to support the application Reachability.jl
for two reasons:
- empty inputs: This is why we need it to be the neutral element of +. I agree that we better use a
ZeroSet
for this purpose. On the other hand, maybe empty inputs can be represented differently. - "useless" dimensions in Cartesian product: This is an annoying issue that there already was a discussion about. It is needed for the projection through a linear map where all array cells have to be written. Hence I do not think that we want to "absorb" here; it is just a specific placeholder with no additional meaning; there is probably no corresponding algebraic concept.
It is worth noting that a VoidSet
is currently created at only two places:
- by the user (see 1. and 2. above)
- as the result of a linear map with a zero matrix
I guess we should return a ZeroSet
in the second case.
Correspondingly, I do not see the need for an EmptySet
at the moment.
Conclusion (personal view):
- Add a
ZeroSet
type. - Keep the
VoidSet
type as a dummy type (maybe rename it?DummySet
?). - Remove the operations on
VoidSet
s because they do not make sense anymore, and give most of them to theZeroSet
where they make sense. - In
Reachability.jl
(1.) change empty inputs toZeroSet
and (2.) continue usingVoidSet
whose meaning should be "I have no meaning" (in contrast, the empty set has a well-known meaning); or solve 2. differently and get rid ofVoidSet
completely.
from lazysets.jl.
great, that's all we need to know. +1 for DummySet
too. in the docs we'll add a table like the one above but explaining these three types. for the alternative solution of missing values, i presume it shall go in the line of using the special type Nullable. but this is subject to change in upcoming julia versions, so IMO we can defer this approach.
from lazysets.jl.
should we have a ZeroSet2D
as a subtype HPolygon
? in Reachability typically we do
Xhatk = Vector{LazySet}(b)
, and i was wondering if we can use instead a concrete type.
from lazysets.jl.
see mforets/dummy_set
for the part left out of the scope of PR #33
from lazysets.jl.
Related Issues (20)
- Problems when using minkowski_sum by parallel computation (Threads.@threads) HOT 8
- convert from Zonotope to VPolytope fails due to inconsistent argument name
- Support vector of Polygon HOT 2
- Use and document fast vertices_list for 2D zonotopes
- Caching the JuMP model in linprog HOT 9
- Update "How to cite" in manual
- Template polyhedron (TPolyhedron)
- vertices_list returns Float64 type for Float32 type input
- Containment check in a LinearMap can fail with SingularException
- Inclusion check of flat zonotope in equivalent line segment fails HOT 1
- convex_hull of two 1D points modifies points in-place
- Inclusion of zonotope without generators in polyhedron
- Faster extrema of HPolytope/HPolyhedron in 1D
- Unify switching logic for solvers
- Fix piracies
- Fix unbound args
- Convex hull algorithm in 2D sensitive to numeric precision HOT 1
- Convex hull algorithm from Polyhedra.jl produces invalid constraints HOT 2
- Plot recipe for lazy operations of unions
- Use only one interval instance for `zero_itv` / `sym_itv`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lazysets.jl.