Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
A syntactic approach to type soundness
Information and Computation
The design and evolution of C++
The design and evolution of C++
An algebraic semantics of subobjects
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
The semantics of the C++ programming language
Specification and validation methods
A natural semantics for Eiffel dynamic binding
ACM Transactions on Programming Languages and Systems (TOPLAS)
A member lookup algorithm for C++
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Space and time-efficient memory layout for multiple inheritance
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Class hierarchy specialization
Acta Informatica
Understanding class hierarchies using concept analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simulating multiple inheritance in Java
Journal of Systems and Software
Types and programming languages
Types and programming languages
Modeling Subobject-based Inheritance
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
Semantics-Based Composition of Class Hierarchies
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Quantifying and evaluating the space overhead for alternative C++ memory layouts
Software—Practice & Experience
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Refactoring class hierarchies with KABA
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Simulating multiple inheritance and generics in Java
Computer Languages
A typed intermediate language for compiling multiple inheritance
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Separation Logic for Multiple Inheritance
Electronic Notes in Theoretical Computer Science (ENTCS)
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Formalizing a Framework for Dynamic Slicing of Program Dependence Graphs in Isabelle/HOL
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Incremental Reasoning for Multiple Inheritance
IFM '09 Proceedings of the 7th International Conference on Integrated Formal Methods
An Isabelle/HOL-based model of stratego-like traversal strategies
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Turning Inductive into Equational Specifications
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Design and evaluation of C++ open multi-methods
Science of Computer Programming
Formal verification with Isabelle/HOL in practice: finding a bug in the GCC scheduler
FMICS'07 Proceedings of the 12th international conference on Formal methods for industrial critical systems
Formal verification of object layout for c++ multiple inheritance
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Incremental reasoning with lazy behavioral subtyping for multiple inheritance
Science of Computer Programming
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Object model construction for inheritance in c++ and its applications to program analysis
CC'12 Proceedings of the 21st international conference on Compiler Construction
Open and efficient type switch for C++
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
We present an operational semantics and type safety proof for multiple inheritance in C++. The semantics models the behaviour of method calls, field accesses, and two forms of casts in C++ class hierarchies exactly, and the type safety proof was formalized and machine-checked in Isabelle/HOL. Our semantics enables one, for the first time, to understand the behaviour of operations on C++ class hierarchies without referring to implementation-level artifacts such as virtual function tables. Moreover, it can - as the semantics is executable - act as a reference for compilers, and it can form the basis for more advanced correctness proofs of, e.g., automated program transformations. The paper presents the semantics and type safety proof, and a discussion of the many subtleties that we encountered in modeling the intricate multiple inheritance model of C++.