sig
module Mat : Matrix.S
type var
type matrix_expr =
Const of Mat.t
| Var of Lmi.S.var
| Zeros of int * int
| Eye of int
| Kron of int * int * int
| Kron_sym of int * int * int
| Block of Lmi.S.matrix_expr array array
| Lift_block of Lmi.S.matrix_expr * int * int * int * int
| Transpose of Lmi.S.matrix_expr
| Minus of Lmi.S.matrix_expr
| Add of Lmi.S.matrix_expr * Lmi.S.matrix_expr
| Sub of Lmi.S.matrix_expr * Lmi.S.matrix_expr
| Mult of Lmi.S.matrix_expr * Lmi.S.matrix_expr
| Power of Lmi.S.matrix_expr * int
val var : string -> int -> Lmi.S.matrix_expr
val var_var : string -> int -> Lmi.S.var * Lmi.S.matrix_expr
val const : Mat.t -> Lmi.S.matrix_expr
val scalar : Mat.Coeff.t -> Lmi.S.matrix_expr
val zeros : int -> int -> Lmi.S.matrix_expr
val eye : int -> Lmi.S.matrix_expr
val kron : int -> int -> int -> Lmi.S.matrix_expr
val kron_sym : int -> int -> int -> Lmi.S.matrix_expr
val block : Lmi.S.matrix_expr array array -> Lmi.S.matrix_expr
val lift_block :
Lmi.S.matrix_expr -> int -> int -> int -> int -> Lmi.S.matrix_expr
val transpose : Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val minus : Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val add : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val sub : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val mult : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val power : Lmi.S.matrix_expr -> int -> Lmi.S.matrix_expr
val nb_lines : Lmi.S.matrix_expr -> int
val nb_cols : Lmi.S.matrix_expr -> int
val is_symmetric : Lmi.S.matrix_expr -> bool
val ( !! ) : Mat.t -> Lmi.S.matrix_expr
val ( ! ) : Mat.Coeff.t -> Lmi.S.matrix_expr
val ( ~: ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( *. ) : Mat.Coeff.t -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( ~- ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( + ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( - ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( * ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( ** ) : Lmi.S.matrix_expr -> int -> Lmi.S.matrix_expr
val ( >= ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
val ( <= ) : Lmi.S.matrix_expr -> Lmi.S.matrix_expr -> Lmi.S.matrix_expr
type options = { sdp : Sdp.options; verbose : int; pad : float; }
val default : Lmi.S.options
type obj =
Minimize of Lmi.S.matrix_expr
| Maximize of Lmi.S.matrix_expr
| Purefeas
type values
exception Dimension_error of string
exception Not_linear
exception Not_symmetric
val solve :
?options:Lmi.S.options ->
?solver:Sdp.solver ->
Lmi.S.obj ->
Lmi.S.matrix_expr list -> SdpRet.t * (float * float) * Lmi.S.values
val empty_values : unit -> Lmi.S.values
val value : Lmi.S.matrix_expr -> Lmi.S.values -> Mat.Coeff.t
val value_mat : Lmi.S.matrix_expr -> Lmi.S.values -> Mat.t
val register_value :
Lmi.S.var -> Mat.Coeff.t -> Lmi.S.values -> Lmi.S.values
val check :
?options:Lmi.S.options ->
?values:Lmi.S.values -> Lmi.S.matrix_expr -> bool
val pp : Stdlib.Format.formatter -> Lmi.S.matrix_expr -> unit
val pp_values : Stdlib.Format.formatter -> Lmi.S.values -> unit
end