The co-array programming model is based on a correspondence between a set of partition indices labeling blocks of a decomposed data structure and a set of image indices labeling replications of a program across physical processors. If the two index sets have the same size, each image owns a unique block, and co-dimensions provide a convenient representation of the one-to-one map between the two sets.