A Goal Atom represents a target system state and is true to the extent that the system satisfied the conditions it represents. A Context Atom represents an observed state of the world/mind, and is true to the extent that the state it defines is observed. Taken together, these two Atom types provide the infrastructure OCP needs to orient its actions in specific contexts toward specific goals. Not all of OCP's activity is guided by these Atoms — much of it is non-goal-directed and spontaneous, or ambient as we sometimes call it. But it is important that some of the system's activity — and in some cases, a substantial portion — is controlled explicitly via goals.
Specifically, a Goal Atom is simply an Atom (usually a PredicateNode, sometimes a Link, and potentially another type of Atom) that has been selected by the GoalRefinement CIM-Dynamic as one that represents a state of the atom space which the system finds important to achieve. The extent to which an Atom is considered a Goal Atom at a particular point in time is determined by how much of a certain kind of financial instrument called an RFS it possesses. The logic of RFS's will be explained in a later section in this chapter.
A OCP instance must begin with some initial ubergoals (aka top level supergoals), but may then refine these goals in various ways using inference. Immature, "childlike" OCP systems cannot modify their ubergoals nor add nor delete ubergoals. Advanced OCP systems may be allowed to modify, add or delete ubergoals, but this is a critical and subtle aspect of system dynamics that must be treated with great care.