sig
  exception Not_LiPVar
  exception Not_LiVar
  exception Not_Guard
  exception Invalid_nts_expression
  exception Not_an_if_then_else_condition_guard
  type nts_quantifier = NtsExists | NtsForall
  type nts_base_types = NtsIntType | NtsRealType | NtsBoolType | NtsUnTyped
  type nts_var = NtsVar of string * Nts_types.nts_base_types
  type nts_primed_type = NtsPrimed | NtsUnPrimed
  type nts_genrel_var =
      NtsGenVar of Nts_types.nts_var * Nts_types.nts_primed_type
  type cnt_binop = CntEq | CntNeq | CntLeq | CntLt | CntGt | CntGeq
  type nts_gen_arithm_binop =
      CntGenSum
    | CntGenMinus
    | CntGenProd
    | CntGenDiv
    | CntGenMod
  type nts_gen_arithm_unop = CntGenUMinus
  type nts_gen_bool_cst = CntBTrue | CntBFalse
  type nts_gen_bool_binop = CntGenBAnd | CntGenBOr
  type nts_base_type_cst =
      CntGenICst of Big_int.big_int
    | CntGenFCst of float
    | CntGenBCst of Nts_types.nts_gen_bool_cst
  type nts_symbolic_constant = CntSymCst of string * Nts_types.nts_base_types
  type nts_genrel_arithm_exp =
      CntGenCst of Nts_types.nts_base_type_cst * Nts_types.nts_base_types
    | CntGenSymCst of Nts_types.nts_symbolic_constant *
        Nts_types.nts_base_types
    | CntGenVar of Nts_types.nts_genrel_var
    | CntGenArithmBOp of Nts_types.nts_gen_arithm_binop *
        Nts_types.nts_genrel_arithm_exp * Nts_types.nts_genrel_arithm_exp *
        Nts_types.nts_base_types
    | CntGenArithmUOp of Nts_types.nts_gen_arithm_unop *
        Nts_types.nts_genrel_arithm_exp * Nts_types.nts_base_types
  type ref_nts_array =
      RefBasicTypeArray of Nts_types.nts_base_types
    | RefMulDimArray of Nts_types.ref_nts_array
  type nts_array =
      RefNtsArray of Nts_types.ref_nts_array
    | FixedSizeNtsArray of Nts_types.fixed_size_nts_array
  and fixed_size_nts_array =
      FixedSizeBasicTypeNtsArray of Nts_types.nts_genrel_arithm_exp *
        Nts_types.nts_base_types
    | FixedSizeMulDimNtsArray of Nts_types.nts_genrel_arithm_exp *
        Nts_types.nts_array
  type nts_array_var =
      NtsArrayVar of string * Nts_types.nts_array * Nts_types.nts_base_types
  type nts_gen_relation =
      CntGenRel of Nts_types.cnt_binop * Nts_types.nts_genrel_arithm_exp *
        Nts_types.nts_genrel_arithm_exp
    | CntGenRelComp of Nts_types.nts_gen_bool_binop *
        Nts_types.nts_gen_relation * Nts_types.nts_gen_relation
    | CntGenNot of Nts_types.nts_gen_relation
    | CntGenTrue
    | CntGenFalse
    | CntQVarsGenRel of Nts_types.nts_genrel_var list *
        Nts_types.nts_quantifier * Nts_types.nts_gen_relation
  type nts_trans_label =
      CntGenGuard of Nts_types.nts_gen_relation
    | CntGenCall of string * Nts_types.nts_genrel_var list option *
        Nts_types.nts_genrel_arithm_exp list
    | CntGenHavoc of Nts_types.nts_genrel_var list
end