Learn More
In object-oriented languages, overloaded methods with multiple dispatch extend the functionality of existing classes, and multiple inheritance allows a class to reuse code in multiple classes. However, both multiple dispatch and multiple inheritance introduce the possibility of ambiguous method calls that cannot be resolved at run time. To guarantee no(More)
Complete formal verification of a non-trivial concurrent OS kernel is widely considered a grand challenge. We present a novel compositional approach for building certified concurrent OS kernels. Concurrency allows inter-leaved execution of kernel/user modules across different layers of abstraction. Each such layer can have a different set of observable(More)
1 Assumptions We make the following assumptions about a program being type checked. These assumptions may be easily checked in a separate phase prior to the type checking phase and simplify the typing rules, as a lexical analysis phase simplifies a grammar and relieves burden of a parser in ordinary compilers. • Names of declared components in a program are(More)
Object-oriented languages with multiple dispatch and multiple inheritance provide rich expressiveness but statically and modularly checking programs in such languages to guarantee that no ambiguous calls can occur at run time has been a difficult problem. We present a core calculus for Fortress, which provides various language features—notably functional(More)
  • 1