Comments (7)
from vampire.
@selig , I think you have a typo there, the mode is called tclausify
.
(Still, the output clause set will be far from a complete axiomatization of real (or any other) arithmetic or datatypes. So it's satisfiability does not imply the same for the source input.)
from vampire.
Thanks for your quick replies! I have some more questions about this if that's okay.
Vampire assumes it is incomplete for data types.
In "Coming to Terms with Quantified Reasoning" it is mentioned that the datatype support implemented in Vampire is actually complete. Did the implementation change and is it now incomplete, or is it incomplete in a different way, say combined with reals or functions, as in my example?
Also, does this incompleteness mean vampire might say "unsatisfiable" when the input is actually satisfiable, meaning, can be refuted? Or am I now mixing up refutation prover terminology?
Regarding this issue: to me it feels like this is not something that's easily fixable, so if this is the case this issue can be closed.
EDIT:
I commented out some more parts of my smt2 input and am still wondering about the behavior I see. If I comment out the smt2 datatypes declaration and use --mode casc
, vampire just spins, i.e., repeatedly restarts with "refutation not found, incomplete strategy". If I first preprocess it with tclausify
, vampire determines the input to be satisfiable immediately. Finally, if I remove the define-fun
, vampire can establish satisfiability without tclausify
. Having or not having Real
in there makes no difference.
The input:
(define-sort $Perm() Real)
(define-fun $Perm.No () $Perm 0.0)
(check-sat)
It seems that the behaviour I'm seeing has more to do with how vampire axiomates smt's define-fun
, and this subtlety is not shown when processing the smt with tclausify
? If you'd have time to look into this silly edge case or explain it to me I'd be very grateful. But if this is an unimportant edge case for vampire feel free to ignore this comment & close the issue!
from vampire.
The first-order theory of algebraic data types is decidable (or complete as you mention), as long as it is only about the term algebra (that is, only ADT constructors/destructors) . There are decision procedures for proving ADT formulas; but again, these are decision procedures when the formulas use ADT symbols only. In the " "Coming to Terms with Quantified Reasoning" paper we show decidability for a conservative extension of the ADT theory (restricted to ADT symbols and a subterm predicate); no uninterpreted function and other arbitrary sorts.
Once you start using additional symbols, such as uninterpreted functions or theory-symbols from different theories (e.g. reals, integers), the theory becomes undecidable. The undecidability proof is actually given in the "Coming to Terms with Quantified Reasoning" paper (Theorem 2).
The ADT reasoning in Vampire is based on the incomplete variation of superposition calculus + ADT (section 6 of the aforementioned paper). This variation comes with the advantage that we can work with ADT formulas combined with other theories, but it is incomplete. If a formula is provable/valid, we should be able to find a proof; but that is kind of aall we can guarantee. Satisfiability of ADT properties were not our focus yet, as as said, it cannot be made complete for arbitrary first-order formulas involving ADTs (but not just).
from vampire.
Thank you for the explanation, that clears it up for me.
Two more questions if that's okay.
First, if you axiomatize datatypes "manually" using quantifiers and types in tff, is it the case that you get similar expressive power compared to vampire's native ADT support, but performance suffers because new quantifiers are introduced for each datatype?
Second, is there a mailing list or forum that I should use if I want to ask more questions? Or should I use the github issues for that?
from vampire.
If I remember correctly, you cannot finitely axiomatize the ADT theory, so "manual" will always be incomplete. Even if I am wrong, tailored inference rules which vampire employs are almost always better than axiomatizations, which they replace, because of how the inference rules interact with one another and with the rest of the calculus.
Issues seem to be a good way to reach us with easy to formulate usability questions.
from vampire.
Okay, thank you all very much!
from vampire.
Related Issues (20)
- The version of z3 we are currently linking against (tag: z3-4.12.2 from May) again fails to deliver definite answers sometimes HOT 3
- Smart ep=RSTC skips congruences for introduced symbols for which it shouldn't? HOT 2
- [macOS] Build uses unsupported flags which break it: `cc1plus: error: '-fno-fat-lto-objects' are supported only with linker plugin` HOT 40
- Revive `gcov` HOT 2
- Linking error when building Debug version in Cygwin HOT 8
- Miscellanious Crashes HOT 14
- 3 tests fail on Sonoma / aarch64 HOT 3
- don't synchronise proofs if we don't print them HOT 1
- Unexpected "User error: This version cannot be used with this logic!" HOT 1
- Reimplement Lib/Set.hpp as a wrapper of std::unordered_set HOT 9
- A different operator precedence when parsing HOL? HOT 1
- FDI is really not very good and not type-safe.
- Crash on `PUZ091^5` with NewCNF HOT 4
- Bad saturation on `SYO500_8.008` HOT 11
- How make Vampire return true/false for a given problem (question)? HOT 5
- UPDR incorrect (deletes too much) in the presence of specially parsed function definitions from SMT HOT 4
- SaturationAlgorithm::addInputSOSClause is currently skipping forwardSimplify
- No proof with implies-transitive SMT problem (regression) HOT 4
- Vampire crashing when printing a finite model: HOT 1
- Printing some large proofs kills us? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vampire.