Types help define the protocol by which these principals interact. In particular, abstract types allow a principal to make strong assumptions about how well-typed clients use the facilities that it provides. We show how the notions of principals and type abstraction can be formalized within a language.
Different principals can know the implementation of different abstract types.
We present various typed lambda calculi with principals, including versions that have mutable state and recursive types. The Digital Library is published by the Association for Computing Machinery.