Define is the meta-level construct that adds a named binding to the current context. It operates on the specification itself rather than on the objects within it.

Formal Signature

Define : (Name, Expr) → Binding

Definition

Define(N, E) introduces the binding N := E into the ambient context. After this binding, the name N refers to the expression E wherever it appears. Define does not compute a value; it extends the language available for subsequent definitions and reasoning.

Because Define operates at the meta level, it is not an operator in the same sense as Compose or Iterate. It shapes the specification rather than transforming objects within it. Every named term in the relational algebra --- Distinguish, Entails, Close, and so on --- exists because a Define introduced it.

Define is idempotent in a given context: defining the same name with the same expression twice has no additional effect. Redefining a name with a different expression shadows the earlier binding.

Derivational context

Define is a utility term that operates at the meta level across all five movements. It is not an operator on relational objects but a construct that shapes the specification itself — every named term in the system (Distinguish, Entails, Close, Flow, and so on) exists because a Define introduced it. The derivation proceeds by progressively defining new terms as each phase’s coherence requirements make them necessary: the nine phases of the derivation are, in formal terms, a sequence of Defines whose order is forced by the logic of relational coherence.

Relations to Other Terms

  • Compose --- the primary way to build expressions that Define names
  • Equal --- the criterion for when two defined names denote the same thing