Long-term memory in Soar is encoded as production rules, which are stored in production memory. Such rules are similar to IF-THEN statements such as 'IF it is raining THEN take an umbrella'. The IF part of the rule is known as the condition, and the THEN part is known as the action. The conditions of rules are matched against the contents of working memory (which holds information describing the current situation) to determine whether their actions are of relevance. Such conditions will test for the presence of absence of elements in working memory.
The syntax of these rules is similar to production systems, though the firing of them (i.e., whether the actions should apply) differs significantly. This is because traditional production systems use conflict resolution such that only one rule will fire if several are applicable, and actions for the rule are applied immediately, causing instant changes to working memory. Conversely, Soar fires all applicable rules in parallel, and only creates preferences for changes to the contents of working memory. Once all rules that can fire have done so, the preferences are evaluated to determine the actual changes to working memory.
Some rules have a :default specified in their condition. This simply means that the rule is a default rule. Some commands treat them differently, for example, excise-task does not delete rules with :default.