about the last lecture that was this rules for for the lambda terms
so there was the introduction and elimination as I said so we had something like p and x
no sorry the introduction for lambda just has had one premise
and then we could derive I don't remember I probably call it at lambda intro a to b so this
intuition about introduction elimination it refers to types and not to terms so we have
product introduction because we have products and here we have lambda introduction because we have
an error in a type so if we change the type then accordingly you we have the corresponding rules
for introduction elimination of terms so that could be called lambda introduction and this p
say f from a to b so this produces f of p of type B this can be called lambda elimination or error
elimination so in in the glowing course we had this elimination introduction rules referring to
the connectivities and the connectivities are here on the level of type so we have this this
arrow we could just have this arrow elimination rule or arrow introduction rule okay and we are
introduced terms and context and so this context is a technical tool which is going to use but we
don't need it all the time so we can talk about terms and we say
that we also use them freely if we just don't need the context and then we can use the term
and just using this means that the construction t in this in some context is derivalable for some
gamma and for some return type so after all this preliminary is about operational semantics I
guess it's not difficult for you would be to give an operational semantics for this calculus for
this PCF language which introduced last but there are a couple of subtleties so perhaps I give some
rules and not all and first I consider as called by name operational semantics so for example
for example if I want to tell what the semantics of a pair is what I do I evaluate p say to c1
and evaluate q say to c2 and then p the pair p and q overlays to c1 and c2 and this is a case
where laziness doesn't help me because if I need to know what the result of a pair is I need to
evaluate both components of the pair and this contrast the case was the projection so if I
want to calculate pr1 of PC well actually in this case it doesn't help too so I evaluate p2 to a
pair c and d and then the projection of relates to c so I must have specified these things of
course on the right hand side hand side a value as a buddhan or a natural or
just this unit element or a pair of or a pair of values so this is the definition of the things
I evaluate to so I need to make sure that all the rules that I'm giving they are producing values
so this is the in the actual definition of course because a pair of values refers to values so I can
form tuples and do this inductively and this is important here for example and where laziness
helped me helps me actually as this rule if if I consider this construction if be than p else q
and I know that be able it's a true and p ever leads to see then the whole thing ever leads to see
this is lazy because I don't evaluate q if if I'm if I related the condition and it's true then
I immediately proceed to this branch and check it and I don't care about this branch it may
diverge but I will not notice it because I don't relate it then there is a rule for for the case
if B is false then I only check q and this is non symmetric
so the rules for lambda
is in the lambda calculus
what is left I mean we always have the this sort of rules like p ever leads to see and
q ever leads to see the c1 c2 and then the sum of course this is the same symbol here but this
symbol the plus is the this formal plus which we use to form expressions and this plus is the
plus over integers so when I write the plus on the right hand side what I mean is a really add the
integers and this is the result there are certain certain variants about how one can
interpret the logical connectivities or let's consider this junction
so if we have let's say B and waiting to true then we can say that B or C ever
leads to true this makes a certain sense because you can say if I have related a formula and you
obtain truth then you also need not evaluate the the second formula because you may have
divergence and you don't want it because you already have a truth condition so you may say
my the semantics of my conjunction as such that truth is sufficient if and even if the
Presenters
Zugänglich über
Offener Zugang
Dauer
01:28:41 Min
Aufnahmedatum
2015-04-22
Hochgeladen am
2019-04-24 00:59:02
Sprache
en-US
The course provides a background to various topics of the theory of programming. As a guiding paradigm monad-based functional programming is chosen. The idea of the course is to provide clear computational insights to various concepts of computer science and to practice these by concrete implementations in suitable programming languages such as Haskell.
Lernziele und Kompetenzen:
Fachkompetenz Wissen Students demonstrate an understanding of the role of computational monads in the context of functional programming and as a semantic tool for programming and system specification; Students reproduce the main definitions and results on monads, monad combination, and further categorical constructions end explain them from a programming perspective. Anwenden Students use the monad-based approach to formalise examples involving various kinds of computational effects as monads. Students use monads for practical programming in programming languages, such as Haskell. Analysieren Students identify various computational effects as monads and provide an appropriate treatment of problems from various semantic domains (probabilistic, nondeterministic, concurrent), possibly providing a monad-based software implementation. Selbstkompetenz Students will be regularly provided with small challenges in form of exercises to be able to have a gradual progress with the lecture material.