Is there a way to learn about $\lambda-$calculus and type theory while at least being agnostic about the Law of the Excluded Middle and not outright rejecting it? Perhaps that makes me old-fashioned, and my grandkids will laugh at me for this concern, but proof by contradiction can be very useful and is how I learned a lot of the math which I know. My background is more in mathematics than computer science, so although I can see how having to construct something to prove that exists is an acceptable restriction for people interested primarily in computation, I am really uncomfortable with having to give up proof by contradiction and the Law of the Excluded Middle. However, I just learned that type theory, at least as stated by Lof, is supposed to be a way to formalize intuitionistic logic/constructive mathematics, which rejects the Law of the Excluded Middle and even the Axiom of Choice. Also other reasons, like wanting to learn and understand functional programming, in order to have an alternative to C++ which I dislike. I want to learn about lambda calculus because it seems like an interesting way to think about functions in general, and because a generalization called the stochastic $\pi$ calculus studied by Luca Cardelli and others seems to allow many computational interpretations of biology, something which I am really interested in. (If they don't explicitly define it, then just assume that what the lambda calculator tells you is the desired reading.) Once you insert all the missing brackets, you'll see how the beta reduction works out.I know very little about what I am talking about in what follows, so I appreciate any all help in pointing out all of my mistakes - otherwise I won't be able to learn more and advance in my knowledge of these interesting subjects. It has to be defined somewhere, otherwise, your material's notation is sloppy. So take another close look at the conventions for omission of brackets (at the very beginning where the syntax of lambda expressions is defined) in the materials you're using. Both readings are possible, but they are different terms and result in different reductions. So which is the "correct" reduction depends on which term $\lambda fse.efs$ is supposed to mean. The abstractions as subterms (so the scope of the lambda abstractions is as narrow as possible). This is the bracketing that results if one defines thatĪbstraction has precedence over application: First you form possibleĪbstractions (here: $\lambda e$, $\lambda s$, $\lambda f$), andĪfterwards applications (here: $((\lambda f. e)))f)s) 1 2$ reduces to $1 2$ as shown in the lambda In this term, $f$ and $s$ are unbound, and $(((\lambda f. Interpreter - and likely also your school materials - assume is that Have the applications as subterms (so the scope of the lambda abstractions extends as far right as possible). This is the bracketing that results if oneĭefines that application as precedence over abstraction: First youįorm possible applications (here: $ef$, $(ef)s$), and afterwardsĪbstractions (here: $\lambda e$, $\lambda s$, $\lambda f$) which In this term, all variables are bound, and
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |