-
Notifications
You must be signed in to change notification settings - Fork 32
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
Unify interface for decompose and overapproximate #345
Comments
#345 - Allow template directions in decompose
function decompose(S::LazySet{N};
set_type::Type{<:Union{HPolygon, Hyperrectangle, Interval}}=Hyperrectangle,
ε::Real=Inf,
blocks::AbstractVector{Int}=default_block_structure(S, set_type),
block_types=Dict{Type{<:LazySet}, AbstractVector{<:AbstractVector{Int}}}(),
directions::Union{Type{<:AbstractDirections}, Void}=nothing
)::CartesianProductArray where {N<:Real} Here, |
One idea is to have a new struct that wraps all those options instead and decides which analysis is performed. There should also be a to-string function that prints the resulting action, like |
These options can be distinguished by their type. Hence we could at least offer a general constructor that only takes one argument. |
I would argue that the |
decompose
basically callsoverapproximate
from a loop. Whenever we add a newoverapproximate
implementation, we also need to manually add a new implementation fordecompose
as well to support it there. Can we find a way to automate this process?Maybe with macros?
Maybe by using the idea from #339 to only use
Symbol
s as parameters and then determining the correctoverapproximate
function dynamically? Will this be efficient?The text was updated successfully, but these errors were encountered: