let dimension t = let rec flat k d = function | TNamed _ as t -> flat k d (Cil.unrollType t) | TArray(ty,Some e,_,_) -> flat (succ k) (Int64.mul d (constant e)) ty | te -> k , d , te in flat 1 Int64.one t