[ parameter_list ] -> < data_domain : subscript_vector>
{subscript_vector range};
[ parameter_list ] -> < iterator_domain : iterator_vector > { iterator_vector range};
<data_domain > :: [ type data_name ] ;
<iterator_domain > :: (task_name);
e.g.
// A[100][50]
<A_dom : A0, A1>{0<=A0; A0<100; 0<=A1; A1<50;};
<A_dom > : [ double A ] ;
// for (i=0; i<p; i++) task1(i);
[ p ] - > < task1_dom : i>{0<=i; i<p;};
<task1_dom > : (task1);
// while (res > 0.1) {res = task2();}
[ res ] -> < task2_dom : t > {cond(res > 0.1)};
<task2_dom > : (task2);
Listing 9