Dexter Kozen
D programming language Exception Java Reversible Computing correct software formal methods generic programming kleene algebra modeling predicative programming program analysis program construction program development program verification type theory