MCPcopy Create free account
hub / github.com/argumentcomputer/ix / good_bool_rec_reduction

Function good_bool_rec_reduction

crates/kernel/src/tutorial/reduction.rs:393–425  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

391 let mut env = bool_env();
392
393 // Test: Bool.rec (motive := fun _ => Bool) Bool.false Bool.true Bool.false = Bool.false
394 // i.e., the recursor on false returns the false-case value
395 //
396 // ∀ {motive : Bool → Sort 1} (hf : motive Bool.false) (ht : motive Bool.true),
397 // Eq.{1} (motive Bool.false) (Bool.rec hf ht Bool.false) hf
398 //
399 // Simplified: test with concrete motive = fun _ => Bool
400 let motive = nlam("_", cnst("Bool", &[]), cnst("Bool", &[])); // fun _ => Bool
401 let rec_app = apps(
402 cnst("Bool.rec", &[usucc(uzero())]),
403 &[
404 motive.clone(),
405 cnst("Bool.false", &[]), // false case returns Bool.false
406 cnst("Bool.true", &[]), // true case returns Bool.true
407 cnst("Bool.false", &[]), // major: false
408 ],
409 );
410 // After reduction: Bool.rec ... false = false-case = Bool.false
411 let ty = eq_expr(
412 usucc(uzero()),
413 cnst("Bool", &[]),
414 rec_app,
415 cnst("Bool.false", &[]),
416 );
417 let val =
418 eq_refl_expr(usucc(uzero()), cnst("Bool", &[]), cnst("Bool.false", &[]));
419 let (id, c) = mk_thm("boolRecFalse", 0, vec![], ty, val);
420 env.insert(id.clone(), c);
421 check_accepts(&mut env, &id);
422 }
423
424 /// Bool.rec on true returns the true-case value
425 #[test]
426 fn good_bool_rec_reduction_true() {
427 let mut env = bool_env();
428

Callers

nothing calls this directly

Calls 12

nlamFunction · 0.85
appsFunction · 0.85
usuccFunction · 0.85
uzeroFunction · 0.85
eq_exprFunction · 0.85
eq_refl_exprFunction · 0.85
mk_thmFunction · 0.85
check_acceptsFunction · 0.85
bool_envFunction · 0.70
cnstFunction · 0.50
cloneMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected