anchor.diff:  match sigs with
   | (Sig_datacon (l, (*codomain*) t ,(_,cargs(*binders*),_),_,_,_))::tlsig ->
        ({ cname = l ; ctype = t; cargs =[] }, tlsig)
  -| _ -> failwith "incorrect sigelt provided to parseInductiveConstructor"
  +| h::_ -> failwith (Util.format1 "unexpected : %s\n" (Print.sigelt_to_string h)) //"incorrect sigelt provided to parseInductiveConstructor"
   
   let rec parseInductiveConstructors (sigs : list<sigelt>) (n: int) : (list<inductiveConstructor> * list<sigelt>) =
       if (0<n)
  
positive.code:          //Util.subst
  
      | Sig_bundle (sigs, _, _ ,_) -> 
          let inds = parseInductiveTypesFromSigBundle sigs in
          c, (List.map (extractInductive c) inds)
          //let k = lookup_typ_lid c ind.tyName in
  
negative.code:     (sigs : list<sigelt>)  : list<inductiveTypeFam>  =
  match sigs with
  | (Sig_tycon (l,bs,kk,_,constrs,_,_))::tlsig -> 
       //printfn "%A\n" ((List.map (fun (x:lident) -> x.ident.idText) constrs));
      let (indConstrs(*list<inductiveConstructor>*), ttlsig) = parseInductiveConstructors tlsig (List.length constrs) in
       ({tyName = l; k = kk; tyBinders=bs; constructors=indConstrs})::(parseInductiveTypesFromSigBundle ttlsig)
  | [] -> []
  | se::tlsig -> failwith (Util.format1 "unexpected : %s\n" (Print.sigelt_to_string_short se)) //;(parseInductiveTypesFromSigBundle tlsig) //TODO : debug and remove
  | _ -> failwith "incorrect input provided to parseInductiveTypeFromSigBundle"
  
  
  