Test exists_u_for_t
Source location: crates/formality-rust/src/prove/test/universes.rs:14
#[test]
fn exists_u_for_t() {
let decls = Program::empty();
test_prove(decls, term("exists<U> {} => {for<T> T = U}")).assert_err(expect![[r#"
crates/formality-rust/src/prove/prove_normalize.rs:18:1: no applicable rules for prove_normalize { p: !ty_1, assumptions: {}, env: Env { variables: [?ty_0, !ty_1], bias: Soundness, pending: [], allow_pending_outlives: false } }
the rule "existential-nonvar" at (prove_eq.rs) failed because
pattern `None` did not match value `Some(!ty_1)`
the rule "existential-universal" at (prove_eq.rs) failed because
condition evaluated to false: `env.universe(p) < env.universe(v)`
crates/formality-rust/src/prove/prove_normalize.rs:18:1: no applicable rules for prove_normalize { p: ?ty_0, assumptions: {}, env: Env { variables: [?ty_0, !ty_1], bias: Soundness, pending: [], allow_pending_outlives: false } }"#]]);
}
Rules proved (0)
This test records no positive coverage.
Premises failed (8)
The last column links to the premise’s page when the judgment view counts this failure against that premise. It does not when the premise is read as infallible, or when the failure was blamed inside a multi-line premise that carries no record on its own first line.
| Judgment | Rule | Premise | All tests of this premise |
|---|---|---|---|
| prove_eq | symmetric | prove_eq(decls, env, assumptions, r, l) => env_c (line 38) | 15 tests |
| prove_eq | existential | prove_existential_var_eq(decls, env, assumptions… (line 62) | 5 tests |
| prove_eq | normalize-l | prove_normalize(decls, env, assumptions, x) => C… (line 68) | 15 tests |
| prove_existential_var_eq | existential-nonvar | if let None = t.downcast::<Variable>() (line 94) | 2 tests |
| prove_existential_var_eq | existential-universal | if env.universe(p) < env.universe(v) (line 140) | 2 tests |
| prove_wc | forall | prove_wc(decls, env, assumptions, p1) => c (line 35) | 8 tests |
| prove_wc | eq | prove_eq(decls, env, assumptions, a, b) => c (line 119) | 15 tests |
| prove_wc_list | some | prove_wc(decls, env, assumptions, wc0) => c (line 26) | 42 tests |
Proof trees
Failed proof tree
prove failedtest_util.rs:57args
ruletest_util.rs:57prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "forall"prove_wc.rs:35prove_wc failedprove_wc.rs:21args
rule "eq"prove_wc.rs:119prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:18args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "existential"prove_eq.rs:62prove_existential_var_eq failedprove_eq.rs:76args
rule "existential-nonvar"prove_eq.rs:94 (failed: if_let)rule "existential-universal"prove_eq.rs:140 (failed: if_false)
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:18args