Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tool doesn't find proof [Pairing implies Singleton] #23

Closed
Jean-Luc-Picard-2021 opened this issue Jul 13, 2023 · 11 comments
Closed

Tool doesn't find proof [Pairing implies Singleton] #23

Jean-Luc-Picard-2021 opened this issue Jul 13, 2023 · 11 comments

Comments

@Jean-Luc-Picard-2021
Copy link

Jean-Luc-Picard-2021 commented Jul 13, 2023

Strange, this here terminates quickly:

∀a∀b∃c∀d(Edc ↔ (d=a ∨ d=b)) → ∀b∃c∀d(Edc ↔ (d=b ∨ d=b)) is valid.

https://www.umsu.de/trees/#~6a~6b~7c~6d(Edc~4(d=a~2d=b))~5~6b~7c~6d(Edc~4(d=b~2d=b))

But this here doesn't terminate:

∀a∀b∃c∀d(Edc↔(d=a∨d=b))→∀b∃c∀d(Edc↔d=b) runs and runs and runs

https://www.umsu.de/trees/#~6a~6b~7c~6d(Edc~4(d=a~2d=b))~5~6b~7c~6d(Edc~4d=b)

Any idea whats going on?

@wo
Copy link
Owner

wo commented Jul 14, 2023

Odd! Not sure why this happens. Unfortunately both proofs are quite complex, and they diverge early on. Would (will?) take some time to get to the bottom of this.

@beaubranson
Copy link

beaubranson commented Jul 14, 2023 via email

@wo
Copy link
Owner

wo commented Jul 14, 2023

The problem is that the equality rules can often be applied in many ways, so I have to explore a lot of alternative tree constructions in parallel until I find one that closes. Without equality, there are fewer alternatives to explore. For some reason, the superfluous disjunction also causes the prover to explores fewer simultaneous alternatives. Not sure why.

If the prover seems stuck, this is practically always because it is considering too many alternatives and keeps adding new ones, so that it makes very slow progress on each of them.

@beaubranson
Copy link

beaubranson commented Jul 14, 2023 via email

wo added a commit that referenced this issue Jul 15, 2023
When checking for redundant alternatives among prover.alternatives, I
used to compare different trees by checking if each open branch on one
extends some open branch on another. This is problematic if the trees
contain a disjunction p v p (with the same disjunct on both sides). Any
branch that develops the left disjunct on tree1 then extends the
undeveloped right-hand branch on tree2, even if tree1 and tree2
otherwise explore very different strategies.

The present change helps with issue #23 on github, but it causes a
regression for Pelletier's problem 51, which was previously provable in
2508 steps and now appears to become unprovable in any reasonable time.
(Problems 49 and 52 also perform much worse.)
@wo
Copy link
Owner

wo commented Jul 15, 2023

I've found (and fixed) a problem that seems to have caused this. Unfortunately, the fix slows down some other test cases, especially Pelletier's problem 51, which used to take 3 seconds and now takes 30. (You can see how it's exploring way too many alternatives.)

@wo wo closed this as completed Jul 15, 2023
@beaubranson
Copy link

beaubranson commented Jul 15, 2023 via email

@wo
Copy link
Owner

wo commented Jul 15, 2023

Maybe you still have the old version in cache? Otherwise there's a good chance that your computer is faster than mine. I'm working on an 11 year old thinkpad.

@Jean-Luc-Picard-2021
Copy link
Author

Jean-Luc-Picard-2021 commented Jul 17, 2023

Interesting. Its nice that it can now automatically find a proof:

∀a∀b∃c∀d(Edc ↔ (d=a ∨ d=b)) → ∀b∃c∀d(Edc ↔ d=b) is valid.

https://www.umsu.de/trees/#~6a~6b~7c~6d(Edc~4(d=a~2d=b))~5~6b~7c~6d(Edc~4d=b)

But it seems it finds a proof in FOL=. I see the following
inference step, which is I guess substitution:

26. ¬Eef(18,17,LL)

I speculate a proof without equality is also possible. You
can see a proof shape here:

∀a∀b∃c∀d(Edc ↔ (Ida ∨ Idb)) → ∀b∃c∀d(Edc ↔ Idb) is valid.

https://www.umsu.de/trees/#~6a~6b~7c~6d%28Edc~4%28Ida~2Idb%29%29~5~6b~7c~6d%28Edc~4Idb%29

The FOL only proof is one step shorter and more symmetric.
Just some observations, don't worry.

@wo
Copy link
Owner

wo commented Jul 17, 2023

Right. The prover finds the tableau with equality first because the other one actually has a larger free-variable tableau.

@Jean-Luc-Picard-2021
Copy link
Author

Jean-Luc-Picard-2021 commented Jul 17, 2023

My point, that I wanted to make, was the converse.
Its not lager, its smaller, you can check by yourself:

FOL= proof: 28 steps
FOL proof: 27 steps

Or how do you count? But the visible count might be
different from some internal counting? And also maybe give
a bad indicator how proof search and enumeration is done?

@wo
Copy link
Owner

wo commented Jul 17, 2023

Yes, the visible tableaux are quite different from the internal ones. After an internal proof has been found I convert it into the visible proof, removing all unused steps. (There's still room for improvement: one could easily bring the FOL proof down to 26 nodes by moving nodes 24 and 21 onto the tree trunk.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants