Documentation

Typed2Computable.TLAPlus

TypedTLAPlus.Expression.toComputable — translates a checked TLA⁺ expression into its computable fragment (ComputableTLAPlus.Expression's own module doc has the full per-constructor rationale). Structurally mirrors TypedTLAPlus.Expression.traverse's own recursion, reattaching source positions the same way (@@ pos) — total on every constructor ComputableTLAPlus.Expression keeps, throwing ComputableError.notComputable on fnSet/recordSet, and .internalInvariantViolated on whatever else shouldn't be reachable here at all (an unbounded quantifier domain, a bare temporal/action construct, a pending mvar coercion) — see Typed2Computable/Errors.lean's own doc for why these stay one defense-in-depth case rather than a dedicated error each.

τ/Origin fields pass through unchanged: ComputableTLAPlus.Typ/.Origin are literal reuses of TypedTLAPlus.Typ/.Origin (Core/ComputableTLAPlus/Syntax.lean), not a second copy, so there's nothing to convert.

See the module doc above. partial: structural recursion isn't visibly decreasing to Lean here, same reason Expression.map/.traverse are partial (nested List/Option occurrences of Expression).