|
codac 2.0.0
|
Codomain of a sliced tube over one temporal slice. More...
#include <codac2_Slice.h>


Public Member Functions | |
| Slice (const SlicedTubeBase &tube, const std::list< TSlice >::iterator &it_tslice, const T &codomain) | |
| Creates a slice attached to a tube over a temporal slice. | |
| Slice (const Slice &s, const SlicedTubeBase &tube) | |
| Creates a slice from another one for a given tube. | |
| const SlicedTube< T > & | tube () const |
| Returns the sliced tube owning this slice. | |
| std::shared_ptr< SliceBase > | copy () const override |
| Duplicates this slice. | |
| Index | size () const |
| Returns the codomain dimension. | |
| T & | codomain () |
| Returns a mutable reference to the codomain. | |
| const T & | codomain () const |
| Returns a constant reference to the codomain. | |
| bool | is_gate () const |
| Tests whether this slice is a gate. | |
| std::shared_ptr< const Slice< T > > | prev_slice () const |
| Returns the previous slice. | |
| std::shared_ptr< Slice< T > > | prev_slice () |
| Returns the previous slice. | |
| std::shared_ptr< const Slice< T > > | next_slice () const |
| Returns the next slice. | |
| std::shared_ptr< Slice< T > > | next_slice () |
| Returns the next slice. | |
| T | input_gate () const |
| Returns the input gate of this slice. | |
| T | output_gate () const |
| Returns the output gate of this slice. | |
| std::pair< T, T > | enclosed_bounds (const Interval &t) const |
| Returns enclosed lower and upper bounds over a temporal interval. | |
| void | set (const T &x, bool propagate=true) |
| Sets the codomain of this slice. | |
| void | init () |
| Initializes this codomain to its unbounded value. | |
| void | set_empty () |
| Sets this codomain to the empty set. | |
| bool | operator== (const Slice &x) const |
| Compares two slices. | |
| ConvexPolygon | polygon_slice (const Slice< T > &v) const |
| Returns the polygonal enclosure associated with this scalar slice. | |
| ConvexPolygon | polygon_slice_i (const Slice< T > &v, Index i) const |
| Returns the polygonal enclosure associated with one component of a vector slice. | |
| T | operator() (double t) const |
| Returns the evaluation of this slice at \(t\). | |
| T | operator() (const Interval &t) const |
| Returns the evaluation of this slice over \([t]\). | |
| T | operator() (double t, const Slice< T > &v) const |
| Returns the optimal evaluation of this slice at \(t\), based on the derivative information \(\llbracket v\rrbracket(\cdot)\). | |
| T | operator() (const Interval &t, const Slice< T > &v) const |
| Returns the optimal evaluation of this slice over \([t]\), based on the derivative information \(\llbracket v\rrbracket(\cdot)\). | |
| Interval | invert (const T &y, const Interval &t=Interval()) const |
| Returns the interval inversion \(\llbracket x\rrbracket^{-1}([y])\). | |
| Interval | invert (const T &y, const Slice< T > &v, const Interval &t=Interval()) const |
| Returns the optimal interval inversion \(\llbracket x\rrbracket^{-1}([y])\). | |
| T | all_reals_value () const |
| Returns the unbounded value associated with this codomain type. | |
| T | empty_value () const |
| Returns the empty value associated with this codomain type. | |
| Public Member Functions inherited from codac2::SliceBase | |
| virtual | ~SliceBase ()=default |
| Virtual destructor. | |
| const Interval & | t0_tf () const |
| Returns the temporal domain of this slice. | |
| const TSlice & | tslice () const |
| Returns the temporal slice associated with this object. | |
| std::shared_ptr< const SliceBase > | prev_slice () const |
| Returns the previous slice of the same tube. | |
| std::shared_ptr< const SliceBase > | next_slice () const |
| Returns the next slice of the same tube. | |
Protected Member Functions | |
| void | set_empty (bool propagate) |
| Sets this codomain to the empty set. | |
| void | update_adjacent_codomains () |
| Propagates codomain contractions to adjacent gates. | |
| Protected Member Functions inherited from codac2::SliceBase | |
| SliceBase (const SlicedTubeBase &tube, const std::list< TSlice >::iterator &it_tslice) | |
| Creates a slice attached to a tube and a temporal slice. | |
Additional Inherited Members | |
| Protected Attributes inherited from codac2::SliceBase | |
| const SlicedTubeBase & | _tube |
| Parent sliced tube. | |
| std::list< TSlice >::iterator | _it_tslice |
| Iterator to the associated temporal slice. | |
Codomain of a sliced tube over one temporal slice.
A Slice<T> represents the codomain of a SlicedTube<T> over one temporal interval of a TDomain.
This object is attached to one temporal slice TSlice and stores a codomain of type T. The type T is typically Interval or IntervalVector, or any custom domain implemented by the user.
The inheritance from T is protected so that modifications of the codomain remain controlled by the Slice interface. Indeed, changing the codomain of a slice may require propagating contractions to adjacent gates.
| T | codomain type |
|
inlineexplicit |
Creates a slice attached to a tube over a temporal slice.
| tube | sliced tube owning this slice |
| it_tslice | iterator to the associated temporal slice |
| codomain | codomain associated with this slice |
|
inline |
Creates a slice from another one for a given tube.
This constructor duplicates the codomain and keeps the same temporal support.
| s | source slice |
| tube | sliced tube owning the copied slice |
|
inline |
Returns the sliced tube owning this slice.
|
inlineoverridevirtual |
|
inline |
|
inline |
|
inline |
Returns a constant reference to the codomain.
|
inline |
Tests whether this slice is a gate.
A slice is considered a gate when its temporal support is degenerate.
|
inline |
Returns the previous slice.
|
inline |
Returns the previous slice.
|
inline |
Returns the next slice.
|
inline |
Returns the next slice.
|
inline |
Returns the input gate of this slice.
If the previous temporal element is an explicit gate, its codomain is returned. Otherwise, the returned value is the intersection between this codomain and the codomain of the previous slice. If no previous slice exists, the codomain of this slice is returned.
|
inline |
Returns the output gate of this slice.
If the next temporal element is an explicit gate, its codomain is returned. Otherwise, the returned value is the intersection between this codomain and the codomain of the next slice. If no next slice exists, the codomain of this slice is returned.
|
inline |
Returns enclosed lower and upper bounds over a temporal interval.
This method returns a pair whose first component encloses the reachable lower bounds and whose second component encloses the reachable upper bounds over t.
| t | temporal interval |
|
inline |
Sets the codomain of this slice.
If propagate is set to true, adjacent gates are updated in order to preserve temporal consistency.
| x | new codomain |
| propagate | if set to true, propagates the update to adjacent gates |
|
inlinevirtual |
Initializes this codomain to its unbounded value.
No propagation is performed on adjacent slices.
Implements codac2::SliceBase.
|
inlinevirtual |
Sets this codomain to the empty set.
Adjacent gates are updated accordingly.
Implements codac2::SliceBase.
|
inline |
|
inline |
Returns the polygonal enclosure associated with this scalar slice.
The enclosure is built from the codomain of this slice, its input/output gates and the derivative information provided by v.
| v | derivative slice |
|
inline |
Returns the polygonal enclosure associated with one component of a vector slice.
| v | derivative slice |
| i | component index |
|
inline |
Returns the evaluation of this slice at \(t\).
| t | temporal input (outside Slice's tdomain, result is unbounded) |
|
inline |
Returns the evaluation of this slice over \([t]\).
|
inline |
Returns the optimal evaluation of this slice at \(t\), based on the derivative information \(\llbracket v\rrbracket(\cdot)\).
| t | temporal input (outside Slice's tdomain, result is unbounded) |
| v | derivative slice such that \(\dot{x}(\cdot)\in\llbracket v\rrbracket(\cdot)\) |
|
inline |
Returns the optimal evaluation of this slice over \([t]\), based on the derivative information \(\llbracket v\rrbracket(\cdot)\).
| t | Interval temporal input (outside Slice's tdomain, result is unbounded) |
| v | derivative slice such that \(\dot{x}(\cdot)\in\llbracket v\rrbracket(\cdot)\) |
|
inline |
Returns the interval inversion \(\llbracket x\rrbracket^{-1}([y])\).
| y | Interval codomain |
| t | optional interval tdomain on which the inversion will be performed |
|
inline |
Returns the optimal interval inversion \(\llbracket x\rrbracket^{-1}([y])\).
| y | Interval codomain |
| v | derivative slice such that \(\dot{x}(\cdot)\in\llbracket v\rrbracket(\cdot)\) |
| t | the optional interval tdomain on which the inversion will be performed |
|
inline |
|
inline |
|
inlineprotected |
Sets this codomain to the empty set.
| propagate | if set to true, propagates the update to adjacent gates |
|
inlineprotected |
Propagates codomain contractions to adjacent gates.
This method preserves consistency between a slice and its neighboring gates when one of them is contracted.