Proof Attempts Cooperating via Models Giles Reger With Dmitry - - PowerPoint PPT Presentation

proof attempts cooperating via models
SMART_READER_LITE
LIVE PREVIEW

Proof Attempts Cooperating via Models Giles Reger With Dmitry - - PowerPoint PPT Presentation

One Proof Many Models Two Proofs Many Models Many Proofs Many Models Proof Attempts Cooperating via Models Giles Reger With Dmitry Tishkovsky and Andrei Voronkov University of Manchester 15th September 2015 One Proof Many Models Two Proofs


slide-1
SLIDE 1

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Proof Attempts Cooperating via Models

Giles Reger With Dmitry Tishkovsky and Andrei Voronkov

University of Manchester

15th September 2015

slide-2
SLIDE 2

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

AVATAR: Guiding proof search using Models

  • A new architecture implemented in Vampire
  • Idea presented at CAV 14 and CADE 15
  • Very high level idea:
  • 1. Represent the problem in a SAT solver
  • 2. Construct a Model
  • 3. If no model, return “unsat”
  • 4. Use the Model to select a sub-problem to explore
  • 5. If sub-problem is refuted, learn something and goto 1
  • 6. If strategy is complete retun “sat”
slide-3
SLIDE 3

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Creating the SAT problem with Splitting

  • The splitting basics:
  • For variable disjoint clauses C1 and C2
  • S ∪ (C1 ∨ C2) is unsat iff both S ∪ C1 and S ∪ C2 are
  • Consider S ∪ C1 and S ∪ C2 separately
  • For every clause C in the problem
  • Let D1 ∨ . . . ∨ Dn be its minimal variable-disjoint components
  • Consistently introduce a name pi for component Di
  • Add SAT clause p1 ∨ . . . ∨ pn
  • A model of this SAT problem is a splitting decision
slide-4
SLIDE 4

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

When refuting a model

  • First-order reasoning tracks which parts of the model derived

clauses depend on by labelling clauses

  • A will depend on some part of the model
  • Derive ⊥ | {p1, . . . , pn}
  • Learn/add the conflict clause ¬p1 ∨ . . . ∨ ¬pn
  • Now reconstruct the model
  • This represents backtracking
  • The conflict clause blocks a family of possible

models/splitting decisions

slide-5
SLIDE 5

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Missing details

  • Process is incremental, set of clauses expanding
  • When updating SAT model need to add/remove clauses from

FO solver

  • Simplifications may be conditional on current model as it can

change

  • Many variations i.e. may not add clause that cannot be split

to SAT solver

slide-6
SLIDE 6

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

AVATAR Architecture

Splitting Interface variant index component records current model SAT solver FO prover allProcessed new(C1 ∨ . . . ∨ Cn ← [C ′

1] ∧ . . . ∧ [C ′ m])

contradict(⊥ ← [C1] ∧ . . . ∧ [Cm]) assert(C ← [C]) reinsert(D ← A) remove(D ← A) Solve [C1] ∨ . . . ∨ [Cn] ∨ ¬[C ′

1] ∨ . . . ∨ ¬[C ′ m] (split clause)

¬[C1] ∨ . . . ∨ ¬[Cm] (contradiction clause) model Unsatisfiable

slide-7
SLIDE 7

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT Components

slide-8
SLIDE 8

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT Components

slide-9
SLIDE 9

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} Components

slide-10
SLIDE 10

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} q(b) | {} Components

slide-11
SLIDE 11

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} Components 1 → ¬p(x) 2 → ¬q(y)

slide-12
SLIDE 12

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} Components 1 → ¬p(x) 2 → ¬q(y)

slide-13
SLIDE 13

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬p(x) | {1} Components 1 → ¬p(x) 2 → ¬q(y)

slide-14
SLIDE 14

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬p(x) | {1} ⊥ | {1} Components 1 → ¬p(x) 2 → ¬q(y)

slide-15
SLIDE 15

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ⊥ | {1} Components 1 → ¬p(x) 2 → ¬q(y)

slide-16
SLIDE 16

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ⊥ | {1} Components 1 → ¬p(x) 2 → ¬q(y)

slide-17
SLIDE 17

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ⊥ | {1} ¬q(y) | {2} Components 1 → ¬p(x) 2 → ¬q(y)

slide-18
SLIDE 18

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ⊥ | {1} ¬q(y) | {2} ⊥ | {2} Components 1 → ¬p(x) 2 → ¬q(y)

slide-19
SLIDE 19

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ¬2 ⊥ | {1} ¬q(y) | {2} ⊥ | {2} Components 1 → ¬p(x) 2 → ¬q(y)

slide-20
SLIDE 20

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ¬2 ⊥ | {1} ¬q(y) | {2} ⊥ | {2} Components 1 → ¬p(x) 2 → ¬q(y)

