edits
[lambda.git] / topics / _week15_continuation_applications.mdwn
index cc5c9e2..d13efa7 100644 (file)
@@ -109,7 +109,9 @@ Here, QDP is a scope-taking quantificational DP.
 Just to emphasize the similarity between QR and shift, we can use QR
 to provide insight into the tree task that mystified us earlier.
 
+<!--
 \tree (. (a)((S)((d)((S)(e)))))
+-->
 
 <pre>
   .
@@ -124,9 +126,12 @@ a  __|___
          S  e
 </pre>
 
-First we QR the lower shift operator
+First we QR the lower shift operator, replacing it with a variable and
+abstracting over that variable.
 
+<!--
 \tree (. (S) ((\\x) ((a)((S)((d)((x)(e)))))))
+-->
 
 <pre>
    .
@@ -147,7 +152,9 @@ S  ___|___
 
 Next, we QR the upper shift operator
 
+<!--
 \tree (. (S) ((\\y) ((S) ((\\x) ((a)((y)((d)((x)(e)))))))))
+-->
 
 <pre>
    .
@@ -172,7 +179,7 @@ S  ___|____
 
 We then evaluate, using the same value for the shift operator proposed before:
 
-    shift = \k.k(k "")
+    S = shift = \k.k(k "")
 
 It will be easiest to begin evaluating this tree with the lower shift
 operator (we get the same result if we start with the upper one).
@@ -180,7 +187,9 @@ The relevant value for k is (\x.a(y(d(x e)))).  Then k "" is
 a(y(d(""(e)))), and k(k "") is a(y(d((a(y(d(""(e)))))(e)))).  In tree
 form:
 
+<!--
 \tree (. (S) ((\\y) ((a)((y)((d)(((a)((y)((d)(("")(e)))))(e)))))))
+-->
 
 <pre>
    .
@@ -211,7 +220,9 @@ S  ___|____
 Repeating the process for the upper shift operator replaces each
 occurrence of y with a copy of the whole tree.
 
+<!--
 \tree (. ((a)((((a)(("")((d)(((a)(("")((d)(("")(e)))))(e))))))((d)(((a)((((a)(("")((d)(((a)(("")((d)(("")(e)))))(e))))))((d)(("")(e)))))(e))))))
+-->
 
 <pre>
       .
@@ -251,8 +262,8 @@ a  ___|____           |      |
 The yield of this tree (the sequence of leaf nodes) is
 aadadeedaadadeedee, which is the expected output of the double-shifted tree.
 
-Exercise: the result is different, by the way, if the QR occurs in a
-different order.
+Exercise: the result is different, by the way, if the QR occurs in the
+opposite order.
 
 Three lessons:
 
@@ -261,7 +272,9 @@ Three lessons:
   dramatic increase in power and complexity.
 
 * Operators that
-  compose multiple copies of a context can be hard to understand.
+  compose multiple copies of a context can be hard to understand
+  (though keep this in mind when we see the continuations-based
+  analysis of coordination, which involves context doubling).
 
 * When considering two-sided, tree-based continuation operators,
   quantifier raising is a good tool for visualizing (defunctionalizing)
@@ -299,12 +312,12 @@ separating a box into two regions, the payload and the hidden scratch
 space:
 
 <pre>
-    _______________               _______________           _______________ 
-    | [x->2, y->3] |             | [x->2, y->3] |          | [x->2, y->3] |
-  -------------------          ------------------         ------------------
+    _______________               _______________            _______________ 
+    | [x->2, y->3] |             | [x->2, y->3] |          | [x->2, y->3] |
+  -------------------           ------------------        ------------------
     |              |     ¢        |              |    =     |              |
-    |    +2        |             |     y        |          |     5        |
-    |______________|             |______________|          |______________|
+    |    +2        |             |     y        |          |     5        |
+    |______________|             |______________|          |______________|
 </pre>
 
 For people who are familiar with Discourse Representation Theory (Kamp
@@ -321,14 +334,18 @@ We won't keep the outer box, but we will keep the horizontal line
 dividing main effects from side-effects.
 
 Tower convention for types:
+<pre>
                                               γ | β
     (α -> β) -> γ can be equivalently written ----- 
                                                 α
+</pre>
 
 Tower convention for values:
+<pre>
                                            g[] 
     \k.g[k(x)] can be equivalently written ---
                                             x
+</pre>
 
 If \k.g[k(x)] has type (α -> β) -> γ, then k has type (α -> β).
 
@@ -341,12 +358,15 @@ individuals) and S (the type of truth values).
 Then in the spirit of monadic thinking, we'll have a way of lifting an
 arbitrary value into the tower system:
 
-                                           []    γ
-    LIFT (x:α) = \k.kx : (α -> Î²) -> Î³ ==  --- : ---
-                                           x      α
+                                           []   β
+    LIFT (x:α) = \k.kx : (α -> Î²) -> Î² ==  -- : ---
+                                           x     α
 
 Obviously, LIFT is exactly the midentity (the unit) for the continuation monad.
-The name comes from Partee's 1987 theory of type-shifters for
+Notice that LIFT requires the result type of the continuation argument
+and the result type of the overall expression to match (here, both are β).
+
+The name LIFT comes from Partee's 1987 theory of type-shifters for
 determiner phrases.  Importantly, LIFT applied to an
 individual-denoting expression yields the generalized quantifier
 proposed by Montague as the denotation for proper names:
@@ -359,6 +379,14 @@ So if the proper name *John* denotes the individual j, LIFT(j) is the
 generalized quantifier that maps each property k of type DP -> S to true
 just in case kj is true.
 
+Crucially for the discussion here, LIFT does not apply only to DPs, as
+in Montague and Partee, but to any expression whatsoever.  For
+instance, here is LIFT applied to a lexical verb phrase:
+
+                                                   []     S|S 
+    LIFT (left:DP\S) = \k.kx : (DP\S -> S) -> S == ---- : ---
+                                                   left   DP
+
 Once we have expressions of type (α -> β) -> γ, we'll need to combine
 them.  We'll use the ¢ operator from the continuation monad:
 
@@ -385,6 +413,16 @@ operator:
 Not a monad (Wadler); would be if the types were
 Neverthless, obeys the monad laws.
 
+Oh, one more thing: because natural language allows the functor to be
+on the left or on the right, we replace the type arrow -> with a
+left-leaning version \ and a right-leaning version, as follows:
+
+    α/β  β = α
+    β  β\α = α
+
+This means we need two versions of ¢ too (see Barker and Shan 2014
+chapter 1 for full details).
+
 This is (almost) all we need to get some significant linguistic work
 done.