Evaluation

Definition

Evaluation is the process of computing concrete results from canonical forms. The EvaluationResolver implements this process: it takes a resolved type and evaluates it by applying operations to enumerate and classify ring elements.

The Resolver

The EvaluationResolver is the third and final stage of the resolution pipeline, following factorization and canonical form computation:

PropertyDescription
inputTypeThe type declaration to evaluate
outputTypeThe resulting partition
strategyDirect enumeration and classification
hasComplexityClassComputational complexity

Evaluation Process

  1. Accept a TypeDefinition as input
  2. Apply the type's constraints (hasConstraint) to the ring elements
  3. Classify each element into the four partition components: IrreducibleSet, ReducibleSet, UnitGroup, or Complement
  4. Produce the final Partition

Boolean SAT Case Study

Evaluation provides a direct path to Boolean satisfiability. Given a ConstrainedType with Boolean constraints, the evaluation resolver enumerates satisfying assignments:

The FreeRank tracks how many variables have been determined. When isClosed is true, all variables are fixed and the formula is either satisfied or unsatisfiable.

Derivation Output

Evaluation produces a Derivation with a fully evaluated result:

<https://uor.foundation/instance/eval-derivation>
    a                       derivation:Derivation ;
    derivation:originalTerm <term-constrained-bool> ;
    derivation:canonicalTerm <term-canonical-bool> ;
    derivation:result       <datum-satisfying-assignment> .

Certification

The evaluation result can be certified by a Certificate, attesting that the partition was computed correctly and the classification of every element is sound.

Pipeline Position

Evaluation is the final resolver in the three-stage pipeline:

  1. DihedralFactorizationResolver -- orbit decomposition
  2. CanonicalFormResolver -- term normalization
  3. EvaluationResolver -- concrete classification

Evaluation triggers state transitions: each classification step updates the Frame and produces a Transition — see State Model for the context/binding/frame lifecycle.