PLANNER, short for PLANNER Programming Language, is an early AI programming language developed at the Massachusetts Institute of Technology (MIT) in the 1960s by Carl Hewitt. PLANNER introduced the concepts of pattern-directed invocation, logical rules, and goal-oriented programming, and it was widely used for artificial intelligence research, symbolic reasoning, and early problem-solving systems. Developers accessed PLANNER via MIT’s experimental computing environments, and historical documentation is preserved in archives such as PLANNER Language Archive.

PLANNER exists to facilitate reasoning over symbolic data using rules, goals, and patterns. It was designed to allow programs to express complex problem-solving strategies in a structured yet flexible way, supporting recursive logic, conditional execution, and goal-directed search. Its philosophy emphasizes explicit reasoning mechanisms and modular construction of knowledge-based procedures.

PLANNER: Rules and Goals

Programs in PLANNER are built around rules and goals. Rules define patterns to recognize, and goals represent desired outcomes.

; Define a rule to check if X is a parent of Y
(rule (parent ?X ?Y)
      (assert (father ?X ?Y))
      (assert (mother ?X ?Y)))

; Set a goal to find all parents
(goal (parent ?X ?Y))

Rules match patterns in the knowledge base, and goals trigger the evaluation of applicable rules. This approach allows complex inferences from simple declarative statements, conceptually similar to Lisp and MDL.

PLANNER: Pattern Matching

PLANNER uses pattern matching to decide which rules to execute based on current facts or symbolic structures.

; Check for sibling relationship
(rule (sibling ?X ?Y)
      (if (and (parent ?P ?X) (parent ?P ?Y) (not (= ?X ?Y)))
          (assert (siblings ?X ?Y))))

Patterns allow concise expression of relationships and facilitate automatic inference over structured symbolic data, a technique foundational to AI reasoning engines.

PLANNER: Procedural Attachments

Goals can invoke procedures dynamically, letting PLANNER interleave rule evaluation with computation.

; Print all siblings
(goal (siblings ?X ?Y)
      (print "Siblings:" ?X ?Y))

Procedural attachments extend declarative rules with actionable operations, enabling integration with other systems and real-time data processing. This concept influenced later languages such as Lisp and MDL.

PLANNER is studied as a foundational language for artificial intelligence, symbolic reasoning, and rule-based programming. Its techniques of rules, goals, and pattern-directed invocation provide historical insight into AI systems and influenced modern declarative languages alongside Lisp, MDL, and related AI scripting frameworks.