This document contains the newgen structures for Manjunathaiah M complementary sections.

External Pvecteur

Import reference from "ri.newgen"

Import action from "ri.newgen"

simple_section = context:context_info x dad:dad_struct

A simple section has two parts. a) context information and b) the section descriptor

context_info = line:int x rank:int x nest:int

Context includes the line number of the source, the dimensionality of the array(denoted as rank) and the scope of the array reference

dad_struct = rtemps:ref_temp* x shape:bound_pair*

The descriptor is a two tuple. The first element is used when applying translation algorithm. The second element describes the access shape a.k.a convex polyhedron.

ref_temp = index:int x rtype

Actually we want an array of ints of size = Rank. Hence a partial function index - rtype. I don’t like this roundabout but I don’t have the time to look at different options.

rtype = nonlinear:unit + linvariant:unit + lininvariant:unit

The different values that each element of reftemps can hold. I would have prefered enumerated types.

bound_pair = index:int x lb:Pvecteur x ub:Pvecteur

Again a partial function to simulate arrays.

comp_sec = hull:simple_section x complements:simple_section*

A complementary section is a list of simple sections. It is structured as a pair (E,C) for conceptual reasons. If the second element of this pair is empty then Compsec = simple section!

comp_desc = persistant reference x action x section:comp_sec

A descriptor includes the array entity and the section information

comp_desc_set = comp_descs:comp_desc*

And finally the set of descriptors.