let rec interpr_type t = match Type.node_of_type t with | Type.IntRange _ -> Type.mk_int () | Type.Bool | Type.Int | Type.Real | Type.Abstr _ -> t | Type.Array (te, ti) -> let ti', te' = interpr_type ti, interpr_type te in if Type.equal_types ti ti' && Type.equal_types te te' then t else Type.mk_array te' ti'