The field of artificial intelligence is traditionally divided into two broad paradigms. On one hand there are symbolic, formal, procedural, deterministic, and/or rule-based methods that often rely on a set of atomic elements and rules operating on those elements. Sometimes they are as complex as a comprehensive reasoning system. It is relatively effortless to provide a few manual instructions to these systems, however, these instructions (i.e., rules) are labor-intensive and become unfeasibly time-consuming as the complexity of the system grows beyond a certain point.