One invariant of problem solving is based on properties (e.g. memory capacity) of the symbol system used to process information and events. This invariant generalizes across agents and domains but usually lacks the power to explain success on specific problem-solving tasks. A second invariant is based on properties of the knowledge required to perform a given task. This invariant, often termed the knowledge principle, attempts to account for success in specific tasks but typically does not generalize from one domain to the next or from one agent to the next. In this paper a third invariant is proposed, one that is based on the relationship between a problem-solving agent and its environment. This invariant captures the requirements of a problem-solving task as well as the role of domain knowledge at a level that is independent of a particular agent, representation or implementation. We call this invariant "expertise". Five types of expertise are proposed. Features of each type are described using the concept of argument. For each type of expertise there is a corresponding type of argument. Examples of types of expertise are given from chess, business and social policy, and medicine. Evidence is provided for the presence of types of expertise from the analysis of the behavior of two individuals (Ph.D.-level statisticians) solving problems as consultants in the domain of industrial experimental design. Types of expertise represented in several first-generation expert systems are also identified and discussed.