Closed binghe closed 3 months ago
In boehmTheory
the following new addition (canonical_vars
) is actually for the new unfinished theorem:
[canonical_vars_def]
⊢ ∀X M.
canonical_vars X M =
(let M0 = principle_hnf M; n = LAMl_size M0 in NEWS n (X ∪ FV M0))
Thanks!
Hi,
The single purpose of all code changes in this PR, is to prove the surprisingly hard Lemma 10.3.6 (ii) of [Barendregt 1984, p.247]), part of Chapter 10.3 (The Böhm out technology):
After repeated experiments and many rounds of statement changes, the current best proved form is the following: (a better form has been replaced here, the asserted
Z
is now unique,ISUB
has been changed to a single closed substitution, which may well escape from a outertpm
)where
tpm_rel
is a new (equivalence) relation on lambda terms, based ontpm
:There are a huge number of new intermediate lemmas added to server the proof of the above lemma. In particular, the facility for generating fresh list of variables, now is called
NEWS
, has to be updated, and now is put intobasic_swapTheory
. Its new property (NEWS_prefix) is the key to complete the above lemma.In
rich_listTheory
, I added one more theorem aboutIS_PREFIX
: (with my previous added theorem [IS_PREFIX_EQ_TAKE], the proof is surprisingly straightforward)Chun
[1] Barendregt, H.P.: The lambda calculus, its syntax and semantics. College Publications, London (1984).