#    Context
c # output in language C

# no constraints on parameters
1 3 # 1 line and 3 columns

# n 1
1 1 -30  # 0 >= 0 always true

1 	# Setting manually the parameter' sname
n  	# The name



# --------------------  Statements  ------------------
6 # Number of statements


1 # First statement: 1 domain 

# First domain

2 4  			# 2 lines and 4 columns
#   i   n    1
1   1   27   -1		# i >= 1
1  -1   1    28		# n >= i
0 0 0

1 # Second statement: 1 domain 

# First domain

4 5  			# 4 lines and 5 columns
#   i   k   n    1
1   1   29   0   -1		# i >= 1
1  -1   0   1    0		# n >= i
1   0   1   0   -1		# k >= 1
1   1  -1   0   -1		# k <= i-1
0 0 0


1 # Third statement: 1 domain 

# First domain

2 4  			# 2 lines and 4 columns
#   i   n    1
1   1   0   -1		# i >= 1
1  -1   1    0		# n >= i
0 0 0


1 # Fourth statement: 1 domain 

# First domain

4 5  			# 4 lines and 5 columns
#   i   j   n    1
1   1   0   0   -1		# i >= 1
1  -1   0   1    0		# n >= i
1  -1   1   0   -1		# j >= i+1
1   0  -1   1    0		# j <= n
0 0 0

1 # Fifth statement: 1 domain 

# First domain

6 6  			# 6 lines and 6 columns
#   i   j   k   n    1
1   1   0   0   0   -1		# i >= 1
1  -1   0   0   1    0		# n >= i
1  -1   1   0   0   -1		# j >= i+1
1   0  -1   0   1    0		# j <= n
1   0   0   1   0   -1		# k >= 1
1   1   0  -1   0   -1		# k <= i-1
0 0 0

1 # Sixth statement: 1 domain 

# First domain

4 5  			# 4 lines and 5 columns
#   i   j   n    1
1   1   0   0   -1		# i >= 1
1  -1   0   1    0		# n >= i
1  -1   1   0   -1		# j >= i+1
1   0  -1   1    0		# j <= n
0 0 0


1 # We manually set the iterator names
i j k


# ------------------------ Scattering -------------------

6 # Number of scattering functions


# First function
3 7					# 3 lines and 7 columns
#   p1  p2  p3   i   n   1
0    1   0   0  -2   0  -2	 	# p1 = 2i+2
0    0   1   0   0   0   0 		# p2 = 0
0    0   0   1   0   0   0	 	# p3 = 0

# Second function
3 8					# 3 lines and 8 columns
#   p1  p2  p3   i   j   n   1
0    1   0   0  -2  -2   0  -1 		# p1 = 2i+2j+1
0    0   1   0   0  -1   0   0 		# p2 = j
0    0   0   1   0   0   0   0 		# p3 = 0

# Third function
3 7					# 3 lines and 7 columns
#   p1  p2  p3   i   n   1	
0    1   0   0  -4   0  -1	 	# p1 = 4i+1
0    0   1   0   0   0   0 		# p2 = 0
0    0   0   1   0   0   0 		# p3 = 0

# Fourth function
3 8					# 3 lines and 8 columns
#   p1  p2  p3   i   j   n   1
0    1   0   0  -2  -2   0   0 		# p1 = 2i+2j
0    0   1   0   1   0   0   0 		# p2 = -i
0    0   0   1   0   0   0   0 		# p3 = 0


# Fifth function
3 9					# 3 lines and 9 columns
#   p1  p2  p3   i   j   k   n   1
0    1   0   0  -2  -2   0   0   0	# p1 = 2i+2j
0    0   1   0   1   0   0   0  -1	# p2 = -i+1
0    0   0   1   0   0  -1   0   0	# p3 = k

# Sixth function
3 8					# 3 lines and 8 columns
#   p1  p2  p3   i   j   n   1
0    1   0   0  -2  -2   0   0 		# p1 = 2i+2j
0    0   1   0   1   0   0  -2 		# p2 = -i+2
0    0   0   1   0   0   0   0 		# p3 = 0

1 # Manually set the scattering dimensions
p1 p2 p3











