Git Product home page Git Product logo

mathematicalsets.jl's Introduction

MathematicalSets.jl

Documentation Status Community License
docs-dev CI codecov aqua zulip license

MathematicalSets is a Julia package for mathematical sets interfaces.

⚠️ NOTE: This library is currently unmaintained

mathematicalsets.jl's People

Contributors

dependabot[bot] avatar mforets avatar schillic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mathematicalsets.jl's Issues

Add more metric notions

See again this comment.

Proposal. Add these:

  • volume(set): returns the volume of the set
  • surface(set): returns the surface

Again 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).

Add space variables

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.

Release

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.

Add dimension and space dimension

Brought from the original post here:

  • space_dimension(::AbstractSet) refers to the ambient dimension of the given set.
  • dimension(::AbstractSet) refers to the affine dimension of the set. See here for definitions.

Add image and pre-image

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.

Add usage section

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|

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.