automatic equivalence checking of uf+ia programs

30
technology from seed Automatic Equivalence Checking of UF+IA Programs Nuno Lopes and José Monteiro

Upload: neylan

Post on 22-Feb-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Automatic Equivalence Checking of UF+IA Programs. Nuno Lopes and José Monteiro. Why Equivalence Checking?. Algorithm recognition Regression checking Manual optimization checking Compiler optimization verification Information flow (non-interference) proofs. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA ProgramsNuno Lopes and José Monteiro

Page 2: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Algorithm recognition• Regression checking• Manual optimization checking• Compiler optimization verification• Information flow (non-interference) proofs

Why Equivalence Checking?

Page 3: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

i := 0while i < n do

k := f(k, i)i := i + 1

Example:Are these programs equivalent?

i := nwhile i ≥ 1 do

k := f(k, n - i)i := i - 1

if n ≤ 0 theni := 0

elsei := n

Page 4: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

assume v = vi := 0

while i < n dok := f(k, i)i := i + 1

i := nwhile i ≥ 1 do

k := f(k, n - i)i := i - 1

if n ≤ 0 theni := 0

elsei := n

assert v = v

Example:Sequential composition is no solution

Page 5: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Program equivalence• Example• Algorithm• Application to compiler optimizations• Evaluation: CORK

Outline

Page 6: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Functional equivalence: non-deterministic behavior is not supported

• Partial equivalence: check only terminating paths

Program equivalence

Page 7: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

i := 0while i < n do

k := f(k, i)i := i + 1

Running example

i := nwhile i ≥ 1 do

k := f(k, n - i)i := i - 1

if n ≤ 0 theni := 0

elsei := n

Page 8: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

assume v = vi := 0

while i < n dok := f(k, i)i := i + 1

i := nwhile i ≥ 1 do

k := f(k, n - i)i := i - 1

if n ≤ 0 theni := 0

elsei := n

assert v = v

Running example:1) Sequential composition

Page 9: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

assume v = vi := 0

while i < n dok := a·k + b·i + ci := i + 1

(…)

assert v = v

Running example:2) Eliminate UFs

f(k, i)

Page 10: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

assume v = vi := 0

if i < n thenassume Ri(j-1) < n R∧ i(j) ≥ nk := Rk(j)i := Ri(j)

(…)

assert v = v

Running example:3) Eliminate Loops

𝑅𝑘 ( 𝑗 )=𝑏 (𝑎 𝑗−𝑎𝑗+ 𝑗−1 )+(𝑎−1 ) (𝑎 𝑗 ( (𝑎−1 )𝑘0+𝑐 )−𝑐 )

(𝑎−1 )2

𝑅𝑖 ( 𝑗 )= 𝑗

assume v = vi := 0

while i < n dok := a·k + b·i + ci := i + 1

(…)

assert v = v

Ri(j) = Ri(j-1) + 1Ri(0) = 0Rk(j) = a × Rk(j-1) + b × Ri(j-1) + cRk(0) = k0

Page 11: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

assume v = vi := 0

if i < n thenassume Ri(j-1) < n R∧ i(j) ≥ nk := Rk(j)i := Ri(j)

i := nif i ≥ 1 then

assume Vi(j-1) ≥ 1 V∧ i(j) < 1k := Vk(j)i := Vi(j)

if n ≤ 0 theni := 0

elsei := n

assert v = v

Running example:3) Eliminate Loops

Page 12: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Program equivalence• Example• Algorithm• Application to compiler optimizations• Evaluation: CORK

Outline

Page 13: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

1. Sequential composition2. Replace UFs with polynomials3. Replace loops with recurrences4. Prove safety of resulting program

Algorithm

Page 14: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

Algorithm:1) Sequential Composition

assume v = v

P1(v)

P2(v)

assert v = v

Page 15: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• u(f, i) is equal to the maximum number of applications of f with distinct values in the ith parameter in all paths minus one

Algorithm:Function u

if i < n thenk := f(y, 3)elsek := f(z, 3)

if f(x, 3) < 0 k < 0∧ then…

u(f, 1) = 1u(f, 2) = 0

Page 16: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

Algorithm:Polynomial Interpolation

-2 -1 0 1 2 3 4 5 6 7 8

-4

-2

0

2

4

6

8

10

12

f(a)

f(b)

f(c) f(d)

Page 17: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• UFs are rewritten to polynomials over its inputs

Algorithm:2) UF -> Polynomial

𝑇 (𝑒 )=∑𝑖=1

𝑛

∑𝑗=0

𝑢 ( UF ,𝑖 )

UFij× (T (e i ))j , if 𝑒=UF (𝑒1 ,… ,𝑒𝑛)

Page 18: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

Algorithm:3) Loops -> Recurrences

while b doc

if b thenassume σn-1(b) ∧ σn(¬b) vi := σn(vi)

elseassume n = 0

Page 19: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Resulting program is correct iff the 2 programs are partially equivalent

• Standard model checkers or VC gen + constraint solving can now prove correctness

Algorithm:4) Prove safety of resulting program

Page 20: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Program equivalence• Example• Algorithm• Application to compiler optimizations• Evaluation: CORK

Outline

Page 21: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Compiler optimization– Transformation function– Precondition– Profitability heuristic

Compiler Optimizations

Page 22: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

while I < N doSI := I + 1

Loop Unrolling

while (I + 1) < N doSI := I + 1SI := I + 1

if I < N thenSI := I + 1

Precondition:R(S) = {I, N, c1}W(S) = {c1}

Page 23: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

while i < n dox := i + 2i := i + 1

Loop Unrolling:Example instantiation

while (i + 1) < n dox := i + 2i := i + 1x := i + 2i := i + 1

if i < n thenx := i + 2i := i + 1

while I < N doSI := I + 1 ⇒

S ≡ x := i + 2I ≡ iN ≡ n

while (I + 1) < N doSI := I + 1SI := I + 1

if I < N thenSI := I + 1

Page 24: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Transformation function specified as 2 template programs• Precondition specified as read/write sets for template

statements and expressions plus IA formulas

Compiler Optimizations:Our abstraction

Page 25: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• A transformation function can be written as two UF+IA programs– Template statements are converted to UFs, that read and write

from/to their read/write sets

Transformation function to UF+IA Program

S x,y := Sx(y, z), Sy(y, z)

Precondition:R(S) = {y, z}W(S) = {x, y}

Page 26: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Program equivalence• Example• Algorithm• Application to compiler optimizations• Evaluation: CORK

Outline

Page 27: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Implemented in OCaml (~1,100 LoC)• Uses Wolfram Mathematica 8 for constraint and

recurrence solving

CORK: Compiler Optimization Correctness Checker

Page 28: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

CORK: Results

Benchmarks available from http://web.ist.utl.pt/nuno.lopes/cork/

Page 29: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Automatic Equivalence Checking of UF+IA Programs

• Presented a new algorithm to prove equivalence of UF+IA programs

• Presented CORK, a compiler optimization verifier, that can prove more optimizations correct than others

Conclusion

Page 30: Automatic Equivalence Checking of UF+IA Programs

technologyfrom seed

Título da apresentação

technologyfrom seed