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

Function quot_env

crates/kernel/src/whnf.rs:4522–4570  ·  view source on GitHub ↗

Minimal Quot env: Quot / Quot.mk / Quot.lift / Quot.ind as axioms.

()

Source from the content-addressed store, hash-verified

4520 let char_ty = AE::cnst(prims.char_type.clone(), Box::new([]));
4521 let char_of_nat = AE::cnst(prims.char_of_nat.clone(), Box::new([]));
4522 let list_nil = AE::cnst(list_nil_id.clone(), Box::new([]));
4523 let list_cons = AE::cnst(list_cons_id.clone(), Box::new([]));
4524 let nil_char = app(list_nil, char_ty.clone());
4525 let char_a = app(char_of_nat, mk_nat(65));
4526 let one_char_list =
4527 apps_ae(list_cons, &[char_ty.clone(), char_a, nil_char]);
4528 env.insert(
4529 string_to_list_id.clone(),
4530 KConst::Defn {
4531 name: (),
4532 level_params: (),
4533 kind: DefKind::Definition,
4534 safety: DefinitionSafety::Safe,
4535 hints: ReducibilityHints::Regular(0),
4536 lvls: 0,
4537 ty: sort0(),
4538 val: lam(sort0(), one_char_list),
4539 lean_all: (),
4540 block: string_to_list_id.clone(),
4541 },
4542 );
4543
4544 let nat_succ = AE::cnst(prims.nat_succ.clone(), Box::new([]));
4545 let motive = lam(sort0(), nat());
4546 let cons_case = lam(
4547 var(1),
4548 lam(app(list_const.clone(), var(2)), lam(nat(), app(nat_succ, var(0)))),
4549 );
4550 let length_body =
4551 apps_ae(rec_const, &[var(1), motive, mk_nat(0), cons_case, var(0)]);
4552 env.insert(
4553 list_length_id.clone(),
4554 KConst::Defn {
4555 name: (),
4556 level_params: (),
4557 kind: DefKind::Definition,
4558 safety: DefinitionSafety::Safe,
4559 hints: ReducibilityHints::Regular(0),
4560 lvls: 1,
4561 ty: sort0(),
4562 val: lam(sort0(), lam(app(list_const, var(0)), length_body)),
4563 lean_all: (),
4564 block: list_length_id.clone(),
4565 },
4566 );
4567
4568 let mut tc = TypeChecker::new(&mut env);
4569 let string_to_list = AE::cnst(string_to_list_id, Box::new([]));
4570 let list_length = AE::cnst(list_length_id, Box::new([KUniv::zero()]));
4571 let nat_ble = AE::cnst(tc.prims.nat_ble.clone(), Box::new([]));
4572
4573 let sample = " 0123abcABC:,;`\\/";

Calls 4

sort1Function · 0.70
sort0Function · 0.70
insertMethod · 0.45
cloneMethod · 0.45