ProvablyCorrectDevelopmentof ReconfigurableHardwareDesigns ...
Provably Correct Development of Reconfigurable Hardware Designs
via Equational Reasoning
Ian Graves, Adam Procter, Bill Harrison & Gerard Allwein FPT 2015
Introduction
Provably Correct Development, Bird-Wadler Style
Reference Specification
fib :: Int -> Int
fib 0
=0
fib 1
=1
fib (n + 1) =
fib(n - 1) + fib(n)
Bill Harrison
FPT 2015
2 / 18
Introduction
Provably Correct Development, Bird-Wadler Style
Reference Specification
Implementation
fib :: Int -> Int
fib 0
=0
fib 1
=1
fib (n + 1) =
fib(n - 1) + fib(n)
fib2 :: Int -> (Int, Int) fib2 0 = (0, 1) fib2 n = (b, a + b)
where (a, b) = fib2 (n - 1)
Bill Harrison
FPT 2015
2 / 18
Introduction
Provably Correct Development, Bird-Wadler Style
Reference Specification
Implementation
fib :: Int -> Int
fib 0
=0
fib 1
=1
fib (n + 1) =
fib(n - 1) + fib(n)
fib2 :: Int -> (Int, Int) fib2 0 = (0, 1) fib2 n = (b, a + b)
where (a, b) = fib2 (n - 1)
Linking Theorem For all n 0, fib(n) = fst (fib2(n))
Bill Harrison
FPT 2015
2 / 18
Introduction
Equational Proof on the Code Itself
Lemma. For all n 0, fib2(n) = (fib(n), fib(n + 1))
Proof by Induction.
n=0 Inspection. n=k+1 fib2(k + 1)
= (b, a + b) where (a, b) = fib2(k) = (b, a + b) where (a, b) = (fib(k), fib(k + 1) = (fib(k + 1), fib(k) + fib(k + 1)) = (fib(k + 1), fib(k + 2))
Bill Harrison
FPT 2015
3 / 18
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- fx documentation
- llvm and clang advancing compiler technology
- haskell types university of arizona
- 6 175 constructive computer architecture tutorial 1
- provablycorrectdevelopmentof reconfigurablehardwaredesigns
- whyp a c based version of ouforth for the motorola 68hc11
- solutions to exercises
- hust ctf 2010 write up
- high level views on low level representations
- csc 520 principles of programming languages 11 haskell