YES proof of prog.inttrs # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given IRSwT could be proven: (0) IRSwT (1) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (2) IRSwT (3) IRSwTTerminationDigraphProof [EQUIVALENT, 86 ms] (4) TRUE ---------------------------------------- (0) Obligation: Rules: l0(___patmp1HAT0, ___patmp2HAT0, k_208HAT0, k_243HAT0, len_263HAT0) -> l1(___patmp1HATpost, ___patmp2HATpost, k_208HATpost, k_243HATpost, len_263HATpost) :|: k_208HAT0 = k_208HATpost && 0 <= -1 + k_243HATpost && k_243HATpost = ___patmp2HATpost && len_263HATpost = ___patmp1HATpost && ___patmp2HATpost = k_208HAT0 && ___patmp1HATpost = 1 && 0 <= k_208HAT0 l2(x, x1, x2, x3, x4) -> l3(x5, x6, x7, x8, x9) :|: x4 = x9 && x3 = x8 && x2 = x7 && x1 = x6 && x = x5 l4(x10, x11, x12, x13, x14) -> l0(x15, x16, x17, x18, x19) :|: x14 = x19 && x13 = x18 && x12 = x17 && x11 = x16 && x10 = x15 Start term: l4(___patmp1HAT0, ___patmp2HAT0, k_208HAT0, k_243HAT0, len_263HAT0) ---------------------------------------- (1) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (2) Obligation: Rules: l0(___patmp1HAT0, ___patmp2HAT0, k_208HAT0, k_243HAT0, len_263HAT0) -> l1(___patmp1HATpost, ___patmp2HATpost, k_208HATpost, k_243HATpost, len_263HATpost) :|: k_208HAT0 = k_208HATpost && 0 <= -1 + k_243HATpost && k_243HATpost = ___patmp2HATpost && len_263HATpost = ___patmp1HATpost && ___patmp2HATpost = k_208HAT0 && ___patmp1HATpost = 1 && 0 <= k_208HAT0 l2(x, x1, x2, x3, x4) -> l3(x5, x6, x7, x8, x9) :|: x4 = x9 && x3 = x8 && x2 = x7 && x1 = x6 && x = x5 l4(x10, x11, x12, x13, x14) -> l0(x15, x16, x17, x18, x19) :|: x14 = x19 && x13 = x18 && x12 = x17 && x11 = x16 && x10 = x15 Start term: l4(___patmp1HAT0, ___patmp2HAT0, k_208HAT0, k_243HAT0, len_263HAT0) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) l0(___patmp1HAT0, ___patmp2HAT0, k_208HAT0, k_243HAT0, len_263HAT0) -> l1(___patmp1HATpost, ___patmp2HATpost, k_208HATpost, k_243HATpost, len_263HATpost) :|: k_208HAT0 = k_208HATpost && 0 <= -1 + k_243HATpost && k_243HATpost = ___patmp2HATpost && len_263HATpost = ___patmp1HATpost && ___patmp2HATpost = k_208HAT0 && ___patmp1HATpost = 1 && 0 <= k_208HAT0 (2) l2(x, x1, x2, x3, x4) -> l3(x5, x6, x7, x8, x9) :|: x4 = x9 && x3 = x8 && x2 = x7 && x1 = x6 && x = x5 (3) l4(x10, x11, x12, x13, x14) -> l0(x15, x16, x17, x18, x19) :|: x14 = x19 && x13 = x18 && x12 = x17 && x11 = x16 && x10 = x15 Arcs: (3) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) TRUE