playing with avatar how to play with avatar
play

Playing with AVATAR How to play with AVATAR Giles Reger, Martin - PowerPoint PPT Presentation

Playing with AVATAR How to play with AVATAR Giles Reger, Martin Suda and Andrei Voronkov School of Computer Science, University of Manchester The 1st Vampire Workshop Reger,G How to play with AVATAR 1 / 26 Overview Introduction 1


  1. Playing with AVATAR How to play with AVATAR Giles Reger, Martin Suda and Andrei Voronkov School of Computer Science, University of Manchester The 1st Vampire Workshop Reger,G How to play with AVATAR 1 / 26

  2. Overview Introduction 1 Reviewing AVATAR 2 The variables 3 How to evaluate 4 Results 5 Conclusion 6 Reger,G How to play with AVATAR 2 / 26

  3. Introduction In this talk we will: Briefly recall what the AVATAR architecture is List the parameters that control its behaviour ◮ (and what effects they have) Discuss how we should evaluate these kinds of frameworks Present results of our experimental evaluation Work in progress! Reger,G How to play with AVATAR 3 / 26

  4. Overview Introduction 1 Reviewing AVATAR 2 The variables 3 How to evaluate 4 Results 5 Conclusion 6 Reger,G How to play with AVATAR 4 / 26

  5. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) Repeat ◮ FO: Process new clauses ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components Reger,G How to play with AVATAR 5 / 26

  6. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) Repeat ◮ FO: Process new clauses ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components Reger,G How to play with AVATAR 5 / 26

  7. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} Repeat ◮ FO: Process new clauses ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components Reger,G How to play with AVATAR 5 / 26

  8. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} Repeat q ( b ) | {} ◮ FO: Process new clauses ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components Reger,G How to play with AVATAR 5 / 26

  9. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ◮ FO: Process new clauses ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  10. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ◮ FO: Process new clauses ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  11. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ⋆ split clauses into components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  12. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ⋆ split clauses into ⊥ | { 1 } components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  13. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ⋆ split clauses into ⊥ | { 1 } components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  14. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ⋆ split clauses into ⊥ | { 1 } components ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  15. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ⋆ split clauses into ⊥ | { 1 } components ¬ q ( y ) | { 2 } ◮ SAT: Construct model ◮ FO: Use model (do splitting) ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  16. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ⋆ split clauses into ⊥ | { 1 } components ¬ q ( y ) | { 2 } ◮ SAT: Construct model ◮ FO: Use model (do splitting) ⊥ | { 2 } ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  17. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ¬ 2 ⋆ split clauses into ⊥ | { 1 } components ¬ q ( y ) | { 2 } ◮ SAT: Construct model ◮ FO: Use model (do splitting) ⊥ | { 2 } ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  18. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ¬ 2 ⋆ split clauses into ⊥ | { 1 } components ¬ q ( y ) | { 2 } ◮ SAT: Construct model ◮ FO: Use model (do splitting) ⊥ | { 2 } ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) 2 �→ ¬ q ( y ) Reger,G How to play with AVATAR 5 / 26

  19. AVATAR Input: FO SAT p ( a ), q ( b ), ¬ p ( x ) ∨ ¬ q ( y ) p ( a ) | {} 1 ∨ 2 Repeat q ( b ) | {} ¬ 1 ◮ FO: Process new clauses ¬ p ( x ) | { 1 } ¬ 2 ⋆ split clauses into ⊥ | { 1 } components ¬ q ( y ) | { 2 } ◮ SAT: Construct model ◮ FO: Use model (do splitting) ⊥ | { 2 } ◮ FO: Do FO proving ⋆ Process refutation Components 1 �→ ¬ p ( x ) Refutation 2 �→ ¬ q ( y ) ◮ From the SAT solver as we cannot construct a model Reger,G How to play with AVATAR 5 / 26

  20. Important points Components are always named consistently (up to variants) An inference between two clauses with assertions takes the union of those assertions: c 1 | a 1 c 2 | a 2 d | ( a 1 ∪ a 2 ) Removal of redundant clauses is conditional in general: ◮ assume that c 2 is subsumed by c 1 for clauses c 1 | a 1 and c 2 | a 2 ◮ If a 1 ⊆ a 2 ⋆ Then whenever c 1 | a 1 is backtracked, then c 2 | a 2 must be also, as an assertion in a 1 is retracted, which must also be in a 2 ⋆ Therefore, we can remove c 2 | a 2 ◮ otherwise ( a 1 �⊆ a 2 ) ⋆ Later, if an assertion in a 2 / a 1 is retracted then c 1 | a 1 would be backtracked, but c 2 | a 2 would not be ⋆ Therefore, we conditionally remove (freeze) c 2 | a 2 ⋆ Then, if c 1 | a 1 is later removed we must add (unfreeze) c 2 | a 2 Reger,G How to play with AVATAR 6 / 26

  21. Overview Introduction 1 Reviewing AVATAR 2 The variables 3 How to evaluate 4 Results 5 Conclusion 6 Reger,G How to play with AVATAR 8 / 26

  22. Adding components (nonsplittable clauses) If we cannot split a clause into components what do we do? ◮ Just add it anyway - it might be useful later! ◮ Only add it as a component if it has assertions (dependencies) i.e. ⋆ If we derive q ( x ) ∨ p ( x ) |{ 2 , 4 } we would add ¬ 2 ∨ ¬ 4 ∨ 8 (for fresh 8) ⋆ Helps if 8 is derived again later ◮ Only add it as a component if it is a known component i.e. ⋆ We previously added 2 ∨ 4 for r ( y ) �→ 2 and q ( x ) ∨ p ( x ) �→ 4 ⋆ We then derive q ( x ) ∨ p ( x ) and add 4 ⋆ The SAT solver must always choose 4 - simplifying 2 ∨ 4 ◮ Don’t add it Reger,G How to play with AVATAR 9 / 26

  23. Adding components (ground components) If a component is ground it is safe to introduce a name for its negation (not safe for non-ground) If we have p ( x ) ∨ q ( a ) and ¬ p ( x ) ∨ ¬ q ( a ) we can add 1 ∨ 2 and 3 ∨ 4 but it is better to add 1 ∨ 2 and 3 ∨ ¬ 2 This is something we do not play with, as previous experiments showed that it was consistently a good idea Note that a ground component will be a literal Reger,G How to play with AVATAR 10 / 26

  24. Constructing a model In AVATAR the SAT solver is a black box that is allowed to construct any valid model. There are two things we can consider ◮ How quickly a model can be constructed ◮ What model is constructed It is obvious that the model produced has a very large effect on the exploration of the search space. We consider two SAT solvers: ◮ A native (two watched literals) solver ◮ lingeling (with relatively default options) We also consider a buffering optimisation that buffers a clause if, either ◮ it contains a fresh variable that can be made true, or ◮ it is already true in the model This may lead to fewer calls to the SAT solver, but will also lead to a different model Reger,G How to play with AVATAR 11 / 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend