fact: Fixpoint interp_compdec_aux (t:type) : {ty: Type & CompDec ty} := match t with | TFArray ti te => let iti := interp_compdec_aux ti in let ite := interp_compdec_aux te in let cti := projT2 iti in let cte := projT2 ite in let tti := type_compdec cti in let tte := type_compdec cte in existT (fun ty : Type => CompDec ty) (@farray tti tte (@ord_of_compdec tti cti) (@inh_of_compdec tte cte)) (FArray_compdec tti tte) | Tindex i => existT (fun ty : Type => CompDec ty) (te_carrier (t_i .[of_Z (Z.of_N i)])) (te_compdec (t_i .[of_Z (Z.of_N i)])) | TZ => existT (fun ty : Type => CompDec ty) Z Z_compdec | Tbool => existT (fun ty : Type => CompDec ty) bool bool_compdec | Tpositive => existT (fun ty : Type => CompDec ty) positive Positive_compdec | TBV n => existT (fun ty : Type => CompDec ty) (BITVECTOR_LIST.bitvector n) (BV_compdec n) end.
imports: Bool Int63 Psatz PArray BinNat BinPos ZArith SMT_classes_instances Misc State BVList