MAYBE * Step 1: WeightGap MAYBE + Considered Problem: - Strict TRS: bool(And(a1,a2)) -> False() bool(F()) -> True() bool(Or(o1,o2)) -> False() bool(T()) -> True() conj(And(t1,t2)) -> and(disj(t1),conj(t1)) conj(F()) -> True() conj(Or(o1,o2)) -> False() conj(T()) -> True() disj(And(a1,a2)) -> conj(And(a1,a2)) disj(F()) -> True() disj(Or(t1,t2)) -> and(conj(t1),disj(t1)) disj(T()) -> True() disjconj(p) -> disj(p) getFirst(And(t1,t2)) -> t1 getFirst(Or(t1,t2)) -> t1 getSecond(And(t1,t2)) -> t1 getSecond(Or(t1,t2)) -> t1 isAnd(And(t1,t2)) -> True() isAnd(F()) -> False() isAnd(Or(t1,t2)) -> False() isAnd(T()) -> False() isConsTerm(And(a1,a2),And(y1,y2)) -> True() isConsTerm(And(a1,a2),F()) -> False() isConsTerm(And(a1,a2),Or(x1,x2)) -> False() isConsTerm(And(a1,a2),T()) -> False() isConsTerm(F(),And(y1,y2)) -> False() isConsTerm(F(),F()) -> True() isConsTerm(F(),Or(x1,x2)) -> False() isConsTerm(F(),T()) -> False() isConsTerm(Or(o1,o2),And(y1,y2)) -> False() isConsTerm(Or(o1,o2),F()) -> False() isConsTerm(Or(o1,o2),Or(x1,x2)) -> True() isConsTerm(Or(o1,o2),T()) -> False() isConsTerm(T(),And(y1,y2)) -> False() isConsTerm(T(),F()) -> False() isConsTerm(T(),Or(x1,x2)) -> False() isConsTerm(T(),T()) -> True() isOp(And(t1,t2)) -> True() isOp(F()) -> False() isOp(Or(t1,t2)) -> True() isOp(T()) -> False() - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() - Signature: {and/2,bool/1,conj/1,disj/1,disjconj/1,getFirst/1,getSecond/1,isAnd/1,isConsTerm/2,isOp/1} / {And/2,F/0 ,False/0,Or/2,T/0,True/0} - Obligation: innermost runtime complexity wrt. defined symbols {and,bool,conj,disj,disjconj,getFirst,getSecond,isAnd ,isConsTerm,isOp} and constructors {And,F,False,Or,T,True} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(and) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(And) = [1] x1 + [1] x2 + [7] p(F) = [0] p(False) = [0] p(Or) = [1] x1 + [1] x2 + [4] p(T) = [0] p(True) = [0] p(and) = [1] x1 + [1] x2 + [0] p(bool) = [0] p(conj) = [7] p(disj) = [0] p(disjconj) = [2] p(getFirst) = [1] x1 + [0] p(getSecond) = [1] x1 + [0] p(isAnd) = [4] p(isConsTerm) = [1] x1 + [1] x2 + [0] p(isOp) = [7] Following rules are strictly oriented: conj(F()) = [7] > [0] = True() conj(Or(o1,o2)) = [7] > [0] = False() conj(T()) = [7] > [0] = True() disjconj(p) = [2] > [0] = disj(p) getFirst(And(t1,t2)) = [1] t1 + [1] t2 + [7] > [1] t1 + [0] = t1 getFirst(Or(t1,t2)) = [1] t1 + [1] t2 + [4] > [1] t1 + [0] = t1 getSecond(And(t1,t2)) = [1] t1 + [1] t2 + [7] > [1] t1 + [0] = t1 getSecond(Or(t1,t2)) = [1] t1 + [1] t2 + [4] > [1] t1 + [0] = t1 isAnd(And(t1,t2)) = [4] > [0] = True() isAnd(F()) = [4] > [0] = False() isAnd(Or(t1,t2)) = [4] > [0] = False() isAnd(T()) = [4] > [0] = False() isConsTerm(And(a1,a2),And(y1,y2)) = [1] a1 + [1] a2 + [1] y1 + [1] y2 + [14] > [0] = True() isConsTerm(And(a1,a2),F()) = [1] a1 + [1] a2 + [7] > [0] = False() isConsTerm(And(a1,a2),Or(x1,x2)) = [1] a1 + [1] a2 + [1] x1 + [1] x2 + [11] > [0] = False() isConsTerm(And(a1,a2),T()) = [1] a1 + [1] a2 + [7] > [0] = False() isConsTerm(F(),And(y1,y2)) = [1] y1 + [1] y2 + [7] > [0] = False() isConsTerm(F(),Or(x1,x2)) = [1] x1 + [1] x2 + [4] > [0] = False() isConsTerm(Or(o1,o2),And(y1,y2)) = [1] o1 + [1] o2 + [1] y1 + [1] y2 + [11] > [0] = False() isConsTerm(Or(o1,o2),F()) = [1] o1 + [1] o2 + [4] > [0] = False() isConsTerm(Or(o1,o2),Or(x1,x2)) = [1] o1 + [1] o2 + [1] x1 + [1] x2 + [8] > [0] = True() isConsTerm(Or(o1,o2),T()) = [1] o1 + [1] o2 + [4] > [0] = False() isConsTerm(T(),And(y1,y2)) = [1] y1 + [1] y2 + [7] > [0] = False() isConsTerm(T(),Or(x1,x2)) = [1] x1 + [1] x2 + [4] > [0] = False() isOp(And(t1,t2)) = [7] > [0] = True() isOp(F()) = [7] > [0] = False() isOp(Or(t1,t2)) = [7] > [0] = True() isOp(T()) = [7] > [0] = False() Following rules are (at-least) weakly oriented: and(False(),False()) = [0] >= [0] = False() and(False(),True()) = [0] >= [0] = False() and(True(),False()) = [0] >= [0] = False() and(True(),True()) = [0] >= [0] = True() bool(And(a1,a2)) = [0] >= [0] = False() bool(F()) = [0] >= [0] = True() bool(Or(o1,o2)) = [0] >= [0] = False() bool(T()) = [0] >= [0] = True() conj(And(t1,t2)) = [7] >= [7] = and(disj(t1),conj(t1)) disj(And(a1,a2)) = [0] >= [7] = conj(And(a1,a2)) disj(F()) = [0] >= [0] = True() disj(Or(t1,t2)) = [0] >= [7] = and(conj(t1),disj(t1)) disj(T()) = [0] >= [0] = True() isConsTerm(F(),F()) = [0] >= [0] = True() isConsTerm(F(),T()) = [0] >= [0] = False() isConsTerm(T(),F()) = [0] >= [0] = False() isConsTerm(T(),T()) = [0] >= [0] = True() Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 2: WeightGap MAYBE + Considered Problem: - Strict TRS: bool(And(a1,a2)) -> False() bool(F()) -> True() bool(Or(o1,o2)) -> False() bool(T()) -> True() conj(And(t1,t2)) -> and(disj(t1),conj(t1)) disj(And(a1,a2)) -> conj(And(a1,a2)) disj(F()) -> True() disj(Or(t1,t2)) -> and(conj(t1),disj(t1)) disj(T()) -> True() isConsTerm(F(),F()) -> True() isConsTerm(F(),T()) -> False() isConsTerm(T(),F()) -> False() isConsTerm(T(),T()) -> True() - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() conj(F()) -> True() conj(Or(o1,o2)) -> False() conj(T()) -> True() disjconj(p) -> disj(p) getFirst(And(t1,t2)) -> t1 getFirst(Or(t1,t2)) -> t1 getSecond(And(t1,t2)) -> t1 getSecond(Or(t1,t2)) -> t1 isAnd(And(t1,t2)) -> True() isAnd(F()) -> False() isAnd(Or(t1,t2)) -> False() isAnd(T()) -> False() isConsTerm(And(a1,a2),And(y1,y2)) -> True() isConsTerm(And(a1,a2),F()) -> False() isConsTerm(And(a1,a2),Or(x1,x2)) -> False() isConsTerm(And(a1,a2),T()) -> False() isConsTerm(F(),And(y1,y2)) -> False() isConsTerm(F(),Or(x1,x2)) -> False() isConsTerm(Or(o1,o2),And(y1,y2)) -> False() isConsTerm(Or(o1,o2),F()) -> False() isConsTerm(Or(o1,o2),Or(x1,x2)) -> True() isConsTerm(Or(o1,o2),T()) -> False() isConsTerm(T(),And(y1,y2)) -> False() isConsTerm(T(),Or(x1,x2)) -> False() isOp(And(t1,t2)) -> True() isOp(F()) -> False() isOp(Or(t1,t2)) -> True() isOp(T()) -> False() - Signature: {and/2,bool/1,conj/1,disj/1,disjconj/1,getFirst/1,getSecond/1,isAnd/1,isConsTerm/2,isOp/1} / {And/2,F/0 ,False/0,Or/2,T/0,True/0} - Obligation: innermost runtime complexity wrt. defined symbols {and,bool,conj,disj,disjconj,getFirst,getSecond,isAnd ,isConsTerm,isOp} and constructors {And,F,False,Or,T,True} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(and) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(And) = [1] x1 + [1] x2 + [1] p(F) = [2] p(False) = [0] p(Or) = [1] x1 + [1] x2 + [0] p(T) = [2] p(True) = [0] p(and) = [1] x1 + [1] x2 + [0] p(bool) = [0] p(conj) = [0] p(disj) = [0] p(disjconj) = [0] p(getFirst) = [1] x1 + [7] p(getSecond) = [2] x1 + [0] p(isAnd) = [0] p(isConsTerm) = [4] x1 + [2] x2 + [1] p(isOp) = [5] Following rules are strictly oriented: isConsTerm(F(),F()) = [13] > [0] = True() isConsTerm(F(),T()) = [13] > [0] = False() isConsTerm(T(),F()) = [13] > [0] = False() isConsTerm(T(),T()) = [13] > [0] = True() Following rules are (at-least) weakly oriented: and(False(),False()) = [0] >= [0] = False() and(False(),True()) = [0] >= [0] = False() and(True(),False()) = [0] >= [0] = False() and(True(),True()) = [0] >= [0] = True() bool(And(a1,a2)) = [0] >= [0] = False() bool(F()) = [0] >= [0] = True() bool(Or(o1,o2)) = [0] >= [0] = False() bool(T()) = [0] >= [0] = True() conj(And(t1,t2)) = [0] >= [0] = and(disj(t1),conj(t1)) conj(F()) = [0] >= [0] = True() conj(Or(o1,o2)) = [0] >= [0] = False() conj(T()) = [0] >= [0] = True() disj(And(a1,a2)) = [0] >= [0] = conj(And(a1,a2)) disj(F()) = [0] >= [0] = True() disj(Or(t1,t2)) = [0] >= [0] = and(conj(t1),disj(t1)) disj(T()) = [0] >= [0] = True() disjconj(p) = [0] >= [0] = disj(p) getFirst(And(t1,t2)) = [1] t1 + [1] t2 + [8] >= [1] t1 + [0] = t1 getFirst(Or(t1,t2)) = [1] t1 + [1] t2 + [7] >= [1] t1 + [0] = t1 getSecond(And(t1,t2)) = [2] t1 + [2] t2 + [2] >= [1] t1 + [0] = t1 getSecond(Or(t1,t2)) = [2] t1 + [2] t2 + [0] >= [1] t1 + [0] = t1 isAnd(And(t1,t2)) = [0] >= [0] = True() isAnd(F()) = [0] >= [0] = False() isAnd(Or(t1,t2)) = [0] >= [0] = False() isAnd(T()) = [0] >= [0] = False() isConsTerm(And(a1,a2),And(y1,y2)) = [4] a1 + [4] a2 + [2] y1 + [2] y2 + [7] >= [0] = True() isConsTerm(And(a1,a2),F()) = [4] a1 + [4] a2 + [9] >= [0] = False() isConsTerm(And(a1,a2),Or(x1,x2)) = [4] a1 + [4] a2 + [2] x1 + [2] x2 + [5] >= [0] = False() isConsTerm(And(a1,a2),T()) = [4] a1 + [4] a2 + [9] >= [0] = False() isConsTerm(F(),And(y1,y2)) = [2] y1 + [2] y2 + [11] >= [0] = False() isConsTerm(F(),Or(x1,x2)) = [2] x1 + [2] x2 + [9] >= [0] = False() isConsTerm(Or(o1,o2),And(y1,y2)) = [4] o1 + [4] o2 + [2] y1 + [2] y2 + [3] >= [0] = False() isConsTerm(Or(o1,o2),F()) = [4] o1 + [4] o2 + [5] >= [0] = False() isConsTerm(Or(o1,o2),Or(x1,x2)) = [4] o1 + [4] o2 + [2] x1 + [2] x2 + [1] >= [0] = True() isConsTerm(Or(o1,o2),T()) = [4] o1 + [4] o2 + [5] >= [0] = False() isConsTerm(T(),And(y1,y2)) = [2] y1 + [2] y2 + [11] >= [0] = False() isConsTerm(T(),Or(x1,x2)) = [2] x1 + [2] x2 + [9] >= [0] = False() isOp(And(t1,t2)) = [5] >= [0] = True() isOp(F()) = [5] >= [0] = False() isOp(Or(t1,t2)) = [5] >= [0] = True() isOp(T()) = [5] >= [0] = False() Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 3: WeightGap MAYBE + Considered Problem: - Strict TRS: bool(And(a1,a2)) -> False() bool(F()) -> True() bool(Or(o1,o2)) -> False() bool(T()) -> True() conj(And(t1,t2)) -> and(disj(t1),conj(t1)) disj(And(a1,a2)) -> conj(And(a1,a2)) disj(F()) -> True() disj(Or(t1,t2)) -> and(conj(t1),disj(t1)) disj(T()) -> True() - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() conj(F()) -> True() conj(Or(o1,o2)) -> False() conj(T()) -> True() disjconj(p) -> disj(p) getFirst(And(t1,t2)) -> t1 getFirst(Or(t1,t2)) -> t1 getSecond(And(t1,t2)) -> t1 getSecond(Or(t1,t2)) -> t1 isAnd(And(t1,t2)) -> True() isAnd(F()) -> False() isAnd(Or(t1,t2)) -> False() isAnd(T()) -> False() isConsTerm(And(a1,a2),And(y1,y2)) -> True() isConsTerm(And(a1,a2),F()) -> False() isConsTerm(And(a1,a2),Or(x1,x2)) -> False() isConsTerm(And(a1,a2),T()) -> False() isConsTerm(F(),And(y1,y2)) -> False() isConsTerm(F(),F()) -> True() isConsTerm(F(),Or(x1,x2)) -> False() isConsTerm(F(),T()) -> False() isConsTerm(Or(o1,o2),And(y1,y2)) -> False() isConsTerm(Or(o1,o2),F()) -> False() isConsTerm(Or(o1,o2),Or(x1,x2)) -> True() isConsTerm(Or(o1,o2),T()) -> False() isConsTerm(T(),And(y1,y2)) -> False() isConsTerm(T(),F()) -> False() isConsTerm(T(),Or(x1,x2)) -> False() isConsTerm(T(),T()) -> True() isOp(And(t1,t2)) -> True() isOp(F()) -> False() isOp(Or(t1,t2)) -> True() isOp(T()) -> False() - Signature: {and/2,bool/1,conj/1,disj/1,disjconj/1,getFirst/1,getSecond/1,isAnd/1,isConsTerm/2,isOp/1} / {And/2,F/0 ,False/0,Or/2,T/0,True/0} - Obligation: innermost runtime complexity wrt. defined symbols {and,bool,conj,disj,disjconj,getFirst,getSecond,isAnd ,isConsTerm,isOp} and constructors {And,F,False,Or,T,True} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(and) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(And) = [1] x1 + [1] x2 + [2] p(F) = [1] p(False) = [3] p(Or) = [1] x1 + [1] x2 + [2] p(T) = [2] p(True) = [3] p(and) = [1] x1 + [1] x2 + [3] p(bool) = [3] x1 + [0] p(conj) = [3] p(disj) = [0] p(disjconj) = [0] p(getFirst) = [2] x1 + [0] p(getSecond) = [1] x1 + [0] p(isAnd) = [4] x1 + [0] p(isConsTerm) = [3] x1 + [2] x2 + [2] p(isOp) = [1] x1 + [3] Following rules are strictly oriented: bool(And(a1,a2)) = [3] a1 + [3] a2 + [6] > [3] = False() bool(Or(o1,o2)) = [3] o1 + [3] o2 + [6] > [3] = False() bool(T()) = [6] > [3] = True() Following rules are (at-least) weakly oriented: and(False(),False()) = [9] >= [3] = False() and(False(),True()) = [9] >= [3] = False() and(True(),False()) = [9] >= [3] = False() and(True(),True()) = [9] >= [3] = True() bool(F()) = [3] >= [3] = True() conj(And(t1,t2)) = [3] >= [6] = and(disj(t1),conj(t1)) conj(F()) = [3] >= [3] = True() conj(Or(o1,o2)) = [3] >= [3] = False() conj(T()) = [3] >= [3] = True() disj(And(a1,a2)) = [0] >= [3] = conj(And(a1,a2)) disj(F()) = [0] >= [3] = True() disj(Or(t1,t2)) = [0] >= [6] = and(conj(t1),disj(t1)) disj(T()) = [0] >= [3] = True() disjconj(p) = [0] >= [0] = disj(p) getFirst(And(t1,t2)) = [2] t1 + [2] t2 + [4] >= [1] t1 + [0] = t1 getFirst(Or(t1,t2)) = [2] t1 + [2] t2 + [4] >= [1] t1 + [0] = t1 getSecond(And(t1,t2)) = [1] t1 + [1] t2 + [2] >= [1] t1 + [0] = t1 getSecond(Or(t1,t2)) = [1] t1 + [1] t2 + [2] >= [1] t1 + [0] = t1 isAnd(And(t1,t2)) = [4] t1 + [4] t2 + [8] >= [3] = True() isAnd(F()) = [4] >= [3] = False() isAnd(Or(t1,t2)) = [4] t1 + [4] t2 + [8] >= [3] = False() isAnd(T()) = [8] >= [3] = False() isConsTerm(And(a1,a2),And(y1,y2)) = [3] a1 + [3] a2 + [2] y1 + [2] y2 + [12] >= [3] = True() isConsTerm(And(a1,a2),F()) = [3] a1 + [3] a2 + [10] >= [3] = False() isConsTerm(And(a1,a2),Or(x1,x2)) = [3] a1 + [3] a2 + [2] x1 + [2] x2 + [12] >= [3] = False() isConsTerm(And(a1,a2),T()) = [3] a1 + [3] a2 + [12] >= [3] = False() isConsTerm(F(),And(y1,y2)) = [2] y1 + [2] y2 + [9] >= [3] = False() isConsTerm(F(),F()) = [7] >= [3] = True() isConsTerm(F(),Or(x1,x2)) = [2] x1 + [2] x2 + [9] >= [3] = False() isConsTerm(F(),T()) = [9] >= [3] = False() isConsTerm(Or(o1,o2),And(y1,y2)) = [3] o1 + [3] o2 + [2] y1 + [2] y2 + [12] >= [3] = False() isConsTerm(Or(o1,o2),F()) = [3] o1 + [3] o2 + [10] >= [3] = False() isConsTerm(Or(o1,o2),Or(x1,x2)) = [3] o1 + [3] o2 + [2] x1 + [2] x2 + [12] >= [3] = True() isConsTerm(Or(o1,o2),T()) = [3] o1 + [3] o2 + [12] >= [3] = False() isConsTerm(T(),And(y1,y2)) = [2] y1 + [2] y2 + [12] >= [3] = False() isConsTerm(T(),F()) = [10] >= [3] = False() isConsTerm(T(),Or(x1,x2)) = [2] x1 + [2] x2 + [12] >= [3] = False() isConsTerm(T(),T()) = [12] >= [3] = True() isOp(And(t1,t2)) = [1] t1 + [1] t2 + [5] >= [3] = True() isOp(F()) = [4] >= [3] = False() isOp(Or(t1,t2)) = [1] t1 + [1] t2 + [5] >= [3] = True() isOp(T()) = [5] >= [3] = False() Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 4: WeightGap MAYBE + Considered Problem: - Strict TRS: bool(F()) -> True() conj(And(t1,t2)) -> and(disj(t1),conj(t1)) disj(And(a1,a2)) -> conj(And(a1,a2)) disj(F()) -> True() disj(Or(t1,t2)) -> and(conj(t1),disj(t1)) disj(T()) -> True() - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() bool(And(a1,a2)) -> False() bool(Or(o1,o2)) -> False() bool(T()) -> True() conj(F()) -> True() conj(Or(o1,o2)) -> False() conj(T()) -> True() disjconj(p) -> disj(p) getFirst(And(t1,t2)) -> t1 getFirst(Or(t1,t2)) -> t1 getSecond(And(t1,t2)) -> t1 getSecond(Or(t1,t2)) -> t1 isAnd(And(t1,t2)) -> True() isAnd(F()) -> False() isAnd(Or(t1,t2)) -> False() isAnd(T()) -> False() isConsTerm(And(a1,a2),And(y1,y2)) -> True() isConsTerm(And(a1,a2),F()) -> False() isConsTerm(And(a1,a2),Or(x1,x2)) -> False() isConsTerm(And(a1,a2),T()) -> False() isConsTerm(F(),And(y1,y2)) -> False() isConsTerm(F(),F()) -> True() isConsTerm(F(),Or(x1,x2)) -> False() isConsTerm(F(),T()) -> False() isConsTerm(Or(o1,o2),And(y1,y2)) -> False() isConsTerm(Or(o1,o2),F()) -> False() isConsTerm(Or(o1,o2),Or(x1,x2)) -> True() isConsTerm(Or(o1,o2),T()) -> False() isConsTerm(T(),And(y1,y2)) -> False() isConsTerm(T(),F()) -> False() isConsTerm(T(),Or(x1,x2)) -> False() isConsTerm(T(),T()) -> True() isOp(And(t1,t2)) -> True() isOp(F()) -> False() isOp(Or(t1,t2)) -> True() isOp(T()) -> False() - Signature: {and/2,bool/1,conj/1,disj/1,disjconj/1,getFirst/1,getSecond/1,isAnd/1,isConsTerm/2,isOp/1} / {And/2,F/0 ,False/0,Or/2,T/0,True/0} - Obligation: innermost runtime complexity wrt. defined symbols {and,bool,conj,disj,disjconj,getFirst,getSecond,isAnd ,isConsTerm,isOp} and constructors {And,F,False,Or,T,True} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(and) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(And) = [1] x1 + [1] p(F) = [6] p(False) = [0] p(Or) = [1] x1 + [3] p(T) = [3] p(True) = [0] p(and) = [1] x1 + [1] x2 + [0] p(bool) = [1] x1 + [0] p(conj) = [5] p(disj) = [1] p(disjconj) = [5] p(getFirst) = [2] x1 + [4] p(getSecond) = [2] x1 + [2] p(isAnd) = [1] x1 + [2] p(isConsTerm) = [0] p(isOp) = [1] x1 + [1] Following rules are strictly oriented: bool(F()) = [6] > [0] = True() disj(F()) = [1] > [0] = True() disj(T()) = [1] > [0] = True() Following rules are (at-least) weakly oriented: and(False(),False()) = [0] >= [0] = False() and(False(),True()) = [0] >= [0] = False() and(True(),False()) = [0] >= [0] = False() and(True(),True()) = [0] >= [0] = True() bool(And(a1,a2)) = [1] a1 + [1] >= [0] = False() bool(Or(o1,o2)) = [1] o1 + [3] >= [0] = False() bool(T()) = [3] >= [0] = True() conj(And(t1,t2)) = [5] >= [6] = and(disj(t1),conj(t1)) conj(F()) = [5] >= [0] = True() conj(Or(o1,o2)) = [5] >= [0] = False() conj(T()) = [5] >= [0] = True() disj(And(a1,a2)) = [1] >= [5] = conj(And(a1,a2)) disj(Or(t1,t2)) = [1] >= [6] = and(conj(t1),disj(t1)) disjconj(p) = [5] >= [1] = disj(p) getFirst(And(t1,t2)) = [2] t1 + [6] >= [1] t1 + [0] = t1 getFirst(Or(t1,t2)) = [2] t1 + [10] >= [1] t1 + [0] = t1 getSecond(And(t1,t2)) = [2] t1 + [4] >= [1] t1 + [0] = t1 getSecond(Or(t1,t2)) = [2] t1 + [8] >= [1] t1 + [0] = t1 isAnd(And(t1,t2)) = [1] t1 + [3] >= [0] = True() isAnd(F()) = [8] >= [0] = False() isAnd(Or(t1,t2)) = [1] t1 + [5] >= [0] = False() isAnd(T()) = [5] >= [0] = False() isConsTerm(And(a1,a2),And(y1,y2)) = [0] >= [0] = True() isConsTerm(And(a1,a2),F()) = [0] >= [0] = False() isConsTerm(And(a1,a2),Or(x1,x2)) = [0] >= [0] = False() isConsTerm(And(a1,a2),T()) = [0] >= [0] = False() isConsTerm(F(),And(y1,y2)) = [0] >= [0] = False() isConsTerm(F(),F()) = [0] >= [0] = True() isConsTerm(F(),Or(x1,x2)) = [0] >= [0] = False() isConsTerm(F(),T()) = [0] >= [0] = False() isConsTerm(Or(o1,o2),And(y1,y2)) = [0] >= [0] = False() isConsTerm(Or(o1,o2),F()) = [0] >= [0] = False() isConsTerm(Or(o1,o2),Or(x1,x2)) = [0] >= [0] = True() isConsTerm(Or(o1,o2),T()) = [0] >= [0] = False() isConsTerm(T(),And(y1,y2)) = [0] >= [0] = False() isConsTerm(T(),F()) = [0] >= [0] = False() isConsTerm(T(),Or(x1,x2)) = [0] >= [0] = False() isConsTerm(T(),T()) = [0] >= [0] = True() isOp(And(t1,t2)) = [1] t1 + [2] >= [0] = True() isOp(F()) = [7] >= [0] = False() isOp(Or(t1,t2)) = [1] t1 + [4] >= [0] = True() isOp(T()) = [4] >= [0] = False() Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 5: WeightGap MAYBE + Considered Problem: - Strict TRS: conj(And(t1,t2)) -> and(disj(t1),conj(t1)) disj(And(a1,a2)) -> conj(And(a1,a2)) disj(Or(t1,t2)) -> and(conj(t1),disj(t1)) - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() bool(And(a1,a2)) -> False() bool(F()) -> True() bool(Or(o1,o2)) -> False() bool(T()) -> True() conj(F()) -> True() conj(Or(o1,o2)) -> False() conj(T()) -> True() disj(F()) -> True() disj(T()) -> True() disjconj(p) -> disj(p) getFirst(And(t1,t2)) -> t1 getFirst(Or(t1,t2)) -> t1 getSecond(And(t1,t2)) -> t1 getSecond(Or(t1,t2)) -> t1 isAnd(And(t1,t2)) -> True() isAnd(F()) -> False() isAnd(Or(t1,t2)) -> False() isAnd(T()) -> False() isConsTerm(And(a1,a2),And(y1,y2)) -> True() isConsTerm(And(a1,a2),F()) -> False() isConsTerm(And(a1,a2),Or(x1,x2)) -> False() isConsTerm(And(a1,a2),T()) -> False() isConsTerm(F(),And(y1,y2)) -> False() isConsTerm(F(),F()) -> True() isConsTerm(F(),Or(x1,x2)) -> False() isConsTerm(F(),T()) -> False() isConsTerm(Or(o1,o2),And(y1,y2)) -> False() isConsTerm(Or(o1,o2),F()) -> False() isConsTerm(Or(o1,o2),Or(x1,x2)) -> True() isConsTerm(Or(o1,o2),T()) -> False() isConsTerm(T(),And(y1,y2)) -> False() isConsTerm(T(),F()) -> False() isConsTerm(T(),Or(x1,x2)) -> False() isConsTerm(T(),T()) -> True() isOp(And(t1,t2)) -> True() isOp(F()) -> False() isOp(Or(t1,t2)) -> True() isOp(T()) -> False() - Signature: {and/2,bool/1,conj/1,disj/1,disjconj/1,getFirst/1,getSecond/1,isAnd/1,isConsTerm/2,isOp/1} / {And/2,F/0 ,False/0,Or/2,T/0,True/0} - Obligation: innermost runtime complexity wrt. defined symbols {and,bool,conj,disj,disjconj,getFirst,getSecond,isAnd ,isConsTerm,isOp} and constructors {And,F,False,Or,T,True} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(and) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(And) = [1] x1 + [1] x2 + [2] p(F) = [2] p(False) = [1] p(Or) = [1] x1 + [1] x2 + [0] p(T) = [3] p(True) = [0] p(and) = [1] x1 + [1] x2 + [5] p(bool) = [4] x1 + [3] p(conj) = [2] p(disj) = [4] p(disjconj) = [5] p(getFirst) = [1] x1 + [3] p(getSecond) = [4] x1 + [1] p(isAnd) = [4] p(isConsTerm) = [1] x1 + [6] p(isOp) = [2] x1 + [1] Following rules are strictly oriented: disj(And(a1,a2)) = [4] > [2] = conj(And(a1,a2)) Following rules are (at-least) weakly oriented: and(False(),False()) = [7] >= [1] = False() and(False(),True()) = [6] >= [1] = False() and(True(),False()) = [6] >= [1] = False() and(True(),True()) = [5] >= [0] = True() bool(And(a1,a2)) = [4] a1 + [4] a2 + [11] >= [1] = False() bool(F()) = [11] >= [0] = True() bool(Or(o1,o2)) = [4] o1 + [4] o2 + [3] >= [1] = False() bool(T()) = [15] >= [0] = True() conj(And(t1,t2)) = [2] >= [11] = and(disj(t1),conj(t1)) conj(F()) = [2] >= [0] = True() conj(Or(o1,o2)) = [2] >= [1] = False() conj(T()) = [2] >= [0] = True() disj(F()) = [4] >= [0] = True() disj(Or(t1,t2)) = [4] >= [11] = and(conj(t1),disj(t1)) disj(T()) = [4] >= [0] = True() disjconj(p) = [5] >= [4] = disj(p) getFirst(And(t1,t2)) = [1] t1 + [1] t2 + [5] >= [1] t1 + [0] = t1 getFirst(Or(t1,t2)) = [1] t1 + [1] t2 + [3] >= [1] t1 + [0] = t1 getSecond(And(t1,t2)) = [4] t1 + [4] t2 + [9] >= [1] t1 + [0] = t1 getSecond(Or(t1,t2)) = [4] t1 + [4] t2 + [1] >= [1] t1 + [0] = t1 isAnd(And(t1,t2)) = [4] >= [0] = True() isAnd(F()) = [4] >= [1] = False() isAnd(Or(t1,t2)) = [4] >= [1] = False() isAnd(T()) = [4] >= [1] = False() isConsTerm(And(a1,a2),And(y1,y2)) = [1] a1 + [1] a2 + [8] >= [0] = True() isConsTerm(And(a1,a2),F()) = [1] a1 + [1] a2 + [8] >= [1] = False() isConsTerm(And(a1,a2),Or(x1,x2)) = [1] a1 + [1] a2 + [8] >= [1] = False() isConsTerm(And(a1,a2),T()) = [1] a1 + [1] a2 + [8] >= [1] = False() isConsTerm(F(),And(y1,y2)) = [8] >= [1] = False() isConsTerm(F(),F()) = [8] >= [0] = True() isConsTerm(F(),Or(x1,x2)) = [8] >= [1] = False() isConsTerm(F(),T()) = [8] >= [1] = False() isConsTerm(Or(o1,o2),And(y1,y2)) = [1] o1 + [1] o2 + [6] >= [1] = False() isConsTerm(Or(o1,o2),F()) = [1] o1 + [1] o2 + [6] >= [1] = False() isConsTerm(Or(o1,o2),Or(x1,x2)) = [1] o1 + [1] o2 + [6] >= [0] = True() isConsTerm(Or(o1,o2),T()) = [1] o1 + [1] o2 + [6] >= [1] = False() isConsTerm(T(),And(y1,y2)) = [9] >= [1] = False() isConsTerm(T(),F()) = [9] >= [1] = False() isConsTerm(T(),Or(x1,x2)) = [9] >= [1] = False() isConsTerm(T(),T()) = [9] >= [0] = True() isOp(And(t1,t2)) = [2] t1 + [2] t2 + [5] >= [0] = True() isOp(F()) = [5] >= [1] = False() isOp(Or(t1,t2)) = [2] t1 + [2] t2 + [1] >= [0] = True() isOp(T()) = [7] >= [1] = False() Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 6: Failure MAYBE + Considered Problem: - Strict TRS: conj(And(t1,t2)) -> and(disj(t1),conj(t1)) disj(Or(t1,t2)) -> and(conj(t1),disj(t1)) - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() bool(And(a1,a2)) -> False() bool(F()) -> True() bool(Or(o1,o2)) -> False() bool(T()) -> True() conj(F()) -> True() conj(Or(o1,o2)) -> False() conj(T()) -> True() disj(And(a1,a2)) -> conj(And(a1,a2)) disj(F()) -> True() disj(T()) -> True() disjconj(p) -> disj(p) getFirst(And(t1,t2)) -> t1 getFirst(Or(t1,t2)) -> t1 getSecond(And(t1,t2)) -> t1 getSecond(Or(t1,t2)) -> t1 isAnd(And(t1,t2)) -> True() isAnd(F()) -> False() isAnd(Or(t1,t2)) -> False() isAnd(T()) -> False() isConsTerm(And(a1,a2),And(y1,y2)) -> True() isConsTerm(And(a1,a2),F()) -> False() isConsTerm(And(a1,a2),Or(x1,x2)) -> False() isConsTerm(And(a1,a2),T()) -> False() isConsTerm(F(),And(y1,y2)) -> False() isConsTerm(F(),F()) -> True() isConsTerm(F(),Or(x1,x2)) -> False() isConsTerm(F(),T()) -> False() isConsTerm(Or(o1,o2),And(y1,y2)) -> False() isConsTerm(Or(o1,o2),F()) -> False() isConsTerm(Or(o1,o2),Or(x1,x2)) -> True() isConsTerm(Or(o1,o2),T()) -> False() isConsTerm(T(),And(y1,y2)) -> False() isConsTerm(T(),F()) -> False() isConsTerm(T(),Or(x1,x2)) -> False() isConsTerm(T(),T()) -> True() isOp(And(t1,t2)) -> True() isOp(F()) -> False() isOp(Or(t1,t2)) -> True() isOp(T()) -> False() - Signature: {and/2,bool/1,conj/1,disj/1,disjconj/1,getFirst/1,getSecond/1,isAnd/1,isConsTerm/2,isOp/1} / {And/2,F/0 ,False/0,Or/2,T/0,True/0} - Obligation: innermost runtime complexity wrt. defined symbols {and,bool,conj,disj,disjconj,getFirst,getSecond,isAnd ,isConsTerm,isOp} and constructors {And,F,False,Or,T,True} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE