/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.itrs /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.itrs # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given ITRS could be proven: (0) ITRS (1) ITRStoIDPProof [EQUIVALENT, 0 ms] (2) IDP (3) UsableRulesProof [EQUIVALENT, 0 ms] (4) IDP (5) IDPNonInfProof [SOUND, 1800 ms] (6) IDP (7) IDependencyGraphProof [EQUIVALENT, 0 ms] (8) IDP (9) IDPNonInfProof [SOUND, 843 ms] (10) AND (11) IDP (12) IDependencyGraphProof [EQUIVALENT, 0 ms] (13) TRUE (14) IDP (15) IDPNonInfProof [SOUND, 234 ms] (16) IDP (17) IDependencyGraphProof [EQUIVALENT, 0 ms] (18) TRUE ---------------------------------------- (0) Obligation: ITRS problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The TRS R consists of the following rules: eval(an, bn, cn, i, j) -> Cond_eval(j < bn && i < an, an, bn, cn, i, j) Cond_eval(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i, j + 1) eval(an, bn, cn, i, j) -> Cond_eval1(j < bn && i < an, an, bn, cn, i, j) Cond_eval1(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i + 1, j) eval(an, bn, cn, i, j) -> Cond_eval2(j >= bn && i < an, an, bn, cn, i, j) Cond_eval2(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i + 1, j) eval(an, bn, cn, i, j) -> Cond_eval3(j < bn && i >= an, an, bn, cn, i, j) Cond_eval3(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i, j + 1) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (1) ITRStoIDPProof (EQUIVALENT) Added dependency pairs ---------------------------------------- (2) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Boolean, Integer The ITRS R consists of the following rules: eval(an, bn, cn, i, j) -> Cond_eval(j < bn && i < an, an, bn, cn, i, j) Cond_eval(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i, j + 1) eval(an, bn, cn, i, j) -> Cond_eval1(j < bn && i < an, an, bn, cn, i, j) Cond_eval1(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i + 1, j) eval(an, bn, cn, i, j) -> Cond_eval2(j >= bn && i < an, an, bn, cn, i, j) Cond_eval2(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i + 1, j) eval(an, bn, cn, i, j) -> Cond_eval3(j < bn && i >= an, an, bn, cn, i, j) Cond_eval3(TRUE, an, bn, cn, i, j) -> eval(an, bn, cn + 1, i, j + 1) The integer pair graph contains the following rules and edges: (0): EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(j[0] < bn[0] && i[0] < an[0], an[0], bn[0], cn[0], i[0], j[0]) (1): COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1]) -> EVAL(an[1], bn[1], cn[1] + 1, i[1], j[1] + 1) (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) (3): COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], cn[3] + 1, i[3] + 1, j[3]) (4): EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(j[4] >= bn[4] && i[4] < an[4], an[4], bn[4], cn[4], i[4], j[4]) (5): COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], cn[5] + 1, i[5] + 1, j[5]) (6): EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(j[6] < bn[6] && i[6] >= an[6], an[6], bn[6], cn[6], i[6], j[6]) (7): COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7]) -> EVAL(an[7], bn[7], cn[7] + 1, i[7], j[7] + 1) (0) -> (1), if (j[0] < bn[0] && i[0] < an[0] & an[0] ->^* an[1] & bn[0] ->^* bn[1] & cn[0] ->^* cn[1] & i[0] ->^* i[1] & j[0] ->^* j[1]) (1) -> (0), if (an[1] ->^* an[0] & bn[1] ->^* bn[0] & cn[1] + 1 ->^* cn[0] & i[1] ->^* i[0] & j[1] + 1 ->^* j[0]) (1) -> (2), if (an[1] ->^* an[2] & bn[1] ->^* bn[2] & cn[1] + 1 ->^* cn[2] & i[1] ->^* i[2] & j[1] + 1 ->^* j[2]) (1) -> (4), if (an[1] ->^* an[4] & bn[1] ->^* bn[4] & cn[1] + 1 ->^* cn[4] & i[1] ->^* i[4] & j[1] + 1 ->^* j[4]) (1) -> (6), if (an[1] ->^* an[6] & bn[1] ->^* bn[6] & cn[1] + 1 ->^* cn[6] & i[1] ->^* i[6] & j[1] + 1 ->^* j[6]) (2) -> (3), if (j[2] < bn[2] && i[2] < an[2] & an[2] ->^* an[3] & bn[2] ->^* bn[3] & cn[2] ->^* cn[3] & i[2] ->^* i[3] & j[2] ->^* j[3]) (3) -> (0), if (an[3] ->^* an[0] & bn[3] ->^* bn[0] & cn[3] + 1 ->^* cn[0] & i[3] + 1 ->^* i[0] & j[3] ->^* j[0]) (3) -> (2), if (an[3] ->^* an[2] & bn[3] ->^* bn[2] & cn[3] + 1 ->^* cn[2] & i[3] + 1 ->^* i[2] & j[3] ->^* j[2]) (3) -> (4), if (an[3] ->^* an[4] & bn[3] ->^* bn[4] & cn[3] + 1 ->^* cn[4] & i[3] + 1 ->^* i[4] & j[3] ->^* j[4]) (3) -> (6), if (an[3] ->^* an[6] & bn[3] ->^* bn[6] & cn[3] + 1 ->^* cn[6] & i[3] + 1 ->^* i[6] & j[3] ->^* j[6]) (4) -> (5), if (j[4] >= bn[4] && i[4] < an[4] & an[4] ->^* an[5] & bn[4] ->^* bn[5] & cn[4] ->^* cn[5] & i[4] ->^* i[5] & j[4] ->^* j[5]) (5) -> (0), if (an[5] ->^* an[0] & bn[5] ->^* bn[0] & cn[5] + 1 ->^* cn[0] & i[5] + 1 ->^* i[0] & j[5] ->^* j[0]) (5) -> (2), if (an[5] ->^* an[2] & bn[5] ->^* bn[2] & cn[5] + 1 ->^* cn[2] & i[5] + 1 ->^* i[2] & j[5] ->^* j[2]) (5) -> (4), if (an[5] ->^* an[4] & bn[5] ->^* bn[4] & cn[5] + 1 ->^* cn[4] & i[5] + 1 ->^* i[4] & j[5] ->^* j[4]) (5) -> (6), if (an[5] ->^* an[6] & bn[5] ->^* bn[6] & cn[5] + 1 ->^* cn[6] & i[5] + 1 ->^* i[6] & j[5] ->^* j[6]) (6) -> (7), if (j[6] < bn[6] && i[6] >= an[6] & an[6] ->^* an[7] & bn[6] ->^* bn[7] & cn[6] ->^* cn[7] & i[6] ->^* i[7] & j[6] ->^* j[7]) (7) -> (0), if (an[7] ->^* an[0] & bn[7] ->^* bn[0] & cn[7] + 1 ->^* cn[0] & i[7] ->^* i[0] & j[7] + 1 ->^* j[0]) (7) -> (2), if (an[7] ->^* an[2] & bn[7] ->^* bn[2] & cn[7] + 1 ->^* cn[2] & i[7] ->^* i[2] & j[7] + 1 ->^* j[2]) (7) -> (4), if (an[7] ->^* an[4] & bn[7] ->^* bn[4] & cn[7] + 1 ->^* cn[4] & i[7] ->^* i[4] & j[7] + 1 ->^* j[4]) (7) -> (6), if (an[7] ->^* an[6] & bn[7] ->^* bn[6] & cn[7] + 1 ->^* cn[6] & i[7] ->^* i[6] & j[7] + 1 ->^* j[6]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (3) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (4) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Boolean, Integer R is empty. The integer pair graph contains the following rules and edges: (0): EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(j[0] < bn[0] && i[0] < an[0], an[0], bn[0], cn[0], i[0], j[0]) (1): COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1]) -> EVAL(an[1], bn[1], cn[1] + 1, i[1], j[1] + 1) (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) (3): COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], cn[3] + 1, i[3] + 1, j[3]) (4): EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(j[4] >= bn[4] && i[4] < an[4], an[4], bn[4], cn[4], i[4], j[4]) (5): COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], cn[5] + 1, i[5] + 1, j[5]) (6): EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(j[6] < bn[6] && i[6] >= an[6], an[6], bn[6], cn[6], i[6], j[6]) (7): COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7]) -> EVAL(an[7], bn[7], cn[7] + 1, i[7], j[7] + 1) (0) -> (1), if (j[0] < bn[0] && i[0] < an[0] & an[0] ->^* an[1] & bn[0] ->^* bn[1] & cn[0] ->^* cn[1] & i[0] ->^* i[1] & j[0] ->^* j[1]) (1) -> (0), if (an[1] ->^* an[0] & bn[1] ->^* bn[0] & cn[1] + 1 ->^* cn[0] & i[1] ->^* i[0] & j[1] + 1 ->^* j[0]) (1) -> (2), if (an[1] ->^* an[2] & bn[1] ->^* bn[2] & cn[1] + 1 ->^* cn[2] & i[1] ->^* i[2] & j[1] + 1 ->^* j[2]) (1) -> (4), if (an[1] ->^* an[4] & bn[1] ->^* bn[4] & cn[1] + 1 ->^* cn[4] & i[1] ->^* i[4] & j[1] + 1 ->^* j[4]) (1) -> (6), if (an[1] ->^* an[6] & bn[1] ->^* bn[6] & cn[1] + 1 ->^* cn[6] & i[1] ->^* i[6] & j[1] + 1 ->^* j[6]) (2) -> (3), if (j[2] < bn[2] && i[2] < an[2] & an[2] ->^* an[3] & bn[2] ->^* bn[3] & cn[2] ->^* cn[3] & i[2] ->^* i[3] & j[2] ->^* j[3]) (3) -> (0), if (an[3] ->^* an[0] & bn[3] ->^* bn[0] & cn[3] + 1 ->^* cn[0] & i[3] + 1 ->^* i[0] & j[3] ->^* j[0]) (3) -> (2), if (an[3] ->^* an[2] & bn[3] ->^* bn[2] & cn[3] + 1 ->^* cn[2] & i[3] + 1 ->^* i[2] & j[3] ->^* j[2]) (3) -> (4), if (an[3] ->^* an[4] & bn[3] ->^* bn[4] & cn[3] + 1 ->^* cn[4] & i[3] + 1 ->^* i[4] & j[3] ->^* j[4]) (3) -> (6), if (an[3] ->^* an[6] & bn[3] ->^* bn[6] & cn[3] + 1 ->^* cn[6] & i[3] + 1 ->^* i[6] & j[3] ->^* j[6]) (4) -> (5), if (j[4] >= bn[4] && i[4] < an[4] & an[4] ->^* an[5] & bn[4] ->^* bn[5] & cn[4] ->^* cn[5] & i[4] ->^* i[5] & j[4] ->^* j[5]) (5) -> (0), if (an[5] ->^* an[0] & bn[5] ->^* bn[0] & cn[5] + 1 ->^* cn[0] & i[5] + 1 ->^* i[0] & j[5] ->^* j[0]) (5) -> (2), if (an[5] ->^* an[2] & bn[5] ->^* bn[2] & cn[5] + 1 ->^* cn[2] & i[5] + 1 ->^* i[2] & j[5] ->^* j[2]) (5) -> (4), if (an[5] ->^* an[4] & bn[5] ->^* bn[4] & cn[5] + 1 ->^* cn[4] & i[5] + 1 ->^* i[4] & j[5] ->^* j[4]) (5) -> (6), if (an[5] ->^* an[6] & bn[5] ->^* bn[6] & cn[5] + 1 ->^* cn[6] & i[5] + 1 ->^* i[6] & j[5] ->^* j[6]) (6) -> (7), if (j[6] < bn[6] && i[6] >= an[6] & an[6] ->^* an[7] & bn[6] ->^* bn[7] & cn[6] ->^* cn[7] & i[6] ->^* i[7] & j[6] ->^* j[7]) (7) -> (0), if (an[7] ->^* an[0] & bn[7] ->^* bn[0] & cn[7] + 1 ->^* cn[0] & i[7] ->^* i[0] & j[7] + 1 ->^* j[0]) (7) -> (2), if (an[7] ->^* an[2] & bn[7] ->^* bn[2] & cn[7] + 1 ->^* cn[2] & i[7] ->^* i[2] & j[7] + 1 ->^* j[2]) (7) -> (4), if (an[7] ->^* an[4] & bn[7] ->^* bn[4] & cn[7] + 1 ->^* cn[4] & i[7] ->^* i[4] & j[7] + 1 ->^* j[4]) (7) -> (6), if (an[7] ->^* an[6] & bn[7] ->^* bn[6] & cn[7] + 1 ->^* cn[6] & i[7] ->^* i[6] & j[7] + 1 ->^* j[6]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (5) IDPNonInfProof (SOUND) Used the following options for this NonInfProof: IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@4281dbde Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1 The constraints were generated the following way: The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: Note that final constraints are written in bold face. For Pair EVAL(an, bn, cn, i, j) -> COND_EVAL(&&(<(j, bn), <(i, an)), an, bn, cn, i, j) the following chains were created: *We consider the chain EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0]), COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1]) -> EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1)) which results in the following constraint: (1) (&&(<(j[0], bn[0]), <(i[0], an[0]))=TRUE & an[0]=an[1] & bn[0]=bn[1] & cn[0]=cn[1] & i[0]=i[1] & j[0]=j[1] ==> EVAL(an[0], bn[0], cn[0], i[0], j[0])_>=_NonInfC & EVAL(an[0], bn[0], cn[0], i[0], j[0])_>=_COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0]) & (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[0], bn[0])=TRUE & <(i[0], an[0])=TRUE ==> EVAL(an[0], bn[0], cn[0], i[0], j[0])_>=_NonInfC & EVAL(an[0], bn[0], cn[0], i[0], j[0])_>=_COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0]) & (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & [(-1)bni_40 + (-1)Bound*bni_40] + [(-1)bni_40]j[0] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & [(-1)bni_40 + (-1)Bound*bni_40] + [(-1)bni_40]j[0] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & [(-1)bni_40 + (-1)Bound*bni_40] + [(-1)bni_40]j[0] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)bni_40 + (-1)Bound*bni_40] + [(-1)bni_40]j[0] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[0] >= 0 & an[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) (10) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) (12) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) (14) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) For Pair COND_EVAL(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), i, +(j, 1)) the following chains were created: *We consider the chain EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0]), COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1]) -> EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1)) which results in the following constraint: (1) (&&(<(j[0], bn[0]), <(i[0], an[0]))=TRUE & an[0]=an[1] & bn[0]=bn[1] & cn[0]=cn[1] & i[0]=i[1] & j[0]=j[1] ==> COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1])_>=_NonInfC & COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1])_>=_EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1)) & (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=)) We simplified constraint (1) using rules (III), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[0], bn[0])=TRUE & <(i[0], an[0])=TRUE ==> COND_EVAL(TRUE, an[0], bn[0], cn[0], i[0], j[0])_>=_NonInfC & COND_EVAL(TRUE, an[0], bn[0], cn[0], i[0], j[0])_>=_EVAL(an[0], bn[0], +(cn[0], 1), i[0], +(j[0], 1)) & (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & [(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]j[0] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & [(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]j[0] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & [(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]j[0] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[0] + [-1] + [-1]j[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]j[0] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[0] >= 0 & an[0] + [-1] + [-1]i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[0] >= 0 & an[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) (10) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) (12) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) (14) (bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) For Pair EVAL(an, bn, cn, i, j) -> COND_EVAL1(&&(<(j, bn), <(i, an)), an, bn, cn, i, j) the following chains were created: *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] ==> EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) & (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) & (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)bni_44 + (-1)Bound*bni_44] + [(-1)bni_44]j[2] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)bni_44 + (-1)Bound*bni_44] + [(-1)bni_44]j[2] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)bni_44 + (-1)Bound*bni_44] + [(-1)bni_44]j[2] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_44 + (-1)Bound*bni_44] + [(-1)bni_44]j[2] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) For Pair COND_EVAL1(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), +(i, 1), j) the following chains were created: *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] ==> COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_NonInfC & COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (1) using rules (III), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_EVAL(an[2], bn[2], +(cn[2], 1), +(i[2], 1), j[2]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]j[2] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]j[2] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]j[2] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]j[2] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) For Pair EVAL(an, bn, cn, i, j) -> COND_EVAL2(&&(>=(j, bn), <(i, an)), an, bn, cn, i, j) the following chains were created: *We consider the chain EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]), COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) which results in the following constraint: (1) (&&(>=(j[4], bn[4]), <(i[4], an[4]))=TRUE & an[4]=an[5] & bn[4]=bn[5] & cn[4]=cn[5] & i[4]=i[5] & j[4]=j[5] ==> EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) & (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (>=(j[4], bn[4])=TRUE & <(i[4], an[4])=TRUE ==> EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) & (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] + [bni_48]bn[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] + [bni_48]bn[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] + [bni_48]bn[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] + [bni_48]bn[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (j[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (j[4] >= 0 & an[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) (10) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) (12) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) (14) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) For Pair COND_EVAL2(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), +(i, 1), j) the following chains were created: *We consider the chain EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]), COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) which results in the following constraint: (1) (&&(>=(j[4], bn[4]), <(i[4], an[4]))=TRUE & an[4]=an[5] & bn[4]=bn[5] & cn[4]=cn[5] & i[4]=i[5] & j[4]=j[5] ==> COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5])_>=_NonInfC & COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5])_>=_EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) & (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=)) We simplified constraint (1) using rules (III), (IDP_BOOLEAN) which results in the following new constraint: (2) (>=(j[4], bn[4])=TRUE & <(i[4], an[4])=TRUE ==> COND_EVAL2(TRUE, an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & COND_EVAL2(TRUE, an[4], bn[4], cn[4], i[4], j[4])_>=_EVAL(an[4], bn[4], +(cn[4], 1), +(i[4], 1), j[4]) & (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] + [bni_50]bn[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] + [bni_50]bn[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] + [bni_50]bn[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] + [bni_50]bn[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (j[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (j[4] >= 0 & an[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) (10) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) (12) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) (14) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) For Pair EVAL(an, bn, cn, i, j) -> COND_EVAL3(&&(<(j, bn), >=(i, an)), an, bn, cn, i, j) the following chains were created: *We consider the chain EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6]), COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7]) -> EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1)) which results in the following constraint: (1) (&&(<(j[6], bn[6]), >=(i[6], an[6]))=TRUE & an[6]=an[7] & bn[6]=bn[7] & cn[6]=cn[7] & i[6]=i[7] & j[6]=j[7] ==> EVAL(an[6], bn[6], cn[6], i[6], j[6])_>=_NonInfC & EVAL(an[6], bn[6], cn[6], i[6], j[6])_>=_COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6]) & (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[6], bn[6])=TRUE & >=(i[6], an[6])=TRUE ==> EVAL(an[6], bn[6], cn[6], i[6], j[6])_>=_NonInfC & EVAL(an[6], bn[6], cn[6], i[6], j[6])_>=_COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6]) & (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & [(-1)bni_52 + (-1)Bound*bni_52] + [(-1)bni_52]j[6] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & [(-1)bni_52 + (-1)Bound*bni_52] + [(-1)bni_52]j[6] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & [(-1)bni_52 + (-1)Bound*bni_52] + [(-1)bni_52]j[6] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)bni_52 + (-1)Bound*bni_52] + [(-1)bni_52]j[6] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[6] >= 0 & i[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) (10) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) (12) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) (14) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) For Pair COND_EVAL3(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), i, +(j, 1)) the following chains were created: *We consider the chain EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6]), COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7]) -> EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1)) which results in the following constraint: (1) (&&(<(j[6], bn[6]), >=(i[6], an[6]))=TRUE & an[6]=an[7] & bn[6]=bn[7] & cn[6]=cn[7] & i[6]=i[7] & j[6]=j[7] ==> COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7])_>=_NonInfC & COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7])_>=_EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1)) & (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=)) We simplified constraint (1) using rules (III), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[6], bn[6])=TRUE & >=(i[6], an[6])=TRUE ==> COND_EVAL3(TRUE, an[6], bn[6], cn[6], i[6], j[6])_>=_NonInfC & COND_EVAL3(TRUE, an[6], bn[6], cn[6], i[6], j[6])_>=_EVAL(an[6], bn[6], +(cn[6], 1), i[6], +(j[6], 1)) & (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & [(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]j[6] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & [(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]j[6] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & [(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]j[6] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[6] + [-1] + [-1]j[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]j[6] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[6] >= 0 & i[6] + [-1]an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[6] >= 0 & i[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) (10) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) (12) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) (14) (bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) To summarize, we get the following constraints P__>=_ for the following pairs. *EVAL(an, bn, cn, i, j) -> COND_EVAL(&&(<(j, bn), <(i, an)), an, bn, cn, i, j) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0])), >=) & 0 = 0 & [(-1)Bound*bni_40] + [bni_40]bn[0] >= 0 & [(-1)bso_41] >= 0) *COND_EVAL(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), i, +(j, 1)) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) *(bn[0] >= 0 & an[0] >= 0 & j[0] >= 0 & i[0] >= 0 ==> (U^Increasing(EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1))), >=) & 0 = 0 & [(-1)Bound*bni_42] + [bni_42]bn[0] >= 0 & [1 + (-1)bso_43] >= 0) *EVAL(an, bn, cn, i, j) -> COND_EVAL1(&&(<(j, bn), <(i, an)), an, bn, cn, i, j) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_44] + [bni_44]bn[2] >= 0 & [(-1)bso_45] >= 0) *COND_EVAL1(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), +(i, 1), j) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_46] + [bni_46]bn[2] >= 0 & [(-1)bso_47] >= 0) *EVAL(an, bn, cn, i, j) -> COND_EVAL2(&&(>=(j, bn), <(i, an)), an, bn, cn, i, j) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]j[4] >= 0 & [(-1)bso_49] >= 0) *COND_EVAL2(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), +(i, 1), j) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]j[4] >= 0 & [(-1)bso_51] >= 0) *EVAL(an, bn, cn, i, j) -> COND_EVAL3(&&(<(j, bn), >=(i, an)), an, bn, cn, i, j) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6])), >=) & 0 = 0 & [(-1)Bound*bni_52] + [bni_52]bn[6] >= 0 & [(-1)bso_53] >= 0) *COND_EVAL3(TRUE, an, bn, cn, i, j) -> EVAL(an, bn, +(cn, 1), i, +(j, 1)) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) *(bn[6] >= 0 & i[6] >= 0 & j[6] >= 0 & an[6] >= 0 ==> (U^Increasing(EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1))), >=) & 0 = 0 & [(-1)Bound*bni_54] + [bni_54]bn[6] >= 0 & [1 + (-1)bso_55] >= 0) The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. Using the following integer polynomial ordering the resulting constraints can be solved Polynomial interpretation over integers[POLO]: POL(TRUE) = 0 POL(FALSE) = [1] POL(EVAL(x_1, x_2, x_3, x_4, x_5)) = [-1] + [-1]x_5 + x_2 POL(COND_EVAL(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1] + [-1]x_6 + x_3 + [-1]x_1 POL(&&(x_1, x_2)) = 0 POL(<(x_1, x_2)) = [-1] POL(+(x_1, x_2)) = x_1 + x_2 POL(1) = [1] POL(COND_EVAL1(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1] + [-1]x_6 + x_3 + [-1]x_1 POL(COND_EVAL2(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1] + [-1]x_6 + x_3 + [-1]x_1 POL(>=(x_1, x_2)) = [-1] POL(COND_EVAL3(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1] + [-1]x_6 + x_3 + [-1]x_1 The following pairs are in P_>: COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1]) -> EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1)) COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7]) -> EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1)) The following pairs are in P_bound: EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0]) COND_EVAL(TRUE, an[1], bn[1], cn[1], i[1], j[1]) -> EVAL(an[1], bn[1], +(cn[1], 1), i[1], +(j[1], 1)) EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6]) COND_EVAL3(TRUE, an[7], bn[7], cn[7], i[7], j[7]) -> EVAL(an[7], bn[7], +(cn[7], 1), i[7], +(j[7], 1)) The following pairs are in P_>=: EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(&&(<(j[0], bn[0]), <(i[0], an[0])), an[0], bn[0], cn[0], i[0], j[0]) EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(&&(<(j[6], bn[6]), >=(i[6], an[6])), an[6], bn[6], cn[6], i[6], j[6]) At least the following rules have been oriented under context sensitive arithmetic replacement: TRUE^1 -> &&(TRUE, TRUE)^1 FALSE^1 -> &&(TRUE, FALSE)^1 FALSE^1 -> &&(FALSE, TRUE)^1 FALSE^1 -> &&(FALSE, FALSE)^1 ---------------------------------------- (6) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Boolean, Integer R is empty. The integer pair graph contains the following rules and edges: (0): EVAL(an[0], bn[0], cn[0], i[0], j[0]) -> COND_EVAL(j[0] < bn[0] && i[0] < an[0], an[0], bn[0], cn[0], i[0], j[0]) (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) (3): COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], cn[3] + 1, i[3] + 1, j[3]) (4): EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(j[4] >= bn[4] && i[4] < an[4], an[4], bn[4], cn[4], i[4], j[4]) (5): COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], cn[5] + 1, i[5] + 1, j[5]) (6): EVAL(an[6], bn[6], cn[6], i[6], j[6]) -> COND_EVAL3(j[6] < bn[6] && i[6] >= an[6], an[6], bn[6], cn[6], i[6], j[6]) (3) -> (0), if (an[3] ->^* an[0] & bn[3] ->^* bn[0] & cn[3] + 1 ->^* cn[0] & i[3] + 1 ->^* i[0] & j[3] ->^* j[0]) (5) -> (0), if (an[5] ->^* an[0] & bn[5] ->^* bn[0] & cn[5] + 1 ->^* cn[0] & i[5] + 1 ->^* i[0] & j[5] ->^* j[0]) (3) -> (2), if (an[3] ->^* an[2] & bn[3] ->^* bn[2] & cn[3] + 1 ->^* cn[2] & i[3] + 1 ->^* i[2] & j[3] ->^* j[2]) (5) -> (2), if (an[5] ->^* an[2] & bn[5] ->^* bn[2] & cn[5] + 1 ->^* cn[2] & i[5] + 1 ->^* i[2] & j[5] ->^* j[2]) (2) -> (3), if (j[2] < bn[2] && i[2] < an[2] & an[2] ->^* an[3] & bn[2] ->^* bn[3] & cn[2] ->^* cn[3] & i[2] ->^* i[3] & j[2] ->^* j[3]) (3) -> (4), if (an[3] ->^* an[4] & bn[3] ->^* bn[4] & cn[3] + 1 ->^* cn[4] & i[3] + 1 ->^* i[4] & j[3] ->^* j[4]) (5) -> (4), if (an[5] ->^* an[4] & bn[5] ->^* bn[4] & cn[5] + 1 ->^* cn[4] & i[5] + 1 ->^* i[4] & j[5] ->^* j[4]) (4) -> (5), if (j[4] >= bn[4] && i[4] < an[4] & an[4] ->^* an[5] & bn[4] ->^* bn[5] & cn[4] ->^* cn[5] & i[4] ->^* i[5] & j[4] ->^* j[5]) (3) -> (6), if (an[3] ->^* an[6] & bn[3] ->^* bn[6] & cn[3] + 1 ->^* cn[6] & i[3] + 1 ->^* i[6] & j[3] ->^* j[6]) (5) -> (6), if (an[5] ->^* an[6] & bn[5] ->^* bn[6] & cn[5] + 1 ->^* cn[6] & i[5] + 1 ->^* i[6] & j[5] ->^* j[6]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (7) IDependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. ---------------------------------------- (8) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Integer, Boolean R is empty. The integer pair graph contains the following rules and edges: (5): COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], cn[5] + 1, i[5] + 1, j[5]) (4): EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(j[4] >= bn[4] && i[4] < an[4], an[4], bn[4], cn[4], i[4], j[4]) (3): COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], cn[3] + 1, i[3] + 1, j[3]) (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) (3) -> (2), if (an[3] ->^* an[2] & bn[3] ->^* bn[2] & cn[3] + 1 ->^* cn[2] & i[3] + 1 ->^* i[2] & j[3] ->^* j[2]) (5) -> (2), if (an[5] ->^* an[2] & bn[5] ->^* bn[2] & cn[5] + 1 ->^* cn[2] & i[5] + 1 ->^* i[2] & j[5] ->^* j[2]) (2) -> (3), if (j[2] < bn[2] && i[2] < an[2] & an[2] ->^* an[3] & bn[2] ->^* bn[3] & cn[2] ->^* cn[3] & i[2] ->^* i[3] & j[2] ->^* j[3]) (3) -> (4), if (an[3] ->^* an[4] & bn[3] ->^* bn[4] & cn[3] + 1 ->^* cn[4] & i[3] + 1 ->^* i[4] & j[3] ->^* j[4]) (5) -> (4), if (an[5] ->^* an[4] & bn[5] ->^* bn[4] & cn[5] + 1 ->^* cn[4] & i[5] + 1 ->^* i[4] & j[5] ->^* j[4]) (4) -> (5), if (j[4] >= bn[4] && i[4] < an[4] & an[4] ->^* an[5] & bn[4] ->^* bn[5] & cn[4] ->^* cn[5] & i[4] ->^* i[5] & j[4] ->^* j[5]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (9) IDPNonInfProof (SOUND) Used the following options for this NonInfProof: IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@4281dbde Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1 The constraints were generated the following way: The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: Note that final constraints are written in bold face. For Pair COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) the following chains were created: *We consider the chain EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]), COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]), EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) which results in the following constraint: (1) (&&(>=(j[4], bn[4]), <(i[4], an[4]))=TRUE & an[4]=an[5] & bn[4]=bn[5] & cn[4]=cn[5] & i[4]=i[5] & j[4]=j[5] & an[5]=an[2] & bn[5]=bn[2] & +(cn[5], 1)=cn[2] & +(i[5], 1)=i[2] & j[5]=j[2] ==> COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5])_>=_NonInfC & COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5])_>=_EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) & (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=)) We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (>=(j[4], bn[4])=TRUE & <(i[4], an[4])=TRUE ==> COND_EVAL2(TRUE, an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & COND_EVAL2(TRUE, an[4], bn[4], cn[4], i[4], j[4])_>=_EVAL(an[4], bn[4], +(cn[4], 1), +(i[4], 1), j[4]) & (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (j[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (j[4] >= 0 & an[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) (10) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) (12) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) (14) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *We consider the chain EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]), COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]), EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) which results in the following constraint: (1) (&&(>=(j[4], bn[4]), <(i[4], an[4]))=TRUE & an[4]=an[5] & bn[4]=bn[5] & cn[4]=cn[5] & i[4]=i[5] & j[4]=j[5] & an[5]=an[4]1 & bn[5]=bn[4]1 & +(cn[5], 1)=cn[4]1 & +(i[5], 1)=i[4]1 & j[5]=j[4]1 ==> COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5])_>=_NonInfC & COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5])_>=_EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) & (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=)) We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (>=(j[4], bn[4])=TRUE & <(i[4], an[4])=TRUE ==> COND_EVAL2(TRUE, an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & COND_EVAL2(TRUE, an[4], bn[4], cn[4], i[4], j[4])_>=_EVAL(an[4], bn[4], +(cn[4], 1), +(i[4], 1), j[4]) & (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [(-1)bni_26]bn[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (j[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]j[4] + [(-1)bni_26]i[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (j[4] >= 0 & an[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) (10) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) (12) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) (14) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) For Pair EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) the following chains were created: *We consider the chain EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]), COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) which results in the following constraint: (1) (&&(>=(j[4], bn[4]), <(i[4], an[4]))=TRUE & an[4]=an[5] & bn[4]=bn[5] & cn[4]=cn[5] & i[4]=i[5] & j[4]=j[5] ==> EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) & (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (>=(j[4], bn[4])=TRUE & <(i[4], an[4])=TRUE ==> EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_NonInfC & EVAL(an[4], bn[4], cn[4], i[4], j[4])_>=_COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) & (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & [(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]j[4] + [(-1)bni_28]i[4] + [(-1)bni_28]bn[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & [(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]j[4] + [(-1)bni_28]i[4] + [(-1)bni_28]bn[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & [(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]j[4] + [(-1)bni_28]i[4] + [(-1)bni_28]bn[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (j[4] + [-1]bn[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]j[4] + [(-1)bni_28]i[4] + [(-1)bni_28]bn[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (j[4] >= 0 & an[4] + [-1] + [-1]i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]j[4] + [(-1)bni_28]i[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (j[4] >= 0 & an[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) (10) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) (12) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) (14) (j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) For Pair COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) the following chains were created: *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]), EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] & an[3]=an[2]1 & bn[3]=bn[2]1 & +(cn[3], 1)=cn[2]1 & +(i[3], 1)=i[2]1 & j[3]=j[2]1 ==> COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_NonInfC & COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_EVAL(an[2], bn[2], +(cn[2], 1), +(i[2], 1), j[2]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-2)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]), EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] & an[3]=an[4] & bn[3]=bn[4] & +(cn[3], 1)=cn[4] & +(i[3], 1)=i[4] & j[3]=j[4] ==> COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_NonInfC & COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_EVAL(an[2], bn[2], +(cn[2], 1), +(i[2], 1), j[2]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]j[2] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-2)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]i[2] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) For Pair EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) the following chains were created: *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] ==> EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) & (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) & (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)bni_32 + (-1)Bound*bni_32] + [bni_32]j[2] + [(-1)bni_32]i[2] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)bni_32 + (-1)Bound*bni_32] + [bni_32]j[2] + [(-1)bni_32]i[2] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)bni_32 + (-1)Bound*bni_32] + [bni_32]j[2] + [(-1)bni_32]i[2] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [bni_32]j[2] + [(-1)bni_32]i[2] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-2)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]i[2] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) To summarize, we get the following constraints P__>=_ for the following pairs. *COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5])), >=) & 0 = 0 & [(-1)Bound*bni_26] + [bni_26]j[4] + [bni_26]an[4] >= 0 & [1 + (-1)bso_27] >= 0) *EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) *(j[4] >= 0 & an[4] >= 0 & bn[4] >= 0 & i[4] >= 0 ==> (U^Increasing(COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4])), >=) & 0 = 0 & [(-1)Bound*bni_28] + [bni_28]j[4] + [bni_28]an[4] >= 0 & [(-1)bso_29] >= 0) *COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)bni_30 + (-1)Bound*bni_30] + [(-1)bni_30]bn[2] + [bni_30]an[2] >= 0 & [1 + (-1)bso_31] >= 0) *EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]bn[2] + [bni_32]an[2] >= 0 & [(-1)bso_33] >= 0) The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. Using the following integer polynomial ordering the resulting constraints can be solved Polynomial interpretation over integers[POLO]: POL(TRUE) = 0 POL(FALSE) = [1] POL(COND_EVAL2(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1] + x_6 + [-1]x_5 + [-1]x_3 + x_2 POL(EVAL(x_1, x_2, x_3, x_4, x_5)) = [-1] + x_5 + [-1]x_4 + [-1]x_2 + x_1 POL(+(x_1, x_2)) = x_1 + x_2 POL(1) = [1] POL(&&(x_1, x_2)) = [-1] POL(>=(x_1, x_2)) = [-1] POL(<(x_1, x_2)) = [-1] POL(COND_EVAL1(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1] + x_6 + [-1]x_5 + [-1]x_3 + x_2 The following pairs are in P_>: COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) The following pairs are in P_bound: COND_EVAL2(TRUE, an[5], bn[5], cn[5], i[5], j[5]) -> EVAL(an[5], bn[5], +(cn[5], 1), +(i[5], 1), j[5]) EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) The following pairs are in P_>=: EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(&&(>=(j[4], bn[4]), <(i[4], an[4])), an[4], bn[4], cn[4], i[4], j[4]) EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) At least the following rules have been oriented under context sensitive arithmetic replacement: TRUE^1 -> &&(TRUE, TRUE)^1 FALSE^1 -> &&(TRUE, FALSE)^1 FALSE^1 -> &&(FALSE, TRUE)^1 FALSE^1 -> &&(FALSE, FALSE)^1 ---------------------------------------- (10) Complex Obligation (AND) ---------------------------------------- (11) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Boolean, Integer R is empty. The integer pair graph contains the following rules and edges: (4): EVAL(an[4], bn[4], cn[4], i[4], j[4]) -> COND_EVAL2(j[4] >= bn[4] && i[4] < an[4], an[4], bn[4], cn[4], i[4], j[4]) (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (12) IDependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes. ---------------------------------------- (13) TRUE ---------------------------------------- (14) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Integer, Boolean R is empty. The integer pair graph contains the following rules and edges: (3): COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], cn[3] + 1, i[3] + 1, j[3]) (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) (3) -> (2), if (an[3] ->^* an[2] & bn[3] ->^* bn[2] & cn[3] + 1 ->^* cn[2] & i[3] + 1 ->^* i[2] & j[3] ->^* j[2]) (2) -> (3), if (j[2] < bn[2] && i[2] < an[2] & an[2] ->^* an[3] & bn[2] ->^* bn[3] & cn[2] ->^* cn[3] & i[2] ->^* i[3] & j[2] ->^* j[3]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (15) IDPNonInfProof (SOUND) Used the following options for this NonInfProof: IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@4281dbde Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1 The constraints were generated the following way: The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: Note that final constraints are written in bold face. For Pair COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) the following chains were created: *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]), EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] & an[3]=an[2]1 & bn[3]=bn[2]1 & +(cn[3], 1)=cn[2]1 & +(i[3], 1)=i[2]1 & j[3]=j[2]1 ==> COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_NonInfC & COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3])_>=_EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & COND_EVAL1(TRUE, an[2], bn[2], cn[2], i[2], j[2])_>=_EVAL(an[2], bn[2], +(cn[2], 1), +(i[2], 1), j[2]) & (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)Bound*bni_18] + [(-1)bni_18]i[2] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)Bound*bni_18] + [(-1)bni_18]i[2] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & [(-1)Bound*bni_18] + [(-1)bni_18]i[2] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18] + [(-1)bni_18]i[2] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18] + [(-1)bni_18]i[2] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) For Pair EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) the following chains were created: *We consider the chain EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]), COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) which results in the following constraint: (1) (&&(<(j[2], bn[2]), <(i[2], an[2]))=TRUE & an[2]=an[3] & bn[2]=bn[3] & cn[2]=cn[3] & i[2]=i[3] & j[2]=j[3] ==> EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) & (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=)) We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: (2) (<(j[2], bn[2])=TRUE & <(i[2], an[2])=TRUE ==> EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_NonInfC & EVAL(an[2], bn[2], cn[2], i[2], j[2])_>=_COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) & (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=)) We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: (3) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)Bound*bni_20] + [(-1)bni_20]i[2] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: (4) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)Bound*bni_20] + [(-1)bni_20]i[2] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: (5) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & [(-1)Bound*bni_20] + [(-1)bni_20]i[2] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: (6) (bn[2] + [-1] + [-1]j[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20] + [(-1)bni_20]i[2] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (7) (bn[2] >= 0 & an[2] + [-1] + [-1]i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20] + [(-1)bni_20]i[2] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint: (8) (bn[2] >= 0 & an[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (9) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) (10) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (11) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) (12) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraints: (13) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) (14) (bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) To summarize, we get the following constraints P__>=_ for the following pairs. *COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3])), >=) & 0 = 0 & [(-1)Bound*bni_18 + bni_18] + [bni_18]an[2] >= 0 & [1 + (-1)bso_19] >= 0) *EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) *(bn[2] >= 0 & an[2] >= 0 & j[2] >= 0 & i[2] >= 0 ==> (U^Increasing(COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2])), >=) & 0 = 0 & [(-1)Bound*bni_20 + bni_20] + [bni_20]an[2] >= 0 & [(-1)bso_21] >= 0) The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. Using the following integer polynomial ordering the resulting constraints can be solved Polynomial interpretation over integers[POLO]: POL(TRUE) = 0 POL(FALSE) = [1] POL(COND_EVAL1(x_1, x_2, x_3, x_4, x_5, x_6)) = [-1]x_5 + x_2 + [-1]x_1 POL(EVAL(x_1, x_2, x_3, x_4, x_5)) = [-1]x_4 + x_1 POL(+(x_1, x_2)) = x_1 + x_2 POL(1) = [1] POL(&&(x_1, x_2)) = 0 POL(<(x_1, x_2)) = [-1] The following pairs are in P_>: COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) The following pairs are in P_bound: COND_EVAL1(TRUE, an[3], bn[3], cn[3], i[3], j[3]) -> EVAL(an[3], bn[3], +(cn[3], 1), +(i[3], 1), j[3]) EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) The following pairs are in P_>=: EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(&&(<(j[2], bn[2]), <(i[2], an[2])), an[2], bn[2], cn[2], i[2], j[2]) At least the following rules have been oriented under context sensitive arithmetic replacement: TRUE^1 -> &&(TRUE, TRUE)^1 FALSE^1 -> &&(TRUE, FALSE)^1 FALSE^1 -> &&(FALSE, TRUE)^1 FALSE^1 -> &&(FALSE, FALSE)^1 ---------------------------------------- (16) Obligation: IDP problem: The following function symbols are pre-defined: <<< & ~ Bwand: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer != ~ Neq: (Integer, Integer) -> Boolean && ~ Land: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean = ~ Eq: (Integer, Integer) -> Boolean <= ~ Le: (Integer, Integer) -> Boolean ^ ~ Bwxor: (Integer, Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer > ~ Gt: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer < ~ Lt: (Integer, Integer) -> Boolean || ~ Lor: (Boolean, Boolean) -> Boolean - ~ Sub: (Integer, Integer) -> Integer ~ ~ Bwnot: (Integer) -> Integer * ~ Mul: (Integer, Integer) -> Integer >>> The following domains are used: Boolean, Integer R is empty. The integer pair graph contains the following rules and edges: (2): EVAL(an[2], bn[2], cn[2], i[2], j[2]) -> COND_EVAL1(j[2] < bn[2] && i[2] < an[2], an[2], bn[2], cn[2], i[2], j[2]) The set Q consists of the following terms: eval(x0, x1, x2, x3, x4) Cond_eval(TRUE, x0, x1, x2, x3, x4) Cond_eval1(TRUE, x0, x1, x2, x3, x4) Cond_eval2(TRUE, x0, x1, x2, x3, x4) Cond_eval3(TRUE, x0, x1, x2, x3, x4) ---------------------------------------- (17) IDependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (18) TRUE