Concat IR Evaluation #
Local semantics for IR concat. The evaluator keeps the generic-axis implementation in the shared
Graph.evalConcat helper, which moves the requested axis to the front, folds
Tensor.concatAxisSpec, and moves the result back. LeadingAxisConcat.Input packages an
input with its leading dimension, LeadingAxisConcat.fold specifies nonempty list concatenation,
and evalAt_concat_leadingAxis_eq proves end-to-end graph evaluation correct for every arity of at
least two.
Local IR semantics for binary concat, pinned to the shared generic concat interpreter.
Successful binary concat evaluation, once the shared concat interpreter has produced a value with the node's declared output shape.
Binary concat evaluation rejects the node whenever the shared concat interpreter rejects it.
Shapes with a common tail and the supplied leading dimensions.
Instances For
A tensor whose leading dimension is existentially quantified while its tail shape stays fixed.
Instances For
Erase the leading-axis witness to the dynamic value consumed by the IR evaluator.
Instances For
Concatenate a nonempty sequence of compatible leading-axis inputs from left to right.
Instances For
The leading dimension of a concat fold is the left-associated sum of its input dimensions.
Packaging and then decoding a typed leading-axis input preserves it exactly.
Decoding a list of typed leading-axis inputs after packaging preserves the whole list.
The dynamic leading-axis evaluator agrees with the typed concat fold for every nonempty input list. This single list-indexed result subsumes the former pair, triple, and quadruple theorems.
Leading-axis shape inference sums every input's leading dimension for any arity of at least two.
The shared concat interpreter agrees with the typed fold for every arity of at least two.
End-to-end local IR semantics for leading-axis concat with any number of inputs greater than one. The graph, parent values, inferred output dimension, and tensor result are all derived from the same shape-erased input list.