*** 1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcs(@l1,@l2) -> lcs#1(lcstable(@l1,@l2)) lcs#1(@m) -> lcs#2(@m) lcs#2(::(@l1,@_@2)) -> lcs#3(@l1) lcs#2(nil()) -> #abs(#0()) lcs#3(::(@len,@_@1)) -> @len lcs#3(nil()) -> #abs(#0()) lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Weak DP Rules: Weak TRS Rules: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#abs,#add,#and,#ckgt,#compare,#eq,#equal,#greater,#pred,#succ,+,firstline,firstline#1,lcs,lcs#1,lcs#2,lcs#3,lcstable,lcstable#1,lcstable#2,lcstable#3,max,max#1,newline,newline#1,newline#2,newline#3,newline#4,newline#5,newline#6,newline#7,right,right#1}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: DependencyPairs {dpKind_ = DT} Proof: We add the following dependency tuples: Strict DPs #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) firstline#1#(nil()) -> c_10() lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#2#(nil(),@x,@xs,@y) -> c_30() newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Weak DPs #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() and mark the set of starting terms. *** 1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) firstline#1#(nil()) -> c_10() lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#2#(nil(),@x,@xs,@y) -> c_30() newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Strict TRS Rules: Weak DP Rules: #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() Weak TRS Rules: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcs(@l1,@l2) -> lcs#1(lcstable(@l1,@l2)) lcs#1(@m) -> lcs#2(@m) lcs#2(::(@l1,@_@2)) -> lcs#3(@l1) lcs#2(nil()) -> #abs(#0()) lcs#3(::(@len,@_@1)) -> @len lcs#3(nil()) -> #abs(#0()) lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: UsableRules Proof: We replace rewrite rules by usable rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) firstline#1#(nil()) -> c_10() lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#2#(nil(),@x,@xs,@y) -> c_30() newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) *** 1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) firstline#1#(nil()) -> c_10() lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#2#(nil(),@x,@xs,@y) -> c_30() newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Strict TRS Rules: Weak DP Rules: #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {1,2,3,4,5,6,7,10,15,22,24,25,28,30,34,38} by application of Pre({1,2,3,4,5,6,7,10,15,22,24,25,28,30,34,38}) = {8,9,13,14,16,20,23,26,27,33,36,37,39}. Here rules are labelled as follows: 1: #abs#(#0()) -> c_1() 2: #abs#(#neg(@x)) -> c_2() 3: #abs#(#pos(@x)) -> c_3() 4: #abs#(#s(@x)) -> c_4() 5: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 6: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 7: +#(@x,@y) -> c_7(#add#(@x,@y)) 8: firstline#(@l) -> c_8(firstline#1#(@l)) 9: firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) 10: firstline#1#(nil()) -> c_10() 11: lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)) ,lcstable#(@l1,@l2)) 12: lcs#1#(@m) -> c_12(lcs#2#(@m)) 13: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 14: lcs#2#(nil()) -> c_14(#abs#(#0())) 15: lcs#3#(::(@len,@_@1)) -> c_15() 16: lcs#3#(nil()) -> c_16(#abs#(#0())) 17: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 18: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 19: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 20: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 21: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 22: lcstable#3#(nil(),@l2,@x) -> c_22() 23: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 24: max#1#(#false(),@a,@b) -> c_24() 25: max#1#(#true(),@a,@b) -> c_25() 26: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 27: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 28: newline#1#(nil() ,@lastline ,@y) -> c_28() 29: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#3#(newline(@y ,@lastline' ,@xs) ,@belowVal ,@lastline' ,@x ,@y) ,newline#(@y,@lastline',@xs)) 30: newline#2#(nil(),@x,@xs,@y) -> c_30() 31: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 32: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 33: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 34: newline#6#(@elem,@nl) -> c_34() 35: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 36: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 37: right#(@l) -> c_37(right#1#(@l)) 38: right#1#(::(@x,@xs)) -> c_38() 39: right#1#(nil()) -> c_39(#abs#(#0())) 40: #add#(#0(),@y) -> c_40() 41: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 42: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 43: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 44: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 45: #and#(#false(),#false()) -> c_45() 46: #and#(#false(),#true()) -> c_46() 47: #and#(#true(),#false()) -> c_47() 48: #and#(#true(),#true()) -> c_48() 49: #ckgt#(#EQ()) -> c_49() 50: #ckgt#(#GT()) -> c_50() 51: #ckgt#(#LT()) -> c_51() 52: #compare#(#0(),#0()) -> c_52() 53: #compare#(#0(),#neg(@y)) -> c_53() 54: #compare#(#0(),#pos(@y)) -> c_54() 55: #compare#(#0(),#s(@y)) -> c_55() 56: #compare#(#neg(@x),#0()) -> c_56() 57: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 58: #compare#(#neg(@x),#pos(@y)) -> c_58() 59: #compare#(#pos(@x),#0()) -> c_59() 60: #compare#(#pos(@x),#neg(@y)) -> c_60() 61: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 62: #compare#(#s(@x),#0()) -> c_62() 63: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 64: #eq#(#0(),#0()) -> c_64() 65: #eq#(#0(),#neg(@y)) -> c_65() 66: #eq#(#0(),#pos(@y)) -> c_66() 67: #eq#(#0(),#s(@y)) -> c_67() 68: #eq#(#neg(@x),#0()) -> c_68() 69: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 70: #eq#(#neg(@x),#pos(@y)) -> c_70() 71: #eq#(#pos(@x),#0()) -> c_71() 72: #eq#(#pos(@x),#neg(@y)) -> c_72() 73: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 74: #eq#(#s(@x),#0()) -> c_74() 75: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 76: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 77: #eq#(::(@x_1,@x_2),nil()) -> c_77() 78: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 79: #eq#(nil(),nil()) -> c_79() 80: #pred#(#0()) -> c_80() 81: #pred#(#neg(#s(@x))) -> c_81() 82: #pred#(#pos(#s(#0()))) -> c_82() 83: #pred#(#pos(#s(#s(@x)))) -> c_83() 84: #succ#(#0()) -> c_84() 85: #succ#(#neg(#s(#0()))) -> c_85() 86: #succ#(#neg(#s(#s(@x)))) -> c_86() 87: #succ#(#pos(#s(@x))) -> c_87() *** 1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(nil()) -> c_39(#abs#(#0())) Strict TRS Rules: Weak DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#1#(nil()) -> c_10() lcs#3#(::(@len,@_@1)) -> c_15() lcstable#3#(nil(),@l2,@x) -> c_22() max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(nil(),@x,@xs,@y) -> c_30() newline#6#(@elem,@nl) -> c_34() right#1#(::(@x,@xs)) -> c_38() Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {6,7,13,21,23} by application of Pre({6,7,13,21,23}) = {4,5,19,20,22}. Here rules are labelled as follows: 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) 3: lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)) ,lcstable#(@l1,@l2)) 4: lcs#1#(@m) -> c_12(lcs#2#(@m)) 5: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 6: lcs#2#(nil()) -> c_14(#abs#(#0())) 7: lcs#3#(nil()) -> c_16(#abs#(#0())) 8: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 9: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 10: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 11: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 12: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 13: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 14: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 15: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 16: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#3#(newline(@y ,@lastline' ,@xs) ,@belowVal ,@lastline' ,@x ,@y) ,newline#(@y,@lastline',@xs)) 17: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 18: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 19: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 20: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 21: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 22: right#(@l) -> c_37(right#1#(@l)) 23: right#1#(nil()) -> c_39(#abs#(#0())) 24: #abs#(#0()) -> c_1() 25: #abs#(#neg(@x)) -> c_2() 26: #abs#(#pos(@x)) -> c_3() 27: #abs#(#s(@x)) -> c_4() 28: #add#(#0(),@y) -> c_40() 29: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 30: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 31: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 32: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 33: #and#(#false(),#false()) -> c_45() 34: #and#(#false(),#true()) -> c_46() 35: #and#(#true(),#false()) -> c_47() 36: #and#(#true(),#true()) -> c_48() 37: #ckgt#(#EQ()) -> c_49() 38: #ckgt#(#GT()) -> c_50() 39: #ckgt#(#LT()) -> c_51() 40: #compare#(#0(),#0()) -> c_52() 41: #compare#(#0(),#neg(@y)) -> c_53() 42: #compare#(#0(),#pos(@y)) -> c_54() 43: #compare#(#0(),#s(@y)) -> c_55() 44: #compare#(#neg(@x),#0()) -> c_56() 45: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 46: #compare#(#neg(@x),#pos(@y)) -> c_58() 47: #compare#(#pos(@x),#0()) -> c_59() 48: #compare#(#pos(@x),#neg(@y)) -> c_60() 49: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 50: #compare#(#s(@x),#0()) -> c_62() 51: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 52: #eq#(#0(),#0()) -> c_64() 53: #eq#(#0(),#neg(@y)) -> c_65() 54: #eq#(#0(),#pos(@y)) -> c_66() 55: #eq#(#0(),#s(@y)) -> c_67() 56: #eq#(#neg(@x),#0()) -> c_68() 57: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 58: #eq#(#neg(@x),#pos(@y)) -> c_70() 59: #eq#(#pos(@x),#0()) -> c_71() 60: #eq#(#pos(@x),#neg(@y)) -> c_72() 61: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 62: #eq#(#s(@x),#0()) -> c_74() 63: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 64: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 65: #eq#(::(@x_1,@x_2),nil()) -> c_77() 66: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 67: #eq#(nil(),nil()) -> c_79() 68: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 69: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 70: #pred#(#0()) -> c_80() 71: #pred#(#neg(#s(@x))) -> c_81() 72: #pred#(#pos(#s(#0()))) -> c_82() 73: #pred#(#pos(#s(#s(@x)))) -> c_83() 74: #succ#(#0()) -> c_84() 75: #succ#(#neg(#s(#0()))) -> c_85() 76: #succ#(#neg(#s(#s(@x)))) -> c_86() 77: #succ#(#pos(#s(@x))) -> c_87() 78: +#(@x,@y) -> c_7(#add#(@x,@y)) 79: firstline#1#(nil()) -> c_10() 80: lcs#3#(::(@len,@_@1)) -> c_15() 81: lcstable#3#(nil(),@l2,@x) -> c_22() 82: max#1#(#false(),@a,@b) -> c_24() 83: max#1#(#true(),@a,@b) -> c_25() 84: newline#1#(nil() ,@lastline ,@y) -> c_28() 85: newline#2#(nil(),@x,@xs,@y) -> c_30() 86: newline#6#(@elem,@nl) -> c_34() 87: right#1#(::(@x,@xs)) -> c_38() *** 1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) right#(@l) -> c_37(right#1#(@l)) Strict TRS Rules: Weak DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#1#(nil()) -> c_10() lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(nil(),@x,@xs,@y) -> c_30() newline#6#(@elem,@nl) -> c_34() newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {5,17,18} by application of Pre({5,17,18}) = {4,14,15,16}. Here rules are labelled as follows: 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) 3: lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)) ,lcstable#(@l1,@l2)) 4: lcs#1#(@m) -> c_12(lcs#2#(@m)) 5: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 6: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 7: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 8: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 9: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 10: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 11: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 12: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 13: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#3#(newline(@y ,@lastline' ,@xs) ,@belowVal ,@lastline' ,@x ,@y) ,newline#(@y,@lastline',@xs)) 14: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 15: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 16: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 17: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 18: right#(@l) -> c_37(right#1#(@l)) 19: #abs#(#0()) -> c_1() 20: #abs#(#neg(@x)) -> c_2() 21: #abs#(#pos(@x)) -> c_3() 22: #abs#(#s(@x)) -> c_4() 23: #add#(#0(),@y) -> c_40() 24: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 25: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 26: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 27: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 28: #and#(#false(),#false()) -> c_45() 29: #and#(#false(),#true()) -> c_46() 30: #and#(#true(),#false()) -> c_47() 31: #and#(#true(),#true()) -> c_48() 32: #ckgt#(#EQ()) -> c_49() 33: #ckgt#(#GT()) -> c_50() 34: #ckgt#(#LT()) -> c_51() 35: #compare#(#0(),#0()) -> c_52() 36: #compare#(#0(),#neg(@y)) -> c_53() 37: #compare#(#0(),#pos(@y)) -> c_54() 38: #compare#(#0(),#s(@y)) -> c_55() 39: #compare#(#neg(@x),#0()) -> c_56() 40: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 41: #compare#(#neg(@x),#pos(@y)) -> c_58() 42: #compare#(#pos(@x),#0()) -> c_59() 43: #compare#(#pos(@x),#neg(@y)) -> c_60() 44: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 45: #compare#(#s(@x),#0()) -> c_62() 46: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 47: #eq#(#0(),#0()) -> c_64() 48: #eq#(#0(),#neg(@y)) -> c_65() 49: #eq#(#0(),#pos(@y)) -> c_66() 50: #eq#(#0(),#s(@y)) -> c_67() 51: #eq#(#neg(@x),#0()) -> c_68() 52: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 53: #eq#(#neg(@x),#pos(@y)) -> c_70() 54: #eq#(#pos(@x),#0()) -> c_71() 55: #eq#(#pos(@x),#neg(@y)) -> c_72() 56: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 57: #eq#(#s(@x),#0()) -> c_74() 58: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 59: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 60: #eq#(::(@x_1,@x_2),nil()) -> c_77() 61: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 62: #eq#(nil(),nil()) -> c_79() 63: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 64: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 65: #pred#(#0()) -> c_80() 66: #pred#(#neg(#s(@x))) -> c_81() 67: #pred#(#pos(#s(#0()))) -> c_82() 68: #pred#(#pos(#s(#s(@x)))) -> c_83() 69: #succ#(#0()) -> c_84() 70: #succ#(#neg(#s(#0()))) -> c_85() 71: #succ#(#neg(#s(#s(@x)))) -> c_86() 72: #succ#(#pos(#s(@x))) -> c_87() 73: +#(@x,@y) -> c_7(#add#(@x,@y)) 74: firstline#1#(nil()) -> c_10() 75: lcs#2#(nil()) -> c_14(#abs#(#0())) 76: lcs#3#(::(@len,@_@1)) -> c_15() 77: lcs#3#(nil()) -> c_16(#abs#(#0())) 78: lcstable#3#(nil(),@l2,@x) -> c_22() 79: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 80: max#1#(#false(),@a,@b) -> c_24() 81: max#1#(#true(),@a,@b) -> c_25() 82: newline#1#(nil() ,@lastline ,@y) -> c_28() 83: newline#2#(nil(),@x,@xs,@y) -> c_30() 84: newline#6#(@elem,@nl) -> c_34() 85: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 86: right#1#(::(@x,@xs)) -> c_38() 87: right#1#(nil()) -> c_39(#abs#(#0())) *** 1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcs#1#(@m) -> c_12(lcs#2#(@m)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) Strict TRS Rules: Weak DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#1#(nil()) -> c_10() lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(nil(),@x,@xs,@y) -> c_30() newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {4,15} by application of Pre({4,15}) = {3,14}. Here rules are labelled as follows: 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) 3: lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)) ,lcstable#(@l1,@l2)) 4: lcs#1#(@m) -> c_12(lcs#2#(@m)) 5: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 6: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 7: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 8: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 9: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 10: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 11: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 12: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#3#(newline(@y ,@lastline' ,@xs) ,@belowVal ,@lastline' ,@x ,@y) ,newline#(@y,@lastline',@xs)) 13: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 14: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 15: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 16: #abs#(#0()) -> c_1() 17: #abs#(#neg(@x)) -> c_2() 18: #abs#(#pos(@x)) -> c_3() 19: #abs#(#s(@x)) -> c_4() 20: #add#(#0(),@y) -> c_40() 21: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 22: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 23: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 24: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 25: #and#(#false(),#false()) -> c_45() 26: #and#(#false(),#true()) -> c_46() 27: #and#(#true(),#false()) -> c_47() 28: #and#(#true(),#true()) -> c_48() 29: #ckgt#(#EQ()) -> c_49() 30: #ckgt#(#GT()) -> c_50() 31: #ckgt#(#LT()) -> c_51() 32: #compare#(#0(),#0()) -> c_52() 33: #compare#(#0(),#neg(@y)) -> c_53() 34: #compare#(#0(),#pos(@y)) -> c_54() 35: #compare#(#0(),#s(@y)) -> c_55() 36: #compare#(#neg(@x),#0()) -> c_56() 37: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 38: #compare#(#neg(@x),#pos(@y)) -> c_58() 39: #compare#(#pos(@x),#0()) -> c_59() 40: #compare#(#pos(@x),#neg(@y)) -> c_60() 41: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 42: #compare#(#s(@x),#0()) -> c_62() 43: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 44: #eq#(#0(),#0()) -> c_64() 45: #eq#(#0(),#neg(@y)) -> c_65() 46: #eq#(#0(),#pos(@y)) -> c_66() 47: #eq#(#0(),#s(@y)) -> c_67() 48: #eq#(#neg(@x),#0()) -> c_68() 49: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 50: #eq#(#neg(@x),#pos(@y)) -> c_70() 51: #eq#(#pos(@x),#0()) -> c_71() 52: #eq#(#pos(@x),#neg(@y)) -> c_72() 53: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 54: #eq#(#s(@x),#0()) -> c_74() 55: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 56: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 57: #eq#(::(@x_1,@x_2),nil()) -> c_77() 58: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 59: #eq#(nil(),nil()) -> c_79() 60: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 61: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 62: #pred#(#0()) -> c_80() 63: #pred#(#neg(#s(@x))) -> c_81() 64: #pred#(#pos(#s(#0()))) -> c_82() 65: #pred#(#pos(#s(#s(@x)))) -> c_83() 66: #succ#(#0()) -> c_84() 67: #succ#(#neg(#s(#0()))) -> c_85() 68: #succ#(#neg(#s(#s(@x)))) -> c_86() 69: #succ#(#pos(#s(@x))) -> c_87() 70: +#(@x,@y) -> c_7(#add#(@x,@y)) 71: firstline#1#(nil()) -> c_10() 72: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 73: lcs#2#(nil()) -> c_14(#abs#(#0())) 74: lcs#3#(::(@len,@_@1)) -> c_15() 75: lcs#3#(nil()) -> c_16(#abs#(#0())) 76: lcstable#3#(nil(),@l2,@x) -> c_22() 77: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 78: max#1#(#false(),@a,@b) -> c_24() 79: max#1#(#true(),@a,@b) -> c_25() 80: newline#1#(nil() ,@lastline ,@y) -> c_28() 81: newline#2#(nil(),@x,@xs,@y) -> c_30() 82: newline#6#(@elem,@nl) -> c_34() 83: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 84: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 85: right#(@l) -> c_37(right#1#(@l)) 86: right#1#(::(@x,@xs)) -> c_38() 87: right#1#(nil()) -> c_39(#abs#(#0())) *** 1.1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) Strict TRS Rules: Weak DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#1#(nil()) -> c_10() lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(nil(),@x,@xs,@y) -> c_30() newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {13} by application of Pre({13}) = {12}. Here rules are labelled as follows: 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) 3: lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)) ,lcstable#(@l1,@l2)) 4: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 5: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 6: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 7: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 8: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 9: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 10: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 11: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#3#(newline(@y ,@lastline' ,@xs) ,@belowVal ,@lastline' ,@x ,@y) ,newline#(@y,@lastline',@xs)) 12: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 13: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 14: #abs#(#0()) -> c_1() 15: #abs#(#neg(@x)) -> c_2() 16: #abs#(#pos(@x)) -> c_3() 17: #abs#(#s(@x)) -> c_4() 18: #add#(#0(),@y) -> c_40() 19: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 20: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 21: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 22: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 23: #and#(#false(),#false()) -> c_45() 24: #and#(#false(),#true()) -> c_46() 25: #and#(#true(),#false()) -> c_47() 26: #and#(#true(),#true()) -> c_48() 27: #ckgt#(#EQ()) -> c_49() 28: #ckgt#(#GT()) -> c_50() 29: #ckgt#(#LT()) -> c_51() 30: #compare#(#0(),#0()) -> c_52() 31: #compare#(#0(),#neg(@y)) -> c_53() 32: #compare#(#0(),#pos(@y)) -> c_54() 33: #compare#(#0(),#s(@y)) -> c_55() 34: #compare#(#neg(@x),#0()) -> c_56() 35: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 36: #compare#(#neg(@x),#pos(@y)) -> c_58() 37: #compare#(#pos(@x),#0()) -> c_59() 38: #compare#(#pos(@x),#neg(@y)) -> c_60() 39: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 40: #compare#(#s(@x),#0()) -> c_62() 41: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 42: #eq#(#0(),#0()) -> c_64() 43: #eq#(#0(),#neg(@y)) -> c_65() 44: #eq#(#0(),#pos(@y)) -> c_66() 45: #eq#(#0(),#s(@y)) -> c_67() 46: #eq#(#neg(@x),#0()) -> c_68() 47: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 48: #eq#(#neg(@x),#pos(@y)) -> c_70() 49: #eq#(#pos(@x),#0()) -> c_71() 50: #eq#(#pos(@x),#neg(@y)) -> c_72() 51: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 52: #eq#(#s(@x),#0()) -> c_74() 53: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 54: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 55: #eq#(::(@x_1,@x_2),nil()) -> c_77() 56: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 57: #eq#(nil(),nil()) -> c_79() 58: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 59: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 60: #pred#(#0()) -> c_80() 61: #pred#(#neg(#s(@x))) -> c_81() 62: #pred#(#pos(#s(#0()))) -> c_82() 63: #pred#(#pos(#s(#s(@x)))) -> c_83() 64: #succ#(#0()) -> c_84() 65: #succ#(#neg(#s(#0()))) -> c_85() 66: #succ#(#neg(#s(#s(@x)))) -> c_86() 67: #succ#(#pos(#s(@x))) -> c_87() 68: +#(@x,@y) -> c_7(#add#(@x,@y)) 69: firstline#1#(nil()) -> c_10() 70: lcs#1#(@m) -> c_12(lcs#2#(@m)) 71: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 72: lcs#2#(nil()) -> c_14(#abs#(#0())) 73: lcs#3#(::(@len,@_@1)) -> c_15() 74: lcs#3#(nil()) -> c_16(#abs#(#0())) 75: lcstable#3#(nil(),@l2,@x) -> c_22() 76: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 77: max#1#(#false(),@a,@b) -> c_24() 78: max#1#(#true(),@a,@b) -> c_25() 79: newline#1#(nil() ,@lastline ,@y) -> c_28() 80: newline#2#(nil(),@x,@xs,@y) -> c_30() 81: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 82: newline#6#(@elem,@nl) -> c_34() 83: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 84: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 85: right#(@l) -> c_37(right#1#(@l)) 86: right#1#(::(@x,@xs)) -> c_38() 87: right#1#(nil()) -> c_39(#abs#(#0())) *** 1.1.1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) Strict TRS Rules: Weak DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#1#(nil()) -> c_10() lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(nil(),@x,@xs,@y) -> c_30() newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {12} by application of Pre({12}) = {11}. Here rules are labelled as follows: 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) 3: lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)) ,lcstable#(@l1,@l2)) 4: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 5: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 6: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 7: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 8: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 9: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 10: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 11: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#3#(newline(@y ,@lastline' ,@xs) ,@belowVal ,@lastline' ,@x ,@y) ,newline#(@y,@lastline',@xs)) 12: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 13: #abs#(#0()) -> c_1() 14: #abs#(#neg(@x)) -> c_2() 15: #abs#(#pos(@x)) -> c_3() 16: #abs#(#s(@x)) -> c_4() 17: #add#(#0(),@y) -> c_40() 18: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 19: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 20: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 21: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 22: #and#(#false(),#false()) -> c_45() 23: #and#(#false(),#true()) -> c_46() 24: #and#(#true(),#false()) -> c_47() 25: #and#(#true(),#true()) -> c_48() 26: #ckgt#(#EQ()) -> c_49() 27: #ckgt#(#GT()) -> c_50() 28: #ckgt#(#LT()) -> c_51() 29: #compare#(#0(),#0()) -> c_52() 30: #compare#(#0(),#neg(@y)) -> c_53() 31: #compare#(#0(),#pos(@y)) -> c_54() 32: #compare#(#0(),#s(@y)) -> c_55() 33: #compare#(#neg(@x),#0()) -> c_56() 34: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 35: #compare#(#neg(@x),#pos(@y)) -> c_58() 36: #compare#(#pos(@x),#0()) -> c_59() 37: #compare#(#pos(@x),#neg(@y)) -> c_60() 38: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 39: #compare#(#s(@x),#0()) -> c_62() 40: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 41: #eq#(#0(),#0()) -> c_64() 42: #eq#(#0(),#neg(@y)) -> c_65() 43: #eq#(#0(),#pos(@y)) -> c_66() 44: #eq#(#0(),#s(@y)) -> c_67() 45: #eq#(#neg(@x),#0()) -> c_68() 46: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 47: #eq#(#neg(@x),#pos(@y)) -> c_70() 48: #eq#(#pos(@x),#0()) -> c_71() 49: #eq#(#pos(@x),#neg(@y)) -> c_72() 50: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 51: #eq#(#s(@x),#0()) -> c_74() 52: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 53: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 54: #eq#(::(@x_1,@x_2),nil()) -> c_77() 55: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 56: #eq#(nil(),nil()) -> c_79() 57: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 58: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 59: #pred#(#0()) -> c_80() 60: #pred#(#neg(#s(@x))) -> c_81() 61: #pred#(#pos(#s(#0()))) -> c_82() 62: #pred#(#pos(#s(#s(@x)))) -> c_83() 63: #succ#(#0()) -> c_84() 64: #succ#(#neg(#s(#0()))) -> c_85() 65: #succ#(#neg(#s(#s(@x)))) -> c_86() 66: #succ#(#pos(#s(@x))) -> c_87() 67: +#(@x,@y) -> c_7(#add#(@x,@y)) 68: firstline#1#(nil()) -> c_10() 69: lcs#1#(@m) -> c_12(lcs#2#(@m)) 70: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 71: lcs#2#(nil()) -> c_14(#abs#(#0())) 72: lcs#3#(::(@len,@_@1)) -> c_15() 73: lcs#3#(nil()) -> c_16(#abs#(#0())) 74: lcstable#3#(nil(),@l2,@x) -> c_22() 75: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 76: max#1#(#false(),@a,@b) -> c_24() 77: max#1#(#true(),@a,@b) -> c_25() 78: newline#1#(nil() ,@lastline ,@y) -> c_28() 79: newline#2#(nil(),@x,@xs,@y) -> c_30() 80: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 81: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 82: newline#6#(@elem,@nl) -> c_34() 83: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 84: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 85: right#(@l) -> c_37(right#1#(@l)) 86: right#1#(::(@x,@xs)) -> c_38() 87: right#1#(nil()) -> c_39(#abs#(#0())) *** 1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_40() #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_45() #and#(#false(),#true()) -> c_46() #and#(#true(),#false()) -> c_47() #and#(#true(),#true()) -> c_48() #ckgt#(#EQ()) -> c_49() #ckgt#(#GT()) -> c_50() #ckgt#(#LT()) -> c_51() #compare#(#0(),#0()) -> c_52() #compare#(#0(),#neg(@y)) -> c_53() #compare#(#0(),#pos(@y)) -> c_54() #compare#(#0(),#s(@y)) -> c_55() #compare#(#neg(@x),#0()) -> c_56() #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_58() #compare#(#pos(@x),#0()) -> c_59() #compare#(#pos(@x),#neg(@y)) -> c_60() #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_62() #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) #eq#(#0(),#0()) -> c_64() #eq#(#0(),#neg(@y)) -> c_65() #eq#(#0(),#pos(@y)) -> c_66() #eq#(#0(),#s(@y)) -> c_67() #eq#(#neg(@x),#0()) -> c_68() #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_70() #eq#(#pos(@x),#0()) -> c_71() #eq#(#pos(@x),#neg(@y)) -> c_72() #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_74() #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_77() #eq#(nil(),::(@y_1,@y_2)) -> c_78() #eq#(nil(),nil()) -> c_79() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #pred#(#0()) -> c_80() #pred#(#neg(#s(@x))) -> c_81() #pred#(#pos(#s(#0()))) -> c_82() #pred#(#pos(#s(#s(@x)))) -> c_83() #succ#(#0()) -> c_84() #succ#(#neg(#s(#0()))) -> c_85() #succ#(#neg(#s(#s(@x)))) -> c_86() #succ#(#pos(#s(@x))) -> c_87() +#(@x,@y) -> c_7(#add#(@x,@y)) firstline#1#(nil()) -> c_10() lcs#1#(@m) -> c_12(lcs#2#(@m)) lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) lcs#2#(nil()) -> c_14(#abs#(#0())) lcs#3#(::(@len,@_@1)) -> c_15() lcs#3#(nil()) -> c_16(#abs#(#0())) lcstable#3#(nil(),@l2,@x) -> c_22() max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) max#1#(#false(),@a,@b) -> c_24() max#1#(#true(),@a,@b) -> c_25() newline#1#(nil(),@lastline,@y) -> c_28() newline#2#(nil(),@x,@xs,@y) -> c_30() newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) newline#6#(@elem,@nl) -> c_34() newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) right#(@l) -> c_37(right#1#(@l)) right#1#(::(@x,@xs)) -> c_38() right#1#(nil()) -> c_39(#abs#(#0())) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: RemoveWeakSuffixes Proof: Consider the dependency graph 1:S:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)):2 -->_1 firstline#1#(nil()) -> c_10():67 2:S:firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) -->_1 #abs#(#0()) -> c_1():12 -->_2 firstline#(@l) -> c_8(firstline#1#(@l)):1 3:S:lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) -->_1 lcs#1#(@m) -> c_12(lcs#2#(@m)):68 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 4:S:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):6 -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):5 5:S:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_1 lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)):7 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 6:S:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 7:S:lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) -->_1 lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)):8 -->_1 lcstable#3#(nil(),@l2,@x) -> c_22():73 8:S:lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 9:S:newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) -->_1 newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)):10 -->_1 newline#1#(nil(),@lastline,@y) -> c_28():77 10:S:newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) -->_1 newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)):11 -->_1 newline#2#(nil(),@x,@xs,@y) -> c_30():78 11:S:newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) -->_1 newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)):79 -->_2 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 12:W:#abs#(#0()) -> c_1() 13:W:#abs#(#neg(@x)) -> c_2() 14:W:#abs#(#pos(@x)) -> c_3() 15:W:#abs#(#s(@x)) -> c_4() 16:W:#add#(#0(),@y) -> c_40() 17:W:#add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) -->_1 #pred#(#pos(#s(#s(@x)))) -> c_83():61 -->_1 #pred#(#pos(#s(#0()))) -> c_82():60 -->_1 #pred#(#neg(#s(@x))) -> c_81():59 -->_1 #pred#(#0()) -> c_80():58 18:W:#add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):20 -->_2 #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)):19 -->_1 #pred#(#pos(#s(#s(@x)))) -> c_83():61 -->_1 #pred#(#pos(#s(#0()))) -> c_82():60 -->_1 #pred#(#neg(#s(@x))) -> c_81():59 -->_1 #pred#(#0()) -> c_80():58 19:W:#add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) -->_1 #succ#(#pos(#s(@x))) -> c_87():65 -->_1 #succ#(#neg(#s(#s(@x)))) -> c_86():64 -->_1 #succ#(#neg(#s(#0()))) -> c_85():63 -->_1 #succ#(#0()) -> c_84():62 20:W:#add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) -->_1 #succ#(#pos(#s(@x))) -> c_87():65 -->_1 #succ#(#neg(#s(#s(@x)))) -> c_86():64 -->_1 #succ#(#neg(#s(#0()))) -> c_85():63 -->_1 #succ#(#0()) -> c_84():62 -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):20 -->_2 #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)):19 21:W:#and#(#false(),#false()) -> c_45() 22:W:#and#(#false(),#true()) -> c_46() 23:W:#and#(#true(),#false()) -> c_47() 24:W:#and#(#true(),#true()) -> c_48() 25:W:#ckgt#(#EQ()) -> c_49() 26:W:#ckgt#(#GT()) -> c_50() 27:W:#ckgt#(#LT()) -> c_51() 28:W:#compare#(#0(),#0()) -> c_52() 29:W:#compare#(#0(),#neg(@y)) -> c_53() 30:W:#compare#(#0(),#pos(@y)) -> c_54() 31:W:#compare#(#0(),#s(@y)) -> c_55() 32:W:#compare#(#neg(@x),#0()) -> c_56() 33:W:#compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) -->_1 #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)):39 -->_1 #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)):37 -->_1 #compare#(#s(@x),#0()) -> c_62():38 -->_1 #compare#(#pos(@x),#neg(@y)) -> c_60():36 -->_1 #compare#(#pos(@x),#0()) -> c_59():35 -->_1 #compare#(#neg(@x),#pos(@y)) -> c_58():34 -->_1 #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)):33 -->_1 #compare#(#neg(@x),#0()) -> c_56():32 -->_1 #compare#(#0(),#s(@y)) -> c_55():31 -->_1 #compare#(#0(),#pos(@y)) -> c_54():30 -->_1 #compare#(#0(),#neg(@y)) -> c_53():29 -->_1 #compare#(#0(),#0()) -> c_52():28 34:W:#compare#(#neg(@x),#pos(@y)) -> c_58() 35:W:#compare#(#pos(@x),#0()) -> c_59() 36:W:#compare#(#pos(@x),#neg(@y)) -> c_60() 37:W:#compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) -->_1 #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)):39 -->_1 #compare#(#s(@x),#0()) -> c_62():38 -->_1 #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)):37 -->_1 #compare#(#pos(@x),#neg(@y)) -> c_60():36 -->_1 #compare#(#pos(@x),#0()) -> c_59():35 -->_1 #compare#(#neg(@x),#pos(@y)) -> c_58():34 -->_1 #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)):33 -->_1 #compare#(#neg(@x),#0()) -> c_56():32 -->_1 #compare#(#0(),#s(@y)) -> c_55():31 -->_1 #compare#(#0(),#pos(@y)) -> c_54():30 -->_1 #compare#(#0(),#neg(@y)) -> c_53():29 -->_1 #compare#(#0(),#0()) -> c_52():28 38:W:#compare#(#s(@x),#0()) -> c_62() 39:W:#compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) -->_1 #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)):39 -->_1 #compare#(#s(@x),#0()) -> c_62():38 -->_1 #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)):37 -->_1 #compare#(#pos(@x),#neg(@y)) -> c_60():36 -->_1 #compare#(#pos(@x),#0()) -> c_59():35 -->_1 #compare#(#neg(@x),#pos(@y)) -> c_58():34 -->_1 #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)):33 -->_1 #compare#(#neg(@x),#0()) -> c_56():32 -->_1 #compare#(#0(),#s(@y)) -> c_55():31 -->_1 #compare#(#0(),#pos(@y)) -> c_54():30 -->_1 #compare#(#0(),#neg(@y)) -> c_53():29 -->_1 #compare#(#0(),#0()) -> c_52():28 40:W:#eq#(#0(),#0()) -> c_64() 41:W:#eq#(#0(),#neg(@y)) -> c_65() 42:W:#eq#(#0(),#pos(@y)) -> c_66() 43:W:#eq#(#0(),#s(@y)) -> c_67() 44:W:#eq#(#neg(@x),#0()) -> c_68() 45:W:#eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)):52 -->_1 #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)):51 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)):49 -->_1 #eq#(nil(),nil()) -> c_79():55 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_78():54 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_77():53 -->_1 #eq#(#s(@x),#0()) -> c_74():50 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_72():48 -->_1 #eq#(#pos(@x),#0()) -> c_71():47 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_70():46 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)):45 -->_1 #eq#(#neg(@x),#0()) -> c_68():44 -->_1 #eq#(#0(),#s(@y)) -> c_67():43 -->_1 #eq#(#0(),#pos(@y)) -> c_66():42 -->_1 #eq#(#0(),#neg(@y)) -> c_65():41 -->_1 #eq#(#0(),#0()) -> c_64():40 46:W:#eq#(#neg(@x),#pos(@y)) -> c_70() 47:W:#eq#(#pos(@x),#0()) -> c_71() 48:W:#eq#(#pos(@x),#neg(@y)) -> c_72() 49:W:#eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)):52 -->_1 #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)):51 -->_1 #eq#(nil(),nil()) -> c_79():55 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_78():54 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_77():53 -->_1 #eq#(#s(@x),#0()) -> c_74():50 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)):49 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_72():48 -->_1 #eq#(#pos(@x),#0()) -> c_71():47 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_70():46 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)):45 -->_1 #eq#(#neg(@x),#0()) -> c_68():44 -->_1 #eq#(#0(),#s(@y)) -> c_67():43 -->_1 #eq#(#0(),#pos(@y)) -> c_66():42 -->_1 #eq#(#0(),#neg(@y)) -> c_65():41 -->_1 #eq#(#0(),#0()) -> c_64():40 50:W:#eq#(#s(@x),#0()) -> c_74() 51:W:#eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)):52 -->_1 #eq#(nil(),nil()) -> c_79():55 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_78():54 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_77():53 -->_1 #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)):51 -->_1 #eq#(#s(@x),#0()) -> c_74():50 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)):49 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_72():48 -->_1 #eq#(#pos(@x),#0()) -> c_71():47 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_70():46 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)):45 -->_1 #eq#(#neg(@x),#0()) -> c_68():44 -->_1 #eq#(#0(),#s(@y)) -> c_67():43 -->_1 #eq#(#0(),#pos(@y)) -> c_66():42 -->_1 #eq#(#0(),#neg(@y)) -> c_65():41 -->_1 #eq#(#0(),#0()) -> c_64():40 52:W:#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)) -->_3 #eq#(nil(),nil()) -> c_79():55 -->_2 #eq#(nil(),nil()) -> c_79():55 -->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_78():54 -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_78():54 -->_3 #eq#(::(@x_1,@x_2),nil()) -> c_77():53 -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_77():53 -->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)):52 -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)):52 -->_3 #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)):51 -->_2 #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)):51 -->_3 #eq#(#s(@x),#0()) -> c_74():50 -->_2 #eq#(#s(@x),#0()) -> c_74():50 -->_3 #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)):49 -->_2 #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)):49 -->_3 #eq#(#pos(@x),#neg(@y)) -> c_72():48 -->_2 #eq#(#pos(@x),#neg(@y)) -> c_72():48 -->_3 #eq#(#pos(@x),#0()) -> c_71():47 -->_2 #eq#(#pos(@x),#0()) -> c_71():47 -->_3 #eq#(#neg(@x),#pos(@y)) -> c_70():46 -->_2 #eq#(#neg(@x),#pos(@y)) -> c_70():46 -->_3 #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)):45 -->_2 #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)):45 -->_3 #eq#(#neg(@x),#0()) -> c_68():44 -->_2 #eq#(#neg(@x),#0()) -> c_68():44 -->_3 #eq#(#0(),#s(@y)) -> c_67():43 -->_2 #eq#(#0(),#s(@y)) -> c_67():43 -->_3 #eq#(#0(),#pos(@y)) -> c_66():42 -->_2 #eq#(#0(),#pos(@y)) -> c_66():42 -->_3 #eq#(#0(),#neg(@y)) -> c_65():41 -->_2 #eq#(#0(),#neg(@y)) -> c_65():41 -->_3 #eq#(#0(),#0()) -> c_64():40 -->_2 #eq#(#0(),#0()) -> c_64():40 -->_1 #and#(#true(),#true()) -> c_48():24 -->_1 #and#(#true(),#false()) -> c_47():23 -->_1 #and#(#false(),#true()) -> c_46():22 -->_1 #and#(#false(),#false()) -> c_45():21 53:W:#eq#(::(@x_1,@x_2),nil()) -> c_77() 54:W:#eq#(nil(),::(@y_1,@y_2)) -> c_78() 55:W:#eq#(nil(),nil()) -> c_79() 56:W:#equal#(@x,@y) -> c_5(#eq#(@x,@y)) -->_1 #eq#(nil(),nil()) -> c_79():55 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_78():54 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_77():53 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)),#eq#(@x_1,@y_1),#eq#(@x_2,@y_2)):52 -->_1 #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)):51 -->_1 #eq#(#s(@x),#0()) -> c_74():50 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)):49 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_72():48 -->_1 #eq#(#pos(@x),#0()) -> c_71():47 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_70():46 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)):45 -->_1 #eq#(#neg(@x),#0()) -> c_68():44 -->_1 #eq#(#0(),#s(@y)) -> c_67():43 -->_1 #eq#(#0(),#pos(@y)) -> c_66():42 -->_1 #eq#(#0(),#neg(@y)) -> c_65():41 -->_1 #eq#(#0(),#0()) -> c_64():40 57:W:#greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) -->_2 #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)):39 -->_2 #compare#(#s(@x),#0()) -> c_62():38 -->_2 #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)):37 -->_2 #compare#(#pos(@x),#neg(@y)) -> c_60():36 -->_2 #compare#(#pos(@x),#0()) -> c_59():35 -->_2 #compare#(#neg(@x),#pos(@y)) -> c_58():34 -->_2 #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)):33 -->_2 #compare#(#neg(@x),#0()) -> c_56():32 -->_2 #compare#(#0(),#s(@y)) -> c_55():31 -->_2 #compare#(#0(),#pos(@y)) -> c_54():30 -->_2 #compare#(#0(),#neg(@y)) -> c_53():29 -->_2 #compare#(#0(),#0()) -> c_52():28 -->_1 #ckgt#(#LT()) -> c_51():27 -->_1 #ckgt#(#GT()) -> c_50():26 -->_1 #ckgt#(#EQ()) -> c_49():25 58:W:#pred#(#0()) -> c_80() 59:W:#pred#(#neg(#s(@x))) -> c_81() 60:W:#pred#(#pos(#s(#0()))) -> c_82() 61:W:#pred#(#pos(#s(#s(@x)))) -> c_83() 62:W:#succ#(#0()) -> c_84() 63:W:#succ#(#neg(#s(#0()))) -> c_85() 64:W:#succ#(#neg(#s(#s(@x)))) -> c_86() 65:W:#succ#(#pos(#s(@x))) -> c_87() 66:W:+#(@x,@y) -> c_7(#add#(@x,@y)) -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):20 -->_1 #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)):19 -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):18 -->_1 #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)):17 -->_1 #add#(#0(),@y) -> c_40():16 67:W:firstline#1#(nil()) -> c_10() 68:W:lcs#1#(@m) -> c_12(lcs#2#(@m)) -->_1 lcs#2#(nil()) -> c_14(#abs#(#0())):70 -->_1 lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)):69 69:W:lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) -->_1 lcs#3#(nil()) -> c_16(#abs#(#0())):72 -->_1 lcs#3#(::(@len,@_@1)) -> c_15():71 70:W:lcs#2#(nil()) -> c_14(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():12 71:W:lcs#3#(::(@len,@_@1)) -> c_15() 72:W:lcs#3#(nil()) -> c_16(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():12 73:W:lcstable#3#(nil(),@l2,@x) -> c_22() 74:W:max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)) -->_1 max#1#(#true(),@a,@b) -> c_25():76 -->_1 max#1#(#false(),@a,@b) -> c_24():75 -->_2 #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)):57 75:W:max#1#(#false(),@a,@b) -> c_24() 76:W:max#1#(#true(),@a,@b) -> c_25() 77:W:newline#1#(nil(),@lastline,@y) -> c_28() 78:W:newline#2#(nil(),@x,@xs,@y) -> c_30() 79:W:newline#3#(@nl,@belowVal,@lastline',@x,@y) -> c_31(newline#4#(right(@nl),@belowVal,@lastline',@nl,@x,@y),right#(@nl)) -->_2 right#(@l) -> c_37(right#1#(@l)):85 -->_1 newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')):80 80:W:newline#4#(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> c_32(newline#5#(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y),right#(@lastline')) -->_2 right#(@l) -> c_37(right#1#(@l)):85 -->_1 newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)):81 81:W:newline#5#(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> c_33(newline#6#(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl),newline#7#(#equal(@x,@y),@belowVal,@diagVal,@rightVal),#equal#(@x,@y)) -->_2 newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))):84 -->_2 newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)):83 -->_1 newline#6#(@elem,@nl) -> c_34():82 -->_3 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):56 82:W:newline#6#(@elem,@nl) -> c_34() 83:W:newline#7#(#false(),@belowVal,@diagVal,@rightVal) -> c_35(max#(@belowVal,@rightVal)) -->_1 max#(@a,@b) -> c_23(max#1#(#greater(@a,@b),@a,@b),#greater#(@a,@b)):74 84:W:newline#7#(#true(),@belowVal,@diagVal,@rightVal) -> c_36(+#(@diagVal,#pos(#s(#0())))) -->_1 +#(@x,@y) -> c_7(#add#(@x,@y)):66 85:W:right#(@l) -> c_37(right#1#(@l)) -->_1 right#1#(nil()) -> c_39(#abs#(#0())):87 -->_1 right#1#(::(@x,@xs)) -> c_38():86 86:W:right#1#(::(@x,@xs)) -> c_38() 87:W:right#1#(nil()) -> c_39(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():12 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 15: #abs#(#s(@x)) -> c_4() 14: #abs#(#pos(@x)) -> c_3() 13: #abs#(#neg(@x)) -> c_2() 73: lcstable#3#(nil(),@l2,@x) -> c_22() 77: newline#1#(nil() ,@lastline ,@y) -> c_28() 78: newline#2#(nil(),@x,@xs,@y) -> c_30() 79: newline#3#(@nl ,@belowVal ,@lastline' ,@x ,@y) -> c_31(newline#4#(right(@nl) ,@belowVal ,@lastline' ,@nl ,@x ,@y) ,right#(@nl)) 80: newline#4#(@rightVal ,@belowVal ,@lastline' ,@nl ,@x ,@y) -> c_32(newline#5#(right(@lastline') ,@belowVal ,@nl ,@rightVal ,@x ,@y) ,right#(@lastline')) 81: newline#5#(@diagVal ,@belowVal ,@nl ,@rightVal ,@x ,@y) -> c_33(newline#6#(newline#7(#equal(@x ,@y) ,@belowVal ,@diagVal ,@rightVal) ,@nl) ,newline#7#(#equal(@x,@y) ,@belowVal ,@diagVal ,@rightVal) ,#equal#(@x,@y)) 56: #equal#(@x,@y) -> c_5(#eq#(@x ,@y)) 52: #eq#(::(@x_1,@x_2) ,::(@y_1,@y_2)) -> c_76(#and#(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 51: #eq#(#s(@x),#s(@y)) -> c_75(#eq#(@x,@y)) 49: #eq#(#pos(@x),#pos(@y)) -> c_73(#eq#(@x,@y)) 45: #eq#(#neg(@x),#neg(@y)) -> c_69(#eq#(@x,@y)) 21: #and#(#false(),#false()) -> c_45() 22: #and#(#false(),#true()) -> c_46() 23: #and#(#true(),#false()) -> c_47() 24: #and#(#true(),#true()) -> c_48() 40: #eq#(#0(),#0()) -> c_64() 41: #eq#(#0(),#neg(@y)) -> c_65() 42: #eq#(#0(),#pos(@y)) -> c_66() 43: #eq#(#0(),#s(@y)) -> c_67() 44: #eq#(#neg(@x),#0()) -> c_68() 46: #eq#(#neg(@x),#pos(@y)) -> c_70() 47: #eq#(#pos(@x),#0()) -> c_71() 48: #eq#(#pos(@x),#neg(@y)) -> c_72() 50: #eq#(#s(@x),#0()) -> c_74() 53: #eq#(::(@x_1,@x_2),nil()) -> c_77() 54: #eq#(nil(),::(@y_1,@y_2)) -> c_78() 55: #eq#(nil(),nil()) -> c_79() 82: newline#6#(@elem,@nl) -> c_34() 83: newline#7#(#false() ,@belowVal ,@diagVal ,@rightVal) -> c_35(max#(@belowVal,@rightVal)) 74: max#(@a,@b) -> c_23(max#1#(#greater(@a,@b) ,@a ,@b) ,#greater#(@a,@b)) 57: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)) ,#compare#(@x,@y)) 25: #ckgt#(#EQ()) -> c_49() 26: #ckgt#(#GT()) -> c_50() 27: #ckgt#(#LT()) -> c_51() 39: #compare#(#s(@x),#s(@y)) -> c_63(#compare#(@x,@y)) 37: #compare#(#pos(@x),#pos(@y)) -> c_61(#compare#(@x,@y)) 33: #compare#(#neg(@x),#neg(@y)) -> c_57(#compare#(@y,@x)) 28: #compare#(#0(),#0()) -> c_52() 29: #compare#(#0(),#neg(@y)) -> c_53() 30: #compare#(#0(),#pos(@y)) -> c_54() 31: #compare#(#0(),#s(@y)) -> c_55() 32: #compare#(#neg(@x),#0()) -> c_56() 34: #compare#(#neg(@x),#pos(@y)) -> c_58() 35: #compare#(#pos(@x),#0()) -> c_59() 36: #compare#(#pos(@x),#neg(@y)) -> c_60() 38: #compare#(#s(@x),#0()) -> c_62() 75: max#1#(#false(),@a,@b) -> c_24() 76: max#1#(#true(),@a,@b) -> c_25() 84: newline#7#(#true() ,@belowVal ,@diagVal ,@rightVal) -> c_36(+#(@diagVal ,#pos(#s(#0())))) 66: +#(@x,@y) -> c_7(#add#(@x,@y)) 16: #add#(#0(),@y) -> c_40() 17: #add#(#neg(#s(#0())),@y) -> c_41(#pred#(@y)) 18: #add#(#neg(#s(#s(@x))),@y) -> c_42(#pred#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 58: #pred#(#0()) -> c_80() 59: #pred#(#neg(#s(@x))) -> c_81() 60: #pred#(#pos(#s(#0()))) -> c_82() 61: #pred#(#pos(#s(#s(@x)))) -> c_83() 20: #add#(#pos(#s(#s(@x))),@y) -> c_44(#succ#(#add(#pos(#s(@x)) ,@y)) ,#add#(#pos(#s(@x)),@y)) 19: #add#(#pos(#s(#0())),@y) -> c_43(#succ#(@y)) 62: #succ#(#0()) -> c_84() 63: #succ#(#neg(#s(#0()))) -> c_85() 64: #succ#(#neg(#s(#s(@x)))) -> c_86() 65: #succ#(#pos(#s(@x))) -> c_87() 85: right#(@l) -> c_37(right#1#(@l)) 86: right#1#(::(@x,@xs)) -> c_38() 87: right#1#(nil()) -> c_39(#abs#(#0())) 68: lcs#1#(@m) -> c_12(lcs#2#(@m)) 69: lcs#2#(::(@l1,@_@2)) -> c_13(lcs#3#(@l1)) 71: lcs#3#(::(@len,@_@1)) -> c_15() 72: lcs#3#(nil()) -> c_16(#abs#(#0())) 70: lcs#2#(nil()) -> c_14(#abs#(#0())) 67: firstline#1#(nil()) -> c_10() 12: #abs#(#0()) -> c_1() *** 1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/2,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/2,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: SimplifyRHS Proof: Consider the dependency graph 1:S:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)):2 2:S:firstline#1#(::(@x,@xs)) -> c_9(#abs#(#0()),firstline#(@xs)) -->_2 firstline#(@l) -> c_8(firstline#1#(@l)):1 3:S:lcs#(@l1,@l2) -> c_11(lcs#1#(lcstable(@l1,@l2)),lcstable#(@l1,@l2)) -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 4:S:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):6 -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):5 5:S:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_1 lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)):7 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 6:S:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 7:S:lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) -->_1 lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)):8 8:S:lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 9:S:newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) -->_1 newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)):10 10:S:newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) -->_1 newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)):11 11:S:newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#3#(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y),newline#(@y,@lastline',@xs)) -->_2 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcstable#(@l1,@l2)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) *** 1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcs#(@l1,@l2) -> c_11(lcstable#(@l1,@l2)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: RemoveHeads Proof: Consider the dependency graph 1:S:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)):2 2:S:firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 3:S:lcs#(@l1,@l2) -> c_11(lcstable#(@l1,@l2)) -->_1 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 4:S:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):6 -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):5 5:S:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_1 lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)):7 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 6:S:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 7:S:lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) -->_1 lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)):8 8:S:lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 9:S:newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) -->_1 newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)):10 10:S:newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) -->_1 newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)):11 11:S:newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(3,lcs#(@l1,@l2) -> c_11(lcstable#(@l1,@l2)))] *** 1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd} Proof: We analyse the complexity of following sub-problems (R) and (S). Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component. Problem (R) Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Problem (S) Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} *** 1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: RemoveWeakSuffixes Proof: Consider the dependency graph 1:S:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)):2 2:S:firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 4:W:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):5 -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):6 5:W:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_1 lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)):7 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 6:W:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 7:W:lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) -->_1 lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)):8 8:W:lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 9:W:newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) -->_1 newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)):10 10:W:newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) -->_1 newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)):11 11:W:newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):9 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 7: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 8: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 9: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 11: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#(@y ,@lastline' ,@xs)) 10: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: SimplifyRHS Proof: Consider the dependency graph 1:S:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)):2 2:S:firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 4:W:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):5 -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):6 5:W:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):4 6:W:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: UsableRules Proof: We replace rewrite rules by usable rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}} Proof: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly: 2: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) The strictly oriented rules are moved into the weak component. *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy} Proof: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_8) = {1}, uargs(c_9) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_19) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [1] p(#GT) = [1] p(#LT) = [1] p(#abs) = [1] x1 + [1] p(#add) = [4] x1 + [1] x2 + [2] p(#and) = [0] p(#ckgt) = [0] p(#compare) = [1] x1 + [0] p(#eq) = [1] p(#equal) = [8] x2 + [0] p(#false) = [1] p(#greater) = [0] p(#neg) = [0] p(#pos) = [0] p(#pred) = [1] x1 + [1] p(#s) = [0] p(#succ) = [0] p(#true) = [0] p(+) = [1] x2 + [0] p(::) = [1] x1 + [1] x2 + [2] p(firstline) = [0] p(firstline#1) = [0] p(lcs) = [0] p(lcs#1) = [0] p(lcs#2) = [0] p(lcs#3) = [0] p(lcstable) = [0] p(lcstable#1) = [0] p(lcstable#2) = [0] p(lcstable#3) = [2] p(max) = [1] x2 + [2] p(max#1) = [0] p(newline) = [1] x3 + [0] p(newline#1) = [2] x2 + [1] p(newline#2) = [0] p(newline#3) = [0] p(newline#4) = [0] p(newline#5) = [0] p(newline#6) = [0] p(newline#7) = [1] x1 + [8] x2 + [0] p(nil) = [1] p(right) = [1] x1 + [2] p(right#1) = [8] p(#abs#) = [1] p(#add#) = [1] x1 + [2] x2 + [1] p(#and#) = [1] x1 + [0] p(#ckgt#) = [1] x1 + [1] p(#compare#) = [8] x2 + [1] p(#eq#) = [1] x2 + [2] p(#equal#) = [4] p(#greater#) = [1] x2 + [0] p(#pred#) = [4] x1 + [2] p(#succ#) = [2] x1 + [0] p(+#) = [0] p(firstline#) = [8] x1 + [8] p(firstline#1#) = [8] x1 + [8] p(lcs#) = [4] x1 + [1] p(lcs#1#) = [4] p(lcs#2#) = [8] p(lcs#3#) = [2] x1 + [1] p(lcstable#) = [2] x1 + [8] x2 + [9] p(lcstable#1#) = [2] x1 + [8] x2 + [7] p(lcstable#2#) = [2] x1 + [1] x3 + [4] p(lcstable#3#) = [1] x2 + [1] x3 + [1] p(max#) = [1] x1 + [2] x2 + [0] p(max#1#) = [8] x1 + [1] x2 + [0] p(newline#) = [2] x2 + [1] p(newline#1#) = [2] x1 + [1] x2 + [4] x3 + [1] p(newline#2#) = [1] x1 + [2] x4 + [1] p(newline#3#) = [1] x2 + [1] x3 + [1] x5 + [0] p(newline#4#) = [1] x1 + [1] x2 + [1] x4 + [4] x5 + [2] x6 + [0] p(newline#5#) = [0] p(newline#6#) = [0] p(newline#7#) = [0] p(right#) = [0] p(right#1#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [2] x1 + [0] p(c_6) = [4] x1 + [1] x2 + [0] p(c_7) = [0] p(c_8) = [1] x1 + [0] p(c_9) = [1] x1 + [13] p(c_10) = [0] p(c_11) = [4] x1 + [0] p(c_12) = [0] p(c_13) = [4] x1 + [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [1] x1 + [2] p(c_18) = [1] x1 + [2] p(c_19) = [1] x1 + [0] p(c_20) = [2] x1 + [0] p(c_21) = [2] x1 + [0] p(c_22) = [0] p(c_23) = [1] x2 + [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [2] p(c_27) = [0] p(c_28) = [0] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [1] x1 + [1] x2 + [0] p(c_32) = [2] x1 + [0] p(c_33) = [1] x1 + [8] x2 + [2] x3 + [0] p(c_34) = [0] p(c_35) = [1] x1 + [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [2] x1 + [0] p(c_40) = [0] p(c_41) = [1] x1 + [0] p(c_42) = [2] x2 + [0] p(c_43) = [8] x1 + [0] p(c_44) = [1] x1 + [0] p(c_45) = [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [1] x1 + [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [0] p(c_70) = [0] p(c_71) = [0] p(c_72) = [0] p(c_73) = [0] p(c_74) = [0] p(c_75) = [2] x1 + [0] p(c_76) = [2] x2 + [0] p(c_77) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [4] p(c_81) = [1] p(c_82) = [2] p(c_83) = [1] p(c_84) = [2] p(c_85) = [1] p(c_86) = [0] p(c_87) = [1] Following rules are strictly oriented: firstline#1#(::(@x,@xs)) = [8] @x + [8] @xs + [24] > [8] @xs + [21] = c_9(firstline#(@xs)) Following rules are (at-least) weakly oriented: firstline#(@l) = [8] @l + [8] >= [8] @l + [8] = c_8(firstline#1#(@l)) lcstable#(@l1,@l2) = [2] @l1 + [8] @l2 + [9] >= [2] @l1 + [8] @l2 + [9] = c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) = [8] @l2 + [2] @x + [2] @xs + [11] >= [8] @l2 + [2] @xs + [11] = c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) = [8] @l2 + [9] >= [8] @l2 + [8] = c_19(firstline#(@l2)) *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) Strict TRS Rules: Weak DP Rules: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: Assumption Proof: () *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) Strict TRS Rules: Weak DP Rules: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}} Proof: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly: 1: firstline#(@l) -> c_8(firstline#1#(@l)) Consider the set of all dependency pairs 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) 3: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 4: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) 5: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {1} These cover all (indirect) predecessors of dependency pairs {1,2} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) Strict TRS Rules: Weak DP Rules: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy} Proof: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_8) = {1}, uargs(c_9) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_19) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#add) = [1] x2 + [0] p(#and) = [0] p(#ckgt) = [1] x1 + [0] p(#compare) = [0] p(#eq) = [1] x2 + [0] p(#equal) = [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [0] p(#pred) = [0] p(#s) = [2] p(#succ) = [1] x1 + [1] p(#true) = [2] p(+) = [1] x2 + [4] p(::) = [1] x1 + [1] x2 + [2] p(firstline) = [1] x1 + [1] p(firstline#1) = [8] x1 + [1] p(lcs) = [1] x1 + [1] x2 + [4] p(lcs#1) = [2] x1 + [1] p(lcs#2) = [2] x1 + [1] p(lcs#3) = [8] p(lcstable) = [0] p(lcstable#1) = [1] x1 + [1] x2 + [0] p(lcstable#2) = [8] x1 + [1] x2 + [1] p(lcstable#3) = [0] p(max) = [1] x1 + [1] x2 + [1] p(max#1) = [2] x1 + [0] p(newline) = [1] x1 + [1] x2 + [1] x3 + [1] p(newline#1) = [1] x2 + [0] p(newline#2) = [1] x2 + [1] p(newline#3) = [0] p(newline#4) = [0] p(newline#5) = [0] p(newline#6) = [0] p(newline#7) = [0] p(nil) = [0] p(right) = [0] p(right#1) = [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#compare#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#pred#) = [0] p(#succ#) = [0] p(+#) = [0] p(firstline#) = [8] x1 + [12] p(firstline#1#) = [8] x1 + [0] p(lcs#) = [1] x1 + [8] p(lcs#1#) = [2] p(lcs#2#) = [0] p(lcs#3#) = [8] p(lcstable#) = [8] x2 + [12] p(lcstable#1#) = [8] x2 + [12] p(lcstable#2#) = [0] p(lcstable#3#) = [0] p(max#) = [0] p(max#1#) = [0] p(newline#) = [0] p(newline#1#) = [0] p(newline#2#) = [0] p(newline#3#) = [0] p(newline#4#) = [0] p(newline#5#) = [0] p(newline#6#) = [0] p(newline#7#) = [0] p(right#) = [0] p(right#1#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [1] x1 + [4] p(c_9) = [1] x1 + [4] p(c_10) = [0] p(c_11) = [1] x1 + [0] p(c_12) = [0] p(c_13) = [1] x1 + [0] p(c_14) = [2] x1 + [0] p(c_15) = [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [1] x1 + [0] p(c_20) = [1] x1 + [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [1] x1 + [0] p(c_28) = [0] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [1] x2 + [0] p(c_32) = [1] x1 + [8] x2 + [0] p(c_33) = [1] x2 + [0] p(c_34) = [0] p(c_35) = [8] x1 + [0] p(c_36) = [0] p(c_37) = [1] x1 + [0] p(c_38) = [0] p(c_39) = [4] x1 + [0] p(c_40) = [0] p(c_41) = [1] x1 + [0] p(c_42) = [1] x1 + [2] x2 + [0] p(c_43) = [0] p(c_44) = [2] x1 + [4] x2 + [0] p(c_45) = [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [2] x1 + [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [1] x1 + [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [1] x1 + [0] p(c_70) = [0] p(c_71) = [0] p(c_72) = [0] p(c_73) = [1] x1 + [0] p(c_74) = [0] p(c_75) = [0] p(c_76) = [2] x2 + [0] p(c_77) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [0] p(c_87) = [0] Following rules are strictly oriented: firstline#(@l) = [8] @l + [12] > [8] @l + [4] = c_8(firstline#1#(@l)) Following rules are (at-least) weakly oriented: firstline#1#(::(@x,@xs)) = [8] @x + [8] @xs + [16] >= [8] @xs + [16] = c_9(firstline#(@xs)) lcstable#(@l1,@l2) = [8] @l2 + [12] >= [8] @l2 + [12] = c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) = [8] @l2 + [12] >= [8] @l2 + [12] = c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) = [8] @l2 + [12] >= [8] @l2 + [12] = c_19(firstline#(@l2)) *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1 Progress [(?,O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: Assumption Proof: () *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.2 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: RemoveWeakSuffixes Proof: Consider the dependency graph 1:W:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)):2 2:W:firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 3:W:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):5 -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)):4 4:W:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) -->_1 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):3 5:W:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 4: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#(@xs,@l2)) 5: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 1: firstline#(@l) -> c_8(firstline#1#(@l)) 2: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.2.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: Weak TRS Rules: Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: EmptyProcessor Proof: The problem is already closed. The intended complexity is O(1). *** 1.1.1.1.1.1.1.1.1.1.1.1.2 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} Proof: We estimate the number of application of {3} by application of Pre({3}) = {1}. Here rules are labelled as follows: 1: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 2: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 3: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 4: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 5: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 6: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 7: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 8: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#(@y ,@lastline' ,@xs)) 9: firstline#(@l) -> c_8(firstline#1#(@l)) 10: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: firstline#(@l) -> c_8(firstline#1#(@l)) firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: RemoveWeakSuffixes Proof: Consider the dependency graph 1:S:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)):10 -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):2 2:S:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_1 lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)):3 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):1 3:S:lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) -->_1 lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)):4 4:S:lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):5 5:S:newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) -->_1 newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)):6 6:S:newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) -->_1 newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)):7 7:S:newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):5 8:W:firstline#(@l) -> c_8(firstline#1#(@l)) -->_1 firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)):9 9:W:firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):8 10:W:lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) -->_1 firstline#(@l) -> c_8(firstline#1#(@l)):8 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 10: lcstable#1#(nil(),@l2) -> c_19(firstline#(@l2)) 8: firstline#(@l) -> c_8(firstline#1#(@l)) 9: firstline#1#(::(@x,@xs)) -> c_9(firstline#(@xs)) *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}} Proof: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly: 6: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) Consider the set of all dependency pairs 1: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 2: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 3: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 4: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 5: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 6: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 7: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#(@y ,@lastline' ,@xs)) Processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}induces the complexity certificateTIME (?,O(n^2)) SPACE(?,?)on application of the dependency pairs {6} These cover all (indirect) predecessors of dependency pairs {6,7} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy} Proof: We apply a polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_17) = {1}, uargs(c_18) = {1,2}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_29) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#} TcT has computed the following interpretation: p(#0) = 0 p(#EQ) = 0 p(#GT) = 0 p(#LT) = 0 p(#abs) = 1 p(#add) = 0 p(#and) = x1*x2 + x2^2 p(#ckgt) = 1 + x1^2 p(#compare) = x1*x2 p(#eq) = x1 + x1^2 + x2 p(#equal) = 0 p(#false) = 0 p(#greater) = 0 p(#neg) = 0 p(#pos) = 1 p(#pred) = 1 p(#s) = 0 p(#succ) = 0 p(#true) = 0 p(+) = x1 + x2 + x2^2 p(::) = 1 + x2 p(firstline) = 0 p(firstline#1) = 0 p(lcs) = 0 p(lcs#1) = 0 p(lcs#2) = 0 p(lcs#3) = 0 p(lcstable) = 1 + x2^2 p(lcstable#1) = 0 p(lcstable#2) = x1 + x3^2 p(lcstable#3) = 1 + x2*x3 + x3 + x3^2 p(max) = x1 + x1*x2 + x1^2 + x2 p(max#1) = 1 + x3^2 p(newline) = 1 p(newline#1) = x1 + x3^2 p(newline#2) = 1 p(newline#3) = x1 + x1*x5 + x1^2 + x4^2 p(newline#4) = x2*x4 + x2*x5 + x3 + x3*x5 + x4 + x5 p(newline#5) = x1 + x5 + x5*x6 + x6 p(newline#6) = 0 p(newline#7) = x2*x3 + x3 + x3^2 p(nil) = 0 p(right) = 1 p(right#1) = 0 p(#abs#) = 0 p(#add#) = 0 p(#and#) = 0 p(#ckgt#) = 0 p(#compare#) = 0 p(#eq#) = 0 p(#equal#) = 0 p(#greater#) = 0 p(#pred#) = 0 p(#succ#) = 0 p(+#) = 0 p(firstline#) = 0 p(firstline#1#) = 0 p(lcs#) = 0 p(lcs#1#) = 0 p(lcs#2#) = 0 p(lcs#3#) = 0 p(lcstable#) = x1 + x1*x2 p(lcstable#1#) = x1 + x1*x2 p(lcstable#2#) = 1 + x2 p(lcstable#3#) = 1 + x2 p(max#) = 0 p(max#1#) = 0 p(newline#) = 1 + x3 p(newline#1#) = 1 + x1 p(newline#2#) = 1 + x3 p(newline#3#) = 0 p(newline#4#) = 0 p(newline#5#) = 0 p(newline#6#) = 0 p(newline#7#) = 0 p(right#) = 0 p(right#1#) = 0 p(c_1) = 0 p(c_2) = 0 p(c_3) = 0 p(c_4) = 0 p(c_5) = 0 p(c_6) = 0 p(c_7) = 0 p(c_8) = 0 p(c_9) = 0 p(c_10) = 0 p(c_11) = 0 p(c_12) = 0 p(c_13) = 0 p(c_14) = 0 p(c_15) = 0 p(c_16) = 0 p(c_17) = x1 p(c_18) = x1 + x2 p(c_19) = 0 p(c_20) = x1 p(c_21) = x1 p(c_22) = 0 p(c_23) = 0 p(c_24) = 0 p(c_25) = 0 p(c_26) = x1 p(c_27) = x1 p(c_28) = 0 p(c_29) = x1 p(c_30) = 0 p(c_31) = 0 p(c_32) = 0 p(c_33) = 0 p(c_34) = 0 p(c_35) = 0 p(c_36) = 0 p(c_37) = 0 p(c_38) = 0 p(c_39) = 0 p(c_40) = 0 p(c_41) = 0 p(c_42) = 0 p(c_43) = 0 p(c_44) = 0 p(c_45) = 0 p(c_46) = 0 p(c_47) = 0 p(c_48) = 0 p(c_49) = 0 p(c_50) = 0 p(c_51) = 0 p(c_52) = 0 p(c_53) = 0 p(c_54) = 0 p(c_55) = 0 p(c_56) = 0 p(c_57) = 0 p(c_58) = 0 p(c_59) = 0 p(c_60) = 0 p(c_61) = 0 p(c_62) = 0 p(c_63) = 0 p(c_64) = 0 p(c_65) = 0 p(c_66) = 0 p(c_67) = 0 p(c_68) = 0 p(c_69) = 0 p(c_70) = 0 p(c_71) = 0 p(c_72) = 0 p(c_73) = 0 p(c_74) = 0 p(c_75) = 0 p(c_76) = 0 p(c_77) = 0 p(c_78) = 0 p(c_79) = 0 p(c_80) = 0 p(c_81) = 0 p(c_82) = 0 p(c_83) = 0 p(c_84) = 0 p(c_85) = 0 p(c_86) = 0 p(c_87) = 0 Following rules are strictly oriented: newline#1#(::(@x,@xs) = 2 + @xs ,@lastline ,@y) > 1 + @xs = c_27(newline#2#(@lastline ,@x ,@xs ,@y)) Following rules are (at-least) weakly oriented: lcstable#(@l1,@l2) = @l1 + @l1*@l2 >= @l1 + @l1*@l2 = c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) = 1 + @l2 + @l2*@xs + @xs >= 1 + @l2 + @l2*@xs + @xs = c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) = 1 + @l2 >= 1 + @l2 = c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) = 1 + @l2 >= 1 + @l2 = c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) = 1 + @l >= 1 + @l = c_26(newline#1#(@l ,@lastline ,@y)) newline#2#(::(@belowVal = 1 + @xs ,@lastline') ,@x ,@xs ,@y) >= 1 + @xs = c_29(newline#(@y ,@lastline' ,@xs)) *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1 Progress [(?,O(1))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Strict TRS Rules: Weak DP Rules: newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: Assumption Proof: () *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) Strict TRS Rules: Weak DP Rules: newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}} Proof: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly: 1: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 2: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) Consider the set of all dependency pairs 1: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 2: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 3: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 4: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 5: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 6: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 7: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#(@y ,@lastline' ,@xs)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {1,2} These cover all (indirect) predecessors of dependency pairs {1,2,3,4} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1 Progress [(?,O(n^1))] *** Considered Problem: Strict DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) Strict TRS Rules: Weak DP Rules: newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy} Proof: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_17) = {1}, uargs(c_18) = {1,2}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_29) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#} TcT has computed the following interpretation: p(#0) = [4] p(#EQ) = [0] p(#GT) = [1] p(#LT) = [0] p(#abs) = [3] p(#add) = [2] p(#and) = [2] p(#ckgt) = [4] p(#compare) = [1] x1 + [0] p(#eq) = [0] p(#equal) = [1] p(#false) = [0] p(#greater) = [1] p(#neg) = [0] p(#pos) = [1] x1 + [6] p(#pred) = [2] x1 + [1] p(#s) = [0] p(#succ) = [3] p(#true) = [1] p(+) = [1] p(::) = [1] x1 + [1] x2 + [1] p(firstline) = [1] x1 + [2] p(firstline#1) = [0] p(lcs) = [0] p(lcs#1) = [0] p(lcs#2) = [0] p(lcs#3) = [0] p(lcstable) = [4] p(lcstable#1) = [1] x2 + [0] p(lcstable#2) = [1] x1 + [4] x3 + [2] p(lcstable#3) = [0] p(max) = [0] p(max#1) = [1] p(newline) = [4] x3 + [7] p(newline#1) = [1] x1 + [4] p(newline#2) = [1] x2 + [4] x3 + [2] p(newline#3) = [1] x1 + [1] x4 + [3] x5 + [6] p(newline#4) = [0] p(newline#5) = [1] x1 + [0] p(newline#6) = [1] x1 + [1] p(newline#7) = [4] x1 + [6] p(nil) = [0] p(right) = [4] p(right#1) = [3] x1 + [4] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#compare#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [4] x1 + [1] x2 + [0] p(#pred#) = [0] p(#succ#) = [2] x1 + [1] p(+#) = [1] x1 + [0] p(firstline#) = [0] p(firstline#1#) = [1] p(lcs#) = [2] p(lcs#1#) = [1] x1 + [1] p(lcs#2#) = [1] x1 + [2] p(lcs#3#) = [0] p(lcstable#) = [4] x1 + [5] p(lcstable#1#) = [4] x1 + [4] p(lcstable#2#) = [0] p(lcstable#3#) = [0] p(max#) = [4] x2 + [0] p(max#1#) = [0] p(newline#) = [0] p(newline#1#) = [0] p(newline#2#) = [0] p(newline#3#) = [1] x3 + [2] p(newline#4#) = [4] x3 + [1] x6 + [0] p(newline#5#) = [1] x4 + [1] x5 + [1] x6 + [0] p(newline#6#) = [1] p(newline#7#) = [1] x1 + [4] x2 + [1] x4 + [4] p(right#) = [1] x1 + [0] p(right#1#) = [1] x1 + [0] p(c_1) = [1] p(c_2) = [2] p(c_3) = [0] p(c_4) = [1] p(c_5) = [0] p(c_6) = [1] x1 + [1] p(c_7) = [1] x1 + [2] p(c_8) = [2] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [2] p(c_13) = [4] p(c_14) = [0] p(c_15) = [1] p(c_16) = [4] x1 + [1] p(c_17) = [1] x1 + [0] p(c_18) = [4] x1 + [1] x2 + [2] p(c_19) = [0] p(c_20) = [1] x1 + [0] p(c_21) = [4] x1 + [0] p(c_22) = [0] p(c_23) = [1] x2 + [0] p(c_24) = [0] p(c_25) = [2] p(c_26) = [4] x1 + [0] p(c_27) = [1] x1 + [0] p(c_28) = [1] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [1] x1 + [0] p(c_32) = [0] p(c_33) = [4] x1 + [2] x2 + [1] x3 + [1] p(c_34) = [0] p(c_35) = [4] p(c_36) = [0] p(c_37) = [0] p(c_38) = [1] p(c_39) = [4] x1 + [1] p(c_40) = [0] p(c_41) = [4] x1 + [0] p(c_42) = [1] x2 + [0] p(c_43) = [1] x1 + [2] p(c_44) = [4] x2 + [1] p(c_45) = [0] p(c_46) = [0] p(c_47) = [1] p(c_48) = [4] p(c_49) = [0] p(c_50) = [1] p(c_51) = [0] p(c_52) = [4] p(c_53) = [0] p(c_54) = [1] p(c_55) = [0] p(c_56) = [0] p(c_57) = [2] x1 + [1] p(c_58) = [2] p(c_59) = [1] p(c_60) = [0] p(c_61) = [1] x1 + [0] p(c_62) = [4] p(c_63) = [1] p(c_64) = [1] p(c_65) = [1] p(c_66) = [1] p(c_67) = [4] p(c_68) = [1] p(c_69) = [1] x1 + [0] p(c_70) = [1] p(c_71) = [0] p(c_72) = [0] p(c_73) = [1] x1 + [0] p(c_74) = [2] p(c_75) = [4] x1 + [1] p(c_76) = [1] x1 + [1] x3 + [1] p(c_77) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [1] p(c_81) = [0] p(c_82) = [1] p(c_83) = [1] p(c_84) = [0] p(c_85) = [0] p(c_86) = [4] p(c_87) = [1] Following rules are strictly oriented: lcstable#(@l1,@l2) = [4] @l1 + [5] > [4] @l1 + [4] = c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) = [4] @x + [4] @xs + [8] > [4] @xs + [7] = c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) Following rules are (at-least) weakly oriented: lcstable#2#(@m,@l2,@x) = [0] >= [0] = c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) = [0] >= [0] = c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) = [0] >= [0] = c_26(newline#1#(@l ,@lastline ,@y)) newline#1#(::(@x,@xs) = [0] ,@lastline ,@y) >= [0] = c_27(newline#2#(@lastline ,@x ,@xs ,@y)) newline#2#(::(@belowVal = [0] ,@lastline') ,@x ,@xs ,@y) >= [0] = c_29(newline#(@y ,@lastline' ,@xs)) *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1 Progress [(?,O(1))] *** Considered Problem: Strict DP Rules: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: Assumption Proof: () *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.2 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}} Proof: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly: 1: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) Consider the set of all dependency pairs 1: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 2: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 3: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 4: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 5: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 6: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) 7: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#(@y ,@lastline' ,@xs)) Processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}induces the complexity certificateTIME (?,O(n^2)) SPACE(?,?)on application of the dependency pairs {1} These cover all (indirect) predecessors of dependency pairs {1,6,7} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.2.1 Progress [(?,O(n^2))] *** Considered Problem: Strict DP Rules: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy} Proof: We apply a polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_17) = {1}, uargs(c_18) = {1,2}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_29) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#} TcT has computed the following interpretation: p(#0) = 1 p(#EQ) = 0 p(#GT) = 0 p(#LT) = 0 p(#abs) = 0 p(#add) = x1^2 p(#and) = x1 + x2^2 p(#ckgt) = x1 p(#compare) = x1^2 p(#eq) = x2 p(#equal) = 1 + x1^2 p(#false) = 0 p(#greater) = 0 p(#neg) = x1 p(#pos) = 0 p(#pred) = 0 p(#s) = x1 p(#succ) = 1 p(#true) = 1 p(+) = 1 p(::) = 1 + x2 p(firstline) = 0 p(firstline#1) = 0 p(lcs) = 0 p(lcs#1) = 0 p(lcs#2) = 0 p(lcs#3) = 0 p(lcstable) = x2 p(lcstable#1) = x1^2 + x2^2 p(lcstable#2) = x1*x3 p(lcstable#3) = 1 + x1 + x1^2 + x3 + x3^2 p(max) = 1 + x1 + x2 p(max#1) = x3^2 p(newline) = 1 + x1*x3 + x2 p(newline#1) = x1^2 + x3 p(newline#2) = x1^2 + x2*x4 + x4 + x4^2 p(newline#3) = x1*x2 + x1*x5 + x1^2 p(newline#4) = x3 + x3*x4 + x4*x6 + x6 p(newline#5) = x1 + x1^2 + x2 + x2^2 p(newline#6) = x1*x2 + x1^2 + x2 p(newline#7) = 1 + x2^2 + x4 p(nil) = 0 p(right) = 1 p(right#1) = 0 p(#abs#) = 0 p(#add#) = 0 p(#and#) = 0 p(#ckgt#) = 0 p(#compare#) = 0 p(#eq#) = 0 p(#equal#) = 0 p(#greater#) = 0 p(#pred#) = 0 p(#succ#) = 0 p(+#) = 0 p(firstline#) = 0 p(firstline#1#) = 0 p(lcs#) = 0 p(lcs#1#) = 0 p(lcs#2#) = 0 p(lcs#3#) = 0 p(lcstable#) = x1 + x1*x2 + x2 + x2^2 p(lcstable#1#) = x1 + x1*x2 + x2 + x2^2 p(lcstable#2#) = 1 + x2 p(lcstable#3#) = 1 + x2 p(max#) = 0 p(max#1#) = 0 p(newline#) = 1 + x3 p(newline#1#) = x1 p(newline#2#) = 1 + x3 p(newline#3#) = 0 p(newline#4#) = 0 p(newline#5#) = 0 p(newline#6#) = 0 p(newline#7#) = 0 p(right#) = 0 p(right#1#) = 0 p(c_1) = 0 p(c_2) = 0 p(c_3) = 0 p(c_4) = 0 p(c_5) = 0 p(c_6) = 0 p(c_7) = 0 p(c_8) = 0 p(c_9) = 0 p(c_10) = 0 p(c_11) = 0 p(c_12) = 0 p(c_13) = 0 p(c_14) = 0 p(c_15) = 0 p(c_16) = 0 p(c_17) = x1 p(c_18) = x1 + x2 p(c_19) = 0 p(c_20) = x1 p(c_21) = x1 p(c_22) = 0 p(c_23) = 0 p(c_24) = 0 p(c_25) = 0 p(c_26) = x1 p(c_27) = x1 p(c_28) = 0 p(c_29) = x1 p(c_30) = 0 p(c_31) = 0 p(c_32) = 0 p(c_33) = 0 p(c_34) = 0 p(c_35) = 0 p(c_36) = 0 p(c_37) = 0 p(c_38) = 0 p(c_39) = 0 p(c_40) = 0 p(c_41) = 0 p(c_42) = 0 p(c_43) = 0 p(c_44) = 0 p(c_45) = 0 p(c_46) = 0 p(c_47) = 0 p(c_48) = 0 p(c_49) = 0 p(c_50) = 0 p(c_51) = 0 p(c_52) = 0 p(c_53) = 0 p(c_54) = 0 p(c_55) = 0 p(c_56) = 0 p(c_57) = 0 p(c_58) = 0 p(c_59) = 0 p(c_60) = 0 p(c_61) = 0 p(c_62) = 0 p(c_63) = 0 p(c_64) = 0 p(c_65) = 0 p(c_66) = 0 p(c_67) = 0 p(c_68) = 0 p(c_69) = 0 p(c_70) = 0 p(c_71) = 0 p(c_72) = 0 p(c_73) = 0 p(c_74) = 0 p(c_75) = 0 p(c_76) = 0 p(c_77) = 0 p(c_78) = 0 p(c_79) = 0 p(c_80) = 0 p(c_81) = 0 p(c_82) = 0 p(c_83) = 0 p(c_84) = 0 p(c_85) = 0 p(c_86) = 0 p(c_87) = 0 Following rules are strictly oriented: newline#(@y,@lastline,@l) = 1 + @l > @l = c_26(newline#1#(@l ,@lastline ,@y)) Following rules are (at-least) weakly oriented: lcstable#(@l1,@l2) = @l1 + @l1*@l2 + @l2 + @l2^2 >= @l1 + @l1*@l2 + @l2 + @l2^2 = c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) = 1 + 2*@l2 + @l2*@xs + @l2^2 + @xs >= 1 + 2*@l2 + @l2*@xs + @l2^2 + @xs = c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) = 1 + @l2 >= 1 + @l2 = c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) = 1 + @l2 >= 1 + @l2 = c_21(newline#(@x,@l,@l2)) newline#1#(::(@x,@xs) = 1 + @xs ,@lastline ,@y) >= 1 + @xs = c_27(newline#2#(@lastline ,@x ,@xs ,@y)) newline#2#(::(@belowVal = 1 + @xs ,@lastline') ,@x ,@xs ,@y) >= 1 + @xs = c_29(newline#(@y ,@lastline' ,@xs)) *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.2.1.1 Progress [(?,O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: Assumption Proof: () *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.2.2 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: RemoveWeakSuffixes Proof: Consider the dependency graph 1:W:lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) -->_1 lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)):2 2:W:lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs,@l2),@l2,@x),lcstable#(@xs,@l2)) -->_1 lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)):3 -->_2 lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)):1 3:W:lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) -->_1 lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)):4 4:W:lcstable#3#(::(@l,@ls),@l2,@x) -> c_21(newline#(@x,@l,@l2)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):5 5:W:newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)) -->_1 newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)):6 6:W:newline#1#(::(@x,@xs),@lastline,@y) -> c_27(newline#2#(@lastline,@x,@xs,@y)) -->_1 newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)):7 7:W:newline#2#(::(@belowVal,@lastline'),@x,@xs,@y) -> c_29(newline#(@y,@lastline',@xs)) -->_1 newline#(@y,@lastline,@l) -> c_26(newline#1#(@l,@lastline,@y)):5 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: lcstable#(@l1,@l2) -> c_17(lcstable#1#(@l1,@l2)) 2: lcstable#1#(::(@x,@xs),@l2) -> c_18(lcstable#2#(lcstable(@xs ,@l2) ,@l2 ,@x) ,lcstable#(@xs,@l2)) 3: lcstable#2#(@m,@l2,@x) -> c_20(lcstable#3#(@m,@l2,@x)) 4: lcstable#3#(::(@l,@ls) ,@l2 ,@x) -> c_21(newline#(@x ,@l ,@l2)) 5: newline#(@y,@lastline,@l) -> c_26(newline#1#(@l ,@lastline ,@y)) 7: newline#2#(::(@belowVal ,@lastline') ,@x ,@xs ,@y) -> c_29(newline#(@y ,@lastline' ,@xs)) 6: newline#1#(::(@x,@xs) ,@lastline ,@y) -> c_27(newline#2#(@lastline ,@x ,@xs ,@y)) *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #abs(#0()) -> #0() #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) firstline(@l) -> firstline#1(@l) firstline#1(::(@x,@xs)) -> ::(#abs(#0()),firstline(@xs)) firstline#1(nil()) -> nil() lcstable(@l1,@l2) -> lcstable#1(@l1,@l2) lcstable#1(::(@x,@xs),@l2) -> lcstable#2(lcstable(@xs,@l2),@l2,@x) lcstable#1(nil(),@l2) -> ::(firstline(@l2),nil()) lcstable#2(@m,@l2,@x) -> lcstable#3(@m,@l2,@x) lcstable#3(::(@l,@ls),@l2,@x) -> ::(newline(@x,@l,@l2),::(@l,@ls)) lcstable#3(nil(),@l2,@x) -> nil() max(@a,@b) -> max#1(#greater(@a,@b),@a,@b) max#1(#false(),@a,@b) -> @b max#1(#true(),@a,@b) -> @a newline(@y,@lastline,@l) -> newline#1(@l,@lastline,@y) newline#1(::(@x,@xs),@lastline,@y) -> newline#2(@lastline,@x,@xs,@y) newline#1(nil(),@lastline,@y) -> nil() newline#2(::(@belowVal,@lastline'),@x,@xs,@y) -> newline#3(newline(@y,@lastline',@xs),@belowVal,@lastline',@x,@y) newline#2(nil(),@x,@xs,@y) -> nil() newline#3(@nl,@belowVal,@lastline',@x,@y) -> newline#4(right(@nl),@belowVal,@lastline',@nl,@x,@y) newline#4(@rightVal,@belowVal,@lastline',@nl,@x,@y) -> newline#5(right(@lastline'),@belowVal,@nl,@rightVal,@x,@y) newline#5(@diagVal,@belowVal,@nl,@rightVal,@x,@y) -> newline#6(newline#7(#equal(@x,@y),@belowVal,@diagVal,@rightVal),@nl) newline#6(@elem,@nl) -> ::(@elem,@nl) newline#7(#false(),@belowVal,@diagVal,@rightVal) -> max(@belowVal,@rightVal) newline#7(#true(),@belowVal,@diagVal,@rightVal) -> +(@diagVal,#pos(#s(#0()))) right(@l) -> right#1(@l) right#1(::(@x,@xs)) -> @x right#1(nil()) -> #abs(#0()) Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,#pred/1,#succ/1,+/2,firstline/1,firstline#1/1,lcs/2,lcs#1/1,lcs#2/1,lcs#3/1,lcstable/2,lcstable#1/2,lcstable#2/3,lcstable#3/3,max/2,max#1/3,newline/3,newline#1/3,newline#2/4,newline#3/5,newline#4/6,newline#5/6,newline#6/2,newline#7/4,right/1,right#1/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1,#compare#/2,#eq#/2,#equal#/2,#greater#/2,#pred#/1,#succ#/1,+#/2,firstline#/1,firstline#1#/1,lcs#/2,lcs#1#/1,lcs#2#/1,lcs#3#/1,lcstable#/2,lcstable#1#/2,lcstable#2#/3,lcstable#3#/3,max#/2,max#1#/3,newline#/3,newline#1#/3,newline#2#/4,newline#3#/5,newline#4#/6,newline#5#/6,newline#6#/2,newline#7#/4,right#/1,right#1#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/1,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/1,c_17/1,c_18/2,c_19/1,c_20/1,c_21/1,c_22/0,c_23/2,c_24/0,c_25/0,c_26/1,c_27/1,c_28/0,c_29/1,c_30/0,c_31/2,c_32/2,c_33/3,c_34/0,c_35/1,c_36/1,c_37/1,c_38/0,c_39/1,c_40/0,c_41/1,c_42/2,c_43/1,c_44/2,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/1,c_58/0,c_59/0,c_60/0,c_61/1,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/1,c_76/3,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0} Obligation: Innermost basic terms: {#abs#,#add#,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,#pred#,#succ#,+#,firstline#,firstline#1#,lcs#,lcs#1#,lcs#2#,lcs#3#,lcstable#,lcstable#1#,lcstable#2#,lcstable#3#,max#,max#1#,newline#,newline#1#,newline#2#,newline#3#,newline#4#,newline#5#,newline#6#,newline#7#,right#,right#1#}/{#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: EmptyProcessor Proof: The problem is already closed. The intended complexity is O(1).