Question: Comp.up carries an OpId := String. Source.step matches
on string literals "raise", "get", "put". String-typed operation
names lose type safety (no exhaustiveness check; typos compile).
Options:
- Keep
OpId = String. Pragmatic; user-extensible. - Symbolic enum:
inductive OpId | raise | get | put | .... Type-safe but not extensible without modifying the kernel. - Per-effect operation namespacing: each
Effcarries its own operation alphabet (similar to algebraic theory presentation).
Recommended: (1) for now. Revisit if proofs demand string-free operations.
Blocked on: nothing. Style/ergonomics question.
Revisit signal: cannot prove a property because it requires exhaustive case analysis on operation names.