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

Imperfect Filtering #408

Open
ibnyusuf opened this issue Aug 15, 2022 · 8 comments
Open

Imperfect Filtering #408

ibnyusuf opened this issue Aug 15, 2022 · 8 comments

Comments

@ibnyusuf
Copy link
Member

Currently, Vampire code base maintains a lot of indices that work as perfect filters (return all and only terms required by theory).

It would be interesting to try replacing these with fewer indices that contain more terms each. Inferences then share indices and carry out post-procesing to filter out unwanted terms.

There is a trade-off in this proposal between time taken on managing indices vs time taken on post processing.

@MichaelRawson
Copy link
Contributor

I am very much in favour of this. Both imperfect indexing and unification (or maybe some unification-like thing - UWA?) can be implemented very efficiently and concisely, but perfect indexing is much trickier. I'm also not convinced that perfect indexing pays off.

It would be interesting to try replacing these with fewer indices that contain more terms each. Inferences then share indices and carry out post-procesing to filter out unwanted terms.

Could you expand on this a little? Maybe an example? I think there's two separate things to try here:

  1. imperfect indexing techniques like discrimination trees
  2. coalescing multiple indices into one and filtering out unwanted items

I think both are worth exploring, to be clear.

@quickbeam123
Copy link
Collaborator

Do we know of some papers evaluating indexing techniques in the past? Let's avoid common pitfalls and not try to reinvent the wheel ;)

@ibnyusuf
Copy link
Member Author

ibnyusuf commented Aug 15, 2022

I am not suggesting abandoning substitution trees. The suggestion is to combine similar indices (your #2). For example, instead of having a substitution tree that indexes only left-hand sides for demodulation, and another that indexes only left-hand sides for superposition, we have a tree that contains both sets of terms.

When performing a query on the index from demodulation, we may receive extra left-hand sides (those suitable for superposition, not demodulation) which will then need filtering out.

Looking into discrimination trees and other techniques is also interesting, but an even more radical departure from the current code base.

@MichaelRawson
Copy link
Contributor

The suggestion, is to combine similar indices (your #2). For example, instead of having a substitution tree that indexes only left-hand sides for demodulation, and another that indexes only left-hand sides for superposition, we have a tree that contains both sets of terms.

I see. This seems like a good idea. My only concern is that the performance win from combining indices (mostly spatial locality and reduced index maintenance, right?) will be lost by increased query time resulting a larger index. But it's worth a try!

@ibnyusuf
Copy link
Member Author

Do we know of some papers evaluating indexing techniques in the past? Let's avoid common pitfalls and not try to reinvent the wheel ;)

Here are a couple:

https://www.sciencedirect.com/science/articl/pii/B978044450813350028X?via%3Dihub
https://link.springer.com/content/pdf/10.1007/3-540-45744-5_18.pdf

@ibnyusuf
Copy link
Member Author

@selig
Copy link
Contributor

selig commented Aug 16, 2022 via email

@easychair
Copy link
Contributor

easychair commented Aug 16, 2022 via email

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

5 participants