functor (T : TermInner.S->
  sig
    type ty = T.t
    type 'a env = ('a, AnalyzeType.Make.ty) Env.t
    type cache
    val create_cache : ?default_card:int -> unit -> AnalyzeType.Make.cache
    val cardinality_ty :
      ?cache:AnalyzeType.Make.cache ->
      'AnalyzeType.Make.env -> AnalyzeType.Make.ty -> Cardinality.t
    val cardinality_ty_id :
      ?cache:AnalyzeType.Make.cache ->
      'AnalyzeType.Make.env -> ID.t -> Cardinality.t
    val check_non_zero :
      ?cache:AnalyzeType.Make.cache ->
      'AnalyzeType.Make.env ->
      ('a, AnalyzeType.Make.ty) Statement.t -> unit
    val is_incomplete :
      'AnalyzeType.Make.env -> AnalyzeType.Make.ty -> bool
    val is_abstract : 'AnalyzeType.Make.env -> AnalyzeType.Make.ty -> bool
  end