/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 180 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 4098 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 1 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 144 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 1013 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 102 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 843 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 41 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [EQUIVALENT, 823 ms] (27) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "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" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i32, align 4 %d = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %x %3 = call i32 @__VERIFIER_nondet_int() store %3, %y %4 = call i32 @__VERIFIER_nondet_int() store %4, %d br %5 5: %6 = load %x %7 = icmp sgt %6 0 br %7, %8, %14 8: %9 = load %y %10 = icmp sgt %9 0 br %10, %11, %14 11: %12 = load %d %13 = icmp sgt %12 0 br %14 14: %15 = phi [0, %8], [0, %5], [%13, %11] br %15, %16, %30 16: %17 = call i32 @__VERIFIER_nondet_int() %18 = icmp ne %17 0 br %18, %19, %23 19: %20 = load %x %21 = sub %20 1 store %21, %x %22 = call i32 @__VERIFIER_nondet_int() store %22, %d br %29 23: %24 = call i32 @__VERIFIER_nondet_int() store %24, %x %25 = load %y %26 = sub %25 1 store %26, %y %27 = load %d %28 = sub %27 1 store %28, %d br %29 29: br %5 30: %31 = load %1 ret %31 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 62 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 6 rulesP rules: 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 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 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 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 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 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 Filtered unneeded arguments: 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) 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) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 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 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 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 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 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 ---------------------------------------- (9) Obligation: Rules: 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 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 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 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 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 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_832_6,1) (f_738_6,2) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX7 := oldX2 - 1; oldX8 := oldX3 - 1; oldX6 := nondet(); oldX9 := nondet(); assume(oldX8 > 0 && oldX7 > 0 && oldX6 > 0 && oldX5 > 1 && oldX0 > 1 && oldX2 = 1 + oldX7 && oldX3 = 1 + oldX8 && oldX4 = 0); x0 := oldX0; x1 := oldX6; x2 := oldX2 - 1; x3 := oldX3 - 1; x4 := oldX9; x5 := oldX5; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := oldX4 - 1; oldX7 := nondet(); assume(oldX6 > -1 && oldX1 > 1 && oldX5 > 0 && oldX3 > 1 && oldX4 = 1 + oldX6); x0 := oldX0; x1 := 1 + oldX6; x2 := oldX2; x3 := oldX3; x4 := oldX4 - 1; x5 := oldX7; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := oldX1 - 1; oldX7 := nondet(); assume(oldX4 < 0 && oldX6 > -1 && oldX1 = 1 + oldX6); x0 := oldX0; x1 := 1 + oldX6; x2 := oldX2; x3 := 1 + oldX6; x4 := oldX1 - 1; x5 := oldX7; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := oldX1 - 1; oldX7 := nondet(); assume(oldX4 > 0 && oldX6 > -1 && oldX1 = 1 + oldX6); x0 := oldX0; x1 := 1 + oldX6; x2 := oldX2; x3 := 1 + oldX6; x4 := oldX1 - 1; x5 := oldX7; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX7 := oldX2 - 1; oldX8 := oldX5 - 1; oldX6 := nondet(); oldX9 := nondet(); assume(oldX8 > 0 && oldX7 > 0 && oldX1 > 1 && oldX4 > 0 && oldX3 > 1 && oldX0 > 1 && oldX6 > 0 && oldX2 = 1 + oldX7 && oldX5 = 1 + oldX8); x0 := oldX0; x1 := oldX6; x2 := oldX2 - 1; x3 := oldX5 - 1; x4 := oldX9; x5 := 1 + oldX8; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 7, 17, 20, 21 using the following rank functions: - Rank function 1: RF for loc. 6: 2+6*x2 RF for loc. 7: 6*x2 RF for loc. 8: 1+6*x2 RF for loc. 12: 6*x2 Bound for (chained) transitions 21: 12 - Rank function 2: RF for loc. 6: 1+2*x2 RF for loc. 7: 2*x2-2*x3+2*x4 RF for loc. 8: 2*x2 RF for loc. 12: -1+2*x2-2*x3+2*x4 Bound for (chained) transitions 5: 4 - Rank function 3: RF for loc. 6: -1+2*x1 RF for loc. 7: 2*x4 RF for loc. 8: -2+2*x1 RF for loc. 12: -1+2*x4 Bound for (chained) transitions 20: 1 - Rank function 4: RF for loc. 6: 1 RF for loc. 7: -1 RF for loc. 8: 0 RF for loc. 12: -2 Bound for (chained) transitions 2: 1 Bound for (chained) transitions 6: 0 Bound for (chained) transitions 7: 0 Bound for (chained) transitions 17: -1 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 28 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 1 rulesP rules: 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 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 ---------------------------------------- (16) Obligation: Rules: 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 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_416_7,1) ---------------------------------------- (18) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := oldX5 - 1; oldX8 := oldX6 - 1; oldX9 := nondet(); assume(oldX2 > 1 && oldX4 > 0 && oldX7 > -1 && oldX0 > 1 && oldX3 > 1 && oldX1 > 1 && oldX8 > -1 && oldX5 = 1 + oldX7 && oldX6 = 1 + oldX8); x0 := oldX0; x1 := oldX1; x2 := 1 + oldX7; x3 := 1 + oldX8; x4 := oldX9; x5 := oldX5 - 1; x6 := oldX6 - 1; TO: 1; ---------------------------------------- (19) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+x5+x6 RF for loc. 6: x5+x6 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 24 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 2 rulesP rules: 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 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 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 ---------------------------------------- (23) Obligation: Rules: 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 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_375_4,1) ---------------------------------------- (25) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX1 - 1; oldX5 := nondet(); assume(oldX4 > -1 && oldX2 > 1 && oldX3 > 0 && oldX0 > 1 && oldX1 = 1 + oldX4); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX4; x3 := oldX5; TO: 1; ---------------------------------------- (26) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1 RF for loc. 6: 2*x1 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (27) YES