In CAST, loops of rules could be written like:
<i:N: ~x[i] | ~z -> y[i]+ >
The enclosing loop syntax is slightly different in HAC. The above example would be re-written as:
(:i:N: ~x[i] | ~z -> y[i]+ )
Again, rule loops may be nested arbitrarily deep. The notation :N: is also equivalent to :0..N-1:.
PRS-bodies may now appear inside instance-scope loops. The previous example could also be written as:
(;i:N: prs { ~x[i] | ~z -> y[i]+ } )