What is Rewriting? Rule-Based Representation of Programs input: x, y ∈ N Example (Integer Transition System (ITS)) z = 0 while x > 0 do 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] x = x − 1 5 while ( x, y, z ) → − while ( x − 1 , y, z + y ) [ x > 0] z = z + y 1 while ( x, y, z ) → − return ( z ) [ x = 0] end return z Example (Term Rewrite System (TRS)) 0 � 0 1 s ( 0 ) � length ( cons ( x, x ′ )) − → s ( length ( x ′ )) 2 s ( s ( 0 )) � length ( nil ) − → 0 Automated Complexity Analysis of Rewrite Systems 4
What is Rewriting? Rule-Based Representation of Programs input: x, y ∈ N Example (Integer Transition System (ITS)) z = 0 while x > 0 do 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] x = x − 1 5 while ( x, y, z ) → − while ( x − 1 , y, z + y ) [ x > 0] z = z + y 1 while ( x, y, z ) → − return ( z ) [ x = 0] end return z Example (Term Rewrite System (TRS)) 0 � 0 1 s ( 0 ) � length ( cons ( x, x ′ )) − → s ( length ( x ′ )) 2 s ( s ( 0 )) � length ( nil ) − → 0 . . . Automated Complexity Analysis of Rewrite Systems 4
Upper, Lower, Worst Case, Best Case, ... runtime input size Automated Complexity Analysis of Rewrite Systems 5
Upper, Lower, Worst Case, Best Case, ... runtime input size Automated Complexity Analysis of Rewrite Systems 5
Upper, Lower, Worst Case, Best Case, ... runtime input size Automated Complexity Analysis of Rewrite Systems 5
Upper, Lower, Worst Case, Best Case, ... runtime input size Automated Complexity Analysis of Rewrite Systems 5
Upper, Lower, Worst Case, Best Case, ... runtime input size Automated Complexity Analysis of Rewrite Systems 5
Outline 1 Introduction 2 Lower Bounds for ITSs 3 Lower Bounds for TRSs 4 Constant Upper Bounds for TRSs Automated Complexity Analysis of Rewrite Systems 6
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] | = x > 0 Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] | = x > 0 5 − → while (0 , 2 , 4) Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] | = x > 0 5 − → while (0 , 2 , 4) [ x/ 0 , y/ 2 , z/ 4] Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] | = x > 0 5 − → while (0 , 2 , 4) [ x/ 0 , y/ 2 , z/ 4] �| = x > 0 Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] | = x > 0 5 − → while (0 , 2 , 4) [ x/ 0 , y/ 2 , z/ 4] | = x = 0 Automated Complexity Analysis of Rewrite Systems 7
Evaluating ITSs Example (ITS) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Example (Evaluation) while (2 , 2 , 0) [ x/ 2 , y/ 2 , z/ 0] | = x > 0 5 − → while (1 , 2 , 2) [ x/ 1 , y/ 2 , z/ 2] | = x > 0 5 − → while (0 , 2 , 4) [ x/ 0 , y/ 2 , z/ 4] | = x = 0 1 − → return (4) Automated Complexity Analysis of Rewrite Systems 7
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x − n : value of x after n iterations Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x − n : value of x after n iterations z + y · n : value of z after n iterations Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x − n : value of x after n iterations z + y · n : value of z after n iterations Example (Recurrence Equations) x ( n − 1) − 1 x ( n ) = y ( n ) y ( n − 1) = z ( n − 1) + y ( n − 1) z ( n ) = Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x − n : value of x after n iterations z + y · n : value of z after n iterations Example (Recurrence Equations) x ( n − 1) − 1 x ( n ) = y ( n ) y ( n − 1) = z ( n − 1) + y ( n − 1) z ( n ) = Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x : maximal number of loop iterations x − n : value of x after n iterations z + y · n : value of z after n iterations Example (Recurrence Equations) x ( n − 1) − 1 x ( n ) = y ( n ) y ( n − 1) = z ( n − 1) + y ( n − 1) z ( n ) = Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x : maximal number of loop iterations 2 , x − 1 , . . . would be fine, too x x − n : value of x after n iterations z + y · n : value of z after n iterations Example (Recurrence Equations) x ( n − 1) − 1 x ( n ) = y ( n ) y ( n − 1) = z ( n − 1) + y ( n − 1) z ( n ) = Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x : maximal number of loop iterations 2 , x − 1 , . . . would be fine, too x x − n : value of x after n iterations search for metering function z + y · n : value of z after n iterations Example (Recurrence Equations) x ( n − 1) − 1 x ( n ) = y ( n ) y ( n − 1) = z ( n − 1) + y ( n − 1) z ( n ) = Automated Complexity Analysis of Rewrite Systems 8
Loop Acceleration Example (Loop Acceleration) 5 while ( x, y, z ) − → while ( x − 1 , y, z + y ) [ x > 0] 5 · n � while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 5 · n : cost of n iterations x : maximal number of loop iterations 2 , x − 1 , . . . would be fine, too x x − n : value of x after n iterations search for metering function z + y · n : value of z after n iterations Example (Recurrence Equations) x ( n − 1) − 1 x ( n ) = y ( n ) y ( n − 1) = z ( n − 1) + y ( n − 1) z ( n ) = Automated Complexity Analysis of Rewrite Systems 8
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · n while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · n while ( x, y, z ) − − → while ( x − n, y, z + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · n while ( x, y, 0) − − → while ( x − n, y, 0 + y · n ) [ x > 0 ∧ 0 < n ≤ x ] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · n while ( x, y, 0) − − → while ( x − n, y, y · n ) [ x > 0 ∧ 0 < n ≤ x ] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · n while ( x, y, 0) − − → while ( x − n, y, y · n ) [ x > 0 ∧ 0 < n ≤ x ] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while ( x − x, y, y · x ) [ x > 0 ∧ 0 < x ≤ x ] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while (0 , y, y · x ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while (0 , y, y · x ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] 5 · x +2 init ( x, y ) − − − → return ( y · x ) [ x > 0 ∧ y ≥ 0] � Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while (0 , y, y · x ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] 5 · x +2 init ( x, y ) − − − → return ( y · x ) [ x > 0 ∧ y ≥ 0] � Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while (0 , y, y · x ) [ x > 0] 1 while ( x, y, z ) → − return ( z ) [ x = 0] 5 · x +2 init ( x, y ) − − − → return ( y · x ) [ x > 0 ∧ y ≥ 0] � � whole program compressed into a single rule Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while (0 , y, y · x ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] 5 · x +2 init ( x, y ) − − − → return ( y · x ) [ x > 0 ∧ y ≥ 0] � � whole program compressed into a single rule � lower bound 5 · x + 2 for all x > 0 , y ≥ 0 Automated Complexity Analysis of Rewrite Systems 9
Chaining Example 1 init ( x, y ) − → while ( x, y, 0) [ x ≥ 0 ∧ y ≥ 0] 5 · x while ( x, y, 0) − − → while (0 , y, y · x ) [ x > 0] 1 while ( x, y, z ) − → return ( z ) [ x = 0] 5 · x +2 init ( x, y ) − − − → return ( y · x ) [ x > 0 ∧ y ≥ 0] � � whole program compressed into a single rule � lower bound 5 · x + 2 for all x > 0 , y ≥ 0 Works for arbitrary programs! Automated Complexity Analysis of Rewrite Systems 9
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs Automated Complexity Analysis of Rewrite Systems 10
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs key idea: loop acceleration Automated Complexity Analysis of Rewrite Systems 10
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs key idea: loop acceleration many other features, e.g.: Automated Complexity Analysis of Rewrite Systems 10
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs key idea: loop acceleration many other features, e.g.: non-determinism Automated Complexity Analysis of Rewrite Systems 10
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs key idea: loop acceleration many other features, e.g.: non-determinism asymptotic bounds Automated Complexity Analysis of Rewrite Systems 10
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs key idea: loop acceleration many other features, e.g.: non-determinism asymptotic bounds recursive void functions SMT encodings . . . Automated Complexity Analysis of Rewrite Systems 10
Lower Bounds for ITSs – Wrap-Up first technique to infer worst case lower bounds for ITSs key idea: loop acceleration many other features, e.g.: LoAT Ω( n 2 ) Ω( n 3 ) Ω( n 4 ) non-determinism rc ( n ) Ω(1) Ω( n ) EXP ∞ Best Upper Bound O (1) (132) – – – – – – asymptotic bounds O ( n ) 37 126 – – – – – recursive void functions O ( n 2 ) 8 14 35 – – – – SMT encodings O ( n 3 ) 2 – 2 1 – – – O ( n 4 ) 1 – – – 2 – – . . . EXP – – – – – 5 – ∞ 53 31 1 – – – 176 Automated Complexity Analysis of Rewrite Systems 10
Outline 1 Introduction 2 Lower Bounds for ITSs 3 Lower Bounds for TRSs 4 Constant Upper Bounds for TRSs Automated Complexity Analysis of Rewrite Systems 11
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) [ y/ 0 ] Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) [ y/ 0 ] − → cons ( 0 , inf ( s ( 0 ))) Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) [ y/ 0 ] − → cons ( 0 , inf ( s ( 0 ))) [ y/ s ( 0 )] Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) [ y/ 0 ] − → cons ( 0 , inf ( s ( 0 ))) [ y/ s ( 0 )] − → cons ( 0 , cons ( s ( 0 ) , inf ( s ( s ( 0 ))))) Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) [ y/ 0 ] − → cons ( 0 , inf ( s ( 0 ))) [ y/ s ( 0 )] − → cons ( 0 , cons ( s ( 0 ) , inf ( s ( s ( 0 ))))) [ y/ s ( s ( 0 ))] Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Example (Evaluation) inf ( 0 ) [ y/ 0 ] − → cons ( 0 , inf ( s ( 0 ))) [ y/ s ( 0 )] − → cons ( 0 , cons ( s ( 0 ) , inf ( s ( s ( 0 ))))) [ y/ s ( s ( 0 ))] − → . . . Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Loop Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( y ))) Loop = ⇒ Non-Termination Automated Complexity Analysis of Rewrite Systems 12
Evaluating TRSs Example (TRS) inf ( y ) − → cons ( y, inf ( s ( 0 ))) Loop = ⇒ Non-Termination Automated Complexity Analysis of Rewrite Systems 12
Decreasing Loops Example length ( cons ( x, x ′ )) − → s ( length ( x ′ )) Automated Complexity Analysis of Rewrite Systems 13
Decreasing Loops Example length ( cons ( x, x ′ )) − → s ( length ( x ′ )) Loop Automated Complexity Analysis of Rewrite Systems 13
Decreasing Loops Example length ( cons ( x, x ′ )) − → s ( length ( x ′ )) Decreasing Loop Loop Automated Complexity Analysis of Rewrite Systems 13
Decreasing Loops Example length ( cons ( x, x ′ )) − → s ( length ( x ′ )) Decreasing Loop = ⇒ Linear Lower Bound Loop Automated Complexity Analysis of Rewrite Systems 13
� Decreasing Loops Example length ( cons ( x, x ′ )) − → s ( length ( nil )) Decreasing Loop = ⇒ Linear Lower Bound Loop Automated Complexity Analysis of Rewrite Systems 13
Decreasing Loops Example length ( cons ( x, x ′ )) − → s ( length ( x ′ )) Decreasing Loop = ⇒ Linear Lower Bound Loop Automated Complexity Analysis of Rewrite Systems 13
Recommend
More recommend