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

Function good_struct_eta

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

Source from the content-addressed store, hash-verified

1293 &[cnst("Bool", &[]), cnst("Bool", &[]), proj0, proj1],
1294 );
1295
1296 // ∀ (x : Prod Bool Bool), Eq.{1} (Prod Bool Bool) x (Prod.mk (x.1) (x.2))
1297 let ty = npi(
1298 "x",
1299 prod_bb.clone(),
1300 eq_expr(usucc(uzero()), prod_bb.clone(), var(0), reconstructed),
1301 );
1302
1303 // fun x => Eq.refl.{1} (Prod Bool Bool) x
1304 let val =
1305 nlam("x", prod_bb.clone(), eq_refl_expr(usucc(uzero()), prod_bb, var(0)));
1306
1307 let (id, c) = mk_thm("structEta", 0, vec![], ty, val);
1308 env.insert(id.clone(), c);
1309 check_accepts(&mut env, &id);
1310 }
1311
1312 /// prodRecEqns: Prod.rec f (Prod.mk true false) = f true false = true
1313 #[test]
1314 fn good_prod_rec_reduction() {
1315 let mut env = prod_env();
1316 let u1 = usucc(uzero());
1317
1318 let prod_bb = app(
1319 app(cnst("Prod", &[uzero(), uzero()]), cnst("Bool", &[])),
1320 cnst("Bool", &[]),
1321 );
1322 let motive = nlam("_", prod_bb, cnst("Bool", &[]));
1323 let f_case =
1324 nlam("a", cnst("Bool", &[]), nlam("b", cnst("Bool", &[]), var(1)));
1325 let pair = apps(
1326 cnst("Prod.mk", &[uzero(), uzero()]),
1327 &[
1328 cnst("Bool", &[]),

Callers

nothing calls this directly

Calls 15

prod_envFunction · 0.85
uzeroFunction · 0.85
appsFunction · 0.85
npiFunction · 0.85
eq_exprFunction · 0.85
usuccFunction · 0.85
nlamFunction · 0.85
eq_refl_exprFunction · 0.85
mk_thmFunction · 0.85
check_acceptsFunction · 0.85
appFunction · 0.50
cnstFunction · 0.50

Tested by

no test coverage detected