slide-21
SLIDE 21

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

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
  • Refutation
  • From the SAT solver

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} ¬1 ¬p(x) | {1} ¬2 ⊥ | {1} ¬q(y) | {2} ⊥ | {2} Components 1 → ¬p(x) 2 → ¬q(y)

slide-22
SLIDE 22

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT Components

slide-23
SLIDE 23

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT Components

slide-24
SLIDE 24

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} Components

slide-25
SLIDE 25

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} q(b) | {} Components

slide-26
SLIDE 26

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} Components 1 → ¬p(x) 2 → ¬q(y)

slide-27
SLIDE 27

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} ∨ 2 q(b) | {} 3 ∨ 2 Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-28
SLIDE 28

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-29
SLIDE 29

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬p(x) | {1} ¬p(x) ∨ s(x) | {3} Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-30
SLIDE 30

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬p(x) | {1} ¬p(x) ∨ s(x) | {3}(1) Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-31
SLIDE 31

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬p(x) | {1} ¬p(x) ∨ s(x) | {3}(1) ⊥ | {1} Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-32
SLIDE 32

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬p(x) | {1} ¬1 ¬p(x) ∨ s(x) | {3}(1) ⊥ | {1} Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-33
SLIDE 33

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬p(x) | {1} ¬1 ¬p(x) ∨ s(x) | {3}(1) ⊥ | {1} ¬q(y) | {2} Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-34
SLIDE 34

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬p(x) | {1} ¬1 ¬p(x) ∨ s(x) | {3}(1) ⊥ | {1} ¬q(y) | {2} Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-35
SLIDE 35

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Varying the Example

  • Input:

p(a), q(b), ¬p(x) ∨ ¬q(y), ¬p(x) ∨ s(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

FO SAT p(a) | {} 1 ∨ 2 q(b) | {} 3 ∨ 2 ¬1 ¬p(x) ∨ s(x) | {3} ¬q(y) | {2} Components 1 → ¬p(x) 2 → ¬q(y) 3 → ¬p(x) ∨ s(y)

slide-36
SLIDE 36

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Not all vampires are equal

  • Vampire uses many strategies in a portfolio mode
  • Different strategies are suited to different problems
  • In this year’s CASC vampire used 152 strategies to solve

problems and tried 351

  • Further observation: not all strategies needed, but led to

quicker proofs

  • Intuition: if this applies to problems in general it should apply

to these sub-problems

slide-37
SLIDE 37

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO: Process clauses 2 SAT: Find model 3 FO: Use model 4 FO: Do FO proving

  • Process refutation

FO 1 SAT FO 2

slide-38
SLIDE 38

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO: Process clauses 2 SAT: Find model 3 FO: Use model 4 FO: Do FO proving

  • Process refutation

FO 1 SAT FO 2

slide-39
SLIDE 39

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 1 ∨ 3 5 ∨ . . . 7 . . .

slide-40
SLIDE 40

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 1 ∨ 3 5 ∨ . . . 7 . . .

slide-41
SLIDE 41

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D1 | {1} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 . . .

slide-42
SLIDE 42

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D1 | {1} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 ⊥ | {1, 5} . . .

slide-43
SLIDE 43

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D1 | {1} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 ⊥ | {1, 5} . . . ¬1 ∨ ¬5

slide-44
SLIDE 44

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D1 | {1} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 ⊥ | {1, 5} . . . ¬1 ∨ ¬5

slide-45
SLIDE 45

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D1 | {1} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 ⊥ | {1, 5, } . . . ¬1 ∨ ¬5

slide-46
SLIDE 46

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5

slide-47
SLIDE 47

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 . . .

slide-48
SLIDE 48

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 . . . . . .

slide-49
SLIDE 49

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 . . . . . .

slide-50
SLIDE 50

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 . . . . . .

slide-51
SLIDE 51

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 . . . . . .

slide-52
SLIDE 52

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} D5 | {5} 1 ∨ 3 D3 | {3} D7 | {7} 5 ∨ . . . D5 | {5} . . . 7 D7 | {7} D2 | {2} . . . . . . D3 | {3} ¬1 ∨ ¬5 . . . . . .

slide-53
SLIDE 53

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} 1 ∨ 3 D3 | {3} 5 ∨ . . . D5 | {5} 7 D7 | {7} . . . . . . ¬1 ∨ ¬5 . . .

slide-54
SLIDE 54

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} 1 ∨ 3 D3 | {3} 5 ∨ . . . D5 | {5} 7 D7 | {7} . . . . . . ¬1 ∨ ¬5 D1 ∨ D20 | {7} . . .

slide-55
SLIDE 55

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} 1 ∨ 3 D3 | {3} 5 ∨ . . . D5 | {5} 7 D7 | {7} . . . . . . ¬1 ∨ ¬5 D1 ∨ D20 | {7} 1 ∨ ¬7 ∨ 20

slide-56
SLIDE 56

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} 1 ∨ 3 D3 | {3} 5 ∨ . . . D5 | {5} 7 D7 | {7} . . . . . . ¬1 ∨ ¬5 D1 ∨ D20 | {7} 1 ∨ ¬7 ∨ 20

slide-57
SLIDE 57

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} 1 ∨ 3 D3 | {3} 5 ∨ . . . D5 | {5} 7 D7 | {7} . . . . . . ¬1 ∨ ¬5 D20 | {20} 1 ∨ ¬7 ∨ 20

slide-58
SLIDE 58

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 2: Process clauses 2 SAT: Find model 3 FO 2: Use model 4 FO 2: Do FO proving

  • Process refutation

FO 1 SAT FO 2 1 ∨ 2 D2 | {2} 1 ∨ 3 D3 | {3} 5 ∨ . . . D5 | {5} 7 D7 | {7} . . . . . . ¬1 ∨ ¬5 D20 | {20} 1 ∨ ¬7 ∨ 20

slide-59
SLIDE 59

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D20 | {20} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 1 ∨ ¬7 ∨ 20

slide-60
SLIDE 60

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D20 | {20} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 ⊥ | {7, 20} 1 ∨ ¬7 ∨ 20

slide-61
SLIDE 61

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation

FO 1 SAT FO 2 D20 | {20} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 ⊥ | {7, 20} 1 ∨ ¬7 ∨ 20 ¬7 ∨ ¬20

slide-62
SLIDE 62

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Example

  • Input:

D1 ∨D2, D1 ∨D3, C1, . . . Cn

  • Repeat

1 FO 1: Process clauses 2 SAT: Find model 3 FO 1: Use model 4 FO 1: Do FO proving

  • Process refutation
  • SAT Refutation

FO 1 SAT FO 2 D20 | {20} 1 ∨ 2 D5 | {5} 1 ∨ 3 D7 | {7} 5 ∨ . . . . . . 7 D2 | {2} . . . D3 | {3} ¬1 ∨ ¬5 ⊥ | {7, 20} 1 ∨ ¬7 ∨ 20 ¬7 ∨ ¬20

slide-63
SLIDE 63

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Organising many proofs

  • Some technical stuff to solve
  • Firstly, this required lots of reorganisation of the vampire

architecture to separate data structures etc.

  • How to deal with strategies that alter problem?
  • Currently restrict cooperating strategies to same preprocessed

problem

  • How to switch between proof attempts?
  • We introduce an interleaving architecture
slide-64
SLIDE 64

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Shared AVATAR Architecture

Splitting Interface variant index, component records, individual models SAT solver

· · ·

Proof attempt 1 Proof attempt n new clauses, contradictions splitting decisions new clauses, contradictions splitting decisions split and contradiction clauses Interpretation or Unsatisfiable

slide-65
SLIDE 65

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Interleaving Strategies

  • Generally if a strategy finds a proof it finds it quickly
  • By interleaving strategies we can find the quick proofs faster

S1 S2 S3 S4 S5 10s 22s 2s Proof found S1 S2 S3 S4 S5 Proof found 16s 2s

slide-66
SLIDE 66

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Some results...

  • ... but the whole architecture is currently being rewritten to

remove inefficiencies

  • We took
  • 1747 very hard first-order problems from TPTP
  • 30 random ‘sensible’ strategies
  • And ran
  • Each strategy independently for 10 seconds
  • All 30 together with a per-strategy 10 second time limit
  • We found
  • Problems were solved on average 1.53 times faster
  • Sharing splitting decisions led to 63 more problems being

solved, often quickly.

  • It also solved some rating 1 problems
  • However some problems were lost. There are two explanations
  • SAT solver overhead goes up 20%
  • Loss of memory locality
slide-67
SLIDE 67

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Experiment

100 200 300 100 200 300 400 20 85 207 290 125 250 311 365 386 9 259

seconds Number of solved problems

sequential pseudo-concurrent difference

slide-68
SLIDE 68

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

Conclusion

  • AVATAR uses SAT models to guide proof search
  • The changing models represent different sub-problems
  • As different strategies are good for different problems it makes

sense to solve these sub-problems as separate proof attempts

  • Some more engineering required before doing more exciting

things

  • Another exciting extension...
  • Replace SAT solver by SMT solver
  • We’ve done this for the single proof attempt version with Z3
slide-69
SLIDE 69

One Proof Many Models Two Proofs Many Models Many Proofs Many Models

VampireZ3... extra bits

  • If a component is ground then do not name it, instead

translate it to Z3 syntax

  • If it uses interpreted operations or numbers, translate these

into the appropriate Z3 operations or numbers

  • That’s it
  • Z3 will only produce models consistent with the underlying

theories

  • The FO solver only needs to consider this (much) smaller set
  • f sub-problems
  • Note: Only ground bits go to Z3, we still need to do

non-ground theory reasoning