1. An engine for performing root cause analysis on a system comprising a plurality of elements in a modeled domain, the engine comprising: a module loader and parser for loading modules of computer code containing computer language statements modeling elements of the system, including one or more of model type definitions, conditions, causal rules, and continuations, and for parsing the computer language statements; storage for storing the parsed computer language statements; a receiver for receiving conditions representing state changes of system elements, accessing the storage, and determining one or more parsed computer language statements to apply to the received conditions; a hypothesis generator for instantiating one or more hypotheses of potential causes of each received condition consistent with the received conditions and the parsed computer language statements; a blackboard for receiving the instantiated hypotheses, and determining a root cause of the received conditions based on the hypotheses consistent with the received conditions and the parsed computer language statements; and an output for outputting the determined root cause.