extend source and target calculi with observable tick effects + add invariant checks for relation preservation and target arity/shape
This commit is contained in:
+15
-4
@@ -7,7 +7,7 @@ type profile = {
|
||||
}
|
||||
|
||||
let safe_flags =
|
||||
{ Pipeline.default_flags with unsafe_repr_eq = false; unsafe_strict_unroll = false }
|
||||
{ Pipeline.default_flags with unsafe_repr_eq = false; unsafe_strict_unroll = false; unsafe_effect_drop = false }
|
||||
|
||||
let profiles =
|
||||
[
|
||||
@@ -17,17 +17,28 @@ let profiles =
|
||||
{ name = "unsafe-inline"; flags = { safe_flags with unsafe_repr_eq = true }; relation = Relation.Boxed_unboxed };
|
||||
{ name = "unsafe-unbox"; flags = Pipeline.default_flags; relation = Relation.Boxed_unboxed };
|
||||
{ name = "unsafe-strictness"; flags = { safe_flags with inline = false; unsafe_strict_unroll = true }; relation = Relation.Boxed_unboxed };
|
||||
{ name = "unsafe-effects"; flags = { safe_flags with unsafe_effect_drop = true }; relation = Relation.Boxed_unboxed };
|
||||
]
|
||||
|
||||
let run_case (case : Corpus.case) =
|
||||
let audit = Audit.audit_case case in
|
||||
let failed_invariants =
|
||||
audit.Audit.invariants
|
||||
|> List.filter (fun result -> not result.Audit.passed)
|
||||
|> List.map (fun result -> Audit.invariant_kind_to_string result.Audit.kind)
|
||||
in
|
||||
Printf.printf
|
||||
"case %s\nclassification %s\nverdict %s\nsource %s\ntarget %s\n\n"
|
||||
"case %s\nclassification %s\nverdict %s\nsource %s\ntarget %s\nfailed invariants %s\n\n"
|
||||
case.Corpus.name
|
||||
(Audit.failure_mode_to_string audit.Audit.failure_mode)
|
||||
(Reporting.verdict_to_string audit.Audit.comparison.Relation.verdict)
|
||||
(Reporting.string_of_source_outcome audit.Audit.source_trace.Source.outcome)
|
||||
(Reporting.string_of_target_outcome audit.Audit.target_trace.Target.outcome)
|
||||
(Reporting.string_of_source_trace audit.Audit.source_trace)
|
||||
(Reporting.string_of_target_trace audit.Audit.target_trace)
|
||||
(if failed_invariants = [] then "none" else String.concat ", " failed_invariants);
|
||||
if audit.Audit.failure_mode <> Audit.Preserved then begin
|
||||
Printf.printf "%s\n\n" (Reporting.emit_pipeline_visualisation audit.Audit.compiled);
|
||||
Printf.printf "%s\n\n" (Audit.emit_pass_boundaries audit)
|
||||
end
|
||||
|
||||
let run_profile profile =
|
||||
let result = Gen.run_campaign profile.flags profile.relation ~count:160 ~max_depth:4 () in
|
||||
|
||||
Reference in New Issue
Block a user