Documentation | Status | Community | License |
---|---|---|---|
MathematicalSets
is a Julia package for mathematical sets interfaces.
Set definitions in Julia
Home Page: https://juliareach.github.io/MathematicalSets.jl/
License: MIT License
Documentation | Status | Community | License |
---|---|---|---|
MathematicalSets
is a Julia package for mathematical sets interfaces.
See again this comment.
Proposal. Add these:
volume(set)
: returns the volume of the setsurface(set)
: returns the surfaceAgain there is some terrain for variations since e.g. the volume of a set such that dimension
is strictly smaller than its space_dimension
could be either zero (Lebesgue measure of its ambient space), or not (the Lebesgue measure of the affine hull or relative volume).
See again this comment.
Proposal. Add space_variables
, a container of size space_dimension
with an id for each dimension (by default, it is Base.OneTo(space_dimension(set))
but it might also be symbolic variables.
Hi @mforets and @schillic. Sorry for being so slow at this but I would like to finally start integrating this package.
I think what's hard for this package is to decide what could be on it.
The obvious candidates are space_dimension
and dimension
since that is what is needed by MathematicalSets to check that he sets he receives have the right dimension.
For volume
and surface_area
, there might be bikeshedding on what it would mean for lower-dimensional objectsbut we can keep it as zero for these functions and not define any other function for these lower-dimensional objects for now.
Maybe we can keep it simple at first, keep these 4 functions and add MathematicalSets as a dependency for LazySets, SemialgebraicSets, Polyhedra, SetProg, ... Once this is done, we can add it to MathematicalSystems and use it to check input.
Then we'll see later one if we can integrate more things one by one but a small packages is also fine.
About union, intersections, etc..., if LazySets plans to support nonconvex sets at some point then it's best to leave these lazy operations in LazySets and we don't have to define them here and Dionysos/SetProg will use LazySets for that.
One other set that could be useful is SemialgebraicSets.FullSpace
because I often need it and having SemialgebraicSets
as dependency for that is a bit silly.
In SemialgebraicSets, there is no dimension but we could give one so that we can implement dimension
.
Of course, we could decide whether it is R^n
or C^n
but we may just leave if ambiguous for now, it's just a set such that Base.in
always returns true
, Base.intersect
is a no-op and Base.union
absorbs.
This could be use as returned value for state_set
of unconstrained systems for instance.
What do you think ? If you are fine with it, I can make a PR.
See again this comment.
Proposal. Add project(set::AbstractSet, variables)
to project onto variables which is a subset of space_variables(set)
.
Depends on #8.
See again this comment.
Proposal. Add polar(set)
. See https://en.wikipedia.org/wiki/Polar_set for distinct definitions.
See again this comment.
Proposal. Add:
A * set
: The image of all points of the set by A.A' \ set
or set / A
: The pre-image of all the points by A.See again this comment.
Proposal. Add eliminate(set::AbstractSet, variables)
same as project(set, setminus(space_variables(set), variables))
.
In index.md
, when one package uses MathematicalSets
, add a subsection like the following:
## Usage
The following packages implement the `MathematicalSets.AbstractSet` interface:
|Library|Description|
|-------|------------|
|[LazySets](https://github.com/JuliaReach/LazySets.jl)|A Julia package for calculus with convex sets|
|[Polyhedra](https://github.com/JuliaPolyhedra/Polyhedra.jl)|Polyhedral Computation Interface|
|[SemialgebraicSets](https://github.com/JuliaAlgebra/SemialgebraicSets.jl)|Extension of MultivariatePolynomials to semialgebraic sets|
|[SetProg](https://github.com/blegat/SetProg.jl)|Set Programming with JuMP|
This package could be useful as an abstract interface to https://github.com/JuliaReach/MathematicalPredicates.jl -- it is now empty, see initial discussion here, and the relevant module here.
In this issue we can list the methods that are needed in MathematicalSets.jl
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.