# language: C
c

# The context (no constraints on parameters)
1 4             # 1 lines and 4 columns
#  m  n  1
1  0  0  0      # 0 >= 0, always true
1 # We want to set the parameter names
m n

2 # The number of statements

2 # First statement
# The first domain
3 5              # 3 lines and 5 columns
#  i  m  n  1 
1  1  0  0 -1    #  i >= 1
1 -1  0  1  0    #  i <= n
1 -1  2  0  0    #  i <= 2*m
# The second domain
3 5              # 3 lines and 5 columns
#  i  m  n  1 
1  1  0  0 -1    #  i >= 1
1 -1  0  1  0    #  i <= n
1  1 -1  0  0    #  i >= m
0 0 0

1 # Second statement
4 6              # 4 lines and 6 columns
#  i  j  m  n  1 
1  1  0  0  0 -1 #  i >= 1
1 -1  0  0  1  0 #  i <= n
1  0  1  0  0 -1 #  j >= 1
1  0 -1  1  0  0 #  j <= m
0 0 0
0

0 # Scattering functions
# The first function
2 7                    # 2 lines and 7 columns
# c1 c2  i  m  n  1 
0  1  0 -1  0  0  0    #  c1 = i
0  0  1  0  0  0  0    #  c2 = 0
# The second function
2 8                    # 2 lines and 8 columns
# c1 c2  i  j  m  n  1 
0  1  0  0  0  0 -1  0 #  c1 = n
0  0  1 -1 -1  0  0  0 #  c2 = i+j
0
