Solve the problem of stochastic reachability of a target tube (a lower bound
  on the maximal reach probability and an affine controller synthesis) using
  chance-constrained optimization and difference of convex programming
  =============================================================================
 
  SReachPointCcA implements the chance-constrained underapproximation to the
  problem of stochastic reachability of a target tube to construct an affine
  controller. This technique is discussed in detail in the paper,
 
  A. Vinod and M. Oishi. Affine controller synthesis for stochastic reachability
  via difference of convex programming. In Proc. Conf. Dec. & Ctrl., 2019.
  (submitted). https://hscl.unm.edu/affinecontrollersynthesis/
 
     High-level desc.   : Use Boole's inequality, Gaussian random vector,
                          hyperbolic constraints-to-second order cone constraint
                          reformulation, and piecewise linear approximation of
                          the inverse of the standard normal cumulative density
                          function to create a second-order cone program-based
                          difference-of-convex optimization problem
     Controller type    : A history-dependent affine controller that satisfies
                          softened input constraints (controller satisfies the
                          hard input bounds upto a user-specified probabilistic
                          threshold)
     Optimality         : Suboptimal affine controller for the
                          underapproximation problem due to non-convexity
                          established by the difference of convex formulation
     Approximation      : Guaranteed underapproximation
 
  =============================================================================
 
  [lb_stoch_reach, opt_input_vec, opt_input_gain, risk_alloc_state, ...
    risk_alloc_input] = SReachPointCcA(sys, initial_state, safety_tube, options)
  
  Inputs:
  -------
    sys          - System description (LtvSystem/LtiSystem object)
    initial_state- Initial state for which the maximal reach probability must be
                   evaluated (A numeric vector of dimension sys.state_dim)
    safety_tube  - Collection of (potentially time-varying) safe sets that
                   define the safe states (Tube object)
    options      - Collection of user-specified options for 'chance-affine'
                   (Matlab struct created using SReachPointOptions)
 
  Outputs:
  --------
    lb_stoch_reach 
                - Lower bound on the stochastic reachability of a target tube
                  problem computed using chance constraints and
                  difference-of-convex techniques. While it is expected to lie
                  in [0,1], it is set to -1 in cases where the
                  difference-of-convex optimization fails to converge.
    opt_input_vec, 
      opt_input_gain
                - Controller U=MW+d for a concatenated input vector 
                    U = [u_0; u_1; ...; u_{N-1}] and concatenated disturbance
                    vector W=[w_0; w_1; ...; w_{N-1}]. 
                    - opt_input_gain: Affine controller gain matrix of dimension
                        (sys.input_dim*N) x (sys.dist_dim*N)
                    - opt_input_vec: Open-loop controller: column vector 
                      dimension
                        (sys.input_dim*N) x 1
    risk_alloc_state 
                - Risk allocation for the state constraints
    risk_alloc_input
                - Risk allocation for the input constraints
 
  See also SReachPoint.
 
  Notes:
  * We recommend using this function through SReachPoint.
  * This function requires CVX to work.
  * This function returns a **lower bound to the maximal reach probability under
    hard input constraints**. This lower bound is obtained by a linear
    transformation of the maximal reach probability associated with the
    unsaturated affine controller using the user-specified likelihood threshold
    on the hard input constraints. See Theorem 1 of the paper cited above.
  * See @LtiSystem/getConcatMats for more information about the notation used.
  
  ============================================================================
  
  This function is part of the Stochastic Reachability Toolbox.
  License for the use of this function is given in
       https://sreachtools.github.io/license/