PUBS: A Practical Upper Bounds Solver
Please follow these steps (more details in the help section):

Step 1: Provide a Cost Equation System.
Step 2: Provide an Entry or leave it empty and the solver will take the first equation as an entry. Also select the type of Computation.
Step 3: Click on the Solve button.

 CES eq(lcs(A,B),1,[lcstable(A,B)],[A>=0,B>=0]). eq(lcstable(A,B),1,[firstline(B)],[A=0]). eq(lcstable(A,B),1,[newline(X,B,B),lcstable(Ap,B)],[A>=1,Ap=A-1]). eq(out1_lcstable(A,B),1,[],[A=0]). eq(out1_lcstable(A,B),1,[out1_lcstable(Ap,B)],[A>=1,Ap=A-1]). eq(out2_lcstable(A,B),nat(B),[],[A=0]). eq(out2_lcstable(A,B),0,[out2_lcstable(Ap,B)],[A>=1,Ap=A-1]). eq(firstline(A),1,[],[A=0]). eq(firstline(A),1,[firstline(Ap)],[A >=1,Ap=A-1]). eq(newline(A,B,C),1,[],[C=0]). eq(newline(A,B,C),1,[],[C>=1,B=0]). eq(newline(A,B,C),1,[right(Cp),right(Bp),max(E,F),newline(A,Bp,Cp)],[C>=1,B>=1,Bp=B-1,Cp=C-1]). eq(newline(A,B,C),1,[right(Cp),right(Bp),newline(A,Bp,Cp)],[C>=1,B>=1,Bp=B-1,Cp=C-1]). eq(out_newline(A,B,C),0,[],[C=0]). eq(out_newline(A,B,C),0,[],[C>=1,B=0]). eq(out_newline(A,B,C),1,[out_newline(A,Bp,Cp)],[C>=1,B>=1,Bp=B-1,Cp=C-1]). eq(right(A),1,[],[]). eq(max(A,B),1,[],[]). File Entry IEntry # Compute Upper Bound (Normal) Upper Bound (series) Lower Bound (series)