# Language is 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
0 # CLooG will set parameters names automatically

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
2 5              # 4 lines and 6 columns
#  i  m  n  1 
1  1  0 -1 -1 #  i >= 1
1 -1  0  2  0 #  i <= n
0 0 0
0 # CLooG will set iterators names automatically

0
