Pure Functional Programming
Functional Programming and Reasoning Dr Hans Georg Schaathun
University of Surrey
Spring 2010
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 1 / 52
Pure Functional Programming Functional Programming and Reasoning Dr - - PowerPoint PPT Presentation
Pure Functional Programming Functional Programming and Reasoning Dr Hans Georg Schaathun University of Surrey Spring 2010 Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 1 / 52 Outline Testing and Proof 1 Pure Functional
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 1 / 52
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 2 / 52
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 3 / 52
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 3 / 52
Testing and Proof
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 4 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 5 / 52
Testing and Proof Verifying programs
1
2
3
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 6 / 52
Testing and Proof Verifying programs
1
2
3
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 6 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 7 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 7 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 7 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 8 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 8 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 8 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 9 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 9 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 9 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 9 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 9 / 52
Testing and Proof Verifying programs
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 10 / 52
Testing and Proof Verifying programs
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 10 / 52
Testing and Proof Verifying programs
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 10 / 52
Testing and Proof Verifying programs
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 11 / 52
Testing and Proof Verifying programs
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 11 / 52
Testing and Proof Verifying programs
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 12 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 13 / 52
Testing and Proof A little logic
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 14 / 52
Testing and Proof A little logic
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 14 / 52
Testing and Proof A little logic
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 14 / 52
Testing and Proof A little logic
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 14 / 52
Testing and Proof A little logic
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 14 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 15 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 15 / 52
Testing and Proof A little logic
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 16 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 17 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 18 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 18 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 18 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 19 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 20 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 20 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 21 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 22 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 22 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 22 / 52
Testing and Proof A little logic
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 22 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 23 / 52
Testing and Proof Testing and induction
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 24 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 25 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 25 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 25 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 25 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 26 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 26 / 52
Testing and Proof Testing and induction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 26 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 27 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 28 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 28 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 28 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 29 / 52
Testing and Proof Reason and deduction
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 30 / 52
Testing and Proof Reason and deduction
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 30 / 52
Testing and Proof Reason and deduction
1
2
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 30 / 52
Testing and Proof Reason and deduction
1
2
3
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 31 / 52
Testing and Proof Reason and deduction
1
2
3
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 31 / 52
Testing and Proof Reason and deduction
1
2
3
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 31 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 32 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 32 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 32 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 33 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 33 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 33 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 33 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 34 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 34 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 34 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 35 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 35 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 35 / 52
Testing and Proof Reason and deduction
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 35 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 36 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 37 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 38 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 39 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 39 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 39 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 40 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 40 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 40 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 40 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 41 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 41 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 42 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 43 / 52
Pure Functional Programming
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 44 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 45 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 46 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 47 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 48 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 48 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 49 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 49 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 49 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 49 / 52
Definedness and Termination
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 50 / 52
Conclusion
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 51 / 52
Conclusion
Dr Hans Georg Schaathun Pure Functional Programming Spring 2010 52 / 52