David Raymond Christiansen

Learn More
Idris's reflection features allow Idris metaprograms to manipulate a representation of Idris's core language as a datatype, but these reflected terms were designed for ease of type checking and are therefore exceedingly verbose and tedious to work with. A simpler notation would make these programs both easier to read and easier to write. We describe a(More)
Software process is how an organization goes about developing or maintaining a software system. It is the methodology employed when people use machines, tools, and artifacts to create a product. Recent work has applied formal modeling to software process, with the hope of reaping the beneets of unambiguous and analyzable formalisms. Yet industry has been(More)
Type providers, pioneered in the F# programming language, are a practical and powerful means of gaining the benefits of a modern static type system when working with data schemas that are defined outside of the programming language, such as relational databases. F# type providers are implemented using a form of compile-time code generation, which requires(More)
We show how the design of pension and life insurance products, and their administration, reserve calculations, and audit, can be based on a common formal notation. This notation is human-readable and machine-processable, and specialized to the actuarial domain, achieving great expressive power combined with ease of use and safety. In essence, this is a(More)
We describe a software design for efficient reserve computations for life insurance and pension products, described using a flexible and precise notation that is both machine-readable and human-readable; in effect, a domain-specific language for actuaries. Mathematically, this notation is based on continuous-time Markov models. First, from a collection of(More)
Dependently typed programming languages have a rich type system , which enables developers to combine proofs with programs, sometimes even eroding the boundary between the activities of proving and programming. This introduces new challenges for integrated development environments that must support this boundary. Instead of reimplementing large parts of a(More)
New regulations from the European Union, called <i>Solvency II</i>, require that life insurance and pension providers perform more complicated calculations to demonstrate their solvency. At the same time, exploiting alternative computational paradigms such as GPGPU requires a high degree of expertise about the hardware and ties the computational(More)