{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import imp\n", "imp.reload(lamb.parsing)\n", "reload_lamb()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Continuations and scope\n", "## Notebook author: Kyle Rawlins\n", "\n", "Based on Chris Barker, \"[Continuations and the Nature of Quantification](http://www.semanticsarchive.net/Archive/902ad5f7/barker.continuations.pdf)\", Natural Language Semantics, 2002.\n", "\n", "This notebook implements a version of Barker's account of scope using continuations. Barker develops a semantic account of quantifier scope that does not rely at all on LF manipulations etc., but rather complicates the types of lexical items and composition rules in a systematic way to make them more general. This notebook develops the analysis in roughly the sequence found in Barker's paper; first I show how to continuize ordinary meanings, and how to write a quantifier in this framework. I then turn to scope ambiguities, scope freezing, and finally inverse linking / QDP-within-QDP cases.\n", "\n", "Initial note: because I do not use rule-to-rule translation, and instead use general composition rules, the predictions of the system in terms of possible composition paths are somewhat closer to those developed in Yusuke Kubota and Wataru Uegaki, \"[Continuation-based semantics for Conventional Implicatures: The case of Japanese benefactives](http://elanguage.net/journals/salt/article/view/19.18)\", Proceedings of SALT 19, 2009. Basically, a system with general rules tends to overgenerate possible composition paths that converge on the same meaning; as far as I am aware the resultant S-level meanings (filtered to be the appropriate type) are the same as Barker's system. I will note several places where this is relevant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Continuations are notoriously hard to explain, and I will do so here mainly by example. I recommend using the notebook to inspect objects that are mysterious, check on the details of derivations, etc.\n", "\n", "An ordinary meaning can be continuized by turning it into a function from its continuation to itself applied as an argument to the continuation. The continuation represents something like the \"next state\" of the computation. The continuation of X is always a function from X to type t; the output type is because all derivations (by assumption) end in ordinary type t.\n", "\n", "The effect is perhaps easiest to see when continuizing type t, exemplified by `raining1` (the proposition that it is raining) and `raining2` (its continuized form) below. The continuation of something of ordinary type `t` is a function that maps that type to the output type, namely `t`. Crucially, if the identity function for `` is combined via function application with a continuized denotation of this type, we always get back its ordinary denotation. This is always true of the sentence-level meanings, which I assume to be of type `<,t>` following Barker. The identity function can be thought of as an empty context of sorts.\n", "\n", "Two more examples for type e, and type ``, are given as well." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO (meta): Coerced guessed type for 'Cat_t' into , to match argument 'x_e'\n", "INFO (meta): Coerced guessed type for 'Cat_t' into , to match argument 'x_e'\n" ] }, { "data": { "text/html": [ "$[\\![\\mathbf{\\text{raining1}}]\\!]^{}_{t} \\:=\\: $${Raining}_{t}$
\n", "$[\\![\\mathbf{\\text{raining2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}({Raining}_{t})$
\n", "$[\\![\\mathbf{\\text{john1}}]\\!]^{}_{e} \\:=\\: $${John}_{e}$
\n", "$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
\n", "$[\\![\\mathbf{\\text{cat1}}]\\!]^{}_{\\left\\langle{}e,t\\right\\rangle{}} \\:=\\: $$\\lambda{} x_{e} \\: . \\: {Cat}({x})$
\n", "$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$" ], "text/latex": [ "$[\\![\\mathbf{\\text{raining1}}]\\!]^{}_{t} \\:=\\: $${Raining}_{t}$
\n", "$[\\![\\mathbf{\\text{raining2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}({Raining}_{t})$
\n", "$[\\![\\mathbf{\\text{john1}}]\\!]^{}_{e} \\:=\\: $${John}_{e}$
\n", "$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
\n", "$[\\![\\mathbf{\\text{cat1}}]\\!]^{}_{\\left\\langle{}e,t\\right\\rangle{}} \\:=\\: $$\\lambda{} x_{e} \\: . \\: {Cat}({x})$
\n", "$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$" ], "text/plain": [ "$[\\![\\mathbf{\\text{raining1}}]\\!]^{}_{t} \\:=\\: $${Raining}_{t}$
\n", "$[\\![\\mathbf{\\text{raining2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}({Raining}_{t})$
\n", "$[\\![\\mathbf{\\text{john1}}]\\!]^{}_{e} \\:=\\: $${John}_{e}$
\n", "$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
\n", "$[\\![\\mathbf{\\text{cat1}}]\\!]^{}_{\\left\\langle{}e,t\\right\\rangle{}} \\:=\\: $$\\lambda{} x_{e} \\: . \\: {Cat}({x})$
\n", "$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb \n", "||raining1|| = Raining_t # reminder: hit shift-enter to run\n", "||raining2|| = L f_ : f(Raining_t)\n", "||john1|| = John_e\n", "||john2|| = L f_ : f(John_e)\n", "||cat1|| = L x_e : Cat(x)\n", "||cat2|| = L f_<,t> : f(L x_e : Cat(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mapping any ordinary denotation to its continuation is relatively straightforward at a mechanical level, at least. `econt` below illustrates a combinator that does this for type e." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "${econt}_{\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({x})$" ], "text/latex": [ "${econt}_{\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({x})$" ], "text/plain": [ "${econt}_{\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({x})$" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "econt = L x_e : L f_ : f(x)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$" ], "text/plain": [ "(λ f_: f_(John_e))" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "econt(john1.content).reduce_all() # we get back the content of john2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function generalizes this; given any type it constructs the continuization combinator for that type. This is illustrated using `cat1`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "${continuize}_{\\left\\langle{}X,\\left\\langle{}\\left\\langle{}X,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} x_{X} \\: . \\: \\lambda{} f_{\\left\\langle{}X,t\\right\\rangle{}} \\: . \\: {f}({x})$" ], "text/latex": [ "${continuize}_{\\left\\langle{}X,\\left\\langle{}\\left\\langle{}X,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} x_{X} \\: . \\: \\lambda{} f_{\\left\\langle{}X,t\\right\\rangle{}} \\: . \\: {f}({x})$" ], "text/plain": [ "${continuize}_{\\left\\langle{}X,\\left\\langle{}\\left\\langle{}X,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} x_{X} \\: . \\: \\lambda{} f_{\\left\\langle{}X,t\\right\\rangle{}} \\: . \\: {f}({x})$" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "continuize = L x_X : L f_ : f(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function could be used for e.g. constructing a typeshift or unary composition operation (as in the Kubota and Uegaki system). Here I will use it slightly differently, to construct a 'lexical transform' that can be applied in metalanguage definitions. This is indicated by the =<> notation below." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def continuize_lex(te):\n", " new_te = continuize(te).reduce_all()\n", " return new_te\n", "\n", "#continuize_lex(cat1.content)\n", "lamb.parsing.eq_transforms[\"cont\"] = continuize_lex" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO (meta): Coerced guessed type for 'Cat_t' into , to match argument 'x_e'\n", "INFO (meta): Coerced guessed type for 'Dance_t' into , to match argument 'x_e'\n" ] }, { "data": { "text/html": [ "$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
\n", "$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
\n", "$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
\n", "$[\\![\\mathbf{\\text{the}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\iota{} x_{e} \\: . \\: {f}({x}))$" ], "text/latex": [ "$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
\n", "$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
\n", "$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
\n", "$[\\![\\mathbf{\\text{the}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\iota{} x_{e} \\: . \\: {f}({x}))$" ], "text/plain": [ "$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
\n", "$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
\n", "$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
\n", "$[\\![\\mathbf{\\text{the}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\iota{} x_{e} \\: . \\: {f}({x}))$" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||cat2|| = L x_e : Cat(x)\n", "||dance2|| = L x_e : Dance(x)\n", "||john2|| = John_e\n", "||the|| = L f_ : Iota x_e : f(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While in some cases standard FA can actually work and even produce effectively the right result, this isn't really what we want to do. Note for example that given the above types, and regular function application, there would be no way to compose `the` with `cat`.\n", "\n", "A continuized apply is somewhat complicated and easiest to see through working examples. It needs to, effectively, sequence continuations. The following example is a combinator that continuizes just the composition of a property (ordinary type ``) with its argument. `b` is roughly the decontinuized version of the function, and `c` the decontinuized version of the argument; `abar` is the continuation argument for the whole expression. Below this I illustrate this with `dance` and `john`, with some of the internal steps of the derivation revealed." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "${cfaet}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({b}({c}))))$" ], "text/latex": [ "${cfaet}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({b}({c}))))$" ], "text/plain": [ "${cfaet}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({b}({c}))))$" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "cfaet = L f_<<,t>,t> : L arg_<,t> : L abar_ : f(L b_ : arg(L c_e : abar(b(c))))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
1.
${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x})))(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e}))$
2.
${[\\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({Dance}({c})))]}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e}))$
Recursive reduction of operand 0
3.
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {[\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})]}(\\lambda{} c_{e} \\: . \\: {abar}({Dance}({c})))$
Reduction
4.
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Dance}({John}_{e}))$
Recursive reduction of body
" ], "text/plain": [ " 1. ((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e)))))((λ f_: f_(John_e)))\n", " 2. ((λ arg_<,t>: (λ abar_: arg_<,t>((λ c_e: abar_(Dance_(c_e)))))))((λ f_: f_(John_e))) (Recursive reduction of operand 0)\n", " 3. (λ abar_: ((λ f_: f_(John_e)))((λ c_e: abar_(Dance_(c_e))))) (Reduction)\n", " 4. (λ abar_: abar_(Dance_(John_e))) (Recursive reduction of body)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cfaet(dance2.content)(john2.content)).reduce_all().derivation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To build a compositional rule along these lines we can generate a combinator like this at arbitrary values of function type and argument type. The following combinator looks quite complicated, but the heart of it is `b(c)`. `b` is the decontinuized version of the function `f`, and `c` is the decontinuized version of the argument `arg`.\n", "\n", "*Note*: Barker implements application as a set of rule-to-rule (i.e. category specific) operations. I'm not personally a fan of this style (and in any case the lambda notebook doesn't currently have the infrastructure) so I will implement things via general composition rules. This is important to keep in mind, since the implementation here overgenerates quite a bit in consequence. This is very similar to the Kubota and Uegaki system mentioned in the intro." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "${contapply}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{},\\left\\langle{}\\left\\langle{}X'',X'''\\right\\rangle{},X_{5}\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {abar}({b}({c}))))$" ], "text/latex": [ "${contapply}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{},\\left\\langle{}\\left\\langle{}X'',X'''\\right\\rangle{},X_{5}\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {abar}({b}({c}))))$" ], "text/plain": [ "${contapply}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{},\\left\\langle{}\\left\\langle{}X'',X'''\\right\\rangle{},X_{5}\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {abar}({b}({c}))))$" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "contapply = L f_Z : L arg_Z1 : L abar_Z2 : f(L b_ : arg(L c_X : abar(b_(c_X))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are a few examples of generated combinators in action." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e}))$" ], "text/plain": [ "((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Cat_(x_e)))))((λ f_: f_(John_e)))" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contapply(cat2.content)(john2.content)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Cat}({John}_{e}))$" ], "text/plain": [ "(λ abar_: abar_(Cat_(John_e)))" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contapply(cat2.content)(john2.content).reduce_all()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Cat}({John}_{e}))$" ], "text/plain": [ "(λ abar_: abar_(Cat_(John_e)))" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contapply(continuize(cat1.content))(continuize(john1.content)).reduce_all()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\iota{} x_{e} \\: . \\: {f}({x})))(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))$" ], "text/plain": [ "((λ f_<<<,e>,t>,t>: (λ arg_<<,t>,t>: (λ abar_: f_<<<,e>,t>,t>((λ b_<,e>: arg_<<,t>,t>((λ c_: abar_(b_<,e>(c_))))))))))((λ f_<<,e>,t>: f_<<,e>,t>((λ f_: (ι x_e: f_(x_e))))))((λ f_<,t>: f_<,t>((λ x_e: Cat_(x_e)))))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contapply(the.content)(cat2.content)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "$\\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}(\\iota{} x_{e} \\: . \\: {Cat}({x}))$" ], "text/plain": [ "(λ abar_: abar_((ι x_e: Cat_(x_e))))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contapply(the.content)(cat2.content).reduce_all()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add this operation as a composition operation named `CA`. Below this are a few examples of the rule in action." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "Composition system 'H&K simple (copy)'
Operations: {
    Binary composition rule CA, built on combinator '$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {abar}({b}({c}))))$'
}" ], "text/plain": [ "Composition system: H&K simple (copy)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "system = lang.td_system.copy()\n", "system.remove_rule(\"FA\")\n", "system.remove_rule(\"PA\")\n", "system.remove_rule(\"PM\")\n", "#system.add_rule(ca_op)\n", "system.add_binary_rule(contapply, \"CA\")\n", "lang.set_system(system)\n", "system" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path:
$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
*
$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
[CA]
$[\\![\\mathbf{\\text{[dance2 john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Dance}({John}_{e}))$


" ], "text/latex": [ "1 composition path:
$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
*
$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
[CA]
$[\\![\\mathbf{\\text{[dance2 john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Dance}({John}_{e}))$


" ], "text/plain": [ "1 composition path:
$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
*
$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
[CA]
$[\\![\\mathbf{\\text{[dance2 john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Dance}({John}_{e}))$


" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(john2 * dance2).tree()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO (meta): Coerced guessed type for 'Saw_t' into <(e,e),t>, to match argument '(x_e, y_e)'\n" ] }, { "data": { "text/html": [ "$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
\n", "$[\\![\\mathbf{\\text{mary}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({Mary}_{e})$" ], "text/latex": [ "$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
\n", "$[\\![\\mathbf{\\text{mary}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({Mary}_{e})$" ], "text/plain": [ "$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
\n", "$[\\![\\mathbf{\\text{mary}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({Mary}_{e})$" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||saw|| = L y_e : L x_e : Saw(x,y)\n", "||mary|| = Mary_e" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw mary] john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Saw}({John}_{e}, {Mary}_{e}))$" ], "text/plain": [ "CompositionResult(results=[⟦[[saw mary] john2]⟧ = (λ abar_: abar_(Saw_<(e,e),t>(John_e, Mary_e)))], failures=[⟦[john2 [saw mary]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ f_: f_(John_e))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "john2 * (saw * mary)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path:
$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
*
$[\\![\\mathbf{\\text{mary}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({Mary}_{e})$
[CA]
$[\\![\\mathbf{\\text{[saw mary]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {abar}(\\lambda{} x_{e} \\: . \\: {Saw}({x}, {Mary}_{e}))$
*
$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
[CA]
$[\\![\\mathbf{\\text{[[saw mary] john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Saw}({John}_{e}, {Mary}_{e}))$


" ], "text/latex": [ "1 composition path:
$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
*
$[\\![\\mathbf{\\text{mary}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({Mary}_{e})$
[CA]
$[\\![\\mathbf{\\text{[saw mary]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {abar}(\\lambda{} x_{e} \\: . \\: {Saw}({x}, {Mary}_{e}))$
*
$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
[CA]
$[\\![\\mathbf{\\text{[[saw mary] john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Saw}({John}_{e}, {Mary}_{e}))$


" ], "text/plain": [ "1 composition path:
$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
*
$[\\![\\mathbf{\\text{mary}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({Mary}_{e})$
[CA]
$[\\![\\mathbf{\\text{[saw mary]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {abar}(\\lambda{} x_{e} \\: . \\: {Saw}({x}, {Mary}_{e}))$
*
$[\\![\\mathbf{\\text{john2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({John}_{e})$
[CA]
$[\\![\\mathbf{\\text{[[saw mary] john2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({Saw}({John}_{e}, {Mary}_{e}))$


" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(john2 * (saw * mary)).tree()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Quantification\n", "\n", "At this point it is time to turn to quantifiers. Items like `everyone` have continuized types, but are not generated by continuizing an ordinary meaning. Rather, they are written as continuized types that manipulate their continuations. In fact, their standard GQ entry is their continuized entry. For comparison, a continuized version of ordinary \"everyone\" is given as `everyone0`. (All of these ignore animacy.) While these two entries for `everyone` get the same result in subject position (shown below), they do it in different ways." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "$[\\![\\mathbf{\\text{someone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {xbar}({x})$
\n", "$[\\![\\mathbf{\\text{everyone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {xbar}({x})$
\n", "$[\\![\\mathbf{\\text{everyone0}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {f}({x}))$" ], "text/latex": [ "$[\\![\\mathbf{\\text{someone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {xbar}({x})$
\n", "$[\\![\\mathbf{\\text{everyone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {xbar}({x})$
\n", "$[\\![\\mathbf{\\text{everyone0}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {f}({x}))$" ], "text/plain": [ "$[\\![\\mathbf{\\text{someone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {xbar}({x})$
\n", "$[\\![\\mathbf{\\text{everyone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {xbar}({x})$
\n", "$[\\![\\mathbf{\\text{everyone0}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {f}({x}))$" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||someone|| = L xbar_ : Exists x_e : xbar(x)\n", "||everyone|| = L xbar_ : Forall x_e : xbar(x)\n", "||everyone0|| = L f_ : Forall x_e : f(x)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw mary] everyone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {abar}({Saw}({x}, {Mary}_{e}))$" ], "text/plain": [ "CompositionResult(results=[⟦[[saw mary] everyone]⟧ = (λ abar_: (Forall x_e: abar_(Saw_<(e,e),t>(x_e, Mary_e))))], failures=[⟦[everyone [saw mary]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Forall x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "everyone * (saw * mary)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[everyone0 [saw mary]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}(\\forall{} x_{e} \\: . \\: {Saw}({x}, {Mary}_{e}))$" ], "text/plain": [ "CompositionResult(results=[⟦[everyone0 [saw mary]]⟧ = (λ abar_: abar_((Forall x_e: Saw_<(e,e),t>(x_e, Mary_e))))], failures=[⟦[[saw mary] everyone0]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ abar_<,t>: abar_<,t>((λ x_e: Saw_<(e,e),t>(x_e, Mary_e)))))'/<<,t>,<,t>> and '(λ f_<<,t>,t>: f_<<,t>,t>((λ f_: (Forall x_e: f_(x_e)))))'/<<<,t>,t>,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "everyone0 * (saw * mary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`everyone0` will not work in object position (as in standard approaches cf. Heim and Kratzer), but the Barker's versions will, effectively for \"free\" (once the infrastructure is accepted). The first example shows what happens with the continuized ordinary generalized quantifer; the resulting errors are generated inside the two possible continuized apply combinators. The other examples demonstrate Barker's quantifiers in object position." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "Composition failed. Attempts:
\n", "    Type mismatch: '${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}e,I_{855}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}I_{853},I_{855}\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{e} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y})))$'/$\\left\\langle{}\\left\\langle{}\\left\\langle{}e,I_{855}\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}I_{853},I_{855}\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}$ and '$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {f}({x}))$'/$\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}$ conflict (mode: Function argument combination (unification failed))
\n", "    Type mismatch: '${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},I_{880}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}I_{878},I_{880}\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {f}({x})))$'/$\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},I_{880}\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}I_{878},I_{880}\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}$ and '$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$'/$\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}$ conflict (mode: Function argument combination (unification failed))
\n" ], "text/plain": [ "CompositionResult(results=[], failures=[⟦[saw everyone0]⟧ = Type mismatch: '((λ f_<<>,t>,t>: (λ arg_<,t>: (λ abar_: f_<<>,t>,t>((λ b_>: arg_<,t>((λ c_e: abar_<,I855>(b_>(c_e))))))))))((λ f_<>,t>: f_<>,t>((λ y_e: (λ x_e: Saw_<(e,e),t>(x_e, y_e))))))'/<<,t>,<,t>> and '(λ f_<<,t>,t>: f_<<,t>,t>((λ f_: (Forall x_e: f_(x_e)))))'/<<<,t>,t>,t> conflict (mode: Function argument combination (unification failed)), ⟦[everyone0 saw]⟧ = Type mismatch: '((λ f_<<<,t>,t>,t>: (λ arg_<<,I880>,t>: (λ abar_: f_<<<,t>,t>,t>((λ b_<,t>: arg_<<,I880>,t>((λ c_: abar_(b_<,t>(c_))))))))))((λ f_<<,t>,t>: f_<<,t>,t>((λ f_: (Forall x_e: f_(x_e))))))'/<<<,I880>,t>,<,t>> and '(λ f_<>,t>: f_<>,t>((λ y_e: (λ x_e: Saw_<(e,e),t>(x_e, y_e)))))'/<<>,t>,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(saw * everyone0)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw everyone] mary]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {abar}({Saw}({Mary}_{e}, {x}))$" ], "text/plain": [ "CompositionResult(results=[⟦[[saw everyone] mary]⟧ = (λ abar_: (Forall x_e: abar_(Saw_<(e,e),t>(Mary_e, x_e))))], failures=[⟦[mary [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ f_: f_(Mary_e))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mary * (saw * everyone)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw someone] everyone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: \\forall{} x1_{e} \\: . \\: {abar}({Saw}({x1}, {x}))$" ], "text/plain": [ "CompositionResult(results=[⟦[[saw someone] everyone]⟧ = (λ abar_: (Exists x_e: (Forall x1_e: abar_(Saw_<(e,e),t>(x1_e, x_e)))))], failures=[⟦[everyone [saw someone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Forall x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "everyone * (saw * someone)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Multiple quantifiers work as well, shown above. This generates inverse scope; we will attend to surface scope shortly. I started with inverse scope because Barker does, but I'm not aware of any real significance to this choice.\n", "\n", "To get surface scope, we need a second version of application which prioritizes continuations differently." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "${contapply2}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{},\\left\\langle{}\\left\\langle{}X'',X'''\\right\\rangle{},X_{5}\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))$" ], "text/latex": [ "${contapply2}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{},\\left\\langle{}\\left\\langle{}X'',X'''\\right\\rangle{},X_{5}\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))$" ], "text/plain": [ "${contapply2}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{},\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{},\\left\\langle{}\\left\\langle{}X'',X'''\\right\\rangle{},X_{5}\\right\\rangle{}\\right\\rangle{}\\right\\rangle{}}\\:=\\:\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))$" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "contapply2 = L f_Z : L arg_Z1 : L abar_Z2 : arg(L c_X : f(L b_: abar(b_(c_X))))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "Composition system 'H&K simple (copy)'
Operations: {
    Binary composition rule CA, built on combinator '$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {abar}({b}({c}))))$'
    Binary composition rule CA2, built on combinator '$\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}X,X'\\right\\rangle{},X'''\\right\\rangle{},X_{4}\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}X,X_{4}\\right\\rangle{},X_{5}\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}X'',X'''\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{X} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}X,X'\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))$'
}" ], "text/plain": [ "Composition system: H&K simple (copy)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "system = lang.td_system.copy()\n", "system.remove_rule(\"FA\")\n", "system.remove_rule(\"PA\")\n", "system.remove_rule(\"PM\")\n", "system.add_binary_rule(contapply, \"CA\")\n", "system.add_binary_rule(contapply2, \"CA2\")\n", "lang.set_system(system)\n", "system" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And on to the interesting stuff. In general each of these rules can apply to any continuized type, so now we do overgenerate the same result; the lambda notebook will collapse these because they are equivalent. (Barker overgenerates less, because of his use of rule-to-rule translation.) All the results are right, so this isn't really a problem. When there are multiple quantifiers, we generate both readings." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw mary] everyone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {abar}({Saw}({x}, {Mary}_{e}))$   (4 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[[saw mary] everyone]⟧ = (λ abar_: (Forall x_e: abar_(Saw_<(e,e),t>(x_e, Mary_e))))], failures=[⟦[everyone [saw mary]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Forall x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[everyone [saw mary]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: (Forall x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "everyone * (saw * mary)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2 composition paths. Results:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw someone] everyone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: \\forall{} x1_{e} \\: . \\: {abar}({Saw}({x1}, {x}))$   (2 equivalent paths lead here)\n", "
    [1]: $[\\![\\mathbf{\\text{[[saw someone] everyone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: \\exists{} x1_{e} \\: . \\: {abar}({Saw}({x}, {x1}))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[[saw someone] everyone]⟧ = (λ abar_: (Exists x_e: (Forall x1_e: abar_(Saw_<(e,e),t>(x1_e, x_e))))), ⟦[[saw someone] everyone]⟧ = (λ abar_: (Forall x_e: (Exists x1_e: abar_(Saw_<(e,e),t>(x_e, x1_e)))))], failures=[⟦[everyone [saw someone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Forall x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[everyone [saw someone]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: (Forall x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "everyone * (saw * someone)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2 composition paths. Results:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw everyone] someone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: \\exists{} x1_{e} \\: . \\: {abar}({Saw}({x1}, {x}))$   (2 equivalent paths lead here)\n", "
    [1]: $[\\![\\mathbf{\\text{[[saw everyone] someone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: \\forall{} x1_{e} \\: . \\: {abar}({Saw}({x}, {x1}))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[[saw everyone] someone]⟧ = (λ abar_: (Forall x_e: (Exists x1_e: abar_(Saw_<(e,e),t>(x1_e, x_e))))), ⟦[[saw everyone] someone]⟧ = (λ abar_: (Exists x_e: (Forall x1_e: abar_(Saw_<(e,e),t>(x_e, x1_e)))))], failures=[⟦[someone [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Exists x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[someone [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: (Exists x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(someone * (saw * everyone))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you're wondering about the overgeneration, this can be inspected in a number of ways, but the easiest here is with a tree. The tree will show alternative composition operations that lead to the same result. For the inverse scope reading, either CA or CA2 can apply to compose the verb with the object:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
*
$[\\![\\mathbf{\\text{everyone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {xbar}({x})$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[saw everyone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {abar}(\\lambda{} x1_{e} \\: . \\: {Saw}({x1}, {x}))$
*
$[\\![\\mathbf{\\text{someone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {xbar}({x})$
[CA2]
$[\\![\\mathbf{\\text{[[saw everyone] someone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: \\forall{} x1_{e} \\: . \\: {abar}({Saw}({x}, {x1}))$
" ], "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(someone * (saw * everyone))[1].tree()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What about quantificational determiners? Barker presents two treatments. In the text, regular FA is allowed to combine a determiner with its complement (in a rule-to-rule fashion). In the appendix, a different general treatment not requiring FA, but using choice functions, is presented. For the moment I stick to the text version, and allow FA as a general possibility (so I will overgenerate more than Barker did, a la Kubota and Uegaki). Later we'll need the choice function version." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$" ], "text/latex": [ "$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$" ], "text/plain": [ "$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||every|| = L pbar_<<,t>,t> : L xbar_ : pbar(L f_ : Forall x_e : (f(x) >> xbar(x)))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "system = lang.td_system.copy()\n", "#system.remove_rule(\"FA\")\n", "system.remove_rule(\"PA\")\n", "system.remove_rule(\"PM\")\n", "system.add_binary_rule(contapply, \"CA\")\n", "system.add_binary_rule(contapply2, \"CA2\")\n", "lang.set_system(system)\n", "\n", "def tfilter_fun(i):\n", " return (i.type == lang.tp(\"<,t>\"))\n", "\n", "tfilter = lang.CRFilter(\"S-filter\", tfilter_fun)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The latter part of the above box prunes down on a bit of overgeneration; any derivation that does not result in a sentence type (e.g. `<,t>` in a continuized setting) is eliminated.\n", "\n", "Another form of overgeneration is that we can see that the CA rule can also apply in D-N combination, though the derivation resulting from this choice won't converge so it doesn't especially matter." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2 composition paths:
\n", "Path [0]:
\n", "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[FA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x}))$


Path [1]:
\n", "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[CA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}(\\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x})))$


" ], "text/latex": [ "2 composition paths:
\n", "Path [0]:
\n", "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[FA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x}))$


Path [1]:
\n", "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[CA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}(\\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x})))$


" ], "text/plain": [ "2 composition paths:
\n", "Path [0]:
\n", "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[FA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x}))$


Path [1]:
\n", "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[CA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}(\\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x})))$


" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(every * cat2).tree()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2 composition paths. Results:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw someone] [every cat2]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: \\forall{} x1_{e} \\: . \\: ({Cat}({x1}) \\rightarrow{} {abar}({Saw}({x1}, {x})))$   (2 equivalent paths lead here)\n", "
    [1]: $[\\![\\mathbf{\\text{[[saw someone] [every cat2]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} \\exists{} x1_{e} \\: . \\: {abar}({Saw}({x}, {x1})))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[[saw someone] [every cat2]]⟧ = (λ abar_: (Exists x_e: (Forall x1_e: (Cat_(x1_e) >> abar_(Saw_<(e,e),t>(x1_e, x_e)))))), ⟦[[saw someone] [every cat2]]⟧ = (λ abar_: (Forall x_e: (Cat_(x_e) >> (Exists x1_e: abar_(Saw_<(e,e),t>(x_e, x1_e))))))], failures=[⟦[[every cat2] [saw someone]]⟧ = Type mismatch: '⟦[every cat2]⟧ = (λ xbar_: (Forall x_e: (Cat_(x_e) >> xbar_(x_e))))'/<,t> and '⟦[saw someone]⟧ = (λ abar_<,t>: (Exists x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e)))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[every cat2] [saw someone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Forall x_e: (Cat_(x_e) >> xbar_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[every cat2] [saw someone]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: (Forall x_e: (Cat_(x_e) >> xbar_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[every cat2] [saw someone]]⟧ = Type mismatch: '⟦[every cat2]⟧ = (λ abar_: (λ xbar_: abar_((Forall x_e: (Cat_(x_e) >> xbar_(x_e))))))'/<,<,t>> and '⟦[saw someone]⟧ = (λ abar_<,t>: (Exists x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e)))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[saw someone] [every cat2]]⟧ = Type mismatch: '⟦[saw someone]⟧ = (λ abar_<,t>: (Exists x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e)))))'/<<,t>,t> and '⟦[every cat2]⟧ = (λ abar_: (λ xbar_: abar_((Forall x_e: (Cat_(x_e) >> xbar_(x_e))))))'/<,<,t>> conflict (mode: Function Application), ⟦[[every cat2] [saw someone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (λ xbar_: abar_((Forall x_e: (Cat_(x_e) >> xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[saw someone] [every cat2]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ abar_<,t>: (Exists x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e))))))'/<<,t>,<,t>> and '(λ abar_: (λ xbar_: abar_((Forall x_e: (Cat_(x_e) >> xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[every cat2] [saw someone]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (λ xbar_: abar_((Forall x_e: (Cat_(x_e) >> xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[saw someone] [every cat2]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,I2631>: (λ abar_: arg_<,I2631>((λ c_e: f_<<,t>,t>((λ b_: abar_(b_(c_e))))))))))((λ abar_<,t>: (Exists x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e))))))'/<<,I2631>,<,I2631>> and '(λ abar_: (λ xbar_: abar_((Forall x_e: (Cat_(x_e) >> xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[saw someone] [every cat2]]⟧ = (Exists x_e: (Forall x1_e: (Cat_(x1_e) >> Saw_<(e,e),t>(x1_e, x_e))))])" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = (every * cat2) * (saw * someone)\n", "tfilter(r)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
$[\\![\\mathbf{\\text{saw}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} y_{e} \\: . \\: \\lambda{} x_{e} \\: . \\: {Saw}({x}, {y}))$
*
$[\\![\\mathbf{\\text{someone}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {xbar}({x})$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[saw someone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {abar}(\\lambda{} x1_{e} \\: . \\: {Saw}({x1}, {x}))$
*
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({f}({x}) \\rightarrow{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[FA]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} {xbar}({x}))$
[CA2]
$[\\![\\mathbf{\\text{[[saw someone] [every cat2]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: ({Cat}({x}) \\rightarrow{} \\exists{} x1_{e} \\: . \\: {abar}({Saw}({x}, {x1})))$
" ], "text/plain": [ "" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r[1].tree()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scope bounding\n", "\n", "In order to make tensed S nodes a scope island, Barker provides a different composition rule for S$\\rightarrow$NP VP nodes that blocks continuation passing. In a setting with generalized composition rules, this needs to be done a bit differently. One can define an operator that performs the same function as this rule, and this operator might be lexically instantiated by e.g. `that`. I've named this operator `Disrupt`:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "$[\\![\\mathbf{\\text{Disrupt}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} s_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({s}(\\lambda{} p_{t} \\: . \\: {p}))$" ], "text/latex": [ "$[\\![\\mathbf{\\text{Disrupt}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} s_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({s}(\\lambda{} p_{t} \\: . \\: {p}))$" ], "text/plain": [ "$[\\![\\mathbf{\\text{Disrupt}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} s_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}({s}(\\lambda{} p_{t} \\: . \\: {p}))$" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||Disrupt|| = L s_<,t> : L abar_ : abar(s(L p_t : p))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is actually somewhat hard to find examples that really use this in an extensional setting with no binding/traces; Barker provides conjunction. I'm not (currently) treating conjunction in this fragment so we must search for something a little different. One relevant case is the simplest analysis of embedding predicates like `it is false that` as negation. Empirically, quantifiers cannot scope over this, though they can scope over ordinary negation.\n", "\n", "1. It is not true that some student left. ($\\neg >> \\exists$)\n", "2. Some student didn't leave. ($\\exists >> \\neg$, or marginally $\\neg >> \\exists$)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "$[\\![\\mathbf{\\text{iift}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} p_{t} \\: . \\: \\neg{} {p})$" ], "text/latex": [ "$[\\![\\mathbf{\\text{iift}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} p_{t} \\: . \\: \\neg{} {p})$" ], "text/plain": [ "$[\\![\\mathbf{\\text{iift}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} p_{t} \\: . \\: \\neg{} {p})$" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||iift|| = L p_t : ~p " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can first see that Disrupt has a non-substantive but visible effect on simple quantificational sentences. In one case, the quantifier scopes under the continuation, in the other case, over." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[Disrupt [dance2 someone]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}(\\exists{} x_{e} \\: . \\: {Dance}({x}))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[Disrupt [dance2 someone]]⟧ = (λ abar_: abar_((Exists x_e: Dance_(x_e))))], failures=[⟦[Disrupt [dance2 someone]]⟧ = Type mismatch: '⟦Disrupt⟧ = (λ s_<,t>: (λ abar_: abar_(s_<,t>((λ p_t: p_t)))))'/<<,t>,<,t>> and '⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))'/t conflict (mode: Function Application), ⟦[[dance2 someone] Disrupt]⟧ = Type mismatch: '⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))'/t and '⟦Disrupt⟧ = (λ s_<,t>: (λ abar_: abar_(s_<,t>((λ p_t: p_t)))))'/<<,t>,<,t>> conflict (mode: Function Application), ⟦[Disrupt [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,<,t>>: (λ arg_<,t>: (λ abar_: f_<<,t>,<,t>>((λ b_: arg_<,t>((λ c_t: abar_(b_(c_t))))))))))((λ s_<,t>: (λ abar_: abar_(s_<,t>((λ p_t: p_t))))))'/<<,t>,<,<,t>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] Disrupt]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[Disrupt [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,<,t>>: (λ arg_<,t>>,I2830>: (λ abar_: arg_<,t>>,I2830>((λ c_t: f_<<,t>,<,t>>((λ b_: abar_(b_(c_t))))))))))((λ s_<,t>: (λ abar_: abar_(s_<,t>((λ p_t: p_t))))))'/<<,t>>,I2830>,<,I2830>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] Disrupt]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] Disrupt]⟧ = Type mismatch: '⟦[dance2 someone]⟧ = (λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> and '⟦Disrupt⟧ = (λ s_<,t>: (λ abar_: abar_(s_<,t>((λ p_t: p_t)))))'/<<,t>,<,t>> conflict (mode: Function Application), ⟦[[dance2 someone] Disrupt]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[Disrupt [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,<,t>>: (λ arg_<,t>>,I2948>: (λ abar_: arg_<,t>>,I2948>((λ c_t: f_<<,t>,<,t>>((λ b_: abar_(b_(c_t))))))))))((λ s_<,t>: (λ abar_: abar_(s_<,t>((λ p_t: p_t))))))'/<<,t>>,I2948>,<,I2948>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] Disrupt]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[Disrupt [dance2 someone]]⟧ = (λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(Dance_(x_e))))))])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfilter(Disrupt * (someone * dance2))" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[dance2 someone]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {abar}({Dance}({x}))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[dance2 someone]⟧ = (λ abar_: (Exists x_e: abar_(Dance_(x_e))))], failures=[⟦[someone dance2]⟧ = Type mismatch: '⟦someone⟧ = (λ xbar_: (Exists x_e: xbar_(x_e)))'/<,t> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[someone dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Exists x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[someone dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: (Exists x_e: xbar_(x_e)))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))])" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfilter(someone * dance2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This now does something interesting when `iift` (_it is false that_) composes with or without Disrupt:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[iift [dance2 someone]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: {abar}(\\neg{} {Dance}({x}))$   (4 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[iift [dance2 someone]]⟧ = (λ abar_: (Exists x_e: abar_(~Dance_(x_e))))], failures=[⟦[iift [dance2 someone]]⟧ = Type mismatch: '⟦iift⟧ = (λ f_<,t>: f_<,t>((λ p_t: ~p_t)))'/<<,t>,t> and '⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))'/t conflict (mode: Function Application), ⟦[[dance2 someone] iift]⟧ = Type mismatch: '⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))'/t and '⟦iift⟧ = (λ f_<,t>: f_<,t>((λ p_t: ~p_t)))'/<<,t>,t> conflict (mode: Function Application), ⟦[iift [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_t: abar_(b_(c_t))))))))))((λ f_<,t>: f_<,t>((λ p_t: ~p_t))))'/<<,t>,<,t>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] iift]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[iift [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,I3269>: (λ abar_: arg_<,I3269>((λ c_t: f_<<,t>,t>((λ b_: abar_(b_(c_t))))))))))((λ f_<,t>: f_<,t>((λ p_t: ~p_t))))'/<<,I3269>,<,I3269>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] iift]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] iift]⟧ = Type mismatch: '⟦[dance2 someone]⟧ = (λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> and '⟦iift⟧ = (λ f_<,t>: f_<,t>((λ p_t: ~p_t)))'/<<,t>,t> conflict (mode: Function Application), ⟦[[dance2 someone] iift]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] iift]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[iift [dance2 someone]]⟧ = (Exists x_e: ~Dance_(x_e))])" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfilter(iift * (someone * dance2))" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[iift [Disrupt [dance2 someone]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: {abar}(\\neg{} \\exists{} x_{e} \\: . \\: {Dance}({x}))$   (4 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[iift [Disrupt [dance2 someone]]]⟧ = (λ abar_: abar_(~(Exists x_e: Dance_(x_e))))], failures=[⟦[[Disrupt [dance2 someone]] iift]⟧ = Type mismatch: '⟦[Disrupt [dance2 someone]]⟧ = (λ abar_: abar_((Exists x_e: Dance_(x_e))))'/<,t> and '⟦iift⟧ = (λ f_<,t>: f_<,t>((λ p_t: ~p_t)))'/<<,t>,t> conflict (mode: Function Application), ⟦[[Disrupt [dance2 someone]] iift]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: abar_((Exists x_e: Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[Disrupt [dance2 someone]] iift]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: abar_((Exists x_e: Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[iift [Disrupt [dance2 someone]]]⟧ = Type mismatch: '⟦iift⟧ = (λ f_<,t>: f_<,t>((λ p_t: ~p_t)))'/<<,t>,t> and '⟦[Disrupt [dance2 someone]]⟧ = (λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(Dance_(x_e))))))'/<,<,t>> conflict (mode: Function Application), ⟦[[Disrupt [dance2 someone]] iift]⟧ = Type mismatch: '⟦[Disrupt [dance2 someone]]⟧ = (λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(Dance_(x_e))))))'/<,<,t>> and '⟦iift⟧ = (λ f_<,t>: f_<,t>((λ p_t: ~p_t)))'/<<,t>,t> conflict (mode: Function Application), ⟦[iift [Disrupt [dance2 someone]]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_t: abar_(b_(c_t))))))))))((λ f_<,t>: f_<,t>((λ p_t: ~p_t))))'/<<,t>,<,t>> and '(λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(Dance_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[Disrupt [dance2 someone]] iift]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(Dance_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[Disrupt [dance2 someone]] iift]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(Dance_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[iift [Disrupt [dance2 someone]]]⟧ = ~(Exists x_e: Dance_(x_e)), ⟦[iift [Disrupt [dance2 someone]]]⟧ = (λ abar_: (λ abar1_: abar1_((Exists x_e: abar_(~Dance_(x_e))))))])" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r2 = tfilter(iift * (Disrupt * (someone * dance2)))\n", "r2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Negation in these derivations is scopally inert, and quantifiers scope over it. In fact this reveals an interesting property of this system: whatever items are scopally potent must scope over whatever material is scopally inert, up to operators like Disrupt or other scopal elements.\n", "\n", "If you think about scope as a form of '_projective meaning_', then this means that in a framework like the present with only _at-issue_ meaning as the other choice, scopal elements project maximally. This fact was exploited by Kubota and Uegaki in using continuations for Potts-style Conventional Implicature (CI) content, which should project maximally. It is worth noting, however, that as far as I can see scope is _not_ CI content as such, and we would certainly not want scopal ambiguities to interact with projective meanings in the way that combining the two uses of continuations would involve. (At the least, tensed finite clauses are not generally a scope island for CI content.) In summary, it is currently unclear (to me) that continuations can be used as a _general_ mechanism for projective meaning displacement in a compositional semantics, because there are different empirical properties for different types of projective meaning; I don't yet see how it could account for both quantifier scope and CI projection at the same time.\n", "\n", "Moving on, one can generate a non-scopally-inert negation by using a similar trick to what was performed on the quantifiers, i.e. applying the content of the item after the continuation. This is shown below:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "$[\\![\\mathbf{\\text{sneg}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} {f}(\\lambda{} p_{t} \\: . \\: {p})$" ], "text/latex": [ "$[\\![\\mathbf{\\text{sneg}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} {f}(\\lambda{} p_{t} \\: . \\: {p})$" ], "text/plain": [ "$[\\![\\mathbf{\\text{sneg}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} {f}(\\lambda{} p_{t} \\: . \\: {p})$" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||sneg|| = L f_<,t> : ~ f(L p_t : p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now negation of this form must take widest form w.r.t. scopally inert elements, but will scope ambiguously w.r.t. scopal elements." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2 composition paths. Results:\n", "
    [0]: $[\\![\\mathbf{\\text{[sneg [dance2 someone]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} x_{e} \\: . \\: {abar}({Dance}({x}))$   (2 equivalent paths lead here)\n", "
    [1]: $[\\![\\mathbf{\\text{[sneg [dance2 someone]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: \\neg{} {abar}({Dance}({x}))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[sneg [dance2 someone]]⟧ = (λ abar_: ~(Exists x_e: abar_(Dance_(x_e)))), ⟦[sneg [dance2 someone]]⟧ = (λ abar_: (Exists x_e: ~abar_(Dance_(x_e))))], failures=[⟦[sneg [dance2 someone]]⟧ = Type mismatch: '⟦sneg⟧ = (λ f_<,t>: ~f_<,t>((λ p_t: p_t)))'/<<,t>,t> and '⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))'/t conflict (mode: Function Application), ⟦[[dance2 someone] sneg]⟧ = Type mismatch: '⟦[dance2 someone]⟧ = (Exists x_e: Dance_(x_e))'/t and '⟦sneg⟧ = (λ f_<,t>: ~f_<,t>((λ p_t: p_t)))'/<<,t>,t> conflict (mode: Function Application), ⟦[sneg [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_t: abar_(b_(c_t))))))))))((λ f_<,t>: ~f_<,t>((λ p_t: p_t))))'/<<,t>,<,t>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] sneg]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[sneg [dance2 someone]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,I4121>: (λ abar_: arg_<,I4121>((λ c_t: f_<<,t>,t>((λ b_: abar_(b_(c_t))))))))))((λ f_<,t>: ~f_<,t>((λ p_t: p_t))))'/<<,I4121>,<,I4121>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] sneg]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(Exists x_e: Dance_(x_e))'/t conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] sneg]⟧ = Type mismatch: '⟦[dance2 someone]⟧ = (λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> and '⟦sneg⟧ = (λ f_<,t>: ~f_<,t>((λ p_t: p_t)))'/<<,t>,t> conflict (mode: Function Application), ⟦[[dance2 someone] sneg]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[dance2 someone] sneg]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (Exists x_e: abar_(Dance_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[sneg [dance2 someone]]⟧ = ~(Exists x_e: Dance_(x_e))])" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfilter(sneg * (someone * dance2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recursive DPs and inverse linking\n", "\n", "The LF analysis of scope has in general had a hard time with the scope of DPs within DPs. First, in many cases the judgments aren't very clear. But to the extent that they are clear, one must block some of the readings. Barker's proposal is that the possible readings just fall out of the architecture of continuation-based scope. Let's see how this works." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO (meta): Coerced guessed type for 'From_t' into <(e,e),t>, to match argument '(y_e, x_e)'\n", "INFO (meta): Coerced guessed type for 'ForeignCountry_t' into , to match argument 'x_e'\n" ] }, { "data": { "text/html": [ "$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
\n", "$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
\n", "$[\\![\\mathbf{\\text{fromP}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f}({y}) \\wedge{} {From}({y}, {x})))$
\n", "$[\\![\\mathbf{\\text{france}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({France}_{e})$
\n", "$[\\![\\mathbf{\\text{fcountry}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))$" ], "text/latex": [ "$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
\n", "$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
\n", "$[\\![\\mathbf{\\text{fromP}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f}({y}) \\wedge{} {From}({y}, {x})))$
\n", "$[\\![\\mathbf{\\text{france}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({France}_{e})$
\n", "$[\\![\\mathbf{\\text{fcountry}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))$" ], "text/plain": [ "$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
\n", "$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}} \\:=\\: $$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
\n", "$[\\![\\mathbf{\\text{fromP}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f}({y}) \\wedge{} {From}({y}, {x})))$
\n", "$[\\![\\mathbf{\\text{france}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}({France}_{e})$
\n", "$[\\![\\mathbf{\\text{fcountry}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))$" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||no|| = L pbar_<<,t>,t> : L xbar_ : pbar(L f_ : (~ (Exists x_e : (f(x) & xbar(x)))))\n", "||a|| = L pbar_<<,t>,t> : L xbar_ : pbar(L f_ : (Exists x_e : (f(x) & xbar(x))))\n", "||fromP|| = L x_e : L f_ : L y_e : f(y) & From(y,x)\n", "||france|| = France_e\n", "||fcountry|| = L x_e : ForeignCountry(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just as a sanity check, something like \"no cat from france danced\" should compose as is, and generate one scoping. This works!" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[dance2 [no [[fromP france] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} x_{e} \\: . \\: (({Cat}({x}) \\wedge{} {From}({x}, {France}_{e})) \\wedge{} {abar}({Dance}({x})))$   (8 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[dance2 [no [[fromP france] cat2]]]⟧ = (λ abar_: ~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & abar_(Dance_(x_e)))))], failures=[⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP france] cat2]]⟧ = (λ xbar_: ~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))'/<,t> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: ~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: ~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP france] cat2]]⟧ = (λ abar_: (λ xbar_: abar_(~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))))'/<,<,t>> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[dance2 [no [[fromP france] cat2]]]⟧ = Type mismatch: '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> and '⟦[no [[fromP france] cat2]]⟧ = (λ abar_: (λ xbar_: abar_(~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))))'/<,<,t>> conflict (mode: Function Application), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (λ xbar_: abar_(~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP france] cat2]]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e)))))'/<<,t>,<,t>> and '(λ abar_: (λ xbar_: abar_(~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (λ xbar_: abar_(~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP france] cat2]]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,I4911>: (λ abar_: arg_<,I4911>((λ c_e: f_<<,t>,t>((λ b_: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e)))))'/<<,I4911>,<,I4911>> and '(λ abar_: (λ xbar_: abar_(~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & xbar_(x_e))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP france] cat2]]]⟧ = ~(Exists x_e: ((Cat_(x_e) & From_<(e,e),t>(x_e, France_e)) & Dance_(x_e)))])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfilter((no * (cat2 * (fromP * france))) * dance2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the real test: what happens with\n", "\n", "1. No cat from a foreign country danced.\n", "2. No cat from a foreign country saw someone.\n", "\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[dance2 [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({ForeignCountry}({x}) \\wedge{} \\neg{} \\exists{} x1_{e} \\: . \\: (({Cat}({x1}) \\wedge{} {From}({x1}, {x})) \\wedge{} {abar}({Dance}({x1}))))$   (8 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: (Exists x_e: (ForeignCountry_(x_e) & ~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & abar_(Dance_(x1_e)))))))], failures=[⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & ~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))'/<,t> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & ~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & ~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ abar_: (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & abar_(~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))))'/<,<,t>> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = Type mismatch: '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> and '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ abar_: (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & abar_(~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))))'/<,<,t>> conflict (mode: Function Application), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & abar_(~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e)))))'/<<,t>,<,t>> and '(λ abar_: (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & abar_(~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & abar_(~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,I5753>: (λ abar_: arg_<,I5753>((λ c_e: f_<<,t>,t>((λ b_: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e)))))'/<<,I5753>,<,I5753>> and '(λ abar_: (λ xbar_: (Exists x_e: (ForeignCountry_(x_e) & abar_(~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & xbar_(x1_e))))))))'/<,<,t>> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = (Exists x_e: (ForeignCountry_(x_e) & ~(Exists x1_e: ((Cat_(x1_e) & From_<(e,e),t>(x1_e, x_e)) & Dance_(x1_e)))))])" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = tfilter((no * (cat2 * (fromP * (a * fcountry)))) * dance2)\n", "r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Failure! Only one scoping is generated. What's going on?\n", "\n", "It turns out that the hack/presentational strategy used in the body of Barker's paper to combine NPs with Ds via regular function application doesn't allow for inverse scoping. This is unsurprising when you think about it as this operation's effect on scope is a bit like what happens with `Disrupt`: continuations are effectively trapped.\n", "\n", "We'll have to move to the version in Barker's appendix. Before doing that, you may want to inspect what composition paths are being found, by looking at `r`." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
*
$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{fromP}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f}({y}) \\wedge{} {From}({y}, {x})))$
*
$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{},\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}\\right\\rangle{}}$
$\\lambda{} pbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {pbar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({f}({x}) \\wedge{} {xbar}({x})))$
*
$[\\![\\mathbf{\\text{fcountry}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))$
[FA]
$[\\![\\mathbf{\\text{[a fcountry]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({ForeignCountry}({x}) \\wedge{} {xbar}({x}))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[fromP [a fcountry]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({ForeignCountry}({x}) \\wedge{} {abar}(\\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f}({y}) \\wedge{} {From}({y}, {x}))))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[[fromP [a fcountry]] cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({ForeignCountry}({x}) \\wedge{} {abar}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {x}))))$
[FA]
$[\\![\\mathbf{\\text{[no [[fromP [a fcountry]] cat2]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} xbar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({ForeignCountry}({x}) \\wedge{} \\neg{} \\exists{} x1_{e} \\: . \\: (({Cat}({x1}) \\wedge{} {From}({x1}, {x})) \\wedge{} {xbar}({x1})))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[dance2 [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} x_{e} \\: . \\: ({ForeignCountry}({x}) \\wedge{} \\neg{} \\exists{} x1_{e} \\: . \\: (({Cat}({x1}) \\wedge{} {From}({x1}, {x})) \\wedge{} {abar}({Dance}({x1}))))$
" ], "text/plain": [ "" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r[0].tree()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the appendix, Barker treats quantificational determiners as quantifiers over choice functions of type `<,e>`, that is, functions that map properties into individuals. It turns out, somewhat magically at first glance, that in consequence quantificational determiners are the right type to compose with property-denoting sisters via `CA` or `CA2` and generate a GQ type. This requires staring at the derivation for a while but the basic idea is that the continuation of a GQ should be type ``, and so its input needs to be type `e`, and a choice function for property types bridges this need with the continuized-property-denoting sister.\n", "\n", "Strictly speaking, one should do this for `everyone` and `someone` as well, but it is pedagogically simpler not to, so I'll leave them as is." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
\n", "$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
\n", "$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$" ], "text/latex": [ "$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
\n", "$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
\n", "$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$" ], "text/plain": [ "$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
\n", "$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
\n", "$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%lamb\n", "||a|| = L dbar_<<,e>,t> : Exists f_<,e> : dbar(f)\n", "||no|| = L dbar_<<,e>,t> : ~(Exists f_<,e> : dbar(f))\n", "||every|| = L dbar_<<,e>,t> : (Forall f_<,e> : dbar(f))" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))$   (2 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[every cat2]⟧ = (λ abar_: (Forall f_<,e>: abar_(f_<,e>((λ x_e: Cat_(x_e))))))], failures=[⟦[every cat2]⟧ = Type mismatch: '⟦every⟧ = (λ dbar_<<,e>,t>: (Forall f_<,e>: dbar_<<,e>,t>(f_<,e>)))'/<<<,e>,t>,t> and '⟦cat2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Cat_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[cat2 every]⟧ = Type mismatch: '⟦cat2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Cat_(x_e))))'/<<,t>,t> and '⟦every⟧ = (λ dbar_<<,e>,t>: (Forall f_<,e>: dbar_<<,e>,t>(f_<,e>)))'/<<<,e>,t>,t> conflict (mode: Function Application), ⟦[cat2 every]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,t>: (λ abar_: f_<<,t>,t>((λ b_: arg_<,t>((λ c_e: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Cat_(x_e)))))'/<<,t>,<,t>> and '(λ dbar_<<,e>,t>: (Forall f_<,e>: dbar_<<,e>,t>(f_<,e>)))'/<<<,e>,t>,t> conflict (mode: Function argument combination (unification failed)), ⟦[cat2 every]⟧ = Type mismatch: '((λ f_<<,t>,t>: (λ arg_<,I5915>: (λ abar_: arg_<,I5915>((λ c_e: f_<<,t>,t>((λ b_: abar_(b_(c_e))))))))))((λ f_<,t>: f_<,t>((λ x_e: Cat_(x_e)))))'/<<,I5915>,<,I5915>> and '(λ dbar_<<,e>,t>: (Forall f_<,e>: dbar_<<,e>,t>(f_<,e>)))'/<<<,e>,t>,t> conflict (mode: Function argument combination (unification failed))])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "every * cat2" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
$[\\![\\mathbf{\\text{every}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$=$ ${[\\lambda{} x_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}({x})]}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
$=$ $\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[every cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$=$ ${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f}))(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))$
$=$ ${[\\lambda{} f_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} arg_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} b_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}({b}({c}))))]}(\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f}))(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))$
$=$ ${[\\lambda{} arg_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {arg}(\\lambda{} c_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}({f}({c})))]}(\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))$
$=$ $\\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {[\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))]}(\\lambda{} c_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: {abar}({f}({c})))$
$=$ $\\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\forall{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({f}(\\lambda{} x_{e} \\: . \\: {Cat}({x})))$
" ], "text/plain": [ "" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(every * cat2)[0].tree(derivations=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is worth pausing for a moment to contemplate the way this works in the above derivation.\n", "\n", "With this framework we can return to our set of inverse linking examples. Note that some of these can be extremely slow to render and we are getting an exponential explosion because CA and CA2 can both apply at any stage; this can be filtered if necessary using the `eliminate_dups` function on `CompositionResult`s, but it is instructive to see all composition paths so it is not done by default." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1 composition path. Result:\n", "
    [0]: $[\\![\\mathbf{\\text{[dance2 [no [[fromP france] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({Dance}({f}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {France}_{e})))))$   (16 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[dance2 [no [[fromP france] cat2]]]⟧ = (λ abar_: ~(Exists f_<,e>: abar_(Dance_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, France_e))))))))], failures=[⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP france] cat2]]⟧ = (λ abar_: ~(Exists f_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, France_e)))))))'/<,t> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: ~(Exists f_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, France_e)))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP france] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: ~(Exists f_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, France_e)))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP france] cat2]]]⟧ = ~(Exists f_<,e>: Dance_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, France_e))))))])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfilter((no * (cat2 * (fromP * france))) * dance2)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2 composition paths. Results:\n", "
    [0]: $[\\![\\mathbf{\\text{[dance2 [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({Dance}({f}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f1}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x})))))))$   (16 equivalent paths lead here)\n", "
    [1]: $[\\![\\mathbf{\\text{[dance2 [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({Dance}({f1}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x})))))))$   (16 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(Dance_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(Dance_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e))))))))))))], failures=[⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> and '⟦dance2⟧ = (λ f_<,t>: f_<,t>((λ x_e: Dance_(x_e))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] dance2]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = ~(Exists f_<,e>: (Exists f1_<,e>: Dance_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))), ⟦[dance2 [no [[fromP [a fcountry]] cat2]]]⟧ = (Exists f_<,e>: ~(Exists f1_<,e>: Dance_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e))))))))))])" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = tfilter((no * (cat2 * (fromP * (a * fcountry)))) * dance2)\n", "r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Three quantifiers:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
$[\\![\\mathbf{\\text{dance2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Dance}({x}))$
*
$[\\![\\mathbf{\\text{no}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
*
$[\\![\\mathbf{\\text{fromP}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: \\lambda{} f_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f}({y}) \\wedge{} {From}({y}, {x})))$
*
$[\\![\\mathbf{\\text{a}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} dbar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {dbar}({f})$
*
$[\\![\\mathbf{\\text{fcountry}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[a fcountry]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x})))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[fromP [a fcountry]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},\\left\\langle{}e,t\\right\\rangle{}\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}(\\lambda{} f1_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\lambda{} y_{e} \\: . \\: ({f1}({y}) \\wedge{} {From}({y}, {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x})))))$
*
$[\\![\\mathbf{\\text{cat2}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: {f}(\\lambda{} x_{e} \\: . \\: {Cat}({x}))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[[fromP [a fcountry]] cat2]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x})))))$
[CA]
$[\\![\\mathbf{\\text{[no [[fromP [a fcountry]] cat2]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}e,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({f}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f1}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))))))$
[
CA (or: CA2)
]
$[\\![\\mathbf{\\text{[dance2 [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}}$
$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({Dance}({f}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f1}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x})))))))$
" ], "text/plain": [ "" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r[0].tree()" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "4 composition paths. Results:\n", "
    [0]: $[\\![\\mathbf{\\text{[[saw everyone] [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({Saw}({f}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f1}(\\lambda{} x1_{e} \\: . \\: {ForeignCountry}({x1}))))), {x}))$   (16 equivalent paths lead here)\n", "
    [1]: $[\\![\\mathbf{\\text{[[saw everyone] [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {abar}({Saw}({f}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f1}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))))), {x}))$   (16 equivalent paths lead here)\n", "
    [2]: $[\\![\\mathbf{\\text{[[saw everyone] [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: {abar}({Saw}({f1}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f}(\\lambda{} x1_{e} \\: . \\: {ForeignCountry}({x1}))))), {x}))$   (16 equivalent paths lead here)\n", "
    [3]: $[\\![\\mathbf{\\text{[[saw everyone] [no [[fromP [a fcountry]] cat2]]]}}]\\!]^{}_{\\left\\langle{}\\left\\langle{}t,t\\right\\rangle{},t\\right\\rangle{}} \\:=\\: $$\\lambda{} abar_{\\left\\langle{}t,t\\right\\rangle{}} \\: . \\: \\exists{} f_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\neg{} \\exists{} f1_{\\left\\langle{}\\left\\langle{}e,t\\right\\rangle{},e\\right\\rangle{}} \\: . \\: \\forall{} x_{e} \\: . \\: {abar}({Saw}({f1}(\\lambda{} y_{e} \\: . \\: ({Cat}({y}) \\wedge{} {From}({y}, {f}(\\lambda{} x_{e} \\: . \\: {ForeignCountry}({x}))))), {x}))$   (16 equivalent paths lead here)" ], "text/plain": [ "CompositionResult(results=[⟦[[saw everyone] [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: (Forall x_e: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(Saw_<(e,e),t>(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x1_e: ForeignCountry_(x1_e))))))), x_e)))))), ⟦[[saw everyone] [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: (Forall x_e: abar_(Saw_<(e,e),t>(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e))))))), x_e)))))), ⟦[[saw everyone] [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: (Forall x_e: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(Saw_<(e,e),t>(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x1_e: ForeignCountry_(x1_e))))))), x_e)))))), ⟦[[saw everyone] [no [[fromP [a fcountry]] cat2]]]⟧ = (λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: (Forall x_e: abar_(Saw_<(e,e),t>(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e))))))), x_e))))))], failures=[⟦[[no [[fromP [a fcountry]] cat2]] [saw everyone]]⟧ = Type mismatch: '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> and '⟦[saw everyone]⟧ = (λ abar_<,t>: (Forall x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e)))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP [a fcountry]] cat2]] [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: ~(Exists f_<,e>: (Exists f1_<,e>: abar_(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] [saw everyone]]⟧ = Type mismatch: '⟦[no [[fromP [a fcountry]] cat2]]⟧ = (λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> and '⟦[saw everyone]⟧ = (λ abar_<,t>: (Forall x_e: abar_<,t>((λ x1_e: Saw_<(e,e),t>(x1_e, x_e)))))'/<<,t>,t> conflict (mode: Function Application), ⟦[[no [[fromP [a fcountry]] cat2]] [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X4>,X5>: (λ arg_<,X4>: (λ abar_: f_<<,X4>,X5>((λ b_: arg_<,X4>((λ c_X: abar_(b_(c_X)))))))))'/<<<,X4>,X5>,<<,X4>,<,X5>>> and '(λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[no [[fromP [a fcountry]] cat2]] [saw everyone]]⟧ = Type mismatch: '(λ f_<<,X'''>,X4>: (λ arg_<,X5>: (λ abar_: arg_<,X5>((λ c_X: f_<<,X'''>,X4>((λ b_: abar_(b_(c_X)))))))))'/<<<,X'''>,X4>,<<,X5>,<,X5>>> and '(λ abar_: (Exists f_<,e>: ~(Exists f1_<,e>: abar_(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x_e: ForeignCountry_(x_e)))))))))))'/<,t> conflict (mode: Function argument combination (unification failed)), ⟦[[saw everyone] [no [[fromP [a fcountry]] cat2]]]⟧ = (Forall x_e: ~(Exists f_<,e>: (Exists f1_<,e>: Saw_<(e,e),t>(f_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f1_<,e>((λ x1_e: ForeignCountry_(x1_e))))))), x_e)))), ⟦[[saw everyone] [no [[fromP [a fcountry]] cat2]]]⟧ = (Forall x_e: (Exists f_<,e>: ~(Exists f1_<,e>: Saw_<(e,e),t>(f1_<,e>((λ y_e: (Cat_(y_e) & From_<(e,e),t>(y_e, f_<,e>((λ x1_e: ForeignCountry_(x1_e))))))), x_e))))])" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r2 = tfilter((no * (cat2 * (fromP * (a * fcountry)))) * (saw * everyone))\n", "r2 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have:\n", " * 0: everyone >> no cat >> a foreign country\n", " * 1: no cat >> a foreign country >> everyone\n", " * 2: everyone >> a foreign country >> no cat\n", " * 3: a foreign country >> no cat >> everyone\n", " \n", "What is missing?\n", " * no cat >> everyone >> a foreign country\n", " * a foreign country >> everyone >> no cat\n", " \n", "These are exactly the cases where something would split the scope of the two quantifiers in the subject DP, and empirically, these readings are supposed to be absent in general (this observation is due to May). This demonstrates what Barker calls the _Integrity Constraint_, which is that when scopal elements form a constituent together, they can't scope independently w.r.t. scopal elements outside that constituent. Intuitively, their scope is compositionally determined inside the smallest constituent they are a member of, and can't be changed or interrupted after that.\n", "\n", "Arguably, the derivation of this constraint from extremely general principles is the most important feature of this analysis.\n", "\n", "This concludes this fragment; I have left out discussion of conjunction, and of the mathematical parts of Barker's paper." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Lambda Notebook (Python 3)", "language": "python", "name": "lambda-notebook" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }