NO Rewrite Rules: [ seteq(?xs,?ys) -> and(subseteq(?xs,?ys),subseteq(?ys,?xs)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y,?ys)) -> false, subseteq(cons(?x,?xs),?ys) -> and(member(?x,?ys),subseteq(?xs,?ys)), member(?x,nil) -> false, member(?x,cons(?y,?ys)) -> or(eq(?x,?y),member(?x,?ys)), eq(0,0) -> true, eq(0,s(?y)) -> false, eq(s(?x),0) -> false, eq(s(?x),s(?y)) -> eq(?x,?y), or(?x,true) -> true, or(true,?y) -> true, or(false,false) -> false, and(true,true) -> true, and(?x,false) -> false, and(false,?y) -> false, seteq(?xs,?xs) -> true, seteq(?xs,?ys) -> seteq(?ys,?xs) ] Apply Direct Methods... Inner CPs: [ ] Outer CPs: [ and(subseteq(?ys,?ys),subseteq(?ys,?ys)) = true, and(subseteq(?xs,?ys),subseteq(?ys,?xs)) = seteq(?ys,?xs), true = true, false = false, true = seteq(?xs_12,?xs_12) ] Overlay, check Innermost Termination... unknown Innermost Terminating unknown Knuth & Bendix not Left-Linear, not Right-Linear unknown Weakly-Non-Overlapping & Non-Collapsing & Shallow unknown Strongly Depth-Preserving & Root-E-Closed/Non-E-Overlapping unknown Strongly Weight-Preserving & Root-E-Closed/Non-E-Overlapping [ seteq(?xs,?ys) -> and(subseteq(?xs,?ys),subseteq(?ys,?xs)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y_1,?ys_1)) -> false, subseteq(cons(?x_2,?xs_2),?ys_2) -> and(member(?x_2,?ys_2),subseteq(?xs_2,?ys_2)), member(?x_3,nil) -> false, member(?x_4,cons(?y_4,?ys_4)) -> or(eq(?x_4,?y_4),member(?x_4,?ys_4)), eq(0,0) -> true, eq(0,s(?y_5)) -> false, eq(s(?x_6),0) -> false, eq(s(?x_7),s(?y_7)) -> eq(?x_7,?y_7), or(?x_8,true) -> true, or(true,?y_9) -> true, or(false,false) -> false, and(true,true) -> true, and(?x_10,false) -> false, and(false,?y_11) -> false, seteq(?xs_12,?xs_12) -> true, seteq(?xs_13,?ys_13) -> seteq(?ys_13,?xs_13) ] Sort Assignment: 0 : =>27 s : 27=>27 eq : 27*27=>50 or : 50*50=>50 and : 50*50=>50 nil : =>45 cons : 27*45=>45 true : =>50 false : =>50 seteq : 45*45=>50 member : 27*45=>50 subseteq : 45*45=>50 non-linear variables: {?xs_12} non-linear types: {45} types leq non-linear types: {45} rules applicable to terms of non-linear types: [ ] terms of non-linear types are innermost terminating outer CP = parallel reducts of p: {and(subseteq(?ys:45,?ys:45),subseteq(?ys:45,?ys:45))} parallel reducts of q: {true} unknown Quasi-Left-Linear & Parallel-Closed [ seteq(?xs,?ys) -> and(subseteq(?xs,?ys),subseteq(?ys,?xs)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y_1,?ys_1)) -> false, subseteq(cons(?x_2,?xs_2),?ys_2) -> and(member(?x_2,?ys_2),subseteq(?xs_2,?ys_2)), member(?x_3,nil) -> false, member(?x_4,cons(?y_4,?ys_4)) -> or(eq(?x_4,?y_4),member(?x_4,?ys_4)), eq(0,0) -> true, eq(0,s(?y_5)) -> false, eq(s(?x_6),0) -> false, eq(s(?x_7),s(?y_7)) -> eq(?x_7,?y_7), or(?x_8,true) -> true, or(true,?y_9) -> true, or(false,false) -> false, and(true,true) -> true, and(?x_10,false) -> false, and(false,?y_11) -> false, seteq(?xs_12,?xs_12) -> true, seteq(?xs_13,?ys_13) -> seteq(?ys_13,?xs_13) ] Sort Assignment: 0 : =>27 s : 27=>27 eq : 27*27=>50 or : 50*50=>50 and : 50*50=>50 nil : =>45 cons : 27*45=>45 true : =>50 false : =>50 seteq : 45*45=>50 member : 27*45=>50 subseteq : 45*45=>50 non-linear variables: {?xs,?ys,?ys_2,?x_4,?xs_12} non-linear types: {45,27} types leq non-linear types: {45,27} rules applicable to terms of non-linear types: [ ] Rnl: 0: {} 1: {} 2: {} 3: {} 4: {} 5: {} 6: {} 7: {} 8: {} 9: {} 10: {} 11: {} 12: {} 13: {} 14: {} 15: {} 16: {} 17: {} terms of non-linear types are innermost terminating Critical Pair by Rules <16, 0> no joinable sequence for some critical pairs unknown Quasi-Linear & Linearized-Decreasing [ seteq(?xs,?ys) -> and(subseteq(?xs,?ys),subseteq(?ys,?xs)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y_1,?ys_1)) -> false, subseteq(cons(?x_2,?xs_2),?ys_2) -> and(member(?x_2,?ys_2),subseteq(?xs_2,?ys_2)), member(?x_3,nil) -> false, member(?x_4,cons(?y_4,?ys_4)) -> or(eq(?x_4,?y_4),member(?x_4,?ys_4)), eq(0,0) -> true, eq(0,s(?y_5)) -> false, eq(s(?x_6),0) -> false, eq(s(?x_7),s(?y_7)) -> eq(?x_7,?y_7), or(?x_8,true) -> true, or(true,?y_9) -> true, or(false,false) -> false, and(true,true) -> true, and(?x_10,false) -> false, and(false,?y_11) -> false, seteq(?xs_12,?xs_12) -> true, seteq(?xs_13,?ys_13) -> seteq(?ys_13,?xs_13) ] Sort Assignment: 0 : =>27 s : 27=>27 eq : 27*27=>50 or : 50*50=>50 and : 50*50=>50 nil : =>45 cons : 27*45=>45 true : =>50 false : =>50 seteq : 45*45=>50 member : 27*45=>50 subseteq : 45*45=>50 non-linear variables: {?xs,?ys,?ys_2,?x_4,?xs_12} non-linear types: {45,27} types leq non-linear types: {45,27} rules applicable to terms of non-linear types: [ ] terms of non-linear types are terminating Check Joinablility of CP from NLR: done. Critical Pair by Rules <16, 0> no joinable sequence for some critical pairs unknown Strongly Quasi-Linear & Hierarchically Decreasing check Non-Confluence... obtain 18 rules by 3 steps unfolding obtain 5 candidates for checking non-joinability check by TCAP-Approximation [ seteq(?xs:List,?ys:List) -> and(subseteq(?xs:List,?ys:List),subseteq(?ys:List,?xs:List)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y:Nat,?ys:List)) -> false, subseteq(cons(?x:Nat,?xs:List),?ys:List) -> and(member(?x:Nat,?ys:List),subseteq(?xs:List,?ys:List)), member(?x:Nat,nil) -> false, member(?x:Nat,cons(?y:Nat,?ys:List)) -> or(eq(?x:Nat,?y:Nat),member(?x:Nat,?ys:List)), eq(0,0) -> true, eq(0,s(?y:Nat)) -> false, eq(s(?x:Nat),0) -> false, eq(s(?x:Nat),s(?y:Nat)) -> eq(?x:Nat,?y:Nat), or(?x:Bool,true) -> true, or(true,?y:Bool) -> true, or(false,false) -> false, and(true,true) -> true, and(?x:Bool,false) -> false, and(false,?y:Bool) -> false, seteq(?xs:List,?xs:List) -> true, seteq(?xs:List,?ys:List) -> seteq(?ys:List,?xs:List) ] [ seteq(?xs:List,?ys:List) -> and(subseteq(?xs:List,?ys:List),subseteq(?ys:List,?xs:List)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y:Nat,?ys:List)) -> false, subseteq(cons(?x:Nat,?xs:List),?ys:List) -> and(member(?x:Nat,?ys:List),subseteq(?xs:List,?ys:List)), member(?x:Nat,nil) -> false, member(?x:Nat,cons(?y:Nat,?ys:List)) -> or(eq(?x:Nat,?y:Nat),member(?x:Nat,?ys:List)), eq(0,0) -> true, eq(0,s(?y:Nat)) -> false, eq(s(?x:Nat),0) -> false, eq(s(?x:Nat),s(?y:Nat)) -> eq(?x:Nat,?y:Nat), or(?x:Bool,true) -> true, or(true,?y:Bool) -> true, or(false,false) -> false, and(true,true) -> true, and(?x:Bool,false) -> false, and(false,?y:Bool) -> false, seteq(?xs:List,?xs:List) -> true, seteq(?xs:List,?ys:List) -> seteq(?ys:List,?xs:List) ] [ seteq(?xs:List,?ys:List) -> and(subseteq(?xs:List,?ys:List),subseteq(?ys:List,?xs:List)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y:Nat,?ys:List)) -> false, subseteq(cons(?x:Nat,?xs:List),?ys:List) -> and(member(?x:Nat,?ys:List),subseteq(?xs:List,?ys:List)), member(?x:Nat,nil) -> false, member(?x:Nat,cons(?y:Nat,?ys:List)) -> or(eq(?x:Nat,?y:Nat),member(?x:Nat,?ys:List)), eq(0,0) -> true, eq(0,s(?y:Nat)) -> false, eq(s(?x:Nat),0) -> false, eq(s(?x:Nat),s(?y:Nat)) -> eq(?x:Nat,?y:Nat), or(?x:Bool,true) -> true, or(true,?y:Bool) -> true, or(false,false) -> false, and(true,true) -> true, and(?x:Bool,false) -> false, and(false,?y:Bool) -> false, seteq(?xs:List,?xs:List) -> true, seteq(?xs:List,?ys:List) -> seteq(?ys:List,?xs:List) ] [ seteq(?xs:List,?ys:List) -> and(subseteq(?xs:List,?ys:List),subseteq(?ys:List,?xs:List)), subseteq(nil,nil) -> true, subseteq(nil,cons(?y:Nat,?ys:List)) -> false, subseteq(cons(?x:Nat,?xs:List),?ys:List) -> and(member(?x:Nat,?ys:List),subseteq(?xs:List,?ys:List)), member(?x:Nat,nil) -> false, member(?x:Nat,cons(?y:Nat,?ys:List)) -> or(eq(?x:Nat,?y:Nat),member(?x:Nat,?ys:List)), eq(0,0) -> true, eq(0,s(?y:Nat)) -> false, eq(s(?x:Nat),0) -> false, eq(s(?x:Nat),s(?y:Nat)) -> eq(?x:Nat,?y:Nat), or(?x:Bool,true) -> true, or(true,?y:Bool) -> true, or(false,false) -> false, and(true,true) -> true, and(?x:Bool,false) -> false, and(false,?y:Bool) -> false, seteq(?xs:List,?xs:List) -> true, seteq(?xs:List,?ys:List) -> seteq(?ys:List,?xs:List) ] (success) Witness for Non-Confluence: true> Direct Methods: not CR Final result: not CR new/seteq.trs: Success(not CR) (18 msec.)