Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing +...

37
Finding bugs from failed verification attempts Christoph Gladisch University of Koblenz May 20th, 2009 Finding bugs from failed verification attempts: May 20th, 2009

Transcript of Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing +...

Page 1: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Finding bugs from failed verification attempts

Christoph Gladisch

University of Koblenz

May 20th, 2009

Finding bugs from failed verification attempts: May 20th, 2009

Page 2: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 3: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 4: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 5: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 6: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 7: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 8: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Related Work from the KeY group

Verification-based Testing (Engel, Hahnle)(pathCond .0 =⇒ {U0}〈p0〉post) . . . (pathCond .n =⇒ {Un}〈pn〉post)

White-box testing through black-box testing + specification mining(Beckert, Gladisch)

Improving specifications for testing (Bender, Gladisch)

Disproving/Disverification (Rummer)∃S .{S}¬(pre → 〈p〉post)

Symbolic Debugger (Baum, Hahnle, Rothe)

Tool chain KeYGenU for regression unit testing (Gladisch,Tyshberowicz, Beckert, Yehudai)PUT → KeY → U → GenUTest → U ′

Full feasible branch coverageCBP: pre ∧ {M := Msk}(post ∧ φ)Strength cond.: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 9: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Introduction

Goal

Combine verification and bug detection in a very unified way

Core ideas

Purely symbolic

Reuse a maximum of information from a failed proof attempt

Search bugs on open proof branches

Problem/Challenge

Falsifiable branches do not imply program error

Contract rules (more general: abstraction techniques)

Finding bugs from failed verification attempts: May 20th, 2009

Page 10: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Introduction

Goal

Combine verification and bug detection in a very unified way

Core ideas

Purely symbolic

Reuse a maximum of information from a failed proof attempt

Search bugs on open proof branches

Problem/Challenge

Falsifiable branches do not imply program error

Contract rules (more general: abstraction techniques)

Finding bugs from failed verification attempts: May 20th, 2009

Page 11: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Introduction

Goal

Combine verification and bug detection in a very unified way

Core ideas

Purely symbolic

Reuse a maximum of information from a failed proof attempt

Search bugs on open proof branches

Problem/Challenge

Falsifiable branches do not imply program error

Contract rules (more general: abstraction techniques)

Finding bugs from failed verification attempts: May 20th, 2009

Page 12: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Contract Rules

Method Contract Rule (prem, postm,M, 〈[]〉) M = mod(p)

1: Γ ⇒ {U}prem,∆2: Γ ⇒ {U}(prem → 〈[m()]〉postm),∆3: Γ ⇒ {U}{M}(postm → post),∆

Γ ⇒ {U}〈[m()]〉post,∆

Loop Invariant Rule (I , I ∧ ¬c ,M, []) M = mod(b)

1: Γ ⇒ {U}I ,∆2: Γ ⇒ {U}{M}(I ∧ c → [b]I ),∆3: Γ ⇒ {U}{M}((I ∧ ¬c) → post),∆

Γ ⇒ {U}[while(c){b;}]post,∆

Finding bugs from failed verification attempts: May 20th, 2009

Page 13: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Approach

1 Try to verify program

2 Improve contract until 1st and 2nd branch of contract rule is proved

3 Check falsifiability of 3rd branch

4 prove SFP, “some Strange and Funny Property”

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn

Finding bugs from failed verification attempts: May 20th, 2009

Page 14: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Approach

1 Try to verify program

2 Improve contract until 1st and 2nd branch of contract rule is proved

3 Check falsifiability of 3rd branch

4 prove SFP, “some Strange and Funny Property”

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn

Finding bugs from failed verification attempts: May 20th, 2009

Page 15: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Approach

1 Try to verify program

2 Improve contract until 1st and 2nd branch of contract rule is proved

3 Check falsifiability of 3rd branch

4 prove SFP, “some Strange and Funny Property”

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn

Finding bugs from failed verification attempts: May 20th, 2009

Page 16: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Approach

1 Try to verify program

2 Improve contract until 1st and 2nd branch of contract rule is proved

3 Check falsifiability of 3rd branch

4 prove SFP, “some Strange and Funny Property”

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn

Finding bugs from failed verification attempts: May 20th, 2009

Page 17: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Example 1

JAVA + JML

/*@ public normal_behavior

requires x>=0;ensures \result*\result<=x && (\result+1)*(\result+1)>x;diverges true;@*/public int sqrtA(int x){int i=0;/*@ loop_invariant i*i<=x+1; modifies i;@*/while(i*i<=x){i++;}return i;}

JAVA + JML

Finding bugs from failed verification attempts: May 20th, 2009

Page 18: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

1 Try to verify program

2 Improve contract until 1st and 2nd branch of contract rule is proved

3 Check falsifiability of 3rd branch

4 prove SFP, “some Strange and Funny Property”

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn

Finding bugs from failed verification attempts: May 20th, 2009

Page 19: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

1 Try to verify program

2 Improve contract until 1st and 2nd branch of contract rule is proved

3 Check falsifiability of 3rd branch

4 prove SFP, Special Falsifiability Preservation

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn

