YES Problem 1: (VAR a b f g s t u x y) (THEORY (AC * virg)) (RULES *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a ) Problem 1: Dependency Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) VIRG(virg(x9,x10),x11) = VIRG(x9,virg(x10,x11)) VIRG(x9,x10) = VIRG(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> *#(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(f),a),b)) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> SEQUENT(virg(convf(f),a),b) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> SEQUENT(virg(convf(g),a),b) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> VIRG(convf(f),a) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> VIRG(convf(g),a) CONVS(sequent(convf(or(f,g)),b)) -> *#(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(convf(or(f,g)),b)) -> SEQUENT(convf(f),b) CONVS(sequent(convf(or(f,g)),b)) -> SEQUENT(convf(g),b) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> *#(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> SEQUENT(a,virg(convf(f),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> SEQUENT(a,virg(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> VIRG(convf(f),b) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> VIRG(convf(g),b) CONVS(sequent(a,convf(and(f,g)))) -> *#(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) CONVS(sequent(a,convf(and(f,g)))) -> SEQUENT(a,convf(f)) CONVS(sequent(a,convf(and(f,g)))) -> SEQUENT(a,convf(g)) EXISTS(f) -> NEG(forall(neg(f))) EXISTS(f) -> NEG(f) IMP(f,g) -> NEG(f) IMP(f,g) -> OR(neg(f),g) RON(.(x,s),t) -> .#(substt(x,t),ron(s,t)) RON(.(x,s),t) -> RON(s,t) RON(.(x,s),t) -> SUBSTT(x,t) RON(ron(s,t),u) -> RON(s,ron(t,u)) RON(ron(s,t),u) -> RON(t,u) SEQUENT(virg(convf(and(f,g)),a),b) -> SEQUENT(virg(convf(g),virg(convf(f),a)),b) SEQUENT(virg(convf(and(f,g)),a),b) -> VIRG(convf(f),a) SEQUENT(virg(convf(and(f,g)),a),b) -> VIRG(convf(g),virg(convf(f),a)) SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(virg(convf(neg(f)),a),b) -> VIRG(convf(f),b) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(and(f,g)),b) -> VIRG(convf(f),convf(g)) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(convf(neg(f)),b) -> VIRG(convf(f),b) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(neg(f)),b)) -> VIRG(convf(f),a) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,virg(convf(or(f,g)),b)) -> VIRG(virg(convf(f),convf(g)),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> VIRG(convf(f),convf(g)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(neg(f))) -> VIRG(convf(f),a) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) SEQUENT(a,convf(or(f,g))) -> VIRG(convf(f),convf(g)) SUBSTF(and(f,g),s) -> AND(substf(f,s),substf(g,s)) SUBSTF(and(f,g),s) -> SUBSTF(f,s) SUBSTF(and(f,g),s) -> SUBSTF(g,s) SUBSTF(exists(f),s) -> .#(1,ron(s,shift)) SUBSTF(exists(f),s) -> EXISTS(substf(f,.(1,ron(s,shift)))) SUBSTF(exists(f),s) -> RON(s,shift) SUBSTF(exists(f),s) -> SUBSTF(f,.(1,ron(s,shift))) SUBSTF(imp(f,g),s) -> IMP(substf(f,s),substf(g,s)) SUBSTF(imp(f,g),s) -> SUBSTF(f,s) SUBSTF(imp(f,g),s) -> SUBSTF(g,s) SUBSTF(neg(f),s) -> NEG(substf(f,s)) SUBSTF(neg(f),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> OR(substf(f,s),substf(g,s)) SUBSTF(or(f,g),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> SUBSTF(g,s) SUBSTF(substf(f,s),t) -> RON(s,t) SUBSTF(substf(f,s),t) -> SUBSTF(f,ron(s,t)) SUBSTF(Pe(x),y) -> SUBSTT(x,y) SUBSTF(forall(f),s) -> .#(1,ron(s,shift)) SUBSTF(forall(f),s) -> RON(s,shift) SUBSTF(forall(f),s) -> SUBSTF(f,.(1,ron(s,shift))) SUBSTT(substt(x,s),t) -> RON(s,t) SUBSTT(substt(x,s),t) -> SUBSTT(x,ron(s,t)) SUBSTT(ef(x),y) -> SUBSTT(x,y) VIRG(virg(emptyfset,a),x9) -> VIRG(a,x9) VIRG(virg(a,a),x9) -> VIRG(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) Problem 1: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) VIRG(virg(x9,x10),x11) = VIRG(x9,virg(x10,x11)) VIRG(x9,x10) = VIRG(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> *#(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(f),a),b)) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> SEQUENT(virg(convf(f),a),b) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> SEQUENT(virg(convf(g),a),b) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> VIRG(convf(f),a) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> VIRG(convf(g),a) CONVS(sequent(convf(or(f,g)),b)) -> *#(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(convf(or(f,g)),b)) -> SEQUENT(convf(f),b) CONVS(sequent(convf(or(f,g)),b)) -> SEQUENT(convf(g),b) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> *#(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> SEQUENT(a,virg(convf(f),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> SEQUENT(a,virg(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> VIRG(convf(f),b) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> VIRG(convf(g),b) CONVS(sequent(a,convf(and(f,g)))) -> *#(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) CONVS(sequent(a,convf(and(f,g)))) -> SEQUENT(a,convf(f)) CONVS(sequent(a,convf(and(f,g)))) -> SEQUENT(a,convf(g)) EXISTS(f) -> NEG(forall(neg(f))) EXISTS(f) -> NEG(f) IMP(f,g) -> NEG(f) IMP(f,g) -> OR(neg(f),g) RON(.(x,s),t) -> .#(substt(x,t),ron(s,t)) RON(.(x,s),t) -> RON(s,t) RON(.(x,s),t) -> SUBSTT(x,t) RON(ron(s,t),u) -> RON(s,ron(t,u)) RON(ron(s,t),u) -> RON(t,u) SEQUENT(virg(convf(and(f,g)),a),b) -> SEQUENT(virg(convf(g),virg(convf(f),a)),b) SEQUENT(virg(convf(and(f,g)),a),b) -> VIRG(convf(f),a) SEQUENT(virg(convf(and(f,g)),a),b) -> VIRG(convf(g),virg(convf(f),a)) SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(virg(convf(neg(f)),a),b) -> VIRG(convf(f),b) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(and(f,g)),b) -> VIRG(convf(f),convf(g)) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(convf(neg(f)),b) -> VIRG(convf(f),b) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(neg(f)),b)) -> VIRG(convf(f),a) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,virg(convf(or(f,g)),b)) -> VIRG(virg(convf(f),convf(g)),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> VIRG(convf(f),convf(g)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(neg(f))) -> VIRG(convf(f),a) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) SEQUENT(a,convf(or(f,g))) -> VIRG(convf(f),convf(g)) SUBSTF(and(f,g),s) -> AND(substf(f,s),substf(g,s)) SUBSTF(and(f,g),s) -> SUBSTF(f,s) SUBSTF(and(f,g),s) -> SUBSTF(g,s) SUBSTF(exists(f),s) -> .#(1,ron(s,shift)) SUBSTF(exists(f),s) -> EXISTS(substf(f,.(1,ron(s,shift)))) SUBSTF(exists(f),s) -> RON(s,shift) SUBSTF(exists(f),s) -> SUBSTF(f,.(1,ron(s,shift))) SUBSTF(imp(f,g),s) -> IMP(substf(f,s),substf(g,s)) SUBSTF(imp(f,g),s) -> SUBSTF(f,s) SUBSTF(imp(f,g),s) -> SUBSTF(g,s) SUBSTF(neg(f),s) -> NEG(substf(f,s)) SUBSTF(neg(f),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> OR(substf(f,s),substf(g,s)) SUBSTF(or(f,g),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> SUBSTF(g,s) SUBSTF(substf(f,s),t) -> RON(s,t) SUBSTF(substf(f,s),t) -> SUBSTF(f,ron(s,t)) SUBSTF(Pe(x),y) -> SUBSTT(x,y) SUBSTF(forall(f),s) -> .#(1,ron(s,shift)) SUBSTF(forall(f),s) -> RON(s,shift) SUBSTF(forall(f),s) -> SUBSTF(f,.(1,ron(s,shift))) SUBSTT(substt(x,s),t) -> RON(s,t) SUBSTT(substt(x,s),t) -> SUBSTT(x,ron(s,t)) SUBSTT(ef(x),y) -> SUBSTT(x,y) VIRG(virg(emptyfset,a),x9) -> VIRG(a,x9) VIRG(virg(a,a),x9) -> VIRG(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: VIRG(virg(emptyfset,a),x9) -> VIRG(a,x9) VIRG(virg(a,a),x9) -> VIRG(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) VIRG(virg(x9,x10),x11) -> VIRG(x9,virg(x10,x11)) VIRG(x9,x10) -> VIRG(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) ->->Cycle: ->->-> Pairs: SEQUENT(virg(convf(and(f,g)),a),b) -> SEQUENT(virg(convf(g),virg(convf(f),a)),b) SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->->Cycle: ->->-> Pairs: RON(.(x,s),t) -> RON(s,t) RON(.(x,s),t) -> SUBSTT(x,t) RON(ron(s,t),u) -> RON(s,ron(t,u)) RON(ron(s,t),u) -> RON(t,u) SUBSTT(substt(x,s),t) -> RON(s,t) SUBSTT(substt(x,s),t) -> SUBSTT(x,ron(s,t)) SUBSTT(ef(x),y) -> SUBSTT(x,y) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->->Cycle: ->->-> Pairs: SUBSTF(and(f,g),s) -> SUBSTF(f,s) SUBSTF(and(f,g),s) -> SUBSTF(g,s) SUBSTF(exists(f),s) -> SUBSTF(f,.(1,ron(s,shift))) SUBSTF(imp(f,g),s) -> SUBSTF(f,s) SUBSTF(imp(f,g),s) -> SUBSTF(g,s) SUBSTF(neg(f),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> SUBSTF(g,s) SUBSTF(substf(f,s),t) -> SUBSTF(f,ron(s,t)) SUBSTF(forall(f),s) -> SUBSTF(f,.(1,ron(s,shift))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->->Cycle: ->->-> Pairs: CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(f),a),b)) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty The problem is decomposed in 6 subproblems. Problem 1.1: Reduction Pairs Processor: -> FAxioms: VIRG(virg(x9,x10),x11) = VIRG(x9,virg(x10,x11)) VIRG(x9,x10) = VIRG(x10,x9) -> Pairs: VIRG(virg(emptyfset,a),x9) -> VIRG(a,x9) VIRG(virg(a,a),x9) -> VIRG(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 0 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 0 [or](X1,X2) = 0 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 2 [1] = 0 [Pe](X) = 0 [convf](X) = 0 [ef](X) = 0 [emptyfset] = 1 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 2.X1 + 2.X2 Problem 1.1: SCC Processor: -> FAxioms: VIRG(virg(x9,x10),x11) = VIRG(x9,virg(x10,x11)) VIRG(x9,x10) = VIRG(x10,x9) -> Pairs: VIRG(virg(a,a),x9) -> VIRG(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: VIRG(virg(a,a),x9) -> VIRG(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) VIRG(virg(x9,x10),x11) -> VIRG(x9,virg(x10,x11)) VIRG(x9,x10) -> VIRG(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) Problem 1.1: Reduction Pairs Processor: -> FAxioms: VIRG(virg(x9,x10),x11) = VIRG(x9,virg(x10,x11)) VIRG(x9,x10) = VIRG(x10,x9) -> Pairs: VIRG(virg(a,a),x9) -> VIRG(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 0 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 0 [or](X1,X2) = 0 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 2 [1] = 0 [Pe](X) = 0 [convf](X) = 0 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 2.X1 + 2.X2 Problem 1.1: SCC Processor: -> FAxioms: VIRG(virg(x9,x10),x11) = VIRG(x9,virg(x10,x11)) VIRG(x9,x10) = VIRG(x10,x9) -> Pairs: Empty -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: VIRG(virg(x9,x10),x11) -> VIRG(x9,x10) VIRG(x9,virg(x10,x11)) -> VIRG(x10,x11) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(virg(convf(and(f,g)),a),b) -> SEQUENT(virg(convf(g),virg(convf(f),a)),b) SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = 2.X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 2 [ef](X) = 0 [emptyfset] = 2 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = X1 + X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(virg(convf(neg(f)),a),b) -> SEQUENT(a,virg(convf(f),b)) SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = 2.X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 2 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 2 [ef](X) = 0 [emptyfset] = 1 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 2.X1 + 2.X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(convf(and(f,g)),b) -> SEQUENT(virg(convf(f),convf(g)),b) SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = X1 + 2.X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 1 [ef](X) = 0 [emptyfset] = 2 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 2.X1 + 2.X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(convf(neg(f)),b) -> SEQUENT(emptyfset,virg(convf(f),b)) SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 0 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 2 [ef](X) = 0 [emptyfset] = 1 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 2.X1 + 2.X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(neg(f))) -> SEQUENT(virg(convf(f),a),emptyfset) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(a,virg(convf(neg(f)),b)) -> SEQUENT(virg(convf(f),a),b) SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 0 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2 [or](X1,X2) = 2.X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 2 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 2 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 2.X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(a,virg(convf(or(f,g)),b)) -> SEQUENT(a,virg(virg(convf(f),convf(g)),b)) SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 0 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 0 [or](X1,X2) = 2.X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X + 1 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: SEQUENT(a,convf(or(f,g))) -> SEQUENT(a,virg(convf(f),convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 0 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 0 [or](X1,X2) = 2.X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 0 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = X [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = X2 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: Empty -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.3: Subterm Processor: -> FAxioms: Empty -> Pairs: RON(.(x,s),t) -> RON(s,t) RON(.(x,s),t) -> SUBSTT(x,t) RON(ron(s,t),u) -> RON(s,ron(t,u)) RON(ron(s,t),u) -> RON(t,u) SUBSTT(substt(x,s),t) -> RON(s,t) SUBSTT(substt(x,s),t) -> SUBSTT(x,ron(s,t)) SUBSTT(ef(x),y) -> SUBSTT(x,y) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Projection: pi(RON) = [1] pi(SUBSTT) = [1] Problem 1.3: SCC Processor: -> FAxioms: Empty -> Pairs: Empty -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.4: Subterm Processor: -> FAxioms: Empty -> Pairs: SUBSTF(and(f,g),s) -> SUBSTF(f,s) SUBSTF(and(f,g),s) -> SUBSTF(g,s) SUBSTF(exists(f),s) -> SUBSTF(f,.(1,ron(s,shift))) SUBSTF(imp(f,g),s) -> SUBSTF(f,s) SUBSTF(imp(f,g),s) -> SUBSTF(g,s) SUBSTF(neg(f),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> SUBSTF(f,s) SUBSTF(or(f,g),s) -> SUBSTF(g,s) SUBSTF(substf(f,s),t) -> SUBSTF(f,ron(s,t)) SUBSTF(forall(f),s) -> SUBSTF(f,.(1,ron(s,shift))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Projection: pi(SUBSTF) = [1] Problem 1.4: SCC Processor: -> FAxioms: Empty -> Pairs: Empty -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(virg(f,a),b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,emptyfset)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(emptyfset,b)),convs(sequent(a,b))),x9) -> *#(convs(sequent(emptyfset,b)),x9) *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(a,virg(f,b))),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,b)),x9) *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(convs(sequent(a,emptyfset)),convs(sequent(a,b))),x9) -> *#(convs(sequent(a,emptyfset)),x9) *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(emptysset,a),x9) -> *#(a,x9) *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: *#(*(a,a),x9) -> *#(a,x9) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) *#(*(x9,x10),x11) -> *#(x9,*(x10,x11)) *#(x9,x10) -> *#(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) Problem 1.5: Reduction Pairs Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: *#(*(a,a),x9) -> *#(a,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [*](X1,X2) = X1 + X2 + 1 [.](X1,X2) = 0 [and](X1,X2) = X1.X2 + X1 + X2 + 1 [convs](X) = X.X + X + 1 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = X.X + X + 1 [or](X1,X2) = X1.X2 + X1 + X2 + 1 [ron](X1,X2) = 0 [sequent](X1,X2) = X1.X2 + X1 + X2 + 1 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1.X2 + X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X.X + X [ef](X) = 0 [emptyfset] = 1 [emptysset] = 1 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = X1 + X2 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 0 [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: *#(*(x9,x10),x11) = *#(x9,*(x10,x11)) *#(x9,x10) = *#(x10,x9) -> Pairs: Empty -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: *#(*(x9,x10),x11) -> *#(x9,x10) *#(x9,*(x10,x11)) -> *#(x10,x11) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(f),a),b)) CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = X1 + X2 + 1 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = 2.X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = X [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(virg(convf(or(f,g)),a),b)) -> CONVS(sequent(virg(convf(g),a),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = 2.X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + 2.X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 2 [ef](X) = 0 [emptyfset] = 2 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(f),b)) CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = 2.X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + 2.X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 2 [1] = 0 [Pe](X) = 0 [convf](X) = X [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 2.X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(convf(or(f,g)),b)) -> CONVS(sequent(convf(g),b)) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 1 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X [or](X1,X2) = 2.X1 + 2.X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + 2.X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 2 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(f),b))) CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 1 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + 2.X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 + 1 [1] = 0 [Pe](X) = 0 [convf](X) = 2.X + 1 [ef](X) = 0 [emptyfset] = 1 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 2.X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,virg(convf(and(f,g)),b))) -> CONVS(sequent(a,virg(convf(g),b))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X + 2 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = 2.X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(f))) CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + 2.X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X + 2 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> FAxioms: *(*(x9,x10),x11) -> *(x9,*(x10,x11)) *(x9,x10) -> *(x10,x9) virg(virg(x9,x10),x11) -> virg(x9,virg(x10,x11)) virg(x9,x10) -> virg(x10,x9) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) ->->-> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty Problem 1.6: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: CONVS(sequent(a,convf(and(f,g)))) -> CONVS(sequent(a,convf(g))) -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Usable Equations: virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> Usable Rules: sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [*](X1,X2) = 0 [.](X1,X2) = 0 [and](X1,X2) = 2.X1 + X2 + 2 [convs](X) = 0 [exists](X) = 0 [imp](X1,X2) = 0 [neg](X) = 2.X + 2 [or](X1,X2) = X1 + X2 + 2 [ron](X1,X2) = 0 [sequent](X1,X2) = 2.X1 + X2 [substf](X1,X2) = 0 [substt](X1,X2) = 0 [virg](X1,X2) = X1 + X2 [1] = 0 [Pe](X) = 0 [convf](X) = X + 2 [ef](X) = 0 [emptyfset] = 0 [emptysset] = 0 [forall](X) = 0 [id] = 0 [shift] = 0 [*#](X1,X2) = 0 [.#](X1,X2) = 0 [AND](X1,X2) = 0 [CONVS](X) = X [EXISTS](X) = 0 [IMP](X1,X2) = 0 [NEG](X) = 0 [OR](X1,X2) = 0 [RON](X1,X2) = 0 [SEQUENT](X1,X2) = 0 [SUBSTF](X1,X2) = 0 [SUBSTT](X1,X2) = 0 [VIRG](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: Empty -> Pairs: Empty -> EAxioms: *(*(x9,x10),x11) = *(x9,*(x10,x11)) *(x9,x10) = *(x10,x9) virg(virg(x9,x10),x11) = virg(x9,virg(x10,x11)) virg(x9,x10) = virg(x10,x9) -> Rules: *(convs(sequent(virg(f,a),virg(g,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,emptyfset))) -> convs(sequent(a,emptyfset)) *(convs(sequent(virg(f,a),b)),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(emptyfset,emptyfset)),convs(sequent(a,b))) -> convs(sequent(emptyfset,emptyfset)) *(convs(sequent(emptyfset,b)),convs(sequent(a,virg(f,b)))) -> convs(sequent(emptyfset,b)) *(convs(sequent(emptyfset,b)),convs(sequent(a,b))) -> convs(sequent(emptyfset,b)) *(convs(sequent(a,virg(f,b))),convs(sequent(a,b))) -> convs(sequent(a,b)) *(convs(sequent(a,emptyfset)),convs(sequent(a,b))) -> convs(sequent(a,emptyfset)) *(emptysset,a) -> a *(a,a) -> a .(substt(1,s),ron(shift,s)) -> s .(1,shift) -> id and(f,f) -> f convs(sequent(virg(convf(or(f,g)),a),b)) -> *(convs(sequent(virg(convf(f),a),b)),convs(sequent(virg(convf(g),a),b))) convs(sequent(virg(convf(f),a),virg(convf(f),b))) -> emptysset convs(sequent(virg(convf(f),a),convf(f))) -> emptysset convs(sequent(convf(or(f,g)),b)) -> *(convs(sequent(convf(f),b)),convs(sequent(convf(g),b))) convs(sequent(convf(f),virg(convf(f),b))) -> emptysset convs(sequent(convf(f),convf(f))) -> emptysset convs(sequent(a,virg(convf(and(f,g)),b))) -> *(convs(sequent(a,virg(convf(f),b))),convs(sequent(a,virg(convf(g),b)))) convs(sequent(a,convf(and(f,g)))) -> *(convs(sequent(a,convf(f))),convs(sequent(a,convf(g)))) exists(f) -> neg(forall(neg(f))) imp(f,g) -> or(neg(f),g) neg(neg(f)) -> f or(f,f) -> f ron(.(x,s),t) -> .(substt(x,t),ron(s,t)) ron(ron(s,t),u) -> ron(s,ron(t,u)) ron(id,s) -> s ron(shift,.(x,s)) -> s ron(s,id) -> s sequent(virg(convf(and(f,g)),a),b) -> sequent(virg(convf(g),virg(convf(f),a)),b) sequent(virg(convf(neg(f)),a),b) -> sequent(a,virg(convf(f),b)) sequent(convf(and(f,g)),b) -> sequent(virg(convf(f),convf(g)),b) sequent(convf(neg(f)),b) -> sequent(emptyfset,virg(convf(f),b)) sequent(a,virg(convf(neg(f)),b)) -> sequent(virg(convf(f),a),b) sequent(a,virg(convf(or(f,g)),b)) -> sequent(a,virg(virg(convf(f),convf(g)),b)) sequent(a,convf(neg(f))) -> sequent(virg(convf(f),a),emptyfset) sequent(a,convf(or(f,g))) -> sequent(a,virg(convf(f),convf(g))) substf(and(f,g),s) -> and(substf(f,s),substf(g,s)) substf(exists(f),s) -> exists(substf(f,.(1,ron(s,shift)))) substf(imp(f,g),s) -> imp(substf(f,s),substf(g,s)) substf(neg(f),s) -> neg(substf(f,s)) substf(or(f,g),s) -> or(substf(f,s),substf(g,s)) substf(substf(f,s),t) -> substf(f,ron(s,t)) substf(Pe(x),y) -> Pe(substt(x,y)) substf(forall(f),s) -> forall(substf(f,.(1,ron(s,shift)))) substf(f,id) -> f substt(substt(x,s),t) -> substt(x,ron(s,t)) substt(1,.(x,s)) -> x substt(ef(x),y) -> ef(substt(x,y)) substt(x,id) -> x virg(emptyfset,a) -> a virg(a,a) -> a -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite.