# Question 9917: Synthetic Free Variables before Type Inference

[Return to catalogue page 50](https://ocme.evemisslab.com/en/questions/page/50/)

[← Question derivation index](https://ocme.evemisslab.com/en/questions/) · [Original question batch](https://ocme.evemisslab.com/en/practice/batch-20261013-advance-20261019-r07-lean-proof-term-foundations/#q-20261013-advance-20261019-r07-lean-proof-term-0042)

This teaching derivation has second-context AI mathematical and bilingual semantic review, limited to the model and assumptions stated in this question. It has no human review or new Lean proof and does not promote the original question or MKO to Canonical truth.

R0018-09917 · q-20261013-advance-20261019-r07-lean-proof-term-0042



## Original question and givens

Use the synthetic small propositional calculus or synthetic receipt specified here, not actual Lean execution. The original source pulse did not run Lean builds for these questions. A statement, tactic log and kernel-checked proof are different obligations. Context=[{"name":"h16","type":"P16"}], term={"kind":"var","name":"h16"}. Give (sorted distinct free variables, sorted context names, missing free variables, inferred type or not-evaluated, context complete?). Use the specified English-locale name order.


- G001 — Use the synthetic small propositional calculus or synthetic receipt specified here, not actual Lean execution. The original source pulse did not run Lean builds for these questions. A statement, tactic log and kernel-checked proof are different obligations. Context=[{"name":"h16","type":"P16"}], term={"kind":"var","name":"h16"}. Give (sorted distinct free variables, sorted context names, missing free variables, inferred type or not-evaluated, context complete?). Use the specified English-locale name order.





## Definition and scope

Use the original question domain, assumptions and cited MKO definitions. This item has second-context mathematical and bilingual review, with the model, answer and every arithmetic step independently recomputed from the original parameters; the source question remains a candidate.


- [mko-lean-proof-term](https://ocme.evemisslab.com/en/mko/mko-lean-proof-term/)





## Step-by-step derivation

S001 · impliesBefore

synthetic proposition/term calculus or supplied synthetic receipt

After

no actual Lean build,source-digest check or kernel acceptance

Conditions: none

Apply only the specified small calculus or synthetic receipt protocol.Statement,tactic completion,term presence and kernel acceptance are separate.No Lean is run and the teaching guide is not promoted to a formal proof.

Step identifiers and dependenciesRule: synthetic_proofterm_not_actual_kernel · Uses: G001





S002 · impliesBefore

raw context=[{"name":"h16","type":"P16"}]

After

validated English-locale context=[["h16","P16"]]

Conditions: none

Validate every context name and type,reject duplicates,and display in the specified English order without translating opaque names.

Step identifiers and dependenciesRule: synthetic_whole_context_validation · Uses: G001, S001





S003 · impliesBefore

path=root;term={"kind":"var","name":"h16"};lambda-bound names=[]

After

free variable names=["h16"]

Conditions: none

Only lambda syntax removes a free variable.A name's presence in the external context does not make it syntactically bound in the term.This step does not perform type inference.

Step identifiers and dependenciesRule: synthetic_free_variable_scope_rule · Uses: G001, S002





S004 · impliesBefore

syntactic free names=["h16"];context names=["h16"]

After

missing=[];context complete=Yes

Conditions: none

Compare all free names with the context first.If any binding is missing,do not infer a type or guess one from appearances.

Step identifiers and dependenciesRule: all_free_variables_bound_before_inference · Uses: G001, S003





S005 · impliesBefore

path=root;term={"kind":"var","name":"h16"};context=[["h16","P16"]]

After

variable lookup type=P16

Conditions: none

Look up the exact name in the current lexical context.Do not treat a similar name or a missing binding as an assumption.

Step identifiers and dependenciesRule: synthetic_variable_typing · Uses: G001, S004









## Reverse checks


- S005 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S004 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S003 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S002 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S001 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.





## Result

([h16], [h16], [], P16, Yes)

The full substitutions and premise checks give the original answer; source identity,format and status are unchanged.





## This question review and source binding

Review date: 2026-10-26

Original questions, answers, step expressions, numeric ASTs and historical records are retained. Source candidate labels remain historical and are not overwritten as formal proof.

Source hashes and review receipts
- input commit: 0f7be61e2c22317a4075561dc822c87d881a50db
- original question SHA-256: 1aed9b2fb6e17544a0e4eb2e1f5cf5d5861dc94deecb7cac5ec09d41a3c2df6b
- candidate record SHA-256: 83c2322b3a0a6f6a9f3f778acb90ec51571ec94fada77cd94f91d7aab28688df
- semantic review receipt SHA-256: bd35da62087a15d6b89b45585dc46e89b9efbe097cba7b3c707b5030496f013c
- question-first witness SHA-256: fab45a10d8ac95c7d61d32e47d1bdd3ca862c17c3289a6bf4b01d4dc9492fbb6
- Lean: NOT_RUN · human review: NOT_PERFORMED

[Same-source full JSON](https://ocme.evemisslab.com/data/question-derivations/questions/q-20261013-advance-20261019-r07-lean-proof-term-0042.json)




