sig
  module Coeff : Scalar.S
  type t
  val of_list : (Ident.t * Coeff.t) list -> Coeff.t -> LinExpr.S.t
  val to_list : LinExpr.S.t -> (Ident.t * Coeff.t) list * Coeff.t
  val var : Ident.t -> LinExpr.S.t
  val const : Coeff.t -> LinExpr.S.t
  val mult_scalar : Coeff.t -> LinExpr.S.t -> LinExpr.S.t
  val add : LinExpr.S.t -> LinExpr.S.t -> LinExpr.S.t
  val sub : LinExpr.S.t -> LinExpr.S.t -> LinExpr.S.t
  val replace : LinExpr.S.t -> (Ident.t * LinExpr.S.t) list -> LinExpr.S.t
  val remove : LinExpr.S.t -> Ident.t -> LinExpr.S.t
  val compare : LinExpr.S.t -> LinExpr.S.t -> int
  val is_var : LinExpr.S.t -> (Ident.t * Coeff.t) option
  val is_const : LinExpr.S.t -> Coeff.t option
  val choose : LinExpr.S.t -> (Ident.t * Coeff.t) option
  val pp : Stdlib.Format.formatter -> LinExpr.S.t -> unit
end