-
Notifications
You must be signed in to change notification settings - Fork 25
Rice's theorem #57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rice's theorem #57
Conversation
There seem to be conflicts? |
oops my mistake! i've fixed the conflicts but it doesn't want to build remotely (it goes through on my computer) i think because of the linter warnings — i'll come back to this soon but it seems to want no space after the transition arrows (ie |
Depending on how your terminal displays certain Unicode, what appears as roughly a single space after an arrow may actually be multiple spaces |
Hmm I don't think that's it, it's definitely asking for no spaces. It's only complaining about hypotheses of the form "blank reduces to blank" (eg I expect it's because in the declaration |
For this branch with a symbol after the arrow, I think this makes sense. I see though that for the notation without a symbol it is also like this, is that what is being linted for you? This should be changed, probably not noticed previously because we don't use it much. |
Ahh yes you're absolutely right — I've changed it and replaced the spaces after the transitions now |
Hi @thomaskwaring, |
* add tensor zero eqv * add parr top eqv * use notation for zero and top * add parr and tensor scoped notation
* confluence * non-terminal simps * style * use reduction_sys * non-terminal simp * remove redundant lemma * update TODO * style * fix Trans instances * use Trans instance for brevity * add a reference * para_lc_l and para_lc_r as * naming conventions * change confusing names * aesop ruleset * rm unused lemma * ASCII arrows * missed rule_sets * use proof irrelevance * style * namespace rule set
* Switch to the standard type for relations. * Missing changes
* Activate mathlib linters and fix some warnings. * Add lint & suggest action
74b7edb
to
d7ba53a
Compare
Thanks! I'm doing that now — sorry for the noise I'm not much up on my git-yoga |
I find it mildly remarkable that there isn't a merge conflict here. Because @Shreyas4991 consistently added the namespace at the very top and bottom of each file, it's able to be merged automatically. |
Some of my review comments might need discussion on Zulip and collective decisions. I recommend merging in the main branch into this branch, before merging this PR because namespace related issues for identifiers could still bite. EDIT: I highly recommend an 'SKI |
There is an |
Yes there is, but I was a bit inconsistent with it — fixed now & added the |
gentle ping @fmontesi, I think I've addressed everything (correct me?) if you think this is merge-ready? |
This pull request extends the development of SKI combinatory logic — adding notions of evaluation and normal forms, and proving a version of Rice's theorem. The results and definitions are contained in the new file
CombinatoryLogic/Evaluation.lean
, which is based heavily on the following development by Bhavik Mehta.Notes
The definitions and results of this PR allows us to define normal-order evaluation as a
PFun
, in the sense of Mathlib. The missing piece to make this useful is the so-called Standardisation theorem, saying that normal-order reduction will find a normal form, if there is one. The proof of Theorem T9 of Section C in A Mathematical Logic Without Variables (Rosser, 1935) should be amenable to formalization. This would be very interesting, as it ought to define a surjection from SKI terms to, for instance, partial recursive functions on the natural numbers, demonstrating that SKI terms are Turing-complete.