38.10/11.48 YES 38.10/11.49 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 38.10/11.49 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 38.10/11.49 38.10/11.49 38.10/11.49 Termination of the given C Problem could be proven: 38.10/11.49 38.10/11.49 (0) C Problem 38.10/11.49 (1) CToLLVMProof [EQUIVALENT, 178 ms] 38.10/11.49 (2) LLVM problem 38.10/11.49 (3) LLVMToTerminationGraphProof [EQUIVALENT, 3906 ms] 38.10/11.49 (4) LLVM Symbolic Execution Graph 38.10/11.49 (5) SymbolicExecutionGraphToSCCProof [SOUND, 1 ms] 38.10/11.49 (6) AND 38.10/11.49 (7) LLVM Symbolic Execution SCC 38.10/11.49 (8) SCC2IRS [SOUND, 159 ms] 38.10/11.49 (9) IntTRS 38.10/11.49 (10) IRS2T2 [EQUIVALENT, 1 ms] 38.10/11.49 (11) T2IntSys 38.10/11.49 (12) T2 [EQUIVALENT, 1073 ms] 38.10/11.49 (13) YES 38.10/11.49 (14) LLVM Symbolic Execution SCC 38.10/11.49 (15) SCC2IRS [SOUND, 102 ms] 38.10/11.49 (16) IntTRS 38.10/11.49 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] 38.10/11.49 (18) IntTRS 38.10/11.49 (19) RankingReductionPairProof [EQUIVALENT, 5 ms] 38.10/11.49 (20) YES 38.10/11.49 (21) LLVM Symbolic Execution SCC 38.10/11.49 (22) SCC2IRS [SOUND, 78 ms] 38.10/11.49 (23) IntTRS 38.10/11.49 (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] 38.10/11.49 (25) IntTRS 38.10/11.49 (26) PolynomialOrderProcessor [EQUIVALENT, 6 ms] 38.10/11.49 (27) YES 38.10/11.49 38.10/11.49 38.10/11.49 ---------------------------------------- 38.10/11.49 38.10/11.49 (0) 38.10/11.49 Obligation: 38.10/11.49 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 38.10/11.49 ---------------------------------------- 38.10/11.49 38.10/11.49 (1) CToLLVMProof (EQUIVALENT) 38.10/11.49 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 38.10/11.49 ---------------------------------------- 38.10/11.49 38.10/11.49 (2) 38.10/11.49 Obligation: 38.10/11.49 LLVM Problem 38.10/11.49 38.10/11.49 Aliases: 38.10/11.49 38.10/11.49 Data layout: 38.10/11.49 38.10/11.49 "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 38.10/11.49 38.10/11.49 Machine: 38.10/11.49 38.10/11.49 "x86_64-pc-linux-gnu" 38.10/11.49 38.10/11.49 Type definitions: 38.10/11.49 38.10/11.49 Global variables: 38.10/11.49 38.10/11.49 Function declarations and definitions: 38.10/11.49 38.10/11.49 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 38.10/11.49 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 38.10/11.50 0: 38.10/11.50 %1 = alloca i32, align 4 38.10/11.50 %x = alloca i32, align 4 38.10/11.50 %y = alloca i32, align 4 38.10/11.50 %d = alloca i32, align 4 38.10/11.50 store 0, %1 38.10/11.50 %2 = call i32 @__VERIFIER_nondet_int() 38.10/11.50 store %2, %x 38.10/11.50 %3 = call i32 @__VERIFIER_nondet_int() 38.10/11.50 store %3, %y 38.10/11.50 %4 = call i32 @__VERIFIER_nondet_int() 38.10/11.50 store %4, %d 38.10/11.50 br %5 38.10/11.50 5: 38.10/11.50 %6 = load %x 38.10/11.50 %7 = icmp sgt %6 0 38.10/11.50 br %7, %8, %14 38.10/11.50 8: 38.10/11.50 %9 = load %y 38.10/11.50 %10 = icmp sgt %9 0 38.10/11.50 br %10, %11, %14 38.10/11.50 11: 38.10/11.50 %12 = load %d 38.10/11.50 %13 = icmp sgt %12 0 38.10/11.50 br %14 38.10/11.50 14: 38.10/11.50 %15 = phi [0, %8], [0, %5], [%13, %11] 38.10/11.50 br %15, %16, %30 38.10/11.50 16: 38.10/11.50 %17 = call i32 @__VERIFIER_nondet_int() 38.10/11.50 %18 = icmp ne %17 0 38.10/11.50 br %18, %19, %23 38.10/11.50 19: 38.10/11.50 %20 = load %x 38.10/11.50 %21 = sub %20 1 38.10/11.50 store %21, %x 38.10/11.50 %22 = call i32 @__VERIFIER_nondet_int() 38.10/11.50 store %22, %d 38.10/11.50 br %29 38.10/11.50 23: 38.10/11.50 %24 = call i32 @__VERIFIER_nondet_int() 38.10/11.50 store %24, %x 38.10/11.50 %25 = load %y 38.10/11.50 %26 = sub %25 1 38.10/11.50 store %26, %y 38.10/11.50 %27 = load %d 38.10/11.50 %28 = sub %27 1 38.10/11.50 store %28, %d 38.10/11.50 br %29 38.10/11.50 29: 38.10/11.50 br %5 38.10/11.50 30: 38.10/11.50 %31 = load %1 38.10/11.50 ret %31 38.10/11.50 38.10/11.50 38.10/11.50 Analyze Termination of all function calls matching the pattern: 38.10/11.50 main() 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (3) LLVMToTerminationGraphProof (EQUIVALENT) 38.10/11.50 Constructed symbolic execution graph for LLVM program and proved memory safety. 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (4) 38.10/11.50 Obligation: 38.10/11.50 SE Graph 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (5) SymbolicExecutionGraphToSCCProof (SOUND) 38.10/11.50 Splitted symbolic execution graph to 3 SCCs. 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (6) 38.10/11.50 Complex Obligation (AND) 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (7) 38.10/11.50 Obligation: 38.10/11.50 SCC 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (8) SCC2IRS (SOUND) 38.10/11.50 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 38.10/11.50 Generated rules. Obtained 62 rulesP rules: 38.10/11.50 f_738(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6321, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6330, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_741(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_741(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_744(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 < v6330 && 2 <= v6321 && 2 <= v6326 38.10/11.50 f_744(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_748(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_748(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_752(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_752(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_756(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_756(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_760(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_760(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_764(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_764(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6321, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_767(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_767(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_769(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 < v6331 38.10/11.50 f_769(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_772(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_772(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_775(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_775(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_777(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_777(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v6325, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_779(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_779(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_781(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: v7147 != 0 38.10/11.50 f_779(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_782(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 3, 2, 4) :|: v7147 = 0 38.10/11.50 f_781(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_783(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_783(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_785(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_785(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_786(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, v7147, v6321, v6330, v6331, v6326, v6327, v6328, v6329, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_786(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7189, v7190, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_788(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7190, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_788(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7190, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_790(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: 1 + v7216 = v7184 && 0 <= v7216 38.10/11.50 f_790(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_792(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_792(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7191, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_794(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7219, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_794(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7219, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_796(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7219, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_796(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7219, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_798(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7219, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_798(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7216, v7219, v7192, v7193, v7194, v7195, v7196, v7197, v7198, v7199, 0, 3, 2, 4) -> f_735(v7177, v7178, v7179, v7180, v7181, v7182, v7183, v7184, 1, v7186, v7187, v7188, v7192, v7193, v7194, v7195, v7216, v7219, v7196, v7197, v7198, v7199, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_735(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6321, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6330, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) -> f_738(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6321, 1, v6323, v6324, v6325, v6326, v6327, v6328, v6329, v6330, v6331, v6332, v6333, v6334, v6335, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_782(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 3, 2, 4) -> f_784(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_784(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 3, 2, 4) -> f_787(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 3, 2, 4) :|: TRUE 38.10/11.50 f_787(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6332, v6333, v6334, v6335, 3, 2, 4) -> f_840(v6314, v6315, v6316, v6317, v6318, v6319, v6320, v6330, 1, v6323, v6331, 0, v6326, v6327, v6328, v6329, v6321, v6330, v6331, v6332, v6333, v6334, v6335, 3, 2, 4) :|: TRUE 38.10/11.50 f_840(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8378, v8379, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_841(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8379, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: TRUE 38.10/11.50 f_841(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8379, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_842(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8379, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: TRUE 38.10/11.50 f_842(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8379, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_843(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_843(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_844(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: 1 + v8391 = v8375 && 0 <= v8391 38.10/11.50 f_844(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_845(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: TRUE 38.10/11.50 f_845(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8380, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_846(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_846(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8381, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_847(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8393, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: 1 + v8393 = v8376 && 0 <= v8393 38.10/11.50 f_847(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8393, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_848(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8393, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: TRUE 38.10/11.50 f_848(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8393, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_849(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8393, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) :|: TRUE 38.10/11.50 f_849(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8389, v8391, v8393, v8382, v8383, v8384, v8385, v8386, v8387, v8388, 3, 2, 4) -> f_803(v8366, v8367, v8368, v8369, v8370, v8371, v8372, v8373, 1, v8375, v8376, 0, v8382, v8383, v8384, v8389, v8391, v8393, v8385, v8386, v8387, v8388, 3, 2, 4) :|: TRUE 38.10/11.50 f_803(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7320, 1, v7322, v7323, 0, v7325, v7326, v7327, v7328, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_804(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7320, 1, v7322, v7323, 0, v7325, v7326, v7327, v7328, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 f_804(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7320, 1, v7322, v7323, 0, v7325, v7326, v7327, v7328, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_805(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_805(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_806(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 < v7328 38.10/11.50 f_806(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_808(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_808(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_810(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 f_810(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7322, v7323, 0, v7325, v7326, v7327, v7329, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_812(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_812(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_814(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 < v7329 && 2 <= v7322 && 2 <= v7318 38.10/11.50 f_814(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_817(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_817(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_819(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 f_819(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7323, 0, v7325, v7326, v7327, v7322, v7330, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_821(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_821(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_823(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 < v7330 && 2 <= v7323 && 2 <= v7327 38.10/11.50 f_823(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_826(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_826(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_828(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_828(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_830(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 f_830(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_832(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 f_832(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_834(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: v8283 != 0 38.10/11.50 f_832(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_835(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: v8283 = 0 38.10/11.50 f_834(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_836(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_836(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 0, 3, 2, 4) -> f_838(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_838(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 0, 3, 2, 4) -> f_786(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, v8283, v7325, v7326, v7327, v7328, v7322, v7323, v7330, v7331, v7332, v7333, v7334, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_835(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_837(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_837(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_839(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 f_839(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7325, v7326, v7327, v7322, v7323, v7331, v7332, v7333, v7334, 3, 2, 4) -> f_840(v7313, v7314, v7315, v7316, v7317, v7318, v7319, v7328, 1, v7329, v7330, 0, v7328, v7322, v7323, v7330, v7325, v7326, v7327, v7331, v7332, v7333, v7334, 3, 2, 4) :|: TRUE 38.10/11.50 Combined rules. Obtained 6 rulesP rules: 38.10/11.50 f_832(v7313:0, v7314:0, v7315:0, v7316:0, v7317:0, v7318:0, v7319:0, v7328:0, 1, 1 + v8391:0, 1 + v8393:0, 0, 0, v7325:0, v7326:0, v7327:0, v7322:0, v7323:0, v7331:0, v7332:0, v7333:0, v7334:0, 3, 2, 4) -> f_832(v7313:0, v7314:0, v7315:0, v7316:0, v7317:0, v7318:0, v7319:0, v8389:0, 1, v8391:0, v8393:0, v8283:1, 0, v7325:0, v7326:0, v7327:0, 1 + v8391:0, 1 + v8393:0, v7331:0, v7332:0, v7333:0, v7334:0, 3, 2, 4) :|: v8391:0 > 0 && v8393:0 > 0 && v8389:0 > 0 && v7318:0 > 1 && v7327:0 > 1 38.10/11.50 f_738(v6314:0, v6315:0, v6316:0, v6317:0, v6318:0, v6319:0, v6320:0, v6321:0, 1, v6323:0, v6324:0, v6325:0, v6326:0, v6327:0, v6328:0, v6329:0, 1 + v7216:0, v6331:0, v6332:0, v6333:0, v6334:0, v6335:0, 0, 3, 2, 4) -> f_738(v6314:0, v6315:0, v6316:0, v6317:0, v6318:0, v6319:0, v6320:0, 1 + v7216:0, 1, v6323:0, v6331:0, v7147:0, v6326:0, v6327:0, v6328:0, v6329:0, v7216:0, v7219:0, v6332:0, v6333:0, v6334:0, v6335:0, 0, 3, 2, 4) :|: v6321:0 > 1 && v7216:0 > -1 && v6326:0 > 1 && v6331:0 > 0 && v7147:0 < 0 38.10/11.50 f_738(v6314:0, v6315:0, v6316:0, v6317:0, v6318:0, v6319:0, v6320:0, v6321:0, 1, v6323:0, v6324:0, v6325:0, v6326:0, v6327:0, v6328:0, v6329:0, 1 + v7216:0, v6331:0, v6332:0, v6333:0, v6334:0, v6335:0, 0, 3, 2, 4) -> f_738(v6314:0, v6315:0, v6316:0, v6317:0, v6318:0, v6319:0, v6320:0, 1 + v7216:0, 1, v6323:0, v6331:0, v7147:0, v6326:0, v6327:0, v6328:0, v6329:0, v7216:0, v7219:0, v6332:0, v6333:0, v6334:0, v6335:0, 0, 3, 2, 4) :|: v6321:0 > 1 && v7216:0 > -1 && v6326:0 > 1 && v6331:0 > 0 && v7147:0 > 0 38.10/11.50 f_832(v7313:0, v7314:0, v7315:0, v7316:0, v7317:0, v7318:0, v7319:0, 1 + v7216:0, 1, v7329:0, v7330:0, v8283:0, 0, v7325:0, v7326:0, v7327:0, v7322:0, v7323:0, v7331:0, v7332:0, v7333:0, v7334:0, 3, 2, 4) -> f_738(v7313:0, v7314:0, v7315:0, v7316:0, v7317:0, v7318:0, v7319:0, 1 + v7216:0, 1, v7329:0, v7330:0, v8283:0, 1 + v7216:0, v7322:0, v7323:0, v7330:0, v7216:0, v7219:0, v7331:0, v7332:0, v7333:0, v7334:0, 0, 3, 2, 4) :|: v8283:0 < 0 && v7216:0 > -1 38.10/11.50 f_832(v7313:0, v7314:0, v7315:0, v7316:0, v7317:0, v7318:0, v7319:0, 1 + v7216:0, 1, v7329:0, v7330:0, v8283:0, 0, v7325:0, v7326:0, v7327:0, v7322:0, v7323:0, v7331:0, v7332:0, v7333:0, v7334:0, 3, 2, 4) -> f_738(v7313:0, v7314:0, v7315:0, v7316:0, v7317:0, v7318:0, v7319:0, 1 + v7216:0, 1, v7329:0, v7330:0, v8283:0, 1 + v7216:0, v7322:0, v7323:0, v7330:0, v7216:0, v7219:0, v7331:0, v7332:0, v7333:0, v7334:0, 0, 3, 2, 4) :|: v8283:0 > 0 && v7216:0 > -1 38.10/11.50 f_738(v6314:0, v6315:0, v6316:0, v6317:0, v6318:0, v6319:0, v6320:0, v6321:0, 1, 1 + v8391:0, v6324:0, v6325:0, v6326:0, v6327:0, v6328:0, v6329:0, v6330:0, 1 + v8393:0, v6332:0, v6333:0, v6334:0, v6335:0, 0, 3, 2, 4) -> f_832(v6314:0, v6315:0, v6316:0, v6317:0, v6318:0, v6319:0, v6320:0, v8389:0, 1, v8391:0, v8393:0, v8283:0, 0, v6321:0, v6330:0, 1 + v8393:0, 1 + v8391:0, 1 + v8393:0, v6332:0, v6333:0, v6334:0, v6335:0, 3, 2, 4) :|: v8391:0 > 0 && v8393:0 > 0 && v6321:0 > 1 && v6330:0 > 0 && v6326:0 > 1 && v8389:0 > 0 && v6319:0 > 1 38.10/11.50 Filtered unneeded arguments: 38.10/11.50 f_832(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25) -> f_832(x6, x8, x10, x11, x12, x16) 38.10/11.50 f_738(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26) -> f_738(x6, x8, x10, x13, x17, x18) 38.10/11.50 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 38.10/11.50 f_832(v7318:0, v7328:0, sum~cons_1~v8391:0, sum~cons_1~v8393:0, cons_0, v7327:0) -> f_832(v7318:0, v8389:0, v8391:0, v8393:0, v8283:1, v7327:0) :|: v8393:0 > 0 && v8391:0 > 0 && v8389:0 > 0 && v7327:0 > 1 && v7318:0 > 1 && sum~cons_1~v8391:0 = 1 + v8391:0 && sum~cons_1~v8393:0 = 1 + v8393:0 && cons_0 = 0 38.10/11.50 f_738(v6319:0, v6321:0, v6323:0, v6326:0, sum~cons_1~v7216:0, v6331:0) -> f_738(v6319:0, 1 + v7216:0, v6323:0, v6326:0, v7216:0, v7219:0) :|: v7216:0 > -1 && v6321:0 > 1 && v6331:0 > 0 && v6326:0 > 1 && sum~cons_1~v7216:0 = 1 + v7216:0 38.10/11.50 f_832(v7318:0, sum~cons_1~v7216:0, v7329:0, v7330:0, v8283:0, v7327:0) -> f_738(v7318:0, 1 + v7216:0, v7329:0, 1 + v7216:0, v7216:0, v7219:0) :|: v8283:0 < 0 && v7216:0 > -1 && sum~cons_1~v7216:0 = 1 + v7216:0 38.10/11.50 f_832(v7318:0, sum~cons_1~v7216:0, v7329:0, v7330:0, v8283:0, v7327:0) -> f_738(v7318:0, 1 + v7216:0, v7329:0, 1 + v7216:0, v7216:0, v7219:0) :|: v8283:0 > 0 && v7216:0 > -1 && sum~cons_1~v7216:0 = 1 + v7216:0 38.10/11.50 f_738(v6319:0, v6321:0, sum~cons_1~v8391:0, v6326:0, v6330:0, sum~cons_1~v8393:0) -> f_832(v6319:0, v8389:0, v8391:0, v8393:0, v8283:0, 1 + v8393:0) :|: v8393:0 > 0 && v8391:0 > 0 && v6321:0 > 1 && v6330:0 > 0 && v6326:0 > 1 && v6319:0 > 1 && v8389:0 > 0 && sum~cons_1~v8391:0 = 1 + v8391:0 && sum~cons_1~v8393:0 = 1 + v8393:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (9) 38.10/11.50 Obligation: 38.10/11.50 Rules: 38.10/11.50 f_832(v7318:0, v7328:0, sum~cons_1~v8391:0, sum~cons_1~v8393:0, cons_0, v7327:0) -> f_832(v7318:0, v8389:0, v8391:0, v8393:0, v8283:1, v7327:0) :|: v8393:0 > 0 && v8391:0 > 0 && v8389:0 > 0 && v7327:0 > 1 && v7318:0 > 1 && sum~cons_1~v8391:0 = 1 + v8391:0 && sum~cons_1~v8393:0 = 1 + v8393:0 && cons_0 = 0 38.10/11.50 f_738(v6319:0, v6321:0, v6323:0, v6326:0, sum~cons_1~v7216:0, v6331:0) -> f_738(v6319:0, 1 + v7216:0, v6323:0, v6326:0, v7216:0, v7219:0) :|: v7216:0 > -1 && v6321:0 > 1 && v6331:0 > 0 && v6326:0 > 1 && sum~cons_1~v7216:0 = 1 + v7216:0 38.10/11.50 f_832(x, x1, x2, x3, x4, x5) -> f_738(x, 1 + x6, x2, 1 + x6, x6, x7) :|: x4 < 0 && x6 > -1 && x1 = 1 + x6 38.10/11.50 f_832(x8, x9, x10, x11, x12, x13) -> f_738(x8, 1 + x14, x10, 1 + x14, x14, x15) :|: x12 > 0 && x14 > -1 && x9 = 1 + x14 38.10/11.50 f_738(x16, x17, x18, x19, x20, x21) -> f_832(x16, x22, x23, x24, x25, 1 + x24) :|: x24 > 0 && x23 > 0 && x17 > 1 && x20 > 0 && x19 > 1 && x16 > 1 && x22 > 0 && x18 = 1 + x23 && x21 = 1 + x24 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (10) IRS2T2 (EQUIVALENT) 38.10/11.50 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 38.10/11.50 38.10/11.50 (f_832_6,1) 38.10/11.50 (f_738_6,2) 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (11) 38.10/11.50 Obligation: 38.10/11.50 START: 0; 38.10/11.50 38.10/11.50 FROM: 0; 38.10/11.50 TO: 1; 38.10/11.50 38.10/11.50 FROM: 0; 38.10/11.50 TO: 2; 38.10/11.50 38.10/11.50 FROM: 1; 38.10/11.50 oldX0 := x0; 38.10/11.50 oldX1 := x1; 38.10/11.50 oldX2 := x2; 38.10/11.50 oldX3 := x3; 38.10/11.50 oldX4 := x4; 38.10/11.50 oldX5 := x5; 38.10/11.50 oldX7 := oldX2 - 1; 38.10/11.50 oldX8 := oldX3 - 1; 38.10/11.50 oldX6 := nondet(); 38.10/11.50 oldX9 := nondet(); 38.10/11.50 assume(oldX8 > 0 && oldX7 > 0 && oldX6 > 0 && oldX5 > 1 && oldX0 > 1 && oldX2 = 1 + oldX7 && oldX3 = 1 + oldX8 && oldX4 = 0); 38.10/11.50 x0 := oldX0; 38.10/11.50 x1 := oldX6; 38.10/11.50 x2 := oldX2 - 1; 38.10/11.50 x3 := oldX3 - 1; 38.10/11.50 x4 := oldX9; 38.10/11.50 x5 := oldX5; 38.10/11.50 TO: 1; 38.10/11.50 38.10/11.50 FROM: 2; 38.10/11.50 oldX0 := x0; 38.10/11.50 oldX1 := x1; 38.10/11.50 oldX2 := x2; 38.10/11.50 oldX3 := x3; 38.10/11.50 oldX4 := x4; 38.10/11.50 oldX5 := x5; 38.10/11.50 oldX6 := oldX4 - 1; 38.10/11.50 oldX7 := nondet(); 38.10/11.50 assume(oldX6 > -1 && oldX1 > 1 && oldX5 > 0 && oldX3 > 1 && oldX4 = 1 + oldX6); 38.10/11.50 x0 := oldX0; 38.10/11.50 x1 := 1 + oldX6; 38.10/11.50 x2 := oldX2; 38.10/11.50 x3 := oldX3; 38.10/11.50 x4 := oldX4 - 1; 38.10/11.50 x5 := oldX7; 38.10/11.50 TO: 2; 38.10/11.50 38.10/11.50 FROM: 1; 38.10/11.50 oldX0 := x0; 38.10/11.50 oldX1 := x1; 38.10/11.50 oldX2 := x2; 38.10/11.50 oldX3 := x3; 38.10/11.50 oldX4 := x4; 38.10/11.50 oldX5 := x5; 38.10/11.50 oldX6 := oldX1 - 1; 38.10/11.50 oldX7 := nondet(); 38.10/11.50 assume(oldX4 < 0 && oldX6 > -1 && oldX1 = 1 + oldX6); 38.10/11.50 x0 := oldX0; 38.10/11.50 x1 := 1 + oldX6; 38.10/11.50 x2 := oldX2; 38.10/11.50 x3 := 1 + oldX6; 38.10/11.50 x4 := oldX1 - 1; 38.10/11.50 x5 := oldX7; 38.10/11.50 TO: 2; 38.10/11.50 38.10/11.50 FROM: 1; 38.10/11.50 oldX0 := x0; 38.10/11.50 oldX1 := x1; 38.10/11.50 oldX2 := x2; 38.10/11.50 oldX3 := x3; 38.10/11.50 oldX4 := x4; 38.10/11.50 oldX5 := x5; 38.10/11.50 oldX6 := oldX1 - 1; 38.10/11.50 oldX7 := nondet(); 38.10/11.50 assume(oldX4 > 0 && oldX6 > -1 && oldX1 = 1 + oldX6); 38.10/11.50 x0 := oldX0; 38.10/11.50 x1 := 1 + oldX6; 38.10/11.50 x2 := oldX2; 38.10/11.50 x3 := 1 + oldX6; 38.10/11.50 x4 := oldX1 - 1; 38.10/11.50 x5 := oldX7; 38.10/11.50 TO: 2; 38.10/11.50 38.10/11.50 FROM: 2; 38.10/11.50 oldX0 := x0; 38.10/11.50 oldX1 := x1; 38.10/11.50 oldX2 := x2; 38.10/11.50 oldX3 := x3; 38.10/11.50 oldX4 := x4; 38.10/11.50 oldX5 := x5; 38.10/11.50 oldX7 := oldX2 - 1; 38.10/11.50 oldX8 := oldX5 - 1; 38.10/11.50 oldX6 := nondet(); 38.10/11.50 oldX9 := nondet(); 38.10/11.50 assume(oldX8 > 0 && oldX7 > 0 && oldX1 > 1 && oldX4 > 0 && oldX3 > 1 && oldX0 > 1 && oldX6 > 0 && oldX2 = 1 + oldX7 && oldX5 = 1 + oldX8); 38.10/11.50 x0 := oldX0; 38.10/11.50 x1 := oldX6; 38.10/11.50 x2 := oldX2 - 1; 38.10/11.50 x3 := oldX5 - 1; 38.10/11.50 x4 := oldX9; 38.10/11.50 x5 := 1 + oldX8; 38.10/11.50 TO: 1; 38.10/11.50 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (12) T2 (EQUIVALENT) 38.10/11.50 Initially, performed program simplifications using lexicographic rank functions: 38.10/11.50 * Removed transitions 2, 5, 6, 7, 17, 20, 21 using the following rank functions: 38.10/11.50 - Rank function 1: 38.10/11.50 RF for loc. 6: 2+6*x2 38.10/11.50 RF for loc. 7: 6*x2 38.10/11.50 RF for loc. 8: 1+6*x2 38.10/11.50 RF for loc. 12: 6*x2 38.10/11.50 Bound for (chained) transitions 21: 12 38.10/11.50 - Rank function 2: 38.10/11.50 RF for loc. 6: 1+2*x2 38.10/11.50 RF for loc. 7: 2*x2-2*x3+2*x4 38.10/11.50 RF for loc. 8: 2*x2 38.10/11.50 RF for loc. 12: -1+2*x2-2*x3+2*x4 38.10/11.50 Bound for (chained) transitions 5: 4 38.10/11.50 - Rank function 3: 38.10/11.50 RF for loc. 6: -1+2*x1 38.10/11.50 RF for loc. 7: 2*x4 38.10/11.50 RF for loc. 8: -2+2*x1 38.10/11.50 RF for loc. 12: -1+2*x4 38.10/11.50 Bound for (chained) transitions 20: 1 38.10/11.50 - Rank function 4: 38.10/11.50 RF for loc. 6: 1 38.10/11.50 RF for loc. 7: -1 38.10/11.50 RF for loc. 8: 0 38.10/11.50 RF for loc. 12: -2 38.10/11.50 Bound for (chained) transitions 2: 1 38.10/11.50 Bound for (chained) transitions 6: 0 38.10/11.50 Bound for (chained) transitions 7: 0 38.10/11.50 Bound for (chained) transitions 17: -1 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (13) 38.10/11.50 YES 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (14) 38.10/11.50 Obligation: 38.10/11.50 SCC 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (15) SCC2IRS (SOUND) 38.10/11.50 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 38.10/11.50 Generated rules. Obtained 28 rulesP rules: 38.10/11.50 f_416(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1322, 1, v1324, v1325, 0, v1327, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_419(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) :|: 0 = 0 38.10/11.50 f_419(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_422(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) :|: 0 < v1327 38.10/11.50 f_422(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_426(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) :|: 0 = 0 38.10/11.50 f_426(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_430(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) :|: TRUE 38.10/11.50 f_430(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1324, v1325, 0, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_434(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 4) :|: 0 = 0 38.10/11.50 f_434(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_438(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 < v1328 && 2 <= v1324 && 2 <= v1320 38.10/11.50 f_438(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_443(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_443(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_447(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_447(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1325, 0, v1324, v1329, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_451(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_451(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_455(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 < v1329 && 2 <= v1325 && 2 <= v1321 38.10/11.50 f_455(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_460(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_460(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_464(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_464(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_467(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_467(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_470(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, v1793, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_470(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, v1793, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_474(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: v1793 = 0 38.10/11.50 f_474(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_477(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_477(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_481(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_481(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_485(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_485(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_489(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_489(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1324, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_493(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_493(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_498(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 1 + v1999 = v1328 && 0 <= v1999 38.10/11.50 f_498(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_502(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_502(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v1325, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_506(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_506(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_510(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 2, 4) :|: 1 + v2269 = v1329 && 0 <= v2269 38.10/11.50 f_510(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_515(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_515(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_520(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 2, 4) :|: TRUE 38.10/11.50 f_520(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 2, 4) -> f_413(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1327, 1, v1328, v1329, 0, v1828, v1999, v2269, v1330, v1331, v1332, v1333, 3, 4) :|: TRUE 38.10/11.50 f_413(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1322, 1, v1324, v1325, 0, v1327, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) -> f_416(v1315, v1316, v1317, v1318, v1319, v1320, v1321, v1322, 1, v1324, v1325, 0, v1327, v1328, v1329, v1330, v1331, v1332, v1333, 3, 4) :|: TRUE 38.10/11.50 Combined rules. Obtained 1 rulesP rules: 38.10/11.50 f_416(v1315:0, v1316:0, v1317:0, v1318:0, v1319:0, v1320:0, v1321:0, v1322:0, 1, v1324:0, v1325:0, 0, v1327:0, 1 + v1999:0, 1 + v2269:0, v1330:0, v1331:0, v1332:0, v1333:0, 3, 4) -> f_416(v1315:0, v1316:0, v1317:0, v1318:0, v1319:0, v1320:0, v1321:0, v1327:0, 1, 1 + v1999:0, 1 + v2269:0, 0, v1828:0, v1999:0, v2269:0, v1330:0, v1331:0, v1332:0, v1333:0, 3, 4) :|: v1327:0 > 0 && v1324:0 > 1 && v1999:0 > -1 && v1320:0 > 1 && v1325:0 > 1 && v2269:0 > -1 && v1321:0 > 1 38.10/11.50 Filtered unneeded arguments: 38.10/11.50 f_416(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_416(x6, x7, x10, x11, x13, x14, x15) 38.10/11.50 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 38.10/11.50 f_416(v1320:0, v1321:0, v1324:0, v1325:0, v1327:0, sum~cons_1~v1999:0, sum~cons_1~v2269:0) -> f_416(v1320:0, v1321:0, 1 + v1999:0, 1 + v2269:0, v1828:0, v1999:0, v2269:0) :|: v1324:0 > 1 && v1327:0 > 0 && v1999:0 > -1 && v1320:0 > 1 && v1325:0 > 1 && v1321:0 > 1 && v2269:0 > -1 && sum~cons_1~v1999:0 = 1 + v1999:0 && sum~cons_1~v2269:0 = 1 + v2269:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (16) 38.10/11.50 Obligation: 38.10/11.50 Rules: 38.10/11.50 f_416(v1320:0, v1321:0, v1324:0, v1325:0, v1327:0, sum~cons_1~v1999:0, sum~cons_1~v2269:0) -> f_416(v1320:0, v1321:0, 1 + v1999:0, 1 + v2269:0, v1828:0, v1999:0, v2269:0) :|: v1324:0 > 1 && v1327:0 > 0 && v1999:0 > -1 && v1320:0 > 1 && v1325:0 > 1 && v1321:0 > 1 && v2269:0 > -1 && sum~cons_1~v1999:0 = 1 + v1999:0 && sum~cons_1~v2269:0 = 1 + v2269:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (17) IntTRSCompressionProof (EQUIVALENT) 38.10/11.50 Compressed rules. 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (18) 38.10/11.50 Obligation: 38.10/11.50 Rules: 38.10/11.50 f_416(v1320:0:0, v1321:0:0, v1324:0:0, v1325:0:0, v1327:0:0, sum~cons_1~v1999:0:0, sum~cons_1~v2269:0:0) -> f_416(v1320:0:0, v1321:0:0, 1 + v1999:0:0, 1 + v2269:0:0, v1828:0:0, v1999:0:0, v2269:0:0) :|: v1321:0:0 > 1 && v2269:0:0 > -1 && v1325:0:0 > 1 && v1320:0:0 > 1 && v1999:0:0 > -1 && v1327:0:0 > 0 && v1324:0:0 > 1 && sum~cons_1~v1999:0:0 = 1 + v1999:0:0 && sum~cons_1~v2269:0:0 = 1 + v2269:0:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (19) RankingReductionPairProof (EQUIVALENT) 38.10/11.50 Interpretation: 38.10/11.50 [ f_416 ] = f_416_6 38.10/11.50 38.10/11.50 The following rules are decreasing: 38.10/11.50 f_416(v1320:0:0, v1321:0:0, v1324:0:0, v1325:0:0, v1327:0:0, sum~cons_1~v1999:0:0, sum~cons_1~v2269:0:0) -> f_416(v1320:0:0, v1321:0:0, 1 + v1999:0:0, 1 + v2269:0:0, v1828:0:0, v1999:0:0, v2269:0:0) :|: v1321:0:0 > 1 && v2269:0:0 > -1 && v1325:0:0 > 1 && v1320:0:0 > 1 && v1999:0:0 > -1 && v1327:0:0 > 0 && v1324:0:0 > 1 && sum~cons_1~v1999:0:0 = 1 + v1999:0:0 && sum~cons_1~v2269:0:0 = 1 + v2269:0:0 38.10/11.50 38.10/11.50 The following rules are bounded: 38.10/11.50 f_416(v1320:0:0, v1321:0:0, v1324:0:0, v1325:0:0, v1327:0:0, sum~cons_1~v1999:0:0, sum~cons_1~v2269:0:0) -> f_416(v1320:0:0, v1321:0:0, 1 + v1999:0:0, 1 + v2269:0:0, v1828:0:0, v1999:0:0, v2269:0:0) :|: v1321:0:0 > 1 && v2269:0:0 > -1 && v1325:0:0 > 1 && v1320:0:0 > 1 && v1999:0:0 > -1 && v1327:0:0 > 0 && v1324:0:0 > 1 && sum~cons_1~v1999:0:0 = 1 + v1999:0:0 && sum~cons_1~v2269:0:0 = 1 + v2269:0:0 38.10/11.50 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (20) 38.10/11.50 YES 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (21) 38.10/11.50 Obligation: 38.10/11.50 SCC 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (22) SCC2IRS (SOUND) 38.10/11.50 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 38.10/11.50 Generated rules. Obtained 24 rulesP rules: 38.10/11.50 f_375(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 4) -> f_378(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 < v1154 && 2 <= v1150 && 2 <= v1147 38.10/11.50 f_378(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_382(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_382(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_386(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_386(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_390(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_390(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_394(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_394(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_398(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_398(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_401(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_401(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_404(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 < v1155 38.10/11.50 f_404(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_408(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_408(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_414(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_414(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_417(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_417(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1153, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_420(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_420(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_424(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: v1435 != 0 38.10/11.50 f_424(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_428(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_428(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_432(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_432(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1150, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_436(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 0 = 0 38.10/11.50 f_436(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_441(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: 1 + v1496 = v1154 && 0 <= v1496 38.10/11.50 f_441(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_445(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_445(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_449(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_449(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_453(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_453(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_458(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_458(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_462(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) :|: TRUE 38.10/11.50 f_462(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 2, 4) -> f_372(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1155, v1435, v1496, v1544, v1156, v1157, v1158, v1159, 0, 3, 4) :|: TRUE 38.10/11.50 f_372(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1150, 1, v1152, v1153, v1154, v1155, v1156, v1157, v1158, v1159, 0, 3, 4) -> f_375(v1143, v1144, v1145, v1146, v1147, v1148, v1149, v1154, 1, v1152, v1153, v1150, v1155, v1156, v1157, v1158, v1159, 0, 3, 4) :|: 0 = 0 38.10/11.50 Combined rules. Obtained 2 rulesP rules: 38.10/11.50 f_375(v1143:0, v1144:0, v1145:0, v1146:0, v1147:0, v1148:0, v1149:0, 1 + v1496:0, 1, v1152:0, v1153:0, v1150:0, v1155:0, v1156:0, v1157:0, v1158:0, v1159:0, 0, 3, 4) -> f_375(v1143:0, v1144:0, v1145:0, v1146:0, v1147:0, v1148:0, v1149:0, v1496:0, 1, v1155:0, v1435:0, 1 + v1496:0, v1544:0, v1156:0, v1157:0, v1158:0, v1159:0, 0, 3, 4) :|: v1150:0 > 1 && v1496:0 > -1 && v1147:0 > 1 && v1155:0 > 0 && v1435:0 < 0 38.10/11.50 f_375(v1143:0, v1144:0, v1145:0, v1146:0, v1147:0, v1148:0, v1149:0, 1 + v1496:0, 1, v1152:0, v1153:0, v1150:0, v1155:0, v1156:0, v1157:0, v1158:0, v1159:0, 0, 3, 4) -> f_375(v1143:0, v1144:0, v1145:0, v1146:0, v1147:0, v1148:0, v1149:0, v1496:0, 1, v1155:0, v1435:0, 1 + v1496:0, v1544:0, v1156:0, v1157:0, v1158:0, v1159:0, 0, 3, 4) :|: v1150:0 > 1 && v1496:0 > -1 && v1147:0 > 1 && v1155:0 > 0 && v1435:0 > 0 38.10/11.50 Filtered unneeded arguments: 38.10/11.50 f_375(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) -> f_375(x5, x8, x12, x13) 38.10/11.50 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 38.10/11.50 f_375(v1147:0, sum~cons_1~v1496:0, v1150:0, v1155:0) -> f_375(v1147:0, v1496:0, 1 + v1496:0, v1544:0) :|: v1496:0 > -1 && v1150:0 > 1 && v1155:0 > 0 && v1147:0 > 1 && sum~cons_1~v1496:0 = 1 + v1496:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (23) 38.10/11.50 Obligation: 38.10/11.50 Rules: 38.10/11.50 f_375(v1147:0, sum~cons_1~v1496:0, v1150:0, v1155:0) -> f_375(v1147:0, v1496:0, 1 + v1496:0, v1544:0) :|: v1496:0 > -1 && v1150:0 > 1 && v1155:0 > 0 && v1147:0 > 1 && sum~cons_1~v1496:0 = 1 + v1496:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (24) IntTRSCompressionProof (EQUIVALENT) 38.10/11.50 Compressed rules. 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (25) 38.10/11.50 Obligation: 38.10/11.50 Rules: 38.10/11.50 f_375(v1147:0:0, sum~cons_1~v1496:0:0, v1150:0:0, v1155:0:0) -> f_375(v1147:0:0, v1496:0:0, 1 + v1496:0:0, v1544:0:0) :|: v1155:0:0 > 0 && v1147:0:0 > 1 && v1150:0:0 > 1 && v1496:0:0 > -1 && sum~cons_1~v1496:0:0 = 1 + v1496:0:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (26) PolynomialOrderProcessor (EQUIVALENT) 38.10/11.50 Found the following polynomial interpretation: 38.10/11.50 [f_375(x, x1, x2, x3)] = x1 38.10/11.50 38.10/11.50 The following rules are decreasing: 38.10/11.50 f_375(v1147:0:0, sum~cons_1~v1496:0:0, v1150:0:0, v1155:0:0) -> f_375(v1147:0:0, v1496:0:0, 1 + v1496:0:0, v1544:0:0) :|: v1155:0:0 > 0 && v1147:0:0 > 1 && v1150:0:0 > 1 && v1496:0:0 > -1 && sum~cons_1~v1496:0:0 = 1 + v1496:0:0 38.10/11.50 The following rules are bounded: 38.10/11.50 f_375(v1147:0:0, sum~cons_1~v1496:0:0, v1150:0:0, v1155:0:0) -> f_375(v1147:0:0, v1496:0:0, 1 + v1496:0:0, v1544:0:0) :|: v1155:0:0 > 0 && v1147:0:0 > 1 && v1150:0:0 > 1 && v1496:0:0 > -1 && sum~cons_1~v1496:0:0 = 1 + v1496:0:0 38.10/11.50 38.10/11.50 ---------------------------------------- 38.10/11.50 38.10/11.50 (27) 38.10/11.50 YES 38.21/12.39 EOF