8#include "akreon/linalg/affine/affine_traits.hpp"
10#include "akreon/linalg/norms/norm_traits.hpp"
41template <linalg::RnSpace Space, VarType Sign>
45template <
typename Dom>
48template <linalg::RnSpace SpaceIn, VarType Sign>
51 using T = linalg::space_type_t<Space>;
52 using Point = linalg::space_point_t<Space>;
53 static constexpr std::size_t N = linalg::space_dim_v<Space>;
57template <
typename Dom>
60template <
typename Dom>
63template <
typename Dom>
66template <
typename Dom>
70template <
typename Dom>
75template <
typename Dom,
typename Codom, CurvatureType Curv>
80template <
typename Meta>
83template <
typename Dom,
typename Codom, CurvatureType Curv>
90template <
typename Meta>
93template <
typename Meta>
97template <
typename Meta>
101template <
typename Meta,
typename Derived,
typename...
Cs>
104template <
typename Meta>
107template <
typename Meta,
typename Child>
112template <
typename Meta,
typename Child>
116template <
typename Meta,
typename Child, linalg::NormFunction NormFunc>
121template <
typename Meta,
typename Child>
125template <
typename Meta,
typename Child>
130template <
typename Meta,
typename Child>
135template <
typename Meta,
typename Child>
140template <
typename Meta,
typename Child>
145template <
typename Meta,
typename Child>
150template <
typename Meta,
typename Child>
154template <
typename Meta,
typename Child>
159template <
typename Meta,
typename Child>
164template <
typename Meta,
typename Child>
169template <
typename Meta,
typename Child>
173template <
typename Meta,
typename Child>
177template <
typename Meta,
typename...
Cs>
181template <
typename Meta,
typename Derived,
typename Child>
185template <
typename Meta,
typename Child>
189template <
typename Meta,
typename Child>
196template <
typename Meta,
typename Child, HalfspaceType Type>
200template <
typename Meta,
typename Child>
204template <
typename Meta,
typename Child, linalg::SquareMatrix MatIn>
211template <
typename Meta,
typename Child, NormBallType Type>
215template <
typename Meta,
typename Child>
219template <
typename Meta,
typename...
Cs>
223template <conic::BuilderLike Builder, StageType Stage>
227template <
typename Prob>
231template <conic::BuilderLike Builder, StageType Stage>
238template <
typename Prob>
243template <
typename Prob>
248template <
typename Problem>
250 {
prob.linear_objective() };
251 {
prob.constraint_map() };
252 {
prob.constraint_cones() };
253 {
prob.equality_map() };
257template <
typename Atom>
260template <
typename Meta,
typename Child>
265template <
typename Meta>
271template <
typename Meta,
typename Child>
277template <
typename Meta,
typename Child>
283template <
typename Meta,
typename Child>
289template <
typename Meta,
typename Child>
295template <
typename Meta,
typename Child>
301template <
typename Meta,
typename Child>
307template <
typename Meta,
typename Child>
313template <
typename Meta,
typename Child>
319template <
typename Meta,
typename Child>
325template <
typename Meta,
typename Child, linalg::NormFunction NormFunc>
331template <
typename Meta,
typename Child>
337template <
typename Meta,
typename Child>
343template <
typename Meta,
typename Child>
349template <
typename Meta,
typename Child>
355template <
typename Meta,
typename Child>
361template <
typename Meta,
typename Derived,
typename Child>
367template <
typename Meta,
typename Child>
373template <
typename Meta,
typename Child>
379template <
typename Meta,
typename Child, HalfspaceType HType>
385template <
typename Meta,
typename Child>
391template <
typename Meta,
typename Child,
typename Mat>
397template <
typename Meta,
typename Child, NormBallType BType>
403template <
typename Meta,
typename Child>
410template <linalg::RnSpace Dom>
414template <linalg::RnSpace Codom>
415 requires(linalg::space_dim_v<Codom> == 1)
419template <linalg::RnSpace Dom, linalg::RnSpace Codom>
424template <linalg::RnSpace Dom, linalg::RnSpace Codom,
typename...
Cs>
431template <linalg::RnSpace Space>
435template <linalg::RnSpace Space>
439template <linalg::RnSpace Space>
445template <linalg::RnSpace Space,
typename...
Cs>
452template <
typename Atom>
454 {
atom.validate_domain() } -> std::convertible_to<void>;
459template <InequalityType IType, AtomLike LHS,
typename RHS>
467template <AtomLike Atom>
471template <AtomLike Atom>
475template <AtomLike Atom>
478template <AtomLike Atom>
481template <AtomLike Atom>
484template <AtomLike Atom>
487template <AtomLike Atom>
490template <AtomLike Atom>
Concept for any convex atom node in the expression tree.
VarType
Domain/variable annotation attached to domains/codomains.
typename dom_traits< linalg::remove_cvref_t< Dom > >::Space dom_space_t
constexpr AtomType atom_type_v
Compile-time atom category.
constexpr std::size_t dom_size_v
constexpr bool is_index_type_v
CurvatureType
Curvature annotation for atom codomain.
linalg::remove_cvref_t< T > atom_decay_t
normalize atom-facing types to a stable internal form.
MonotonicityType
Monotonicity annotation for function atoms.
HalfspaceType
simple enum to describe type of halfspace
NormBallType
simple enum to describe ball type
constexpr CurvatureType meta_curv_v
constexpr bool is_set_type_v
typename dom_traits< linalg::remove_cvref_t< Dom > >::T dom_type_t
AtomType
Atom category used by canonicalization and DCP checks.
linalg::Vector< T, 1 > LiftedVarBias
alias for lifted var map
constexpr bool is_fn_type_v
Helper predicates on atom category.
constexpr bool is_add_type_v
linalg::RowVector< T, 1 > LiftedVarMat
alias for lifted var map
typename dom_traits< linalg::remove_cvref_t< Dom > >::Point dom_point_t
constexpr bool is_cap_type_v
typename meta_traits< linalg::remove_cvref_t< Meta > >::Codomain meta_codom_t
typename atom_traits< atom_decay_t< Atom > >::ConvexMeta atom_meta_t
Extract metadata type from atom.
constexpr VarType dom_vartype_v
InequalityType
InequalityType for inequality atom.
constexpr bool is_var_type_v
typename prob_traits< linalg::remove_cvref_t< Prob > >::BuilderT prob_builder_t
builder type from prob
StageType
Problem construction lifecycle stage.
typename meta_traits< linalg::remove_cvref_t< Meta > >::Domain meta_dom_t
constexpr bool is_problem_set_v
stage type from prob
forward declaration - abs fn
forward declaration of affine subspace
CRTP base for convex atoms.
Domain wrapper with a static sign label.
forward declaration of convex set
forward declaration of ellipsoid set
forward declaration - exp fn
forward declaration - geo mean fn
forward declaration of halfspace
forward declaration - harmonic mean fn
forward declaration - huber
forward declaration of hyperplane
forward declaration of inequality
forward declaration of set intersection operator.
forward declaration - inv pos fn
forward declaration - kl divergence
forward declaration of LMI type
forward declaration - log sum exp fn
forward declaration - log fn
forward declaration - max fn
forward declaration of norm ball set
forward declaration - norm fn
forward declaration of polyhedron set
forward declaration - softplus fn
forward declaration - log sum exp fn
forward declaration - square fn
forward declaration - sum op
linalg::space_point_t< Space > Point
linalg::space_type_t< Space > T