extend source and target calculi with observable tick effects + add invariant checks for relation preservation and target arity/shape
This commit is contained in:
@@ -8,6 +8,10 @@ the target language makes representation explicit and forces each transition to
|
||||
|
||||
the target calculus is intentionally lower level than the source and trades abstraction for control over layout and calling. it has decent tuple and sum representations and uses explicit box and unbox operations to mediate between them. equality on integers and booleans is primitive rather than encoded as well as recursive binding being built in rather than derived
|
||||
|
||||
the audit path now records pass-boundary observations for source, specialisation, inlining, effect rewriting, and representation lowering. each corpus case is checked against relation preservation, target arity/shape validation, termination class preservation, and effect trace preservation. unsafe profiles intentionally refute these invariants so optimiser bugs show up as small source/target deltas rather than vague failures.
|
||||
|
||||
the source calculus also has an explicit `tick` effect. this is enough to expose unsound dce-style rewrites: eliminating a dead binding is only valid when the eliminated term is effect free.
|
||||
|
||||
## example(s)
|
||||
|
||||
a representation exposure witness starts from a polymorphic constant false term
|
||||
@@ -33,4 +37,3 @@ TArrow (TPair (TInt, TBool), TPair (TInt, TBool))
|
||||
```
|
||||
|
||||
the target worker receives `RInt` and `RBool` while the wrapper preserves the boxed source interface
|
||||
|
||||
|
||||
Reference in New Issue
Block a user