Abstraction Boundaries
Client code should rely only on specifications
Types can be specified as abstract
- immutable type date;
- date nextDay(date d); { }
- mutable type set;
- void merge(set s, set t); {modifies s;}
LCLint detects
- Inappropriate access to representation
- Inappropriate choice of representation
- E.g., for meaning of = (sharing)