Proving Unrealizability for Syntax-Guided Synthesis
Qinheping Hu , Jason Breck , John Cyphert , Loris D'Antoni , Thomas Reps
Proving Unrealizability for Syntax-Guided Synthesis Qinheping Hu , - - PowerPoint PPT Presentation
Proving Unrealizability for Syntax-Guided Synthesis Qinheping Hu , Jason Breck , John Cyphert , Loris D'Antoni , Thomas Reps Proving Unrealizability for Syntax-Guided Synthesis 1 Syntax-Guided Synthesis (SyGuS) Specification
Qinheping Hu , Jason Breck , John Cyphert , Loris D'Antoni , Thomas Reps
1
Start β +(Start, Start) | π½ππΉ(BExpr, Start, Start) π¦ π§ 0 1 BExpr β πππ’(BExpr) | > (Start, Start) |π΅ππ(BExpr, BExpr)
SyGuS Solver Specification Solution Program Search space π»:
π πππ¦(π¦, π§), π¦, π§ :
πππ¦ π¦, π§ β₯ π¦ β§ πππ¦ π¦, π§ β₯ π§ β§ (πππ¦ π¦, π§ = π¦ β¨ πππ¦ π¦, π§ = π§)
π β π(π») such that βπ¦, π§. π π, π¦, π§ max π¦, π§ = π½ππΉ(> (π¦, π§), π¦, π§)
LoopInvGen, E3Solver, Esolver
1 2
βπ¦, π§. max π¦, π§ β₯ π¦ β§ max π¦, π§ β₯ π§ β§ (max π¦, π§ = π¦ β¨ max π¦, π§ = π§) max π¦, π§ = π½ππΉ(> (π¦, π§), π¦, π§) Start = +(Start, Start) | π½ππΉ(BExpr, Start, Start) π¦ π§ 0 1 BExpr = πππ’(BExpr) | > (Start, Start) |π΅ππ(BExpr, BExpr)
Specification Search space
βπ¦, π§. max π¦, π§ β₯ π¦ β§ max π¦, π§ β₯ π§ β§ (max π¦, π§ = π¦ β¨ max π¦, π§ = π§) Start = +(Start, Start) π¦ π§ 0 1
Specification Search space
1 2 3
Examples E: (x0,y0)=(0,0) CEGIS Verifier Synthesizer ππ§πΉ
Ο: π π¦, π§ β₯ π¦ β§ π π¦, π§ β₯ π§ β§ (π π¦, π§ = π¦ β¨ π π¦, π§ = π§) ππ§ β G: Start = +(Start, Start) x π§ 1
Examples E: (x0,y0)=(0,0) Synthesizer ππ§πΉ
Examples E: (x0,y0)=(0,0) CEGIS Verifier Synthesizer ππ§πΉ π π¦, π§ = 0 new ce (0,1)
Ο: π π¦, π§ β₯ π¦ β§ π π¦, π§ β₯ π§ β§ (π π¦, π§ = π¦ β¨ π π¦, π§ = π§) ππ§ β G: Start = +(Start, Start) x π§ 1
Examples E: (x0,y0)=(0,0) (x1,y1)=(0,1) CEGIS Verifier Synthesizer ππ§πΉ π π¦, π§ = π§ new ce (1,0)
Ο: π π¦, π§ β₯ π¦ β§ π π¦, π§ β₯ π§ β§ (π π¦, π§ = π¦ β¨ π π¦, π§ = π§) ππ§ β G: Start = +(Start, Start) x π§ 1
Examples E: (x0,y0)=(0,0) (x1,y1)=(0,1) (x2,y2)=(1,0) CEGIS Verifier Synthesizer ππ§πΉ π π¦, π§ = 1 new ce (2,0)
Ο: π π¦, π§ β₯ π¦ β§ π π¦, π§ β₯ π§ β§ (π π¦, π§ = π¦ β¨ π π¦, π§ = π§) ππ§ β G: Start = +(Start, Start) x π§ 1
Examples E: (x0,y0)=(0,0) (x1,y1)=(0,1) (x2,y2)=(1,0) (x3,y3)=(2,0) CEGIS Verifier Synthesizer ππ§πΉ
Unrealizable! Ο: π π¦, π§ β₯ π¦ β§ π π¦, π§ β₯ π§ β§ (π π¦, π§ = π¦ β¨ π π¦, π§ = π§) ππ§ β G: Start = +(Start, Start) x π§ 1
π‘π§
is unrealizable
π‘π§πΉ
is unrealizable
No solution over πΉ No solution over all inputs
void main(){ int x = 0; while(nd()){ x++; } assert(x<0) } Goal: can the assert be falsified?
Reachability solver: CPA-checker Uautomizer Seahorn β¦
Non-deterministic choice
SyGuS over examples Reachability problem
π‘π§πΉ πππΉ
(ΟπΉ, π») void main(){ β¦ assert(β¦)}
π‘π§πΉis unrealizable assert cannot be falsified
π»( Τ¦
π
π» is non-deterministically drawn from π(π»)
Set input to πΉ
Check if Τ¦ π doesnβt satisfy Ο π
π»( Τ¦
π¦) satisfy Ο on πΉ ππ§πΉ is unrealizable
Set input to πΉ
Examples E: (x0,y0)=(0,0) (x1,y1)=(0,1)
π»( Τ¦
π
π» is non-deterministically drawn from π(π»)
Set input to πΉ
Check if Τ¦ π doesnβt satisfy Ο
Ο π π¦, π§ β π π¦, π§ β₯ π¦ β§ π π¦, π§ β₯ π§ β§ (π π¦, π§ = π¦ β¨ π π¦, π§ = π§)
void main(){ β¦ assert(!(spec(x0,y0,o0)&&spec(x1,y1,o1))); } bool spec(x,y,o){ return (o>=x)&&(o>=y)&&(o==x||o==y); } Check if Τ¦ π doesnβt satisfy Ο
π»( Τ¦
π
π» is non-deterministically drawn from π(π»)
Set input to πΉ
Check if Τ¦ π doesnβt satisfy Ο
π»( Τ¦
π
π» is non-deterministically drawn from π(π»)
int fStart(x0,y0){ if(nd()){ return 0;} if(nd()){ return 1;} if(nd()){ return x0;} if(nd()}{ return y0;} if(nd()){ left = fStart(x0,y0); right = fStart(x0,y0); return left + right;} }
\\ Start -> 0 \\ Start -> 1 \\ Start -> x \\ Start -> y \\ Start -> +(Start,Start)
π» x0,y0 for some π π» in π π»
π» x1,y1 for some π π» in π π»
Can be different
π»( Τ¦
π
π» is non-deterministically drawn from π(π»)
<int,int> fStart(x0,y0,x1,y1){ if(nd()){ return (0,0);} if(nd()){ return (1,1);} if(nd()){ return (x0,x1);} if(nd()}{ return (y0,y1);} if(nd()){ (a0,a1) = Start(x0,y0,x1,y1); (b0,b1) = Start(x0,y0,x1,y1); return (a0+b0,a1+b1);} } \\ Start -> 0 \\ Start -> 1 \\ Start -> x \\ Start -> y \\ Start -> +(Start,Start) (o0,o1) = Start(x0,y0);
π‘π§
unrealizable
π‘π§πΉ unrealizable assert cannot be falsified
Example Set πΉ
Nope
Veifier Z3 ESolver
ππ§πΉ
Unreachable
UNREALIZABLE
π UNSAT
π is a solution
SAT new example e
Seahorn Reduction πππΉ
QSyGUS[cav18]
Optimal?
QSyGuS SyGuS Weighted π Specification π Minimize πππ‘π’ π, π» π, π»<π1
Solution Cost 1
Solution cost π·1
π, π»<1
πππππππ¨π # π½ππΉ (π, π»<1) is unrealizable max π¦, π§ = π½ππΉ(> (π¦, π§), π¦, π§)
60 SyGuS benchmarks
QSyGuS
132 SyGuS benchmarks which should be unrealizable
132 variants of benchmarks taken from SyGuS
Solved 13/57 1/30 45/45 59/132
Large sized reachability problem
Example Set πΉ
Nope
Verifier Z3 ESolver
ππ§πΉ
Unreachable
UNREALIZABLE
π UNSAT
π is a solution
SAT new example e
Seahorn Reudction πππΉ
Open questions:
Start β +(Start, Start) 0 1
Example Set πΉ