1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Kani proof harnesses for the two-way ANOVA input-validation layer, `include!`d
// into the `#[cfg(kani)] mod verification` block of `two_way_anova.rs` (kept in a
// separate file so `two_way_anova.rs` stays within the 500-line `tests/style.rs`
// limit). `super` here refers to the `two_way_anova` module. Compiled only under
// `cargo kani`.
use two_way_anova;
use crateError;
/// Proves two-way ANOVA rejects an empty grid via `Err` without panicking. The
/// leading `cells.first()` guard returns [`Error::InsufficientData`] before any
/// marginal-sum or F-tail arithmetic.
// Live path returns Err before any loop; the unwind bound caps the dead
// transcendental-tail branches CBMC unwinds during model construction.
/// Proves two-way ANOVA rejects a grid with a single factor-A level via `Err`
/// without panicking, for an arbitrary symbolic replicate value. The `a < 2` guard
/// returns [`Error::InsufficientData`] before the interior.
// Live path returns Err before any loop; the unwind bound caps the dead
// transcendental-tail branches CBMC unwinds during model construction.