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

Function bad_induct_too_few_params

crates/kernel/src/tutorial/inductive.rs:121–171  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

119 let mut env = KEnv::<Meta>::new();
120 let block_id = mk_id("inductTooFewParams");
121 let rec_id = mk_id("inductTooFewParams.rec");
122 env.insert(
123 block_id.clone(),
124 KConst::Indc {
125 name: mk_name("inductTooFewParams"),
126 level_params: vec![],
127 lvls: 0,
128 params: 2, // claims 2 params
129 indices: 0,
130 is_unsafe: false,
131 block: block_id.clone(),
132 member_idx: 0,
133 ty: pi(sort0(), sort0()), // only 1 arrow — Prop → Prop
134 ctors: vec![],
135 lean_all: vec![block_id.clone()],
136 },
137 );
138 // Minimal recursor
139 let rec_ty = npi(
140 "motive",
141 pi(pi(sort0(), sort0()), sort(param(0))),
142 npi("t", pi(sort0(), sort0()), app(var(1), var(0))),
143 );
144 env.insert(
145 rec_id.clone(),
146 KConst::Recr {
147 name: mk_name("inductTooFewParams.rec"),
148 level_params: vec![mk_name("u")],
149 k: false,
150 is_unsafe: false,
151 lvls: 1,
152 params: 2,
153 indices: 0,
154 motives: 1,
155 minors: 0,
156 block: block_id.clone(),
157 member_idx: 0,
158 ty: rec_ty,
159 rules: vec![],
160 lean_all: vec![block_id.clone()],
161 },
162 );
163 env.blocks.insert(block_id.clone(), vec![block_id.clone(), rec_id]);
164 check_rejects(&mut env, &block_id);
165 }
166
167 /// indNeg: classic negative recursive occurrence: (I → I) → I
168 #[test]
169 fn bad_induct_negative_occurrence() {
170 let mut env = KEnv::<Meta>::new();
171 let n = "indNeg";
172 let block_id = mk_id(n);
173 let ctor_id = mk_id("indNeg.mk");
174 let rec_id = mk_id("indNeg.rec");

Callers

nothing calls this directly

Calls 12

npiFunction · 0.85
sortFunction · 0.85
check_rejectsFunction · 0.85
mk_idFunction · 0.50
mk_nameFunction · 0.50
piFunction · 0.50
sort0Function · 0.50
paramFunction · 0.50
appFunction · 0.50
varFunction · 0.50
insertMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected