Zulip Chat Archive

Stream: Equational

Topic: A question about KB with constants.


Fan Zheng (Oct 15 2024 at 16:52):

I'm playing with the online version of KBCV and I give it the following input:

m(x,y)=m(y,m(y,m(x,x))) (Equation 3352)
m(m(x,x),m(x,x))=o() (which I add myself)

and it outputs the completion:

Knuth-Bendix completion

K1 : m(m(x,x),m(x,m(x,x))) -> o()
R1 : m(x,m(x,m(y,y))) -> m(y,x)
R2 : m(m(x,x),m(x,x)) -> o()

Squier completion

C1

m(m(x,x),m(m(x,x),m(m(x,x),m(x,x)))) -R1(m(x,x),m(x,x))-> m(m(x,x),m(x,x)) -R2(x)-> o()
m(m(x,x),m(m(x,x),m(m(x,x),m(x,x)))) -m(m(x,x),R1(m(x,x),x))-> m(m(x,x),m(x,m(x,x))) -K1(x)-> o()

so is it saying that K1, R1 and R2 are complete?, but how about the following CR:

o=(xx)(xx)=(xx)((xx)((xx)(xx)))=(xx)((xx)o),

where the RHS seems irreducible?

Fan Zheng (Oct 15 2024 at 16:53):

And this even simpler one:
x(xx)=(xx)((xx)(xx))=(xx)o?

Bhavik Mehta (Oct 15 2024 at 19:48):

I'm not sure which version of KBCV you're using, but a local install terminates with error giving that one of the equations can't be oriented. Although I don't quite know why it's not orientable...

Bhavik Mehta (Oct 15 2024 at 20:31):

Playing with it by hand, I think I've shown that m(x,y) -> o() (which is clearly confluent)

Cody Roux (Oct 15 2024 at 20:41):

which version are you using?

Cody Roux (Oct 15 2024 at 20:42):

my guess is that it uses KB order or RPO/LPO/MPO, which for this kind of system is pretty much just size of terms

Bhavik Mehta (Oct 15 2024 at 20:57):

The version I'm using is LPO

Cody Roux (Oct 15 2024 at 20:57):

Yea so "lex term size" in this case

Bhavik Mehta (Oct 15 2024 at 20:58):

Does that justify why m(x,y)=m(y,m(y,m(x,x))) can't be oriented backwards? The term size looks pretty clearly decreasing to me! Or is the idea that x could be much larger than y in the general case

Cody Roux (Oct 15 2024 at 20:59):

swapping variables is a good way to confuse a lex

Cody Roux (Oct 15 2024 at 21:00):

mpo might owrk

Cody Roux (Oct 15 2024 at 21:00):

(I'll leave that typo)

Cody Roux (Oct 15 2024 at 21:01):

I have a little KB completion implementation and it was hard to get right, wouldn't be horribly shocked if there was a bug in the online version

Fan Zheng (Oct 15 2024 at 21:36):

@Bhavik Mehta I'm using the online version. Playing by hand I get (substituting xx for x in xy=y(y(xx)) ) (xx)y=y(yo()), which is not orientable, right?

Cody Roux (Oct 15 2024 at 22:26):

Not with LPO, I think

Cody Roux (Oct 15 2024 at 22:27):

I'm bad at this; sometimes I use https://aprove.informatik.rwth-aachen.de/interface/v-AProVE2023/trs_aprove to figure out if a TRS terminates; it's astronomically more powerful than LPO/MPO but it gives an idea


Last updated: May 02 2025 at 03:31 UTC