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

Function nat_env

crates/kernel/src/tutorial/reduction.rs:460–607  ·  view source on GitHub ↗

Build N (Nat-like) environment with working recursor rules.

()

Source from the content-addressed store, hash-verified

458 let mut env = KEnv::<Meta>::new();
459 let n = "N";
460 let block_id = mk_id(n);
461 let zero_id = mk_id("N.zero");
462 let succ_id = mk_id("N.succ");
463 let rec_id = mk_id("N.rec");
464
465 let nat = || cnst(n, &[]);
466
467 // N : Type
468 env.insert(
469 block_id.clone(),
470 KConst::Indc {
471 name: mk_name(n),
472 level_params: vec![],
473 lvls: 0,
474 params: 0,
475 indices: 0,
476 is_unsafe: false,
477 block: block_id.clone(),
478 member_idx: 0,
479 ty: sort1(),
480 ctors: vec![zero_id.clone(), succ_id.clone()],
481 lean_all: vec![block_id.clone()],
482 },
483 );
484
485 // N.zero : N
486 env.insert(
487 zero_id.clone(),
488 KConst::Ctor {
489 name: mk_name("N.zero"),
490 level_params: vec![],
491 is_unsafe: false,
492 lvls: 0,
493 induct: block_id.clone(),
494 cidx: 0,
495 params: 0,
496 fields: 0,
497 ty: nat(),
498 },
499 );
500
501 // N.succ : N → N
502 env.insert(
503 succ_id.clone(),
504 KConst::Ctor {
505 name: mk_name("N.succ"),
506 level_params: vec![],
507 is_unsafe: false,
508 lvls: 0,
509 induct: block_id.clone(),
510 cidx: 1,
511 params: 0,
512 fields: 1,
513 ty: pi(nat(), nat()),
514 },
515 );
516
517 // N.rec : ∀ {motive : N → Sort u} (zero : motive N.zero)

Callers 4

good_n_rec_reductionFunction · 0.70
good_nat_litFunction · 0.70
good_nat_lit_eqFunction · 0.70

Calls 15

sortFunction · 0.85
npiFunction · 0.85
ipiFunction · 0.85
nlamFunction · 0.85
appsFunction · 0.85
add_eq_axiomsFunction · 0.85
mk_idFunction · 0.50
cnstFunction · 0.50
mk_nameFunction · 0.50
sort1Function · 0.50
natFunction · 0.50
piFunction · 0.50

Tested by 4

good_n_rec_reductionFunction · 0.56
good_nat_litFunction · 0.56
good_nat_lit_eqFunction · 0.56