extend source and target calculi with observable tick effects + add invariant checks for relation preservation and target arity/shape

This commit is contained in:
2026-04-27 12:51:47 +00:00
parent 7f024737cf
commit 31596491f0
18 changed files with 395 additions and 44 deletions
+26 -1
View File
@@ -2,9 +2,30 @@ type failure_mode =
| Preserved
| Representation_exposure
| Strictness_shift
| Effect_shift
| Type_error of string
| Other_failure of string
type invariant_kind =
| Relation_preservation
| Target_arity
| Termination_class
| Effect_trace
type invariant_result = {
kind : invariant_kind;
passed : bool;
detail : string;
}
type pass_boundary = {
pass : string;
source_outcome : Source.outcome option;
target_outcome : Target.outcome option;
effects : int;
verdict : string;
}
type obligation_status =
| Discharged
| Assumed
@@ -27,11 +48,15 @@ type case_audit = {
typecheck : (unit, string) result;
failure_mode : failure_mode;
obligations : obligation_result list;
invariants : invariant_result list;
pass_boundaries : pass_boundary list;
}
val audit_case : Corpus.case -> case_audit
val failure_mode_to_string : failure_mode -> string
val obligation_status_to_string : obligation_status -> string
val invariant_kind_to_string : invariant_kind -> string
val emit_pass_boundaries : case_audit -> string
val emit_invariants : case_audit -> string
val emit_case_audit : case_audit -> string
val emit_matrix : case_audit list -> string