Eliminate type declarations
This CIF to CIF transformation eliminates type declarations.
This transformation supports a subset of CIF specifications. The following restrictions apply:
Component definitions and component instantiations are not supported.
No preprocessing is currently performed by this CIF to CIF transformation. To increase the subset of specifications that can be transformed, apply the following CIF to CIF transformations (in the given order):
All uses of type declarations (in types of variables, types of other type declarations, etc), are replaced by the types of those type declarations. The type declarations themselves are removed. For instance, the following specification:
type t = int; type u = v; type v = tuple(t a, b); const t x = 1; const u y = (2, 3); const v z = (4, 5);
is transformed to the following specification:
const int x = 1; const tuple(int a, b) y = (2, 3); const tuple(int a, b) z = (4, 5);
Since type declarations are shortcuts for types, eliminating them could result in an increase of the size of the specification. Type declarations may be defined in terms of other type declarations. Therefore, in the worst case, the increase is exponential.