summaryrefslogtreecommitdiff
path: root/omega/examples/old_test/saman
blob: bf44452f7d4a6d01827a67dc308502824755f15e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Passing array sections through array reshaping
# procedure foo()
# real a(1:5,1:64,1:64,1:5)
# for i = 1 to 64 do
#   for j = 1 to 64 do
#     bar(a(1,i,j,1))
# ...
# procedure bar(x(*))
# x(1:5) = ...
#
# Question which element of a are effected by the call to bar?
#
symbolic i,j;
R := {[i1,i2,i3,i4] -> [o1] :
		(i1-1) + (i2-i)*5 + (i3-j)*5*64 + (i4-1)*5*64*64
		= o1-1
	&& 1 <= i1,i4 <= 5
	&& 1 <= i,j,i2,i3 <= 64};
R;
(inverse R)({[1:5]});