There is also learning of laws expressed in logic. Programs can only learn what facts or behaviors their formalisms can represent, and unfortunately learning systems are almost all based on very limited abilities to represent information. From these, they generate a strategy for achieving the goal. In the most common cases, the strategy is just a sequence of actions. This is a study of the kinds of knowledge that are required for solving problems in the world.
Ontology is the study of the kinds of things that exist.
In AI, the programs and sentences deal with various kinds of objects, and we study what these kinds are and what their basic properties are. Emphasis on ontology begins in the 1990s. A heuristic is a way of trying to discover something or an idea imbedded in a program. Heuristic functions are used in some approaches to search to measure how far a node in a search tree seems to be from a goal. Heuristic predicates that compare two nodes in a search tree to see if one is better than the other, i.e. constitutes an advance toward the goal, may be more useful.