During the late 1980s, a group of academics investigating models of physical systems developed a set of guiding principles to help them perform simulations. The purpose was to perform an amazing and unprecedented feat of computation - predicting that water spilled on the top of a table would eventually drip on the floor.
It may not sound like an impressive achievement but it was huge step forward for conceptual modeling. Before their conception of qualitative physics, a simulation would require the solution of complex simultaneous equations, a computational task not far from calculating the course of individual water molecules.
The central figures were Kenneth Forbus and Johan de Kleer, who edited the classic text of the field, "Qualitative Reasoning about Physical Systems" ( occasionally availible on amazon.com ). It sparked a small and very quiet revolution in the computer simulation of complex physical systems. Interest also spread into the area of human cognitive processes, something that could be called commonsense reasoning.
The cornerstone of idea was a very simple. There were three components to a physical simulation - function, structure and behavior. The modeler starts with one of the three components, say a structure, and then derives the function of that structure ( what can be accomplished with it ) for a given set of behaviors ( actions ).
A typical example might start with the structural description of a hammer and a inventory of possible behaviors ( actions ), such as - 1 ) swing it from the handle, 2 ) throw it, 3 ) lay it on top of something, 4 ) attach it to something, etc. From these behaviors, one can derive the functions of 1 ) driving a nail, 2 ) driving away pesky critters from the garbage bin, 3) keeping papers form blowing away, 4 ) sinking something that floats, etc.
There are six possible mappings between the three components.
Mapping From Input: | For a Given: | To Output: |
Structure | Function | Behavior |
Structure | Behavior | Function |
Behavior | Structure | Function |
Behavior | Function | Structure |
Function | Structure | Behavior |
Function | Behavior | Structure |
The conceptual framework is quite simple to use. For instance, if someone needed to drive a nail but did not have a hammer, one might look for things structurally similar to a hammer ( solid, heavy ) that could be used with the same action as a hammer ( pounding on the nail ) to achieve a given function ( to drive the nail into a board ). This would be the equivalent of the fifth type of mapping on the list, that is from function ( drive nail ) to structure ( something like a hammer ) for a given behavior ( pounding ).
Note that the order is important. It is not likely that someone would whack on the nail with a heavy glass vase - the search is for something structurally similar to a hammer. The question is, what can I use to pound the nail into the board ? The required 'what' is something like a hammer, so the variable output is structure, not behavior or function, which are both fixed.
It is a very simple conceptual framework, but has surprising power to describe the workings of physical systems at a high level of abstraction. The concept was so powerful that that it was picked up by software architects to describe non-physical systems, such as the workings of object-oriented software.