Concepts · Humans and machines
How ACT-R uses production rules to choose actions from the current goal, buffers, and retrieved memory.

Production Rules and Procedural Memory
ACT-R has two main kinds of knowledge. Declarative memory stores what the system knows. Its unit is a chunk. Procedural memory stores what the system can do. Its unit is a production rule.
A production rule is an "if-then" rule. If the current situation matches the rule, the rule can fire. When it fires, it changes something. It might update a goal. It might ask declarative memory for a chunk. It might send a command to another module.
What is a Production?
In ACT-R terms, a production is a condition-action rule. The condition says what must be true. The action says what to do next.
Here is a rough sketch:
IF
the goal is to reset Susan's password
and the retrieved memory says the last reset failed
THEN
ask Susan for the failure codeThe example above is not official ACT-R syntax. It gives the general idea. ACT-R compares the rule's condition with the current state using chunks. If the state fits, the production becomes a candidate action.
Productions read buffers
ACT-R does not let a production inspect all memory directly. Productions match against buffers. A buffer is like a small surface to work with. It holds the chunk that matters right now.
For simplicity, we'll use the following three buffers:
- The goal buffer holds the current goal.
- The retrieval buffer holds the chunk returned from declarative memory.
- Perceptual and motor buffers can hold what the system sees or is doing.
A production can ask:
Is the goal about password reset?
Is the retrieved chunk about Susan?
Does the retrieved chunk say the last reset failed?If the answers fit the rule, the production can fire. That is why buffers matter. They give procedural memory a clean and narrow view of the current situation.
Productions do not store facts
A production is not a fact. A chunk might say:
user: Susan
task: password-reset
status: failedA production says what to do with that fact:
If the user is Susan
and the task is password reset
and the last attempt failed,
then ask for the failure code.The chunk is knowledge. The production is a rule for action. ACT-R keeps these separate because remembering and acting are different jobs.
Only one production fires
Many productions can match at the same time. Suppose an assistant is helping Susan.
Several rules might fit. For example:
- Ask for the failure code.
- Check whether the account is locked.
- Offer to retry the reset.
- Escalate to a human support agent.
ACT-R does not fire all of them together. It chooses one.
The choice process is called conflict resolution. In plain terms, the job of conflict resolution is to ask one question:
Which matching rule should act now?That choice matters. Procedural memory is not just a bag of rules. It is a way to choose the next step by weighing the matching options.
Utility helps choose
ACT-R uses utility to help choose among matching productions. Utility means expected usefulness. A rule that often helps should become easier to choose. A rule that wastes time should become harder to choose.
The ACT-R reference manual describes utility as a number attached to a production. When several productions match, ACT-R selects the one with the highest current utility.
When utility learning is turned on, ACT-R updates utility like this:
Here is what the parts mean:
- is the new utility of production .
- is its previous utility.
- is the learning rate.
- is the reward value for that use.
A simpler way to think about it is:
expected gain - expected costThat is not the full model. ACT-R does not treat every matching action as equal. It can prefer the action that has worked better before.
The ACT-R loop
Now the loop becomes clearer:
goal -> buffers -> matching productions -> chosen production -> actionThe system starts with a goal. Buffers hold the current pieces of information. Productions match against those buffers. Conflict resolution chooses one production. That production fires and changes the state. Then the loop starts again.
This is how ACT-R turns knowledge into behavior.
A small support example
Imagine an assistant helping Susan with a failed password reset. The goal buffer holds:
goal: resolve-password-reset
user: SusanThe retrieval buffer holds:
user: Susan
task: password-reset
status: failed
failure-code: unknownA production might match this state:
IF
goal is resolve-password-reset
and failure-code is unknown
THEN
ask for the failure codeAfter that production fires, the state changes. The assistant is no longer in the same situation. It now has a new question in motion.
That is the point of a production. It moves the system from one state to the next.
Why this matters for AI memory
Memory discussions often stop at storage. They ask:
What should we save?
What should we retrieve?ACT-R adds a more practical question:
What should the system do with what it retrieved?That question matters. A memory can be true and still not be useful right now. A memory can be useful and still need the right action around it.
If Susan's last password reset failed, the assistant should retrieve that fact. But retrieval is not enough. The assistant should use the fact to choose the next step.
What Achiral borrows from ACT-R
Achiral is ACT-R-inspired, but it is not a full ACT-R implementation.
We borrow some useful ideas from procedural memory:
- chunks for remembered knowledge
- buffers for the current context
- productions for action rules
- conflict resolution for choosing the next step
- utility for preferring rules that tend to work
That separation helps Achiral treat memory as more than storage.
A memory should decide which facts are available. It should also help decide how those facts can guide action.
What productions do not solve
A production does not solve judgment by itself. A rule can be too broad. A rule can be too narrow. A rule can fire in the wrong context. A rule can encode a bad habit.
ACT-R gives modelers a way to describe action selection. It does not remove the need for policy, testing, review, or safety boundaries.
That matters for AI systems. A customer support rule, a medical triage rule, and a private user preference carry different risks.
The takeaway
A production is ACT-R's unit of procedural knowledge. It says:
If the current state looks like this,
do this next.Productions match buffers. Conflict resolution chooses one. Utility helps explain why one rule may be chosen over another.
Chunks help ACT-R remember. Productions help ACT-R act.
Sources
- ACT-R research group, Carnegie Mellon University
- ACT-R reference manual
- Anderson, ACT: A Simple Theory of Complex Cognition
- Anderson et al., An Integrated Theory of the Mind
Go back to ACT-R Chunks and Declarative Memory, continue with ACT-R Memory vs Agent Memory, or return to the Concepts hub.