YES Problem: strict: top(left(car(x,y),car(old(),z))) -> top(right(y,car(old(),z))) top(left(car(x,car(old(),y)),z)) -> top(right(car(old(),y),z)) top(right(x,car(y,car(old(),z)))) -> top(left(x,car(old(),z))) top(right(car(old(),x),car(y,z))) -> top(left(car(old(),x),z)) top(left(bot(),car(old(),x))) -> top(right(bot(),car(old(),x))) top(right(car(old(),x),bot())) -> top(left(car(old(),x),bot())) weak: top(left(car(x,y),z)) -> top(left(y,z)) top(right(x,car(y,z))) -> top(right(x,z)) bot() -> car(new(),bot()) Proof: Matrix Interpretation Processor: dim=2 interpretation: [1 1] [1 0] [1] [right](x0, x1) = [1 0]x0 + [0 0]x1 + [0], [0] [old] = [1], [1 0] [top](x0) = [1 0]x0, [0] [bot] = [0], [2 0] [1 2] [car](x0, x1) = [1 1]x0 + [1 0]x1, [0] [new] = [0], [1 2] [left](x0, x1) = x0 + [0 0]x1 orientation: [2 0] [1 2] [3 2] [2] [1 1] [1 2] [1] top(left(car(x,y),car(old(),z))) = [2 0]x + [1 2]y + [3 2]z + [2] >= [1 1]y + [1 2]z + [1] = top(right(y,car(old(),z))) [2 0] [3 2] [1 2] [2] [2 2] [1 0] [2] top(left(car(x,car(old(),y)),z)) = [2 0]x + [3 2]y + [1 2]z + [2] >= [2 2]y + [1 0]z + [2] = top(right(car(old(),y),z)) [1 1] [2 0] [3 2] [3] [1 0] [3 2] [2] top(right(x,car(y,car(old(),z)))) = [1 1]x + [2 0]y + [3 2]z + [3] >= [1 0]x + [3 2]z + [2] = top(left(x,car(old(),z))) [2 2] [2 0] [1 2] [2] [1 2] [1 2] top(right(car(old(),x),car(y,z))) = [2 2]x + [2 0]y + [1 2]z + [2] >= [1 2]x + [1 2]z = top(left(car(old(),x),z)) [3 2] [2] [1 2] [1] top(left(bot(),car(old(),x))) = [3 2]x + [2] >= [1 2]x + [1] = top(right(bot(),car(old(),x))) [2 2] [2] [1 2] top(right(car(old(),x),bot())) = [2 2]x + [2] >= [1 2]x = top(left(car(old(),x),bot())) [2 0] [1 2] [1 2] [1 0] [1 2] top(left(car(x,y),z)) = [2 0]x + [1 2]y + [1 2]z >= [1 0]y + [1 2]z = top(left(y,z)) [1 1] [2 0] [1 2] [1] [1 1] [1 0] [1] top(right(x,car(y,z))) = [1 1]x + [2 0]y + [1 2]z + [1] >= [1 1]x + [1 0]z + [1] = top(right(x,z)) [0] [0] bot() = [0] >= [0] = car(new(),bot()) problem: strict: top(left(car(x,car(old(),y)),z)) -> top(right(car(old(),y),z)) weak: top(left(car(x,y),z)) -> top(left(y,z)) top(right(x,car(y,z))) -> top(right(x,z)) bot() -> car(new(),bot()) Bounds Processor: bound: 1 enrichment: match-rt automaton: final states: {8} transitions: left1(15,8) -> 14* top1(14) -> 8* car1(16,15) -> 15,8 car1(12,8) -> 13* left0(8,8) -> 8* top0(8) -> 8* new0() -> 8* bot0() -> 8* car0(8,8) -> 8* right0(8,8) -> 8* old0() -> 8* old1() -> 12* new1() -> 16* bot1() -> 15* right1(8,15) -> 14* right1(13,15) -> 14* right1(13,8) -> 14* problem: strict: weak: top(left(car(x,y),z)) -> top(left(y,z)) top(right(x,car(y,z))) -> top(right(x,z)) bot() -> car(new(),bot()) Qed