Finding bugs from failed verification attempts: May 20th, 2009

Page 20: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Rule

Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n

Γ =⇒ ∆Soundness: Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n � Γ =⇒ ∆Falsifiability preservation: Soundness: Γ =⇒ ∆ � Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n

Strength condition: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 21: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Rule

Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n

Γ =⇒ ∆Soundness: Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n � Γ =⇒ ∆Falsifiability preservation: Soundness: Γ =⇒ ∆ � Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n

Strength condition: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 22: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Rule

Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n

Γ =⇒ ∆Soundness: Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n � Γ =⇒ ∆Falsifiability preservation: Soundness: Γ =⇒ ∆ � Γ0 =⇒ ∆0 . . . Γn =⇒ ∆n

Strength condition: pre ∧ {M := Msk}post → 〈p〉M =∀ Msk

Finding bugs from failed verification attempts: May 20th, 2009

Page 23: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 24: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 25: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 26: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 27: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 28: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 29: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 30: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Falsifiability Preservation Analysis

Falsifiability Preservation of a Branch

“path- and postcondition-focussed” strength condition.

For a branch S0 . . . Sn the FPSnS0

condition is � ¬Sn → ¬S0

“falsifiable branch” → ¬(pre → 〈p〉post)

Properties of the approach

Simple to understand and to implement

Sound for bug finding, wrt. to soundness of constraint/sat solving

Properties similar to Phillips approach (symbolic, complete, etc.)

Search space for bugs is pruned drastically: Correct/ infeasible paths

Starts with what people want: to verify a program

Can disambiguate verification failure

Allows a “performance boost” by specialization

Finding bugs from failed verification attempts: May 20th, 2009

Page 31: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Special Falsifiability Preservation Analysis

SFP: Special Falsification Preservation condition

The special falsifiability preservation condition SFPSnSi

is the conjunction of

(({M1 := M2}Sn) ∧ {U}{M2}post) → Sn (1)

(¬Sn ∧ Γi ∧ ¬∆i ) → {U}Ψ (2)

¬Sn → (Γi ∧ ¬∆i ) (3)

where Ψ = 〈p〉true “or” Ψ = true, and some side conditions . . .

Theorem

Under some side conditions (that are ensured by the iterative algorithm)

SFPSnSi→ FPSn

Si

Finding bugs from failed verification attempts: May 20th, 2009

Page 32: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

(Optional Remarks)

Proof confluence vs. FOL-confluence

Loop Invariant Rule (I , I ∧ ¬c ,M, []) M = mod(b)

1: Γ ⇒ {U}I ,∆2: Γ ⇒ {U}{M}(I ∧ c → [b]I ),∆3: Γ ⇒ {U}{M}((I ∧ ¬c) → post),∆

Γ ⇒ {U}[while(c){b;}]post,∆

Finding bugs from failed verification attempts: May 20th, 2009

Page 33: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Conclusion

Contribution 1: Falsifiability Preservation Analysis

Contribution 2: Special Falsifiability Preservation Analysis

It’s simple, fast, sound, complete*, and symbolic

Hopefully pretty complete in practice when automated

Extension for symbolic execution- or wp-based verification techniquesadding sound bug detection and disambiguation of the reason forverification failure.

Finding bugs from failed verification attempts: May 20th, 2009

Page 34: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Conclusion

Contribution 1: Falsifiability Preservation Analysis

Contribution 2: Special Falsifiability Preservation Analysis

It’s simple, fast, sound, complete*, and symbolic

Hopefully pretty complete in practice when automated

Extension for symbolic execution- or wp-based verification techniquesadding sound bug detection and disambiguation of the reason forverification failure.

Finding bugs from failed verification attempts: May 20th, 2009

Page 35: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Conclusion

Contribution 1: Falsifiability Preservation Analysis

Contribution 2: Special Falsifiability Preservation Analysis

It’s simple, fast, sound, complete*, and symbolic

Hopefully pretty complete in practice when automated

Extension for symbolic execution- or wp-based verification techniquesadding sound bug detection and disambiguation of the reason forverification failure.

Finding bugs from failed verification attempts: May 20th, 2009

Page 36: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Conclusion

Contribution 1: Falsifiability Preservation Analysis

Contribution 2: Special Falsifiability Preservation Analysis

It’s simple, fast, sound, complete*, and symbolic

Hopefully pretty complete in practice when automated

Extension for symbolic execution- or wp-based verification techniquesadding sound bug detection and disambiguation of the reason forverification failure.

Finding bugs from failed verification attempts: May 20th, 2009

Page 37: Finding bugs from failed verification attemptsi12 · White-box testing through black-box testing + speci cation mining (Beckert, Gladisch) ... White-box testing through black-box

Conclusion

Contribution 1: Falsifiability Preservation Analysis

Contribution 2: Special Falsifiability Preservation Analysis

It’s simple, fast, sound, complete*, and symbolic

Hopefully pretty complete in practice when automated

Extension for symbolic execution- or wp-based verification techniquesadding sound bug detection and disambiguation of the reason forverification failure.

Finding bugs from failed verification attempts: May 20th, 2009