

# ---------------------- CONTEXT ----------------------
c # language is C

# Context (no constraints on two parameters)
1 4                   # 1 lines and 4 columns
# eq/in m  n  1
1   0  0  0       # 0 >= 0, always true

1 # We want to set manually the parameter names
m n                   # parameter names

# --------------------- STATEMENTS --------------------
1 # Number of statements

1 # First statement: two domains
# First domain
3 5                   # 3 lines and 5 columns
# eq/in 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
# Second domain
0  0  0               # for future options


1 # We want to set manually the iterator names
i j                   # iterator names

# --------------------- SCATTERING --------------------
1 # Scattering functions
# First function
2 7                   # 2 lines and 7 columns
# eq/in p1 p2  i  m  n  1 
0    1  0 -50  0  0  0    # p1 = i
0    0  1  0  0  0  0    # p2 = 0

1 # We want to set manually the scattering dimension names
p1 p2                 # scattering dimension names

