Methods, systems, and computer program products for identifying computer
source code constructs are disclosed. According to one method, computer
source code is converted to a format suitable for an automated inference
engine. The automated inference engine receives as inputs the converted
source code, a set of elemental design patterns defining patterns to be
identified, and a set of rules defining relationships between patterns.
The automated inference engine outputs proofs indicative of patterns
present in the source code. The proofs may be converted to a source code
pattern report.