{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Rewrite" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from lambeq.backend.grammar import Cup, Diagram, Id, Word\n", "from lambeq.backend.drawing import draw\n", "\n", "from lambeq import AtomicType\n", "\n", "N = AtomicType.NOUN\n", "S = AtomicType.SENTENCE" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from lambeq import Rewriter\n", "\n", "rewriter = Rewriter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Auxiliary rule" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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LmVUBdeut0FkZmYqMzOz37zTp0/32+JrbGzUP/7xD7W3t6unp2fA54mMjOzXtBISEq5pZOPHj1doaKjCwsL6XV49LywsTF6vV729verr6xvysqenZ8CgeOXU0dEx4JeRDMNQbGyskpKSlJ2drdLSUl9DcrvdcrlcozLmADBSLpdLRUVFKioq8s3r6+vTF1980W+HwN///nedOnVK586dG/Czl4ZhaMKECQP26Kt3EgzUrwe69Hg81+3VfX196uzsvG6/7uzsHHT54+PjlZaWppycHH3729/2HVWbNGkS4RG2IlAO4itf+YoefPBBPfjgg/3mm6apS5cuXbchXJ5aWlr6bWEOFkavlp+fr7q6umE99nIovLoZTp48edBGebmRTpgwIaC31AFgKKGhobrjjjt0xx136PHHH+9331BHZgY6UnP48GHf7cHC6EDuv/9+7dy5c1iPvRwKr5xuueUW5eTkDLkzIj4+XlFRUYRGBCwC5QgZhqGoqChFRUWN+FcGTNNUX19fv+nqrdfL171erwzDGHQv5tXXQ0KC5vtVADAsISEhiouLU1xc3Ii/iGKa5jV9ebC+7fV6h+zRV84LDQ0lFMKRCJR+ZBiG73A2ACBwGYYhl8vFx36AYWK3FgAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAMISMjQzExMXaXAWAM6uvrU3Z2tuLj4+0uZdQRKAFgCMnJyXr33XdVXl4ur9drdzkAxojOzk49/fTT2rVrl2677Ta7yxl1BEoAGMKKFSv01FNPqbS0VG63W6+88opOnz5td1kAAlRTU5N+/OMfKzU1VW+99ZbKy8s1ffp0u8sadYZpmqbdRQAYmbKyMjU0NKi6utruUoKCaZr67LPP9Prrr+v999+XaZqaPn26CgoKdM8996igoEBut1shIWyjA8Gku7tbjY2NqqmpUW1trT7//HM1NDQoOTlZixcvVllZmb72ta/ZXaZfECiBMYhAaZ8zZ85o/fr1qqqqUk1NjQ4fPixJiomJ0d133+0LmHl5ecrIyND48eNtrhiAVaZp6syZMzp06JDq6upUW1urmpoaNTU1qbe3V2FhYZo6daoKCgo0Z84cFRcXKzw83O6y/YpACYxBBMrA0d7e7lvBXF7JXA6ZkhQbG6v09HTdcsstvssrr6enpxM6ARtdDotHjhzR0aNHdfToUd/1K+d1d3dLUr/weHnKzc3VuHHjbF4SexEogTGIQBnY2tvbtWfPngFXTEeOHNHJkyf7Pf5y6ExOTlZsbGy/KS4u7pp5V04RERE2LSUQOEzTVFdXlzo6Oq6Zzp07N+j848eP9wuL0peBMS0tbcANwIyMDE2ZMiXow+NAwuwuAACcJiEhQYWFhYPe39PTo2PHjl2zN+TkyZPq6OjQ8ePH+634Ojs7B32uiIiIAYPm9YJoTEyMwsPDfZPL5fJdDw0NlWEYozE0gEzTlMfjUU9Pj+/y8vXu7m6dP39+wAA4VDjs6OhQX1/fgP+fYRiaMGHCNe+B9PR0TZs27ZojCMnJyXwe+gYQKAHAz8LDwzV58mRNnjx5WI/v7e31rWSHWqFeOV0ZSs+dO6eurq4R13h10AzU6y6XS4ZhyDAMhYSE+K47kWma10xer/eaYHYzrt/M57ryem9v77CXd7AwmJaWpuzs7GFtTI0fP56A6AcESgAIcGFhYUpISFBCQsINP4fH4+m35+fChQuD7iWyEjo6OztH/G9G00BB88ppsPkj+Te5ublqaGjwhbvBQt9A80f6b0ZznCIiIgYN74OF+aioqGGF/+FuJISHh/cLkDExMYTBMYJACQBBwOVyKTExUYmJiXaX0o9pmurr67O852y44W007o+NjVV+fv51A+po3R8SEjLi0Hb1faGhoXa/FDDGESgBALYxDENhYWEKCwtTVFSU3eUAuEHsRwYAAIAlBEoAAABYQqAEAACAJQRKAAAAWEKgBAAAgCUESgAAAFhCoAQAAIAlBEoAAABYQqAEAACAJQRKAAAAWEKgBAAAgCUESgAAAFhCoAQAAIAlBEoAAABYQqAEAACAJQRKAAAAWEKgBAAAgCUESgAAAFhCoAQAAIAlBEoAAABYQqAEAACAJQRKAAAAWEKgBAAAgCUESgAAAFhCoAQAAIAlBEoAAABYQqAEAACAJQRKAAAAWEKgBAAAgCUESgAAAFhCoAQAAIAlBEoAAABYQqAEAACAJQRKAAAAWGKYpmnaXQSAkTly5Ii6u7vldrvtLgUAAAIlAAAArOGQNwAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMCS/wHNtAGxS3J/SwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (auxiliary rule)\n" ] }, { "data": { "image/png": "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eOhBIFACwAgLCgrSxRdfrIsvvrhfz+/o6PB0sn11qGdPZ4fShoYGtba2DrjGc4Omr84HBgbKMAwZhiGHw+GZ90emaXab3G53t2A2FPND+V5nz3d0dPT79+0tDCYnJysrK6tfO1Pjx48nII4AAiUA+LiAgADFxMQoJiZm0O/hcrm8Rn6am5t7HSWyEjpaWloG/Jrh1FPQPHvqbflAXpOTk6OKigpPuOst9PW0fKCvGc71FBwc3Gt47y3Mh4aG9iv893cnISgoyCtAhoeHEwZHCQIlAIwBgYGBio2NVWxsrN2leDFNU52dnZZHzvob3obj8cjISOXl5Z03oA7X4w6HY8Ch7dzHnE6n3ZsCRjkCJQDANoZhKCAgQAEBAQoNDbW7HACDxDgyAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASwzRN0+4iAAxMdXW12tralJ6ebncpAAAQKAEAAGANH3kDAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALCFQAgAAwBICJQAAACwhUAIAAMASAiUAAAAsIVACAADAEgIlAAAALPl/MaxmRw6XIzIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "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BCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJ2mc94HJWXFwcTU1NWc8AEhQUFES7du2yngGQ1zxD2UI6deoUjY2NcezYsaynAAkOHjwYHTp0yHoGQF4TlC2kR48eUVxcHO+8807WU4CLlMvl4t13341evXplPQUgrwnKFtKuXbsYN25cvPLKK1lPAS7SihUroqGhIW677baspwDkNUHZgm6//fZ44403Ytu2bVlPAS7Cyy+/HGVlZVFTU5P1FIC8Jihb0IQJE6Jr167x0EMPZT0FuEDvv/9+PPvss/H1r3892rf3/kWA8xGULai0tDSeeeaZ+P3vfx9//OMfs54DfEInTpyIqVOnRvfu3ePxxx/Peg5A3vNldwubOnVqLFiwIO67774YNGhQDB06NOtJwHnkcrl48MEH480334zXX389SktLs54EkPc8Q3kJPPPMM9G/f/8YPXp0/O1vf8t6DnAOjY2Ncdddd8XMmTNj5syZMWrUqKwnAbQKgvISKC0tjUWLFkVNTU2MHz8+fv3rX0cul8t6FvA/9u7dG+PGjYuXXnopXnzxxZgxY0bWkwBaDUF5iXTp0iVqa2vj/vvvj/vuuy9uueWW2LRpU9azoM07efJkzJ49O6655ppYs2ZN/P3vf4877rgj61kArYqgvITatWsXTz/9dMydOzc2b94cgwcPjoceeigOHz6c9TRok1auXBmjR4+OadOmxc033xz//ve/o7q6OutZAK2OoMzAV77ylVi3bl388Ic/jJkzZ0b//v3j8ccfj927d2c9DS57uVwuli5dGl/72tdixIgRceDAgaivr485c+ZEeXl51vMAWiVBmZFOnTrFI488EuvXr4+JEyfGT37yk+jTp0/cc889sW7duqznwWXn+PHj8eKLL8bIkSNj9OjRsXbt2njmmWdi5cqVMWbMmKznAbRqgjJj/fr1i2effTa2bdsWDz/8cMyfPz8GDx4cN9xwQ/zsZz+LzZs3Zz0RWq3GxsZ49dVX4/7774+KioqYMmVKdO/ePebPnx/r16+Pe++9N4qKirKeCdDqFeS83TivNDY2xp///Od4+eWX49VXX42jR49GZWVlTJo0KSZNmhQjRoyIwkJfB8C57N+/PxYsWBC1tbUxf/78OHjwYPTr1y8mTpwY06ZNi8GDB2c9EbjE6urqYuzYsbF169aoqKjIes5lSVDmsSNHjkRdXV3U1tbGX//619izZ0+Ul5fHxIkTY+LEiVFdXR0lJSVZz4RM5XK52LZtW8yfPz9qa2vjH//4Rxw/fjyGDRvW/IXY4MGDo6CgIOupQEYEZcsTlK3EiRMnYunSpVFbWxu1tbXx/vvvR2FhYQwaNCiGDx/efLn22mtFJpetXC4XO3bsiOXLl8fbb78dy5cvj+XLl8cHH3wQ7dq1i5qampg0aVJMmDDBgwbQTFC2PEHZCuVyuVi7dm289dZbzQ+oa9asicbGRpHJZeN88RgRcdVVV8Xw4cNjxIgRMXz48Kiuro4ePXpkvBrIR4Ky5QnKy0RjY2OsXbu2+UH3fJE5YsSIGDRokH+jmLzR1NQU27dvj1WrVp0WkOeKx+HDh0fv3r29jA18IoKy5QnKy9j5IjMi4oorroi+fftGRUVF9O3bt/ly6rhnz57eAMSn4ujRo9HQ0BBbt25t/u+pS0NDQ2zfvj1OnDgREeIR+PQJypYnKNuYU5G5efPmsz6w79+/v/m+RUVF0adPnzNC89SlT58+0aFDhww/G/JBLpeLvXv3nhGL/3t9165dzfcvLCyM8vLys34hU1VVJR6BT52gbHmCktPs37//rEFw6vrOnTtPu3/Pnj3js5/9bHTv3v2clx49epx23K1bt2jfvn1GnyHnksvl4ujRo7Fv377Yu3dv7Nu372Mve/fuje3bt5/2z4d27NixORbPFo2f+9zn/N2PwCUlKFueR3VOU1paGlVVVVFVVXXW2z/88MPYvn37ac9s7tq1qzkw/vvf/54WHKdexvyorl27fmx8duvWLTp16hQdO3aMDh06RIcOHc55vUOHDlFcXNxmntlqamqKDz/8sPly7Nixcx4fO3YsDh069IlC8dS3Q3xU586dz/i1GjhwYHTv3j169+59WjR+5jOfaTO/DgD8P0HJBenQoUNcffXVcfXVV3/sfXO5XHPIfJLLjh07Tjtuamq6qH1ni83zHXfs2DGKioqisLAwCgoKorCwsPnyv8dnu15SUhJHjx6NkydPRi6Xi5MnT55x/Vy3NTU1RWNj4xnxd74wPHX9XKF+PiUlJWc8W3wqCs8X9926dYvi4uIL/v8B0HYISlpMQUFBdO3aNbp27XrBLzHkcrk4fPhwHD169GPj6ny3ne/6gQMHmo8bGxubQ+9s8XeuWPz85z8fW7Zs+cQB+tFg/WjklpaWfuyzsZ/0Gdv/Pe7SpYsoBKDFCEryUkFBQXTp0iW6dOmS9RQA4GP4O2EAAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASFKQy+VyWY8AAGgpBw8ejC1btkRlZWUUFxdnPeeyJCgBAEjiJW8AAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACSCEoAAJIISgAAkghKAACS/B8m56odHuHYpwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "diagram = ((Word('we', N) @ Word('will', (N >> S) << (N >> S)) @\n", " Word('go', N >> S)) >>\n", " Cup(N, N.r) @ Id(S) @ Diagram.cups((N >> S).l, N >> S))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (auxiliary rule)')\n", "draw(Rewriter(['auxiliary'])(diagram))\n", "print('↓ normal form')\n", "draw(rewriter(diagram).normal_form())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Connector rule" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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aDQaKBQKGdeQnMnDhw9RXV2N6upq3Lt3T7z95FBZWWkWIBsbG8VluLq6olu3bggNDUVUVJR4hl6v16NTp04yrp1tMVBSh8RASWR71dXVKC8vb3Fmp7y8HDdv3jQ7gJtMplaXoVQq4e3t/dTA+fjg4eEBtVoNV1dXqNXqFrefNa35tkqlsnErdWwmkwmPHj3Co0eP0NjYKA6Pjz/tdvP4w4cPUVNT89Rw+PjweDB8kkajEbclPz8/szPszX9DQkIQGBgIpZKXpPAzlEREZBPNB+fn/RMnCAJqa2stCgTNZ5VKS0vN7q+pqXlqKLWGUqm0KHhaGlCbb6tUKigUilYHpVL51GmWPkatVqOxsREmkwmCIDxzaOtjnhfsLA2Aj99uamqS/JoBgKenp9k/F1qtFgEBAejVq9cz/wlpPjvu7e3NfyasxEBJRER2RaFQwMvLC15eXggJCWnTMgRBsDjYvIjb9fX14hmw1h5jNBqtCnfPCn2tTYuIiMD169etDqPWTHtecPbw8IBWq7UqaLfXbYZB22OgJCIip6NQKODm5gY3Nze5SyHqEPimPxERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIoBEEQ5C6CiIiIiBwXz1ASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJMn/A40UHqn4TwdWAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (connector rule)\n" ] }, { "data": { "image/png": "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ClNJSQlcXFyQnp6O1157DRqNRuoyHzuZ0Wg0Sl0EkbUdP34cw4cPR0lJCRISEqQuh8hu6fV67N+/H/n5+cLg2dDQAACIiIjAwIEDERkZifDwcISFhQm3ISEhcHZ2lrh6os4zGo24ceMGrly5gsrKSuG2srISpaWlKCkpgV6vh5OTE/r164chQ4bg6aefxrRp06BSqaQu/4lhoKRuiYGS6MkwGAy4cOGCEC6LioqEwfbWrVvCfDKZDEFBQULADAoKgo+PD3x8fKBSqYT790+enp6QyWQSriE5kjt37qC+vh719fW4efOmcP/+qbq62iRAtra2Cq/h7OyM0NBQhIeHIzY2VjhCr1ar4ebmJuHaWRcDJXVLDJRE1ldfX48rV66YHdm5cuUKrl27ZjKAGwyGDl9DLpfD29v7gYHz3kmpVMLFxQXOzs5wcXExu/+w59rvKxQKK7dS92YwGNDW1oa2tja0trYK072PH3S//fGdO3fQ0NDwwHB473RvMLyfp6ensC35+fmZHGFvvw0LC0NAQADkcl6SwnMoiYjIKtoH50f9EWc0GnHr1i2LAkH7UaWKigqTnzc0NDwwlHaGXC63KHhaGlDb7ysUCshksg4nuVz+wOcsncfFxQWtra0wGAwwGo0Pnbo6z6OCnaUB8N77Op1O9O8MADw8PEz+uFCpVOjZsyf69Onz0D9C2o+Oe3t784+JTmKgJCIimyKTyeDl5QUvLy+EhYV16TWMRqPFweZJ3G9ubhaOgHU0j16v71S4e1jo6+i5qKgoXL58udNhtDPPPSo4K5VKqFSqTgXtx3WfYdD6GCiJiMjhyGQyuLq6wtXVVepSiLoFfuhPRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKDKj0WiUuggiIiIisl88QklEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKP8PWg70KPR1kYAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "diagram = ((Word('I', N) @ Word('hope', N >> S << S) @\n", " Word('that', S << S) @ Word('this', N) @\n", " Word('succeeds', N >> S)) >>\n", " (Cup(N, N.r) @ Id(S) @ Cup(S.l, S) @\n", " Diagram.cups((N >> S).l, N >> S)))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (connector rule)')\n", "Rewriter(['connector'])(diagram).draw()\n", "print('↓ normal form')\n", "rewriter(diagram).normal_form().draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Determiner rule" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAEZCAYAAAApCbWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAATk0lEQVR4nO3de4xU9f3/8dfAssCKX1DRSIUFiWhBJA2gImKKNVSkKDZRW6OhtIm1RBNta1qq9a79Q4uXWK2mptVUjTFpC9bSFGtaYqnSgIogW6WNMtRqFa/VlevO74+Gjfzk/hFmd3k8kknO2dnZec8yZ89zz+wcKrVarRYAANhN3eo9AAAAnZugBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgSEO9B9iearWaNWvW1HsMgE6tf//+aW5urvcYdHL2yfXXkbflDhuU1Wo1w4cPT2tra71HAejUmpqa0tLS0mF3RHR89skdQ0feljtsUK5Zsyatra154IEHMnz48HqPA9AptbS05Pzzz8+aNWs65E6IzsE+uf46+rbcYYNys+HDh2f06NH1HgMA9nn2yWyLN+UAAFBEUAIAUERQAgBQRFACAFBEUAIAUERQAgBQRFACAFBEUAIAUERQAgBQRFACAFBEUAIAUERQAgBQRFACAFBEUAIAUERQAgBQRFDCTvrzn/+cSqWSd999t96jAOyTJk6cmEsvvXSP3seQIUNy22237dH76IoEJWzD3vjBBQBdgaAEAKCIoIStmDFjRhYsWJDbb789lUollUolr7zySpJkyZIlGTt2bJqamjJ+/Pi8+OKLW9x27ty5GT16dHr16pWhQ4fm2muvzcaNG+vwKAC6no0bN+biiy9O3759079//1x55ZWp1WpJknfeeSfTp0/PAQcckKamppx22mlZuXLlFrf/1a9+laOPPjo9e/bMkCFDMnv27O3e37333pt+/frliSee2GOPqSsQlLAVt99+e0444YRccMEFee211/Laa69l0KBBSZIrrrgis2fPzuLFi9PQ0JBvfOMb7bd78sknM3369FxyySVZsWJF7rnnntx333258cYb6/VQALqU+++/Pw0NDfnb3/6W22+/PbfcckvuvffeJP87GLB48eI8+uijeeqpp1Kr1TJlypRs2LAhyf8OCJxzzjn56le/mmXLluWaa67JlVdemfvuu2+r93XTTTdl1qxZmT9/fk455ZS99RA7pYZ6DwAdUd++fdPY2JimpqYceuihSZK///3vSZIbb7wxn//855Mks2bNype+9KWsXbs2vXr1yrXXXptZs2bla1/7WpJk6NChuf766/O9730vV199dX0eDEAXMmjQoNx6662pVCo56qijsmzZstx6662ZOHFiHn300SxcuDDjx49Pkjz44IMZNGhQ5syZk7PPPju33HJLTjnllFx55ZVJkiOPPDIrVqzIzTffnBkzZmxxP9///vfzy1/+MgsWLMjRRx+9tx9mp+MIJeyiUaNGtS8PGDAgSfLGG28kSZYuXZrrrrsuffr0ab9sPsrZ2tpal3kBupJx48alUqm0r59wwglZuXJlVqxYkYaGhhx//PHt1x100EE56qij0tLSkiRpaWnJiSeeuMXXO/HEE7Ny5cps2rSp/WOzZ8/Oz372s/zlL38RkztJUMIu6tGjR/vy5h9qbW1tSZIPPvgg1157bZ577rn2y7Jly7Jy5cr06tWrLvMCsGtOOumkbNq0KY888ki9R+k0vOQN29DY2LjFb6w7Y/To0XnxxRdzxBFH7KGpAPZtixYt2mL96aefzrBhwzJixIhs3LgxixYtan/J+6233sqLL76YESNGJEmGDx+ehQsXbnH7hQsX5sgjj0z37t3bP3bcccfl4osvzuTJk9PQ0JDLLrtsDz+qzk9QwjYMGTIkixYtyiuvvJI+ffq0H4XcnquuuipTp05Nc3NzzjrrrHTr1i1Lly7N8uXLc8MNN+yFqQG6tmq1mu985zu58MIL88wzz+SOO+7I7NmzM2zYsEybNi0XXHBB7rnnnuy///6ZNWtWDjvssEybNi1J8t3vfjfHHntsrr/++nzlK1/JU089lZ/85Ce56667PnE/48ePz7x583LaaaeloaHBeYl3wEvesA2XXXZZunfvnhEjRuTggw9OtVrd4W1OPfXUPPbYY5k/f36OPfbYjBs3LrfeemsGDx68FyYG6PqmT5+ejz76KMcdd1wuuuiiXHLJJfnmN7+ZJPnFL36RMWPGZOrUqTnhhBNSq9Uyb9689j9VGj16dB555JE8/PDDGTlyZK666qpcd911n3hDzmYTJkzI7373u/zwhz/MHXfcsbceYqdUqW0+eVMH88wzz2TMmDFZsmRJRo8eXe9xADolP0v5NHge1V9H/zdwhBIAgCKCEgCAIoISAIAighIAgCKCEgCAIoISAIAighIAgCKCEgCAIoISAIAighIAgCKCEgCAIoISAIAighIAgCKCEgCAIoISAIAighIAgCKCEgCAIg31HmBHWlpa6j0CQKflZyifJs+n+uno3/sOG5T9+/dPU1NTzj///HqPAtCpNTU1pX///vUeg07MPrlj6MjbcqVWq9XqPcS2VKvVrFmzpt5j7JbXXnstU6dOzZ133plx48bVexxgN1166aVJkttuu62uc5To379/mpub6z0GnVxn3ic//fTTueiii/LYY49lwIAB9R5nt3XkbbnDHqFMkubm5g77jduRarWaJBk2bFhGjx5d52mA3dWvX78ksR2zz+vM++S33norSXLMMcd02sfQ0XlTDgAARQQlAABFBCUAAEUEJQAARQQlAABFBCUAAEUEJQAARQQlAABFBCVAHc2YMSNnnnlmvccAKCIoAQAoIigBACjSof8v733NxIkTM2rUqPTq1Sv33ntvGhsb861vfSvXXHNNvUcDdpLtGDo/2/Guc4Syg7n//vuz3377ZdGiRbnpppty3XXX5fHHH6/3WMAusB1D52c73jWCsoMZNWpUrr766gwbNizTp0/P2LFj88QTT9R7LGAX2I6h87Md7xpB2cGMGjVqi/UBAwbkjTfeqNM0wO6wHUPnZzveNYKyg+nRo8cW65VKJW1tbXWaBtgdtmPo/GzHu0ZQAgBQRFAC7EXTp0/PD37wg3qPAfCpctoggL2oWq2mWze/ywNdS6VWq9XqPURXVK1WM3jw4MyfPz+TJk2q9zjAbjrjjDOSJI8++midJwF21+OPP54vfvGLWbVqVZqbm+s9Tpfk12QAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISoDtaGhoSKVSqfcYQIFNmzalsbGx3mN0aYISYDt69uyZDz74oN5jAAU++uijrF+/Pk1NTfUepcsSlADbceihh+Yf//hHarVavUcBdtM///nPNDY25oADDqj3KF2WoATYjilTpqRarebZZ5+t9yjAbvr1r3+dyZMnp3v37vUepcsSlADbcfLJJ+eggw7KI488Uu9RgN2wevXqPPXUUzn77LPrPUqXJigBtqOhoSHnnntu7r777qxatare4wC76PLLL8/++++f008/vd6jdGmCEmAHrr/++vTr1y/nn39+Nm7cWO9xgJ300EMP5YEHHshPf/rT9O3bt97jdGmCEmAH+vXrlwceeCB//etfM2vWLG/QgU5g6dKlmTlzZs4777ycd9559R6nyxOUADthwoQJ+fGPf5zZs2dnxowZWb9+fb1HArbh97//fSZMmJAjjjgid955Z73H2ScISoCd9O1vfzsPPfRQHn744UyePDlvv/12vUcCPqZWq+Xuu+/O6aefnpNPPjkLFizwUvdeIigBdsG5556bP/7xj1m6dGk++9nP5r777ktbW1u9x4J93ksvvZTJkydn5syZmTlzZn7zm9+kT58+9R5rnyEoAXbRSSedlGXLlmXSpEn5+te/ngkTJjhPJdTJhx9+mMsvvzwjR47MypUr89vf/jZ33HGHc07uZYISYDd85jOfyYMPPpg//elPef/99zN27NicddZZWbhwoTftwF7w5ptv5oYbbsgRRxyRW265JVdccUVeeOGFTJ06td6j7ZMEJUCBiRMn5tlnn81dd92V5cuXZ8KECTn++OPz0EMPZcOGDfUeD7qc5cuX54ILLkhzc3N+9KMfZdq0aVmxYkWuvvrq9O7du97j7bMEJUChHj165MILL8yKFSsyb9689OvXL+edd16am5szc+bM/OEPf/CucCjw0ksv5eabb8748eNzzDHHZN68ebnqqquyevXq3H333Rk6dGi9R9znVWpem9kjqtVqBg8enPnz52fSpEn1HgfYy5YvX56f//znmTNnTl5++eX83//9X6ZMmZJp06bltNNO885T2I62trYsXrw4c+bMyZw5c9LS0pLevXvn1FNPzTnnnJOzzjorPXr0qPeYfIyg3EMEJZD87zQmy5cvb98xPvPMM+nRo0e+8IUv5Mwzz8yUKVMyaNCgVCqVeo8KddXa2ponn3wyc+fOzdy5c/Pvf/87Bx10UM4444xMmzYtkyZNSlNTU73HZBsE5R4iKIGtqVarmTt3bubMmZMFCxZk06ZNOeSQQzJmzJiMHTs2Y8aMyZgxY3LYYYeJTLqs1tbWPPfcc1myZEn7ZcWKFWlra8uQIUPy5S9/OWeeeWbGjx+fhoaGeo/LThCUe4igBHbk7bffzpNPPpklS5Zk8eLFWbJkSd54440kEZl0GduLx8bGxowaNar9OT5u3LiMHDnS87wTEpR7iKAEdlWtVsurr77avtPdWmR+PDA/97nPZeDAgc63R4fx3nvv5YUXXtipeBwzZkxGjhyZxsbGeo/Np0BQ7iGCEvg07CgyGxoaMnDgwAwePDjNzc0ZPHjwFsvNzc1OpcKnoq2tLa+//npWrVqVVatWpVqtfmL5/fffTxLxuA8SlHuIoAT2lM2R+fzzz291x/7qq69ucXL1gw8+uD00txaeBx54oJcYybp161KtVrcaiqtWrcrq1au3OLdq3759t3gubX4+DRs2TDzug/ylK0AnU6lUMnDgwAwcOHCr12/YsCH/+te/thqbjz32WKrVatauXdv++fvtt18GDhyYAw88MAcccMB2Lx//nN69ewvRDmjjxo15991388477+Sdd97J22+/3b68rct//vOfvP7661t8nQEDBrRH4tixYz/xC4lTX/FxghKgi+nRo0cOP/zwHH744Vu9vlar5c0332wPzVWrVuXVV19tj4vVq1fn+eefb1//8MMPt/p1Ghsbdyo++/Tpk169eqVnz57p2bPnFstbW99X/ia0Vqtl/fr1WbduXdatW5e1a9e2L///62vXrs1HH320U6H43//+d6v319DQ8Il/owEDBmTEiBGfOIo9cODA9OzZcy9/R+jMBCXAPqZSqeSQQw7JIYcckmOPPXaHn79+/fr2kNnR0a7NMbr581pbW3d5voaGhq3G5vZCtFevXmlsbEz37t3TrVu3VCqVdOvW7RPL27qud+/eaW1tTVtbW2q1Wtra2ra7/PH1DRs2fCL+theGH79uV3Xv3v0Twb45CncU9/vtt58jyuwxghKA7WpsbGwP0F21fv36fPDBB7scWzuzvG7durz33ntbrG8t+HYmEIcOHZqXX355u9G5rY81NjZuEbq9e/dOv379thvEuxLKH/+6opCOSlACsMc0NjbmwAMPrPcYwB7Wrd4DAADQuQlKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKCEoAAIoISgAAighKAACKVGq1Wq3eQ3RF69evT0tLS4YOHZr999+/3uMAAOwxghIAgCJe8gYAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKCIoAQAoIigBACgiKAEAKDI/wPTvpFVcxNtdQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (determiner rule)\n" ] }, { "data": { "image/png": "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VVXb9H3rfgfb+t175ZVX4rHHHtvgd7C4uDh69+7dZmyuO92tW7cvevMAttnZZ58dq1atikMPPTSKi4vjkksuiR/84AcREXHPPffEJZdcEqNHj46mpqYYPnx4TJ06NUpLSyMiYvDgwfHwww/Hr371qxg/fnzsvvvucd111230hpx1vv71r8eUKVNi1KhRUVxcHBdffPGXtZkdQi6/7gOd2KJ8Ph/vv/9+zJo1a4Nl/UOVXbt23ejBef313r172zvEl27FihXR0NCwyT3ln99Lvvfee8eQIUM2WCorKzPcAmBHmT17dgwZMiRmzZoVgwcPznocNqHQf07KZhM+H48zZ86M2bNnt8Zj3759Y8iQIXHppZfGoEGDWqPR69coRDvttFMMGjSo9bVFn7dmzZr46KOPor6+Pj744IN4/fXXY9asWXH99de3vmZXZAKwKYIyti0ehw4dGoMHD45dd90126HhC1RaWtr6pGj48OGt57e0tMS7774bM2fObP37EJkAfF6nDcp33303Jk2aFP/4xz82OGwtHuH/KyoqigEDBsSAAQPizDPPjIgtR+Zee+0Vw4YNi5NOOilGjhwZFRUVWW4CAF+CThOU+Xw+Zs6cGXV1dVFXVxdz586NLl26xHHHHSceYRtsTWQ+++yz8dBDD0VpaWkce+yxUVtbGyeddFLsscceGU8PwI7QoYOyqakpnnvuuairq4tJkybFggULoqqqKr797W/Hr3/96zj++OO9oxq+AG1FZkNDQ0yaNCnq6urioosuih//+Mdx2GGHRW1tbdTW1sZ+++2X8dQAfFE65P+Ce+WVV+Kcc86JXXfdNU444YSYMmVKnHLKKfHMM8/EwoUL4957743a2loxCTtQTU1NXHzxxfH000/HokWL4v77748+ffrE+PHjY+DAgbHffvvF+PHjY9GiRVmPCkCiDhOUzc3N8eijj8aRRx4Zhx56aLzwwgvx05/+NF577bX44IMP4tZbb40RI0b4yB7IQFVVVZx11lnx6KOPxuLFi+Nvf/tbHHHEEfGb3/wmampq4nvf+17MmTMn6zEB2E7tPigbGxvj5ptvjn322SfGjh0bpaWlUVdXF++8805cffXVcdBBB/kYHyggXbt2jdGjR8fdd98dH374YVxzzTXxxBNPxIEHHhjHH398PPXUU1mPCMA2atdBOWXKlNh///3j8ssv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67E6NUEJdBi9e/eO6dOnx4033hh33313DBgwIO6///7I5/NZjwZ8ARYuXBjnnHNOHHXUUdGlS5eYMWNGXHnllQ5zFwBBCXQopaWlcemll8Zbb70Vxx13XJxzzjkxdOjQeOCBB6KpqSnr8YDtUF9fH5dddln0798/pkyZEn/5y19i2rRpMXTo0KxH438EJdAh9e7dOx588MF49tlno7q6OsaNGxd77bVX3HDDDbFkyZKsxwO2IJ/Px0svvRRjx46NvffeO+6+++644IIL4p133onvf//7UVQkYQqJnwbQoR199NHxxBNPxJtvvhmjRo2K6667Lvr27Rvf/e53Y8qUKdHY2Jj1iMB66uvr4w9/+EMcdthhceSRR8Ybb7wRt99+e8yfPz9++9vfRlVVVdYj0oZcvkBfXHT++efHG2+8EdOnT896FKAD+eSTT+KOO+6I++67L957773o3r17jBw5MsaMGRPf+ta3orKyMusRoVPJ5/MxZ86cqKuri7q6unj11VejtLQ0vvGNb8SFF14YI0eOtDeyHRCUQKeUz+dj3rx5UVdXF5MmTYoZM2ZESUlJHH300VFbWxtjxoyJvn37Zj0mdEjNzc3x4osvtkbkv//97+jRo0eMGjUqamtrY+TIkdGjR4+sx2QbCEqAiFiwYEFMnjw56urq4l//+lc0NzfHkCFD4thjj40hQ4bEkCFD4qtf/ap3k8J2WLlyZbz22msxa9asmDFjRjz++OOxZMmS2H333aO2tjZqa2tjxIgRUVZWlvWobCdBCfA5y5Yti8cffzwmT54cL730UjQ0NERERM+ePWPw4MGtgSkyYWPrx+O6Ze7cudHS0hJlZWXxta99LU444YSora2NoUOHOpzdQQhKgC345JNPNnhwnDlzZsyfPz8iRCad25bi8cADD9zgb+OAAw6wF7KDEpQA22H9yJw5c2bMmjWrNTIrKipaH0APPvjg2GuvvaJfv37Rq1cve2Nol1atWhUNDQ3R0NAQb7311ib3PA4dOlQ8dlKCEuALsmjRopg9e3ZrYK4fmRERZWVl0bdv3+jXr1/069cvampqWtf79esXffr0ifLy8gy3gM4on8/H0qVLo76+PhoaGqK+vr51WXd60aJFrZdfF49DhgxpDUjxiKAE2IGWLl26wYP05x+wFy5c2HrZXC4Xu+222yaDs6amJioqKjLcGtqjtWvXxn/+85/NBuOKFStaL19eXh41NTVt/v6te+IjHvm8kqwHAOjIKisro7KyMg466KA2v97Y2Bjz589v88H+lVdeifnz58eaNWtaL19RURF77LFH6/Vu7dK1a1ev62znWlpaYvny5bF06dKNlk8//bTN85csWRILFiyI5ubm1uvp2bNnayQec8wxG0Xjrrvu6qUZbDNBCZChLl26RP/+/aN///5tfn3t2rXx8ccfbxCbH3/8cWsw1NfXx2uvvdZ6euXKlW1eT1lZ2VaFZ1VVVVRWVkb37t2jvLw8ysvLo0uXLhusl5aWitOt1NLSEqtXr47GxsZYvXr1BuuNjY2bDMS2luXLl0dbBxVzuVz07Nlzg5/hLrvsEvvss09UVVVFnz59NghGn+/IjiAoAQpYcXFx9O7dO3r37h2HH374Fi/f1NS01YEyf/78eP3117cYo21pKzRT14uLi6OoqCiKiooil8tttN7WeevWS0pKYu3atZHP56OlpSVaWlraXN/c15uamjYZf9u7vv6ewc0pKiraIAorKytbo3BLTwJ69OhhjyKZE5QAHUhZWVn06tUrevXqtc3fu36Mrly5cqNA2t6oWr58+VZdPsWgQYNi7ty5SddRXFy8VQFcXl4ePXr0+EJiuqKiIiorK2PnnXcWhbRrghKAiEiL0VT5fH6r9iJuan3t2rVb3Iu5NXs/ge0jKAHIXC6XE3XQjvnLBQAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgiaAEACCJoAQAIImgBAAgSS6fz+ezHqIt9fX1sXLlyhg4cGDWowAAsBkFG5QAALQPDnkDAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkOT/ANrlSDyZiN3rAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAHzCAYAAAAw1uYzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAALrklEQVR4nO3bTWhc9RrH8Sc3qS9xYcXZBCF2E2VSyCJKfakvBXFhEboTkRC6UVwoKda3TbW24KJYrejOgAYEISCIYAUl4KJBK0YQxaHNLksZcVdB2567uTfcXOVy77Vz0vz6+ezOGWae57/5cphJhpqmaQqALe9vm70AAJeGoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCDHS1qC1tbXq9/ttjQO4bHQ6nRofHx/4nFaCvra2Vt1ut86dO9fGOIDLyujoaPV6vYFHvZWg9/v9OnfuXL3//vvV7XbbGAlwWej1ejUzM1P9fj8j6P/U7XZrenq6zZEAVww/igKEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEnS1hz549deDAgYHO2LFjR504cWKgM2CQBB0ghKADhBB0tozz58/XU089Vddff311Op06dOhQNU1TVVW//PJLzc7O1g033FCjo6P10EMP1erq6ob3f/jhh7Vz5866+uqra8eOHXX8+PH/OG9+fr62b99eS0tLAzsTXEqCzpaxsLBQIyMj9fXXX9ebb75Zr7/+es3Pz1dV1f79++ubb76pjz/+uL788stqmqb27t1bv//+e1VVrays1COPPFKPPvpoff/993X48OE6dOhQvffee38669ixY/Xiiy/WZ599Vg888EBbR4S/pmnByspKU1XNyspKG+MIdP/99zfdbre5ePHi+r0XXnih6Xa7zdmzZ5uqapaXl9df6/f7zbXXXtssLi42TdM0jz32WPPggw9u+MznnnuumZycXL+++eabmzfeeKN5/vnnm7GxseaHH34Y8Km4ErTZP0/obBl33nlnDQ0NrV/fddddtbq6Wj/++GONjIzUHXfcsf7ajTfeWLfeemv1er2qqur1erV79+4Nn7d79+5aXV2tCxcurN87fvx4vfPOO3Xq1KnauXPngE8El5agw7+4995768KFC7W4uLjZq8D/TNDZMk6fPr3h+quvvqqJiYmanJys8+fPb3j9559/rjNnztTk5GRVVXW73VpeXt7w/uXl5brllltqeHh4/d6uXbvq008/rVdffbVee+21AZ4GLj1BZ8tYW1urZ555ps6cOVMffPBBvfXWWzU3N1cTExO1b9++evzxx+vUqVP13Xff1czMTN100021b9++qqo6ePBgLS0t1dGjR+vs2bO1sLBQb7/9dj377LN/mHP33XfXyZMn65VXXvGPRmwpI5u9APy3Zmdn69dff61du3bV8PBwzc3N1RNPPFFVVe+++27Nzc3Vww8/XL/99lvdd999dfLkydq2bVtVVU1PT9fi4mK99NJLdfTo0RobG6sjR47U/v37/3TWPffcU5988knt3bu3hoeH6+mnn27rmPB/G2qaf/wh7wB9++23ddttt9XKykpNT08PehzAZaPN/vnKBSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSDESJvDer1em+MANl2b3Wsl6J1Op0ZHR2tmZqaNcQCXldHR0ep0OgOfM9Q0TTPwKVW1trZW/X6/jVGwwYEDB6qq6sSJE5u6B1euTqdT4+PjA5/T2lcu4+PjrRwI/t327durqmp6enpzF4EB86MoQAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpAiJHNXgCuFHv27Kmpqam65ppran5+vq666qp68skn6/Dhw5u9GiE8oUOLFhYW6rrrrqvTp0/XsWPH6siRI/X5559v9lqEEHRo0dTUVL388ss1MTFRs7Ozdfvtt9fS0tJmr0UIQYcWTU1NbbgeGxurn376aZO2IY2gQ4u2bdu24XpoaKguXry4SduQRtABQgg6QAhBBwjh79ChJV988cUf7n300Uet70EuT+gAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QYapqm2ewlAPjrPKEDhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhBB0gBCCDhBC0AFCCDpACEEHCCHoACEEHSCEoAOEEHSAEIIOEELQAUIIOkAIQQcIIegAIQQdIISgA4QQdIAQgg4QQtABQgg6QAhBBwgh6AAhBB0ghKADhPg7fcjbQcDz5T4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "diagram = (Word('the', N << N) @ Word('book', N) >>\n", " Id(N) @ Cup(N.l, N))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (determiner rule)')\n", "draw(Rewriter(['determiner'])(diagram))\n", "print('↓ normal form')\n", "draw(rewriter(diagram).normal_form())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adverb rules" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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flc2DwgKYREok5KSlJ2drZUrV/rD4/jx47V9+3bt3bvXHzIfffRRbdq0STNnztSOHTtUXV2tt99+m4ty+oC4uDjde++9mjt3rtatW6ePP/5YpaWlcjgcsixLmZmZuv322/XAAw9o48aN2rlzp2bMmKHU1FTdfvvtdpcPwEC/fv1UWlqquXPnqqysTB999JFKSkrkcPz/t8CbbrpJixcvVlVVlbZt26YHH3yw0yOKM2fO1PHjx3XXXXdp27Ztqq6u1ooVK7Rnz542yw0aNEhlZWX65JNPNH369HYv2mk1ceJExcfH65e//KV++MMfmm840IvCIlBKZ8+j9Hq9/kDZv39/jRo1SoMHD/afJ5Odna2Kigrt3btXBQUFGjt2rJ544gn/hRkIb88995yuv/563XbbbZowYYLy8/M1cuRI/8VYS5cuVU5Ojm677TZdf/318vl8+te//tXpmwqA0PDss8+qoKBAkydP1oQJE3TjjTcqJyfHP3/hwoVKT09XQUGB7r77bs2ZM0cxMTEdrm/AgAEqKytTQ0ODCgsLlZOToyVLlrTbXwwePFhlZWX68MMPdc899/i/5u58DodDJSUl8nq9Ki4uNt9ooBdZvvNPGgkS27dvV05OjiorK4PiPrzBVk9PCudt60xjY6NSU1O1cOFClZaW2l2OLcL5fx/O24aeUVRUpDFjxuj555+3uxS/0tJSff3111q1apXdpSDIBHufFhYX5QBdUVVVpU8++UTjxo1TfX29nnrqKUniI20Atquvr9eHH36o1157jTCJkESgRJ+yYMEC7dmzR5GRkcrJydGGDRu4Ny8A291+++364IMP9OCDD+qWW26xuxzgkgV9oAyW7wAMljoCqS9s45IlS9o8bm5uNrpbRqjrC//zvrCN6J7nnntOkoKiD2itRQqOehB8gr0vC9pAmZycrJiYGP89uINBTExMWB7NCsa2Ru/heQ0AoSGY++ugvShHkmpqanTkyBGjdbz++utatGiR/+4DJpKTk8P2C9B7oq3/+Mc/6p133tE777zTQ1WhI08//bSqq6v1yiuvGK+L53XnWm/VGkwXboSr4uJiZWZm6vHHH7e7lLA3adIkTZo0SQ899JDdpYS96667TrNnz77o3ZK6Ipj766A9QimdvXuNacNt2rRJDocjKK+ICiY90dYpKSlyu920dS9ITk7WF198QVtf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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (postadverb rule)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cod = (N >> S) >> (N >> S)\n", "diagram = (Word('we', N) @ Word('go', N >> S) @ Word('quickly', cod) >>\n", " Diagram.cups(cod[:3].l, cod[:3]) @ Id(S))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (postadverb rule)')\n", "draw(Rewriter(['postadverb'])(diagram))\n", "print('↓ normal form')\n", "draw(rewriter(diagram).normal_form())" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (preadverb rule)\n" ] }, { "data": { "image/png": "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uvHGG5u8/qmnntJll13WJtngvqKjo/Xqq68qKytLGRkZKiwstDqSxzAMQ6tXr9agQYNUWVmpN954Q3a73epY8CAeXyglqVevXsrJydGoUaM0bdo0DRs2TB988IF++uknq6N1Wjt37tQjjzyigQMHaufOncrKytLvf/97q2PBTcTGxurQoUO69NJLrY6CTmbcuHH697//raNHjyo1NVX33HOPCgoKZBiG1dE6paqqKq1du1ajR4/WhAkTlJqaqry8PMXGxlodDR6mSxRK6ZfvIl2xYoWys7NVXV2tcePGKTw8XLfeequysrJ0+vRpqyO6tbq6Ou3YsUPz5s3TwIEDNXDgQC1evFhz587Vzp07deONN/L2FFzsdrv69Okjb2+P36sG7WDEiBHavn27FixYoLffflupqalKSEjQY489pry8PNXW1lod0a399NNPWrt2raZNm6aIiAhdd911OnjwoD766CN9+OGH6tevn9UR4YG6TKE8KyMjQ7m5uSouLtbDDz+sHTt2aPz48QoICFB8fLzGjRunJ554Qu+++6527dqlmpoaqyN3uNLSUn322Wd64YUXNGPGDA0dOlSBgYFyOBzKzMxUamqqPvzwQ5WUlOjpp5+Wv7+/1ZHRxioqKjRlyhT17NlTkZGRyszMlNPp1Jw5cyT9sivJ+ccBDA4Odh2TrrG3vL/++mtdf/31CgwMVEBAgNLT07V3795Gf/5XX32l3r1765lnnmlw3aZNm+Tj46PDhw/Xmz9nzhylp6e3+jnDvfj6+mru3Lk6fPiwPv30UzmdTr3yyisaPHiwaxemO++8U88995zWrVunw4cPd7mtmHV1dfr222+VlZWl+fPn6+abb1ZiYqJ69uyp6667Tlu2bNE999yjbdu2uf7/gPbSZTcfDBgwQI8//rgef/xx7d69W59//rmKiopUVFSkV155RUeOHJEkdevWTcnJyXI4HIqPj1evXr2anLp162bxs2paXV2dTp48qePHjzeYysrKVFJSoh07dqioqEiHDh2S9MuAfva533TTTRo0aJCGDx+u7t27W/xs0N7mzp2rjRs36sMPP1R4eLj+9Kc/KT8/v9X7Mf7www8aPny4nE6nNmzYoMDAQG3durXRF2wbNmzQ+PHjtXDhwkZ3oxg+fLguueQSvfnmm5o7d64kqbq6WitXrtTChQtblQ/uy8fHR6NG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAADiCAYAAADwK1fJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAY7UlEQVR4nO3de1BU993H8c9yFVZABCxy0fFCyJpRUIz1UgLeGjVmtBptrY4SsZNkxrH2Ym3/SJtk4jjNE5tMapqZGBHH6DSNo8Y6pokjrpdEjSAQaxTRmiItmahBQIFw2+ePDFtRRODnchZ4v2Z22BvLd/F4znv37C42l8vlEgAAANBJPlYPAAAAgO6NoAQAAIARghIAAABGCEoAAAAYISgBAABghKAEAACAEYISAAAARghKAAAAGCEoAQAAYISgBAAAgBGCEgAAAEYISgAAABghKAEAAGCEoAQAAIARghIAAABGCEoAAAAYISgBAABghKAEAACAEYISAAAARghKAAAAGCEoAQAAYISgBAAAgBGCEgAAAEYISgAAABghKAEAAGDEz+oB2lJSUqJr165ZPQbgMZGRkRo0aJDVY3RbPW0dwfJgpqctD8CdvHkd4bVBWVJSIofDoerqaqtHATwmODhY586d89oVhDfriesIlofO64nLA3Anb15HeG1QXrt2TdXV1Xr33XflcDisHgd44M6dO6clS5bo2rVrXrly8HY9bR3B8mCmpy0PwJ28fR3htUHZzOFwaMyYMVaPAcBLsY7A7VgeAGvwphwAAAAYISgBAABghKAEAACAEYKyF/ryyy9ls9lUUFDQrutnZGRo7ty597z8hRdeUHJy8gOZDQAAdD9e/6YcPHjx8fEqKytTZGSk1aMAAIAegKDshXx9fRUdHW31GAAAoIdgl3c3dOvWLS1dulR9+/bVwIEDtWHDBqWnp2v16tWSJJvNpj179rT4nn79+ik7O1tS67u8z549q9mzZys0NFQhISFKTU3VpUuXWv35p06dUlRUlP74xz/eddmRI0fk7++vr776qsX5q1evVmpqaqfvM+Ap+/btU79+/dTY2ChJKigokM1m029/+1v3dVasWKElS5ZIko4dO6bU1FQFBQUpPj5eq1at0q1btyyZHfC0qqoqLV68WHa7XQMHDtRrr73WYntTXl6upUuXKjw8XMHBwZo5c6aKi4utHRqW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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "diagram = ((Word('we', N) @ Word('quickly', (N >> S) << (N >> S)) @\n", " Word('go', N >> S)) >>\n", " Cup(N, N.r) @ Id(S) @ Diagram.cups((N >> S).l, N >> S))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (preadverb rule)')\n", "draw(Rewriter(['preadverb'])(diagram))\n", "print('↓ normal form')\n", "draw(rewriter(diagram).normal_form())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepositional phrase rule" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAChCAYAAAB55y8LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAZM0lEQVR4nO3deXDU9f3H8dc32RxssuTiSiThqDk2sCAElZRKI9iCjC1oRetgKYWJQzUqg3hNvbAtOlYNVEar0AL1plZtWpGRoZLKIQhWiRghUjGgEQkmhLACOb6/P5jsLyGHJN9svrvZ52PmO3t893jvJ9/v5/v6fna/3ximaZoCAAAAuijM7gIAAAAQ3AiUAAAAsIRACQAAAEsIlAAAALCEQAkAAABLCJQAAACwhEAJAAAASwiUAAAAsIRACQAAAEsIlAAAALCEQAkAAABLCJQAAACwhEAJAAAASwiUAAAAsIRACQAAAEsIlAAAALCEQAkAAABLCJQAAACwhEAJAAAASxx2F9CR8vJyVVZW9tj79evXT2lpaT32fl3R022C1oJhOZFYVgAEt2Doa8kp/y9gA2V5ebncbre8Xm+PvafT6VRpaWnA/rHsaBO0FujLicSyAiD4BXpfS05pKWADZWVlpbxer5577jm53W6/v19paamuv/56VVZWBuQfSur5NkFrwbCcSCwrAIJbMPS1zfvZwsJCZWRkaNGiRd32+kVFRXrsscdUXFwsKfDbJGADZRO3262xY8ee8+PnzJmj6upqvf766/4rymadbROELpYVdIe8vDxdcMEFWrp0qd2lAAHH7XYrNjZWAwYM6Nb+dvfu3QoPDw+aPpyDcgAAAGAJgRJ+cfz4cc2aNUsxMTFKTk5WYWGh8vLytGDBAklSVVWVZs+erYSEBDmdTl1++eUqKyuzt2gArcyZM0fFxcVatmyZDMOQYRg6cOCAiouLddFFFykqKkrJycm66667VF9fb3e5gG3q6+tVUFCguLg49evXT/fee69M05QknTp1SosWLdJ5552nmJgYXXzxxdq0aVOL569evVppaWlyOp268sordfToURs+RdcRKOEXCxcu1JYtW1RUVKQNGzbonXfe0fvvv++bP2fOHO3cuVNFRUXatm2bTNPUtGnTVFdXZ2PVAM62bNky5ebmKj8/XxUVFaqoqFBERISmTZumCy+8UB9++KGe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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (prepositional phrase rule)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cod = (N >> S) >> (N >> S << N)\n", "diagram = ((Word('I', N) @ Word('go', N >> S) @ Word('to', cod) @\n", " Word('bed', N)) >>\n", " Diagram.cups(cod[:3].l, cod[:3]) @ Id(S) @ Cup(N.l, N))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (prepositional phrase rule)')\n", "draw(Rewriter(['prepositional_phrase'])(diagram))\n", "print('↓ normal form')\n", "draw(rewriter(diagram).normal_form())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Relative Pronoun rules" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAACACAYAAAC1F/mYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAapklEQVR4nO3dfVRT9/0H8HcCQQmER3moIqAtgYABN2xXoVVWdNVuaKfFFrQ+1KqnE516cM6f0lq1tXbWh6o7bdFV3EOtWF13aj0+VVDBOUAUkYhVB6ijVRAEBAXC/f3h4R7SoAIXuCG8X+fkkISb5JNv7vebd76590YhCIIAIiIiIqIOUspdABERERH1bAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSS2chfwKCUlJSgrK+u2x+vXrx98fX277fE6orvbhIg6jmMKUcex/5iz5Dax2EBZUlICnU6H2trabntMtVoNg8FgsS+WHG1CRB3HMYWo49h/zFlym1hsoCwrK0NtbS3+9re/QafTdfnjGQwGTJkyBWVlZRb5QgHd3ybUMbNnz4ZWq0ViYiIAIDs7G3PmzEFaWho0Gk2H7/c3v/kN4uPjER8f31mlUhfimEItvfPOO6iursb69evlLqVHYP8xZ+ltYrGBsplOp8PPf/5zucuwKGwTy+bo6AhPT0/xNaqqqgIAhIWFwcXFpcP3a2dnBx8fH7721Ok4pnQ9d3d32NjYsJ2t0OP6T319Pezs7LqxInlY5E45TU1NSElJAQA8++yz8PX1xXvvvQcAOH/+PF544QXY29vD3d0ds2fPRk1NDQAgPz8fSqUSt27dAgDcvn0bSqUSr732mnjfq1evxnPPPQcAqKiowOTJk+Hh4YGIiAgAwL/+9a9ue55kfaZPn4709HRs2rQJCoUCCoUCRUVFAICcnBwMGzYMarUaERERKCwsFG935coVjB8/Hl5eXnB0dMTTTz+NI0eOiP+PiopCcXExFi5cKN4vEXWfpqYmrFmzBoMGDYK9vT3CwsKwZ88eAIDRaMTMmTPF/wUGBmLTpk3ibVesWIGUlBR8/fXX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nkJQUJBFz6aS9RkwYAAGDBhgchilhoYGFBYW4vvvv8ft27db7T/Xr183udzWzdja856sUqnM+snAgQMRGhpqcr27uzuCgoIwePBgi55N7Q69KlC2xsbGBgEBAQgICGjT8oIgoLa2Vvx03zzT+NNPPEajUfw01HJ24aezDU5OTnBzc4OjoyMUCkUXP1si6mpKpRKDBw/G4MGD27S8IAioq6tDRUUFKisrzcaUluNK85jy03Gk5XmNRgM3NzdoNBqOKdTjqFQqDBkyBEOGDGnT8oIgoLq6WvwWr7X34ubLzd8attZvmmc2nZ2d4erqCrVazf7TTr0+ULaXQqGAg4MDHBwcrH57CCLqegqFAmq1Gmq1mpusELWTQqGAk5MTnJyc5C6l17PKvbyJiIiIqPswUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEQkio6ORkFBAQRBkLsUoh4lJycHw4cPh6urq9ylEMmCgZKIRKNGjcKnn36K8PBwJCcno6amRu6SiCyW0WjEt99+i3HjxmHGjBnw9vbGU089JXdZRLJQCJyKoF7o1KlTiIiIQH5+PkJCQuQux6IcOnQImzdvxv79+9G3b1/87Gc/Q3h4uHgKCgqCra2t3GUSdStBEFBSUoKcnByTU1lZGYYOHYq33noL06dPh52dndylEsmCgZJ6JQbKxysuLsZXX32F7Oxs5OTk4NKlSwAAe3t7DB06FEFBQfDx8cHAgQNN/jo7O0OhUMhcPVH71dXV4fr167h+/TquXbsm/r169SrOnDmDsrIyAIC3tzfCw8MxbNgwjB07Fs888wzXeer1GCipV2KgbL87d+4gNzdXnJm5evUqrl27htLSUpNtLh0dHcWAOWDAALi5ucHZ2RnOzs5wcXERz//0pFKpZHx2ZE2MRiOqq6tx584d8VRZWWlyufm6//3vf2JwLC8vN7kfd3d3+Pj4wM/Pz2Smvn///jI9MyLLxUBJvRIDZedpaGhAaWlpqzM7N27cQEVFhfgGXldX99D7sbe3f2jYbHnSaDTo06cP7OzsoFKpYGdnZ3b+Uf9TqVRQqVScUepGgiDAaDSivr4eDQ0NqK+vF08tLz/sfPPlmpoas1DY2qm6uvqhtahUKpP1qX///q3OtPv4+MDe3r4bW4moZ+OGUEQkiUqlgq+vL3x9fR+7bH19fZsCQfPsUWVlJYqLi02uv3fvXqfV/bjg2daA2nze1tYWCoUCSqUSCoXisae2LNdyGbVajdraWgiCYHZqampq9fr2LtPY2PjYYNfWANjyfGfMXdja2pp9wHBxcUFAQMBjP4g0z4737duXHyaIugADJRF1Gzs7O3h4eMDDw6PD99HY2NjmYNMV5+vq6h66THNwelR4e1Soe9z/hg8fjlOnTrUpkHb0f7a2to8Nzmq1ul1BuzPOc2aZyLIxUBJRj2Jra8u9zImILAyPQ0lEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkCkEQBLmLICIiIqKeizOURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUnCQElEREREkjBQEhEREZEkDJREREREJAkDJRERERFJwkBJRERERJIwUBIRERGRJAyURERERCQJAyURERERScJASURERESSMFASERERkSQMlEREREQkCQMlEREREUny/7BzPZG2nhceAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (subject relative pronoun rule)\n" ] }, { "data": { "image/png": "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eXl5mDZtGrp27Yoffvih3mEnTpyIiRMnWp4PHDiQtxMih5Ofn4+UlBR88MEH8PX1RadOncQuiUgUDJREZLFmzRoEBgZi9erVWLVqFXr16oV+/fohKioKUVFR6NSpE+RyHtggx5WXl4cjR47g8OHD+P333/Hvf/8bCoUCY8eOxdKlS9lCSQ5LJrBJgRzQwYMH0adPH5w8eRLh4eFilyM51dXV+Pbbb7F582YcPnwY2dnZAAAvLy88/vjjiIqKQpcuXRAYGIj27dsjMDAQnp6eIldN9HBUVVUhNzcXubm5uHTpEi5cuIAjR47gyJEjuHz5MgDAx8cHUVFRGDp0KCZMmABfX1+RqyYSFwMlOSQGysYpKCiwbFBrW2cuXbpkdYjb09PTKmC2b98e7dq1g6+vL7y8vODl5QVvb29Lv7Ozs4hTRI7EaDSirKwMpaWlVo+SkhJcuXLFEhxru9evX7f6vEajQWRkJKKiotCjRw9ERUUhODgYMplMpCkikh4GSnJIDJT2q66urrMxvnvDnJeX1+B5lSqVyhIuG/Pw8PCAi4sLnJ2doVQq4ezsbOlXKBTcyDdzZrMZ1dXVqKmpQXV1teVRU1ODmzdv1gmFtjxu3rzZ4Ph8fHzq7AgFBgZa7RS5u7s34Rwgap54DiURPRBnZ2cEBwcjODi4wWGMRqNNG/ySkhJLf25urtV75eXlNtckk8msAub9+h/2cE5OTpDJZJDL5ZDJZPd92DLcncPI5XKYzWYIglDn0dDrjR3GaDRahbn6gt39+u0ZzmQyNWoZrG+no23btjbvoKhUKpvHR0QNY6AkokfGyckJGo0GGo3mgb+jpqbG6nDljRs3bA4stoacqqoqy/c25rubWp8+fZCWltbk43VycnqggO3u7t7ozzQ0HqVSCTc3N4ZBIolioCQiSVMqlXaH0kehtjXvzoBZU1Nz39bAe7US3u89mUwGQRBsauF80PecnJyswpxSqeSV/UR0XwyUREQPQCaTWQIXbxVDRI6Ou51EREREZBcGSiIiIiKyCwMlEREREdmFgZKIiIiI7MJASURERER2YaAkIiIiIrswUBIRERGRXRgoiYiIiMguDJREREREZBcGSiIiIiKyCwMlEREREdmFgZKIiIiI7MJASURERER2YaAkIiIiIrswUBIRERGRXRgoiYiIiMguDJREREREZBcGSiIiIiKyCwMlEREREdmFgZKIiIiI7MJASURERER2YaAkIiIiIrswUBIRERGRXRgoiYiIiMguDJREREREZBeZIAiC2EUQNbUbN24gIyMD3bt3h6urq9jlEBERNWsMlERERERkFx7yJiIiIiK7MFASERERkV0YKImIiIjILgyURERERGQXBkoiIiIisgsDJRERERHZhYGSiIiIiOzCQElEREREdmGgJCIiIiK7MFASERERkV0YKImIiIjILgyURERERGQXBkoiIiIisgsDJRERERHZhYGSiIiIiOzCQElEREREdmGgJCIiIiK7MFASERERkV0YKImIiIjILgyURERERGSX/wdhyJ8mlwjz9AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cows = Word('cows', N)\n", "that_subj = Word('that', N.r @ N @ S.l @ N)\n", "that_obj = Word('that', N.r @ N @ N.l.l @ S.l)\n", "eat = Word('eat', N >> S << N)\n", "grass = Word('grass', N)\n", "\n", "rewriter = Rewriter(['subject_rel_pronoun'])\n", "\n", "diagram = Id().tensor(cows, that_subj, eat, grass)\n", "diagram >>= Cup(N, N.r) @ Id(N) @ Diagram.cups(S.l @ N, N.r @ S) @ Cup(N.l, N)\n", "\n", "draw(diagram)\n", "print('↓ rewriting (subject relative pronoun rule)')\n", "draw(Rewriter(['subject_rel_pronoun'])(diagram))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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aRkGGlJGRkaNx6BnZGQoPj5eAQEB7nEJCQlyuVzuQzUGDx7s/ooyOTlZQ4YM0aBBg5SUlKT9+/erpKTEfejSb37zG61fv1733nuvpPJDkNC8/ec//9GlS5d00003yeFwuId33nnH/fn6+9//Xv369VNYWJgcDodWrFhBn9aCeVSgvFqXd3KS9Pnnn2vMmDEaPny4PvroI6WmpurZZ5+t1FnOnTtXX375pW677Tbt2LFDvXr10ubNmyWVf93z4YcfSipfSfr37+/+agZoKBWHWEhyHwNZcQzb7NmztXnzZi1cuFC7d+/WwYMH5XQ6OekMjaZt27ampk9MTFR6err+/e9/Kz09XTfccIMSExOVlJSk5ORk9/HCknTrrbcqKytL9913n6TygDl79mzT8wDrVBxPu2XLFh08eNA9pKena9OmTVq/fr1mz56tyZMna+vWrTp48KAmTpxIn9aCeVSgvOaaa+Tj46P9+/e7x+Xn5+vYsWO1Trd3715FR0fr2WefVf/+/dW9e3dlZWVVeV6PHj00a9Ysbd26VaNGjap0UHhERISk8uMzH3vsMa1cubKB5gqtja+vr8rKyuo0zZ49ezRhwgT96le/ktPpVEREhPtkHjOvC9Ske/fuatOmTbWPxcbG6tChQ7p48aJ73J49e2S3293fGDmdToWEhGjBggXq06ePHA6HEhMTlZycrKSkJPfxkxXCwsI0YsQISdJjjz2mFStWNM6MoUn06tVLbdq0UXZ2trp161Zp6Ny5s/bs2aOBAwdq+vTp6tu3r7p161bpm0GJPq2l8ahAGRgYqPHjx+vxxx93h8r58+fLbrfXelZr9+7dlZ2drfXr1yszM1Nvv/22e++jJBUUFGjGjBlKSkpSVlaW9uzZo/3797svWDtz5kzt3btXUvlXPTt37uRitqi3mJgY7du3T998841Onz7t3gtZm+7du+u9997TwYMHdejQId13331VpouJidGuXbv03Xff8ZNwMM3Pz08TJkyQJH300UfKzMzUv/71L/3xj3/UmDFj5Ofnp/Hjx+vIkSPauXOnHn74YY0bN07h4eGSyveyDxo0yH0lDqn8sI6ioiJt375dgwcPdr/X888/rw8++EA5OTmSyk/ioY9t3gIDAzV79mzNmjVLa9euVWZmpr744gstWbJEa9euVffu3XXgwAF98sknOnbsmObMmVNpZ5FU3qcdPnxYR48e1enTpytdmQXNj0cFSkl64403dP3117sv4xMfH6/Y2Fj5+fnVOM3tt9+uWbNmacaMGerTp4/27t3rPvtbkry8vHTmzBndf//96tGjh0aPHq1bb71V8+bNk1R+eYNXXnlFkvTwww+rR48eWrZsWePNJFq02bNny8vLS7169VJYWNhVHTP0xhtvKCQkRAMHDtSIESM0bNiwKhdUfvHFF/XNN9+oa9euCgsLa6zy0YpMmTJFUvmx47Gxsbrnnnt06tQp+fv765NPPtHZs2c1YMAA3XXXXRo6dKj7rPAKgwcPVllZmTtQ2u12DRo0SDabzX38pFS+J+rpp5/WPffc437e+vXrm2Ym0Wjmz5+vOXPmaNGiRYqNjdUtt9yiLVu2qEuXLpo2bZpGjRqle+65R9ddd53OnDmj6dOnV5p+6tSp6tmzp/r376+wsDDt2bPHojlBg7D6rKCaVJzN9Nlnnxnt2rUzVq1a1STv56lnTxlG86gRQLnmsL42dY3NoU0Mo/nUidbF05dLj/vpxdTUVH311Vfug7kfffRRlZWVKSYmpsr1KBtSRkZGo712Q2tOtQKtVXNaT5uq1ubUJlLzqxctm6cvjx4XKKXyE2O++uorSeW/LiJJN954Y6O/r7+/v0dfbDc0NFT+/v4aO3as1aUAuAr0KVV5eptI9LXwXJ68/tgMwzCsLqIm2dnZdT75YOrUqQoPD9eCBQvq/H6hoaGKioqq83RNqT5tsnLlSm3cuFFbt25tpKqan8OHD2vixIl699131bVrV6vL8RgJCQmaMWOG+3qBkPt47rfeeqvO07bUPuVvf/ubli5dWq9j3ppDm0h1b5fMzEyNHj1aq1evrnTN2dbu5ptv1t13362pU6daXYrHeO6553Ty5Ml6XU3Gk9cfj9xDWSEqKqrODRcYGKgOHTpUOaGhpahPm3Tq1Ek+Pj4ttk3qo6ioSFL5pS/i4uIsrsZz2O12de7cmWXlMsHBwZLUYtukPn3KZ599Jrvd3mLbRKp7u1Rcgqlnz54tul3qysfHR506daJNLtOhQwddunSpxbWJx53lDaB5mzBhgkaOHFnj42vWrHGHtJYuKSlJNptN58+ft7oUAC3IlfpZKxAoAQAAYAqBEvXCz2cBQOOjr0Vz0SoCZWJioh555BE98cQTat++vSIiIjR37lyry7JUXdukYvf6Sy+9pE6dOrl/fq0lYTmpHu1S1aZNm+R0OtW2bVt16NBBN954Y6WfKWyNWE6qR19bFetPVS1h/WkVgVKS1q5dq4CAAO3bt0+vvvqqXnzxRX366adWl2WpurbJ9u3bdfToUX366af66KOPmrDSpsNyUj3a5QfHjx/Xvffeq0mTJikjI0NJSUkaNWqUPPiCGU2G5aR69LU/YP2pWXNffzz6LO+G1Lt3b73wwguSyn83eenSpdq+fbtuuukmiyuzTl3bJCAgQKtWrZKvr29TltmkWE6qR7v84Pjx4yotLdWoUaMUHR0tSXI6nRZX5RlYTqpHX/sD1p+aNff1p9XsofzxdcE6duyoU6dOWVSNZ6hrmzidzhbZwV2O5aR6tMsP4uPjNXToUDmdTt19991auXKlzp07Z3VZHoHlpHr0tT9g/alZc19/Wk2g9PHxqXTfZrPJ5XJZVI1nqGubBAQENHZJlmM5qR7t8gMvLy99+umn+uc//6levXppyZIl6tmzp77++murS7Mcy0n16Gt/wPpTs+a+/rSaQAkADcVmsykhIUHz5s1TamqqfH19tXnzZqvLApoF1p+WiUCJat1///16+umnrS4DzcCVlpWlS5dq6NChTVhR49q3b58WLlyoAwcOKDs7W++9956+//57xcbGavPmzfrZz35mdYloRlpbX1vb+oOaNYflpNWclIO6yc7Olt3O9gau7ErLyunTp5WZmdmEFTWuoKAg7dq1S2+99Zby8vIUHR2t119/XbfeeqvWrFmjo0ePWl0impHW1tfWtv6gZs1hObEZLexc/WnTpunUqVPsPr/MrFmzlJGRoY8//tjqUjzG559/roEDB+rIkSP8lvdlAgICtGjRIj3yyCNWl+Ixbr/9dknShx9+aHElnmPDhg168sknlZaWpsDAQKvL8Qg7duzQtGnT9Pe//5291Jfp2LGjpk+frjlz5lhdiscYN26ccnJylJSUZHUpDcqz4249xMfH6/333yc8/b/09HQtX76cDg5AgxkwYIBOnTqlxx9/3OpSPEJJSYmeeuopGYahLl26WF0OYIkWFygffPBBDRs2THfeeacWLVqkoqIiq0uyhMvl0p/+9CcNHjxYXbp00cKFC60uCUALcc011+jNN9/UH/7wB40ePVrffvut1SVZJiUlRTfccINSU1O1bt06tWnTxuqSAEu0uEBp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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (object relative pronoun rule)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAC7CAYAAADbqg72AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAqPUlEQVR4nO3de1hUdf4H8PdcmAEGhxkwURDBC964qcN6gxLF1txNM9bK1MTK9eHR3S6mtv5aBa00XZV2s23b3FZyt3XJssxLZSpravEgWoEiiaaYmYgMF7kNzMzvDx9OILfBMzNnGN6v5znPnDmXmc8Xzsx5z/fMOSOzWq1WEBERERHdIbnUBRARERFR18ZASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJopS6gPYUFRWhpKTE7o/bs2dP9OvXz+6PS0REzuHu+wdHtY+6NlfZPlvjsoGyqKgIw4YNQ3V1td0f29vbG/n5+S77TyEicobc3Fx88MEHKCsrg06nQ2JiIiIjI6Uuq0Puvn9wZPuoa3OF7bMtLhsoS0pKUF1djX/9618YNmyY3R43Pz8fc+fORUlJiUv+Q4iIHK2wsBBJSUk4fvw4FAoF5HI5LBYLUlNTERsbi23btmHQoEFSl9kmd98/OKp97iYlJQWVlZXYvHmz1KU4hatsn21x2UDZaNiwYRg1alSzaSaTCSqVSqKKiIi6rsLCQowZMwbl5eUAALPZDLPZLMz/6quvMGbMGGRlZbl0qARa3z+4E3dvn1j+/v5QKBT8G7kIlzgpp7KyEnPmzIFGo0GfPn2QlpaGhQsXCvNDQ0Px4osvYt68edBqtcK8559/HoMHD4a3tzcGDBiAlStXor6+Xljvm2++wcSJE9GjRw9otVoYDAacOXMGAHD16lVMmzYNer0eGo0G4eHh2Ldvn3MbTkTkZElJSSgvL28WIpsym80oLy/H/PnznVtYOywWCzZs2IBBgwZBrVbjV7/6lTAvNzcXkyZNgpeXF/z9/bFw4ULcvHkTAJCXlwe5XI7r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fft2WK3WdtcpKirC1atXnVRh51itVnzyyScYM2YM5s+fj0ceeQQLFy7s1GN01L6SkhKcP39ebKlEROQkMmtHezYiB1uxYgUyMjLcPkB88803SElJwUcffQR/f38YDIZmQ0hICGQymdRltnDt2jXk5OQgJycHJ06cQE5ODq5cuYJx48bhxRdfxKRJk1yybnuZPn06AGD37t0SV0JE7katViMtLQ2LFi2SuhTReGFzIieJjo7Ghx9+iJycHOzZswc5OTlIT0/HunXrAEAImYMHD4Zer2938Pb2FhXiamtrYTQa2x2+//57ITwCgF6vh8FgwNy5czF58mQkJCS4dZAkIiLbMVASOVljj2Sjq1evCj2AOTk5OHToEEpLS1FWVoba2tpWH0Mmk0GpVEIulzeb1sjDw0P4vmbjQYjG24aGhjZPEFKr1fD19YVer0dwcDDmzp2LmJgYGAwGhIaGMkASEVGrGCiJJGK1WnHhwoVmh5NPnjyJsrKyVpf38fGBRqOBl5cXVCpVs0B5e9BrGigbnwsALBYLzGYzTCYTamtrUVVVhcrKSmF+XV0diouLUVxcjMuXL6O6urrZMHToUCgUCgf8NYiIqCtjoCRyopqaGrz11lvYvXs3Tp48CaPRCADo27cvYmJi8NxzzwmHvP38/IRD3Fqt1mFBzmKxoLKyss1D3p988glee+01AIC3tzdGjBiByZMn4+mnn4afn59DaiIioq6FgZLICerq6rB161asXbsW165dw9SpU7FkyRLh8HevXr0kq00ul8PX1xe+vr4IDQ1tdZny8nKcPHlS6EnduHEjXn31VTz77LN45plnoNPpnFozERG5FgZKIgezWq34zW9+g3379mHOnDlYtWoVwsLCpC6rU3x9fTFx4kRMnDgRwK0zvzds2ID169cjIyMDJ06cgLe3t8RVEhGRVHgdSiIH+/e//429e/fio48+wvbt27tcmGxNQEAANm3ahOzsbHz//fd46aWXpC6JiIgkxEBJ5GBXrlzBjBkzMG3aNKlLsbuIiAg88cQTKC8vl7oUIiKSEA95EzlYUVERLl26JHUZDlNRUYHLly9LXQYREUmIPZREREREJAoDJRERERGJwkBJ1AXMnz8fM2bMaHP+tm3buvSlezpqHxERuTYGSiIiIiIShYGSiIiIiEThWd5EEoiPj0dUVBQ8PT2xdetWqFQqJCcnIzU1VerS7MLd20dERM2xh5JIIunp6dBoNMjKysKGDRuwZs0aHDhwQOqy7Mbd20dERD9joCSSSFRUFFJSUhAWFoZ58+YhJiYGBw8elLosu3H39hER0c8YKIkkEhUV1ex+nz59UFxcLFE19ufu7SMiop/xO5REEvHw8Gh2XyaTwWKxSFTNnevbty8aGhpaTHeX9vXs2RM+Pj5Sl0FE5NLYQ0lEomi1WnzwwQc4ffq01KXY3fnz55GRkQGNRiN1KURELo2BksgFzZs3DytWrGhz/pYtW5CQkODEitr2zDPPICwsDHfffTfWrVuHmzdvdrhOR+2TWk1NDTZv3oxx48YhICDApWslInIFPORN5IKKioogl7f9ea+kpATnz593YkVt8/LywoEDB/Dyyy8jJSUFaWlpUKvV8Pb2xvnz5zFgwADIZLJm63TUPmezWq24dOkScnJykJ2djXfeeQfFxcV4/PHHsXLlSmi1WqlLJCJyaTKr1WqVugjq3lasWIGMjAyXCUj2tnjxYnz55Zc4efKk1KU4XFFREdauXYt9+/bh8uXLAACdTodRo0YhJiYGBoMBgwYNgl6vh16vh1ardVqwtFqtqKiogNFohNFoxIULF3DixAnk5OQgJycHpaWlAIDAwEBMmTIFL7zwAgYOHOiU2oioe1Kr1UhLS8OiRYukLkU09lASkd3069cPf/vb3wAAxcXFOHnypBDa/vOf/2DDhg3NlpfL5dDpdELAbDrodDp4eHhAoVBAoVBAqVQK4wBgNpthNpvR0NAgjNfX16O8vFwIjbcPt58UFBgYiJiYGDz99NMwGAwwGAzo3bu3c/5YRERuhIGSiByiV69euO+++3DfffcJ04qLi3H58mWUlpa2GfpKSkpw7tw5lJeXo6GhoVlgbBxXq9VoaGhoETSVSiV8fX2h1+vh5+eHfv36tQiqfn5+0Ov16Nu3L8MjEZGdMFASkdP06tULvXr1kroMIiKyM9f5VjwRERERdUkMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlkRPU1dXBYrFIXQYREbmIuro6WK1WqcuwG6XUBRC5u1//+td44403MGTIEEyfPh2RkZGIjIzEsGHD4O3tLXV5RETkBOXl5cjLy0Nubi6+/fZbvP/++1AqlZg8ebLUpdkFAyWRg02dOhXHjh3DX//6V3z44YfYvHkzAEAmk2HQoEEYMGAA/P394efnB39//zbHfX19IZPJJG4NEREBgNlsRllZGW7cuIHS0lLcuHGj1fGSkhJ89913uHz5MgBAoVBgyJAheOihh7B48WIMHjxY4pbYBwMlkYPJZDKMGzcO48aNAwDcvHkTZ86cQW5uLnJzc3H58mVcuXIFubm5wptQXV1di8dRKBTw8/PrMHj6+fnB29sbarUanp6eUKvVLcY9PDwYTomo27FarTCZTKirq0NtbS3q6uqEofF+VVVVq+Hw9vtlZWWtHrLWaDQt3ptnz56NyMhIREREYOjQoVCr1RK03rEYKImczMfHB6NHj8bo0aNbnW+1WlFTU2PTG9q5c+fw1VdfCdNt/Z6mTCZrNWi2NW7rcp0dZ7glcn9NQ9ztQU7M+J2uYysPD48WH9zDw8M7/EDv6enpwL+m62KgJHIxMpkM3t7e8Pb2RnBwsM3rWSwWVFRUoLS0FDU1NXZ7Q66trUVZWZlN69xpe1sLmwqFAgqFAnK5vM3bO53nLuvLZDIhjDvq1t6PabVahfuNvTuOurX3Y1qtVpjNZlgslha3rU3rzDJSr2+v52hoaBAV4ppqfG+w5cOtp6cndDqdXT4Qe3t7w9/fHz4+Pvyw2wkMlERuQi6XQ6fTQafTSfL87fVC3ElPgtidY0NDA0wmkyQ7V57R3zZ/f3/cuHFD6jJcmtQfYlQq1R2vr1Qq7XbkQ6lUMtB1IQyURGQXTXsau7vG3ixH9xY1BteOetU6WsaZt005unfV3rfOCHRyOa/mR10TAyURkZ01Hopu7LEhInJ3/ChERERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYkis1qtVqmLoO7NbDbDarVCqVRKXQoRERHdAQZKIiIiIhKFh7yJiIiISBQGSiIiIiIShYGSiIiIiERhoCQiIiIiURgoiYiIiEgUBkoiIiIiEoWBkoiIiIhEYaAkIiIiIlEYKImIiIhIFAZKIiIiIhKFgZKIiIiIRGGgJCIiIiJRGCiJiIiISBQGSiIiIiIShYGSiIiIiERhoCQiIiIiURgoiYiIiEgUBkoiIiIiEoWBkoiIiIhEYaAkIiIiIlEYKImIiIhIFAZKIiIiIhLl/wGvRvd/pp36WQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "diagram = Id().tensor(grass, that_obj, cows, eat)\n", "diagram >>= Cup(N, N.r) @ Id(N) @ Id(N.l.l @ S.l) @ Cup(N, N.r) @ Id(S @ N.l)\n", "diagram >>= Id(N) @ Diagram.cups(N.l.l @ S.l, S @ N.l)\n", "\n", "draw(diagram)\n", "print('↓ rewriting (object relative pronoun rule)')\n", "draw(Rewriter(['object_rel_pronoun'])(diagram))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Coordination" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewriting (coordination rule)\n" ] }, { "data": { "image/png": "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V61apfhDzYmIXAUDJRHRY9LS0pCTk4OoqCgAD/+0rVKppDuwo6KikJOTg7S0NAWrJCJyLbyGkoioCUIIHDx4EAsXLoTVasUbb7yB8ePH45VXXuGfuYmInsBASUTUgtdeew0AsG/fPoUrISJyXfyTNxERERHJwo9lICJqgYcHj7uJiJ6FgZKIqAUtffY2ERE9xENvIiIiIpKFgZKIiIiIZGGgJCIiIiJZGCiJiIiISBYGSiIiIiKShYGSiIiIiGRhoCQiIiIiWfgcSiKiF5SQkIC4uDh4e3sjOzsbXl5eWLBgAdLS0pQujYioXfEMJRGRDNu3b4dOp8Px48exfv16pKenIz8/X+myiIjaFQMlEZEMcXFxWLVqFaKjo5GSkoKhQ4fi4MGDSpdFRNSuGCiJiGSIi4tzeN29e3fcunVLoWqIiJTBQElEJIOnp6fDa5VKxc//JqJOh4GSiIiIiGRhoCQiIiIiWRgoiYiIiEgWPoeSiOgFHT58+Kl5e/bsafc6iIiUxjOURERERCQLAyURERERycJASURERESyMFASERERkSwMlEREREQkCwMlEREREcnCQElEREREsjBQEhEREZEsDJREREREJAsDJRERERHJwkBJRERERLIwUBIRERGRLAyURERERCQLAyURERERycJASURERESyqIQQQukiiIhc1fHjxwEAI0aMULgSIiLXxUBJRERERLLwT95EREREJAsDJRERERHJwkBJRERERLIwUBIRERGRLAyURERERCQLAyURERERycJASURERESyMFASERERkSwMlEREREQkCwMlEREREcnCQElEREREsjBQEhEREZEsDJREREREJAsDJRERERHJwkBJRERERLIwUBIRERGRLAyURERERCQLAyURERERyfI/ivdTNygaXDUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "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LB5++OHo0qXLIb9Bp7S0NLp06RK//e1vxSRQ0AQlUPC6desWS5cujaqqqigqKjrgoes961RVVcWyZcuia9euzTQpQH4SlADx/1FZU1MTVVVVERF77bHcs3ziiSfG7bffHkuXLhWTAOEcSoC95HK5WLJkSdxzzz3xi1/8Inbt2hXDhw+Pbt26xYUXXhhDhw71BhyAtxCUAPtxzjnnRETEr3/964wnAchfDnkDAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkERQAgCQRFACAJBEUAIAkKQ06wEA8lm7du2yHgEg7wlKgP3YsWNH1iMA5D2HvAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASCIoAQBIIigBAEgiKAEASFKa9QAAhWLEiBFRXV0d7dq1ix/96EfRpk2bmDRpUkydOjXr0QCS2EMJ0Ixmz54d7du3j6VLl8aNN94Y3/rWt+KRRx7JeiyAJIISoBlVV1fHtddeG717946LLrooTj311HjssceyHgsgiaAEaEbV1dWNlrt27RobNmzIaBqApiEoAZpRWVlZo+WioqKor6/PaBqApiEoAQBIIigBAEgiKAEASOJzKAGayeOPP77Xdb/85S+bfQ6ApmYPJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJSrMeACCfffjDH856BIC8V5TL5XJZDwEAQMvlkDcAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEkEJQAASQQlAABJBCUAAEn+D1gB1Vu/tCkjAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "diagram = (Word('eggs', N) @ Word('and', N >> N << N)\n", " @ Word('ham', N) >> Cup(N, N.r) @ Id(N) @ Cup(N.l, N))\n", "\n", "draw(diagram)\n", "print('↓ rewriting (coordination rule)')\n", "draw(Rewriter(['coordination'])(diagram))\n", "print('↓ normal form')\n", "draw(Rewriter(['coordination'])(diagram).normal_form())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Remove cups" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ remove cups by bending wires\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAEFCAYAAABdHXdHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAV9UlEQVR4nO3debCVBf0/8PcVXLgI44IrA4QLiAoq5lg6NuaKJuKoqAyuuWSpZEEqOZoGCDK5lWO5xWjCiOUSbqlDkqIGCYKmhAQXFaMEtSEkWc/vD0d+Meo37YHz3HPP6/UX9z7Pc3gfhsvnfT/nPJeGSqVSCQAA/I82KjsAAAC1TaEEAKAQhRIAgEIUSgAAClEoAQAoRKEEAKAQhRIAgEIUSgAAClEoAQAoRKEEAKAQhRIAgEIUSgAAClEoAQAoRKEEAKAQhRIAgEIUSgAAClEoAQAoRKEEAKAQhRIAgEIUSgAAClEoAQAoRKEEAKAQhRIAgEIUSgAAClEoAQAoRKEEAKAQhRIAgEJalx2gDLNnz86iRYvKjgEA8Lk0NDTkgAMOSENDQ9lRPlXdFcrXX389vXr1yooVK8qOAgDwuY0fPz4nnXRS2TE+Vd0VysWLF2fFihV5+OGHs8suu5QdBwDg/3TPPfdkxIgR2X333cuO8pnqrlB+bKeddspuu+1WdgwAgM+0cuXKjB07Nv3798+ee+5ZdpzPVLeFEgCgubv77rszf/78PPzww2VH+T+5yxsAoBlauXJlhg8f3uy3k4kNJQBAs1Qr28nEhhIAoNmppe1kYkMJANDs1NJ2MrGhBABoVmptO5nYUAIANCu1tp1MbCgBAJqNWtxOJjaUAADNRi1uJxMbSgCAZqFWt5OJDSUAQLNQq9vJxIYSAKB0tbydTGwoAQBKV8vbycSGEgCgVLW+nUxsKIE6c/DBB2fvvffOjTfeWHYUgCS1v51MbCgBAErTEraTiQ0lAEBpWsJ2MrGhBOrY+++/n9NPPz1bbrllGhsbc9RRR2XOnDlJkiVLlqRNmzZ5/PHH17nmwQcfTLt27bJs2bIkyVtvvZWTTjopW2yxRbbaaqv069cv8+fPr/ZTAWpQS9lOJgolUMfOPPPMvPjii5kwYUJeeOGFVCqVHH300Vm5cmXat2+fY445JuPGjVvnmrFjx+a4445LY2NjVq5cmSOPPDLt2rXLs88+m+eeey6bb755+vTpkxUrVpT0rIBa8fF28sorryw7SmFe8gbq0pw5czJhwoQ899xzOeCAA5J8VBY7deqUhx56KP3798/AgQNz2mmnZdmyZWlsbMySJUvy6KOP5sEHH0ySjB8/PmvWrMkdd9yRhoaGJMmYMWOyxRZbZNKkSTniiCNKe35A89aStpOJQgnUqVmzZqV169bZf//9135u6623Tvfu3TNr1qwkydFHH52NN944EyZMyCmnnJL7778/7du3z2GHHZYkmTlzZv7617+mXbt26zz2hx9+mLlz51bvyQA1p6W8d/JjCiXAZ9hkk01y4oknZty4cTnllFMybty4nHzyyWnd+qN/OpcuXZp99903Y8eO/cS122yzTbXjAjWipW0nE4USqFM9evTIqlWrMmXKlLUveb/77ruZPXt2dt9997XnDRw4MIcffnheffXV/P73v8/w4cPXHuvdu3fGjx+fbbfdNu3bt6/6cwBqU0vbTiZuygHq1K677pp+/frl3HPPzeTJkzNz5syceuqp6dixY/r167f2vK997WvZfvvtM3DgwHTt2nWdl8gHDhyYDh06pF+/fnn22WfT1NSUSZMmZdCgQVmwYEEZTwto5lridjJRKIE6NmbMmOy777455phj8tWvfjWVSiWPPfZYNt5447XnNDQ0ZMCAAZk5c2YGDhy4zvWNjY155pln0rlz5xx//PHp0aNHzj777Hz44Yc2lsCnakl3dv+nhkqlUik7RDU9//zzOfDAA/Pqq6+u87IWAMCGtHLlynTr1i377bdf7rvvvrLjrFfeQwkAUAUt8b2TH/OSNwDABtZS3zv5MRtKAIANrCVvJxMbSgCADaqlbycTG0oAgA2qpW8nExtKAIANph62k4kNJQDABlMP28nEhhIAYIOol+1kYkMJALBB1Mt2MrGhBABY7+ppO5nYUAIArHf1tJ1MbCgBANarettOJjaUAADrVb1tJxMbSgCA9aYet5OJDSUAwHpTj9vJpI4L5W233ZZtt9227BgAQAty66231t12MkkaKpVKpewQ1bR48eIceeSRWbBgQdlRPrcVK1Zk+fLladeuXdlRoO4sW7YsSdLY2FhyEqg///rXv7Lppptmk002KTvKFzJx4kSFkuZn1KhRue6667Jo0aKyo0DdOfbYY5MkEyZMKDkJ1J9tttkmgwcPzmWXXVZ2FP4LN+UAAFCIQgkAQCEKJQAAhSiUAAAUolACAFCIQgkAQCEKJQAAhSiUAAAUolACAHXnzDPPzHHHHVd2jBZDoQQAoBCFknWsWLGi7AgAQI1RKFuYgw8+OIMGDcoll1ySrbbaKttvv32uuuqqzzz/45X/iBEjsuOOO6Z79+7VCwst0G9+85v07Nkzbdq0ydZbb53DDjssH3zwQdmxoMX7ovOP9UuhbIHuuuuutG3bNlOmTMno0aPz4x//OE899dRnnj9x4sTMnj07Tz31VB555JEqJoWWZeHChRkwYEC++c1vZtasWZk0aVKOP/74VCqVsqNBXfii84/1p3XZAVj/evXqlR/96EdJkl133TU333xzJk6cmMMPP/xTz2/btm3uuOOObLLJJtWMCS3OwoULs2rVqhx//PHp0qVLkqRnz54lp4L68UXnH+uPDWUL1KtXr3U+3mGHHfLOO+985vk9e/ZUJmE92GuvvXLooYemZ8+e6d+/f26//fa8//77ZceCuvFF5x/rj0LZAm288cbrfNzQ0JA1a9Z85vlt27bd0JGgLrRq1SpPPfVUHn/88ey+++752c9+lu7du6epqansaFAXvuj8Y/1RKAHWo4aGhhx44IG5+uqr89JLL2WTTTbJgw8+WHYsgA3KeyjrzOmnn56OHTtm5MiRZUeBFmfKlCmZOHFijjjiiGy77baZMmVKFi1alB49epQdDeqe+bdhKZR15s0338xGG1lMw4bQvn37PPPMM7nxxhuzZMmSdOnSJdddd12OOuqosqNB3TP/NqyGip9n0eyNGjUq1113XRYtWlR2FKg7xx57bJJkwoQJJSeB+rPNNttk8ODBueyyy8qOwn+hqgMAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIa3LDlBtlUolM2bMSKVSKTvK57Zw4cIkyfTp00tO8sV06NAhnTt3LjsGAKnN+Zd8NAPNv+avoVJrf7MKeuKJJ9KnT5+yY9SFxsbGzJo1q+6+qGhZjj322CTJhAkTSk4CxZh/1VOP86+uNpSVSiXDhg3Lfvvtl1/84hdlx2nRZs2alVNPPTWLFy+uqy8ogObI/Kueep1/dVUoJ02alOeeey4PP/xwevfuXXYcAKgK848Nra5uyhk2bFj22WeffOMb3yg7CgBUjfnHhlY3G8rJkyfn6aefzgMPPJCGhoay4wBAVZh/VEPdbCiHDRuWPffcM/369Ss7CgBUjflHNdTFhnLq1Kl58sknc++992ajjeqmQwNQ58w/qqUu/nYNGzYs3bt3z4knnlh2FACoGvOPamnxG8qXXnopjzzySO6+++60atWq7DgAUBXmH9XU4jeUw4cPz84775wBAwaUHQUAqsb8o5pa9IbylVdeyQMPPJA777wzrVu36KcKAGuZf1Rbi95QjhgxIl26dMlpp51WdhQAqBrzj2prsd+2/OUvf8l9992XW265JRtvvHHZcQCgKsw/ytBiN5TXXHNNdtxxx5x11lllRwGAqjH/KEOL3FDOnTs348aNy/XXX59NN9207DgAUBXmH2VpkRvKkSNHpkOHDjn33HPLjgIAVWP+UZYWVyjfeOON3HXXXfnBD36QNm3alB0HAKqiucy/+fPnp6GhITNmzCgtA9XX4grlqFGjssUWW+T8888vO0ohZ555Zo477ri1H3/8BTp//vzSMgHQfLWU+VdNZuv606IK5dtvv51f/vKX+f73v5+2bduWHQcAqsL8o2wtqlCOHj06bdu2zQUXXFB2lPXmzDPPTENDQ7p27Zok6dq1axoaGnLVVVeVGwyAZqOM+bdmzZqMHj06u+yySzbddNN07tw5I0aMWHt83rx5+frXv57GxsbstddeeeGFF9a5fvLkyTnooIPSpk2bdOrUKYMGDcoHH3yw9vjy5cszZMiQdOzYMW3bts3++++fSZMmrT3+xhtvpG/fvtlyyy3Ttm3b7LHHHnnsscfWHv/zn/+co446Kptvvnm22267nHbaaVm8eHESs3VDaDGF8u9//3tuu+22fPe730379u3LjrPe3HTTTVm4cGGmTp2aJJk6dWoWLlyYIUOGlJwMgOagrPk3dOjQjBo1KldccUVee+21jBs3Ltttt93a45dffnmGDBmSGTNmpFu3bhkwYEBWrVqV5KO70fv06ZMTTjghL7/8csaPH5/JkyfnwgsvXHv9hRdemBdeeCH33ntvXn755fTv3z99+vTJnDlzkiQXXHBBli9fnmeeeSavvPJKrr322my++eZJkn/+85855JBDss8+++TFF1/M7373u/zjH//ISSedlMRs3SAqLcSQIUMq7dq1q7z33ntlR1kvzjjjjEq/fv3WftzU1FRJUmlqaiot0xcxbdq0SpLKtGnTyo4ChfTt27fSt2/fsmPAZypj/i1ZsqSy6aabVm6//fZPHPt4Xt1xxx1rP/fqq69WklRmzZpVqVQqlbPPPrty3nnnrXPds88+W9loo40q//73vytvvPFGpVWrVpW33357nXMOPfTQytChQyuVSqXSs2fPylVXXfWp+YYNG1Y54ogj1vncW2+9VUlSmT179ieyrs/ZWq/zr0X8HMpFixbllltuycUXX5wtt9yy7DgAUBVlzb9Zs2Zl+fLlOfTQQz/znF69eq399Q477JAkeeedd7Lbbrtl5syZefnllzN27Ni151QqlaxZsyZNTU2ZN29eVq9enW7duq3zmMuXL8/WW2+dJBk0aFC+/e1v58knn8xhhx2WE044Ye3vOXPmzDz99NNrN5b/ae7cuZ94XIprEYXyhhtuSENDQ773ve+VHQUAqqas+fd5fizRf/63jw0NDUk+et9lkixdujTf+ta3MmjQoE9c17lz57z88stp1apVpk2bllatWq1z/OOSeM455+TII4/Mo48+mieffDIjR47Mddddl4suuihLly5N3759c+21137i8T8ut6xfNV8o33vvvdx88835zne+kw4dOpQdBwCqosz5t+uuu6ZNmzaZOHFizjnnnC98fe/evfPaa69ll112+dTj++yzT1avXp133nknBx100Gc+TqdOnXL++efn/PPPz9ChQ3P77bfnoosuSu/evXP//ffnS1/6Ulq3rvmqUxNq/qacn/70p1m1alUGDx5cdhQAqJoy599mm22WSy+9NJdccknuvvvuzJ07N3/84x9z5513fq7rL7300jz//PO58MILM2PGjMyZMye//e1v196U061btwwcODCnn356HnjggTQ1NWXq1KkZOXJkHn300STJxRdfnCeeeCJNTU2ZPn16nn766fTo0SPJRzfsvPfeexkwYED+9Kc/Ze7cuXniiSdy1llnZfXq1RvmD6XO1XRtX7JkSW666aacd95569xZBgAtWXOYf1dccUVat26dK6+8Mn/729+yww47fO4fqt6rV6/84Q9/yOWXX56DDjoolUolO++8c04++eS154wZMybDhw/P4MGD8/bbb6dDhw75yle+kmOOOSZJsnr16lxwwQVZsGBB2rdvnz59+uSGG25Ikuy444557rnncumll+aII47I8uXL06VLl/Tp0ycbbVTzu7RmqaFSqVTKDvG/uuaaa3L11Vdn3rx56dixY9lxNqj58+ena9euaWpqype+9KWy4/xX06dPz7777ptp06ald+/eZceB/9mxxx6bJJkwYULJSeD/q6f5tyFtiNlar/OvZjeUS5cuzfXXX5+zzz67Lr6YOnXqlIULF2abbbYpOwoAJaq3+bchma3rT80Wyp///OdZsmRJLrvssrKjVEWrVq2y/fbblx0DgJLV2/zbkMzW9acm30iwbNmy/OQnP8kZZ5yRzp07lx0HAKrC/KO5qslCefvtt+fdd9/N0KFDy44CAFVj/tFc1Vyh/PDDDzN69OgMHDgwO+20U9lxAKAqzD+as5orlGPGjMnChQvzwx/+sOwoAFA15h/NWU0VyhUrVmTUqFE5+eST071797LjAEBVmH80dzV1l/evfvWrvPnmm3nsscfKjgIAVWP+0dzVzIZy1apVueaaa3LCCSdkjz32KDsOAFSF+UctqJkN5bhx4zJv3rzcf//9ZUcBgKox/6gFNbGhXL16dUaMGJG+fftm7733LjsOAFSF+UetqIkN5a9//eu8/vrrueeee8qOAgBVY/5RK5r9hnLNmjUZPnx4jjzyyOy3335lxwGAqjD/qCXNfkP50EMP5dVXX82tt95adhQAqBrzj1rSrDeUlUolw4YNyyGHHJIDDzyw7DgAUBXmH7WmWW8oH3nkkcyYMSNPP/102VEAoGrMP2pNsy2UH3931q1bt7Rr1y7Tp08vOxJfwKxZs8qOAFCTzL/aVq/zr9kWyuXLl2fhwoVZsGBBvvzlL5cdh/9BY2NjOnToUHYMgJpi/tW+epx/zbZQbrbZZnn++eezaNGisqPwP+rQoUM6d+5cdgyAmmL+1b56nH/NtlAmSadOndKpU6eyYwBAVZl/1JpmfZc3AADNn0IJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIUolAAAFKJQAgBQiEIJAEAhCiUAAIW0LjsAQHO2ww47lB0BoNlrqFQqlbJDAABQu7zkDQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIQolAACFKJQAABSiUAIAUIhCCQBAIf8P7t3BB7vUEsAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from lambeq import RemoveCupsRewriter\n", "\n", "\n", "diagram = (Word('I', N) @ Word('love', N >> S << N)\n", " @ Word('cheese', N) >> Cup(N, N.r) @ Id(S) @ Cup(N.l, N))\n", "remove_cups = RemoveCupsRewriter()\n", "\n", "draw(diagram)\n", "print('↓ remove cups by bending wires')\n", "remove_cups(diagram).draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Curry functor" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAB2CAYAAAB23AOcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAVXklEQVR4nO3de3BUd/3G8WeTEJort4ANAYKlXDZ0CSWWi9GCUm5SJwwKNVIjA5ZOHaZgKWIHQS6WzpThor0olpFSWyqkTcooI4JgSg0QhstAIpFwDyICaSOEBBKye35/dHZ/LJCQ9JA9J2ffr5mdbPb6OZ/97jfPObvnxGUYhiEAAADgC4qwugAAAAC0bgRKAAAAmEKgBAAAgCkESgAAAJhCoAQAAIApBEoAAACYQqAEAACAKQRKAAAAmEKgBAAAgCkESgAAAJhCoAQAAIApBEoAAACYQqAEAACAKQRKAAAAmEKgBAAAgCkESgAAAJgSZXUBjSkvL1dFRYXVZQQkJSWpR48eVpfRIuzWa8CJmEPgRIzr0LFzr20bKMvLy+V2u1VTU2N1KQGxsbEqLS217Yv5Rdmx14ATMYfAiRjXoWPnXts2UFZUVKimpkbvvvuu3G631eWotLRUTz/9tCoqKmz5Qppht14DTsQcAidiXIeO3Xtt20Dp53a7NWjQIKvLCAv0GoAZTptDRowYoYEDB2r16tWt+jlgTqjHtcvlUn5+viZMmBCy57wfwmKnnKlTp7a6FwYAAKC1CItACQAAgJZDoARs5oMPPpDH41FMTIw6deqkJ554QtXV1ZKktWvXyu1264EHHlC/fv305ptvBt333Llzmjx5stq3b6+OHTsqKytLZ86csWApgNalurpaOTk5io+PV3JyslasWBF0fW1trV588UWlpKQoLi5OQ4YMUUFBQeD6Tz/9VNnZ2UpJSVFsbKw8Ho/ef//9Zj0HrDVixAjNnDlTM2fOVLt27fTNb35TkmQYhqR7jwFJ+vDDD9W/f3+1bdtWPXv2vOM17tmzp5YuXars7GzFxcUpJSVFb7zxRqN1+ef14cOHS5JeeOEFW87rBErARi5cuKDs7GxNmzZNpaWlKigo0MSJE2UYht577z0tXLhQL7/8skpLS7Vs2TItWLBA69evlyTdvHlTY8aMUUJCgj755BMVFhYqPj5eY8eOVV1dncVLBtjb3Llz9fHHH2vz5s3atm2bCgoKdPDgwcD1M2fO1J49e/THP/5RR44c0aRJkzR27FgdP35cknTjxg1lZGRoy5YtKikp0YwZM/SDH/xA+/bta/JzwHrr169XVFSU9u3bpxdffFGSlJ+fL+neY+DAgQOaPHmyvve976m4uFiLFi3SggUL9Pbbbwc9x/Lly5Wenq5Dhw7pZz/7mWbNmqXt27fftZ5b5/W1a9dKkmJiYuw5rxs2deDAAUOSceDAAdOP9cMf/tDIysqyTT124+Rla238r8WZM2fuuK5Xr17Ghg0bgi5bunSpMWzYMMMwDOMPf/iD0bdvX8Pn8wWur62tNWJiYoy//vWvLVs47snJ77PWvmxVVVVGdHS0sWnTpsBln376qRETE2PMmjXLOHv2rBEZGWmcP38+6H4jR440XnrppQYfd/z48cacOXOa9BytVWt/7W81fPhww+12B+ZQ/7J9+ctfbtIY+P73v2+MGjUq6Pq5c+caaWlpgd9TU1ONsWPHBt3mqaeeMsaNGxf4XZKRn59vGEbwvO6vZ+/evbac122/lzcQTtLT0zVy5Eh5PB6NGTNGo0eP1ne/+11FR0fr5MmTmj59up555pnA7evr69WuXTtJ0uHDh3XixAklJCQEPeaNGzd08uTJkC4H0JqcPHlSdXV1GjJkSOCyjh07qm/fvpKk4uJieb1e9enTJ+h+tbW16tSpkyTJ6/Vq2bJl2rRpk86fP6+6ujrV1tYqNja2Sc8Bexg6dKhcLlfQZeXl5U0aA6WlpcrKygq6PjMzU6tXr5bX61VkZKQkadiwYUG3GTZsWIN7+d86r/t8PknSN77xDVvO6wRKwEYiIyO1fft27d69W9u2bdNrr72m+fPn609/+pMk6a233gr6g+S/jyRdu3ZNGRkZeu+99+543M6dO7d88YBDXbt2TZGRkTpw4EDg/eYXHx8v6fOPMX/1q19p9erV8ng8iouL0+zZs+33sSS+kKaMgZZ6Xv+8/s9//lMTJkzQ+++/r/79+9tuXidQAjbjcrmUmZmpzMxMLVy4UKmpqSosLFTXrl116tQpTZky5a73GzRokDZu3KguXbooMTExxFUDrVevXr3Upk0bFRUVBQ4YXVlZqbKyMg0fPlyPPvqovF6vLl26pK9//et3fYzCwkJlZWXp6aefliT5fD6VlZUpLS2tSc8BeygqKrrjsh49ejRpDLjdbhUWFgZdVlhYqD59+gSF0L179wbdZu/evQ0eOP3Wef3q1auSpO7du+vhhx9u1nKFAjvlADZSVFSkZcuWaf/+/SovL1deXp4uX74st9utxYsX65VXXtGvf/1rlZWVqbi4WOvWrdPKlSslSVOmTFFSUpKysrL0ySef6PTp0yooKNDzzz+vf//73xYvGWBf8fHxmj59uubOnaudO3eqpKREU6dOVUTE538i+/TpoylTpignJ0d5eXk6ffq09u3bp1deeUVbtmyRJPXu3Tvw6UJpaameffZZXbx4scnPAXsoLy/XCy+8oGPHjmnr1q2SpOzs7CaNgTlz5mjHjh1aunSpysrKtH79er3++uuBnXv8CgsL9eqrr6qsrExvvPGGcnNzNWvWrLvWc+u8fujQIUnS/v37bTmvs4USsJHExETt2rVLq1ev1tWrV5WamqoVK1Zo3Lhxkj7/P67Lly/X3LlzFRcXJ4/Ho9mzZweu27Vrl+bNm6eJEyeqqqpKKSkpGjlyJFssgXtYvny5rl27pm9/+9tKSEjQnDlzdOXKlcD169at0y9/+UvNmTNH58+fV1JSkoYOHaonn3xSkvTzn/9cp06d0pgxYxQbG6sZM2ZowoQJQY9xr+eA9XJycnT9+nUNHjw4cNnEiRMl3XsMDBo0SJs2bdLChQu1dOlSJScna8mSJZo6dWrQc8yZM0f79+/X4sWLlZiYqJUrV2rMmDF3refWed0fTJcsWaJvfetb9pvXrd4rqCF223PMbvXcT05eNsAunPw+c/KyoXFOeu2HDx8etMd9SyxbamqqsWrVqi90X7v3mm3tAAAAMIVACQAAAFP4DiUAAAh7t/8bxZZgx3+ZeL/YPlCWlpZaXYIk+9TRksJhGQGrhMP7KxyWEcHC4TW3yzLapY6G2DZQJiUlKTY2NnBMLzuIjY1VUlKS1WXcd3bsNeBEzCFwIsZ16Ni51y7DMAyri2hIeXm5KioqTD3Gxo0btWrVqjsOJPpFJCUlBQ5I6zT3o9dvvvmmtmzZEjgmF1rO0qVLdfz4cb3zzjtWl+J4/sMyNfSv0ZqDOaRxOTk56t27txYsWHCfqkJDxo8fr/Hjx+vHP/6x6cdiXDdu6NCh+slPfqKnnnrKdD127rVtt1BKnx+d3mzjdu/erYiICA0aNOg+VeVM96PXycnJatu2Lb0OgaSkJP3nP/+h1yHQvn17SaLX93A/5pC4uDglJSXR6xBo27atkpOT6fU93I9xHRERoe7duzu+1+zlDQAAAFMIlAAQAlOnTtWECROsLgO4rxjX8CNQAgAAwBQCJWyvrq7O6hIAAEAjwjZQjhgxQs8//7x++tOfqmPHjnrwwQe1aNEiq8typOb22v8Ryssvv6yuXbuqb9++oSu2lfvggw/k8XgUExOjTp066YknnlB1dbXVZTkSc0jo0OvQodeh47Reh22glKT169crLi5ORUVFevXVV7VkyRJt377d6rIcqbm93rFjh44dO6bt27frz3/+cwgrbb0uXLig7OxsTZs2TaWlpSooKNDEiRNl4yODtXrMIaFDr0OHXoeOk3pt68MGtbQBAwboF7/4hSSpd+/eev3117Vjxw6NGjXK4sqcp7m9jouL09q1axUdHR3KMlu1CxcuqL6+XhMnTlRqaqokyePxWFyVszGHhA69Dh16HTpO6nVYb6EcMGBA0O/Jycm6dOmSRdU4W3N77fF4CJPNlJ6erpEjR8rj8WjSpEl66623VFlZaXVZjsYcEjr0OnTodeg4qddhHSjbtGkT9LvL5ZLP57OoGmdrbq/j4uJauiTHiYyM1Pbt2/WXv/xFaWlpeu2119S3b1+dPn3a6tIcizkkdOh16NDr0HFSr8M6UAJO43K5lJmZqcWLF+vQoUOKjo5Wfn6+1WUBAByOQAnL5eTk6KWXXrK6jFavqKhIy5Yt0/79+1VeXq68vDxdvnxZbrfb6tLCEuMaTsS4RkPCeqcc2EN5ebkiIli3MSsxMVG7du3S6tWrdfXqVaWmpmrFihUaN26c1aWFJcY1nIhxjYaEbaAsKCi447KPPvoo5HWEg3v1+vbr33777Ratx6ncbre2bt1qdRlhg3EdOszXocO4Dh2njWtWMwAAAGAKgRIAAACmOD5QdunSRenp6bp586bVpTiez+fT0KFDrS4DuK/69eunxMREq8sIC507d9ZDDz1kdRlhYciQIfwXrRCoq6tTenq6unTpYnUpLc7xgbJr167at2+f8vLyrC7F0WpqapSbm6va2lqrSwHuq5iYGG3evFlnz561uhRHO3z4sLZu3ar27dtbXUpYqK2t1aZNm1RTU2N1KY6Wl5enffv2KSUlxepSWpzLcPgqimEYmjx5sv72t7/p8OHD6tGjh9UlOY5hGHruuef0zjvv6ODBg+rXr5/VJTneM888oyNHjqioqMjqUhzvf//7nwYOHKgePXpo586diooK230ZW0xNTY0ee+wxRUVFqaioSA888IDVJTleaWmpMjIylJOTo9/85jdyuVxWl+Q45eXlSk9P16hRo7Rx40bH99jxWyhdLpd+97vfKSEhQV/5yle0bt26VnsUejs6ceKExo8frzVr1mjVqlWESThO+/bt9e6776qwsFCDBw/Wnj17rC7JUbZt26aBAwfq1KlT2rBhA2EyRNxut1auXKk1a9boySef1IkTJ6wuyTF8Pp9+//vfKyMjQwkJCVqzZo3jw6QUBoFSkjp06KCioiKNHj1a06ZNU2Zmpj766CNdv37d6tJaraNHj2revHnq37+/jh49qvz8fM2YMcPqsoAW8bWvfU27d+9WRESEvvrVr2rq1Knas2cPK6dfkNfr1d///nd95zvf0ZgxY5SSkqL9+/erf//+VpcWVp599lnl5+erpKRE/fv317x583T06FGry2q1rl+/rvz8fGVmZmr69OkaO3asioqK1KFDB6tLCw0jzBQUFBgZGRmGJCM+Pt7Izs428vLyjKqqKqtLszWv12sUFxcbixYtMtLS0gxJRkJCgjF//nyjurra6vLCzo9+9CNj8ODBVpcRdurr643f/va3xoMPPmhIMrp162bMnj3bKCwsNOrq6qwuz9Zu3Lhh7Ny503juueeMLl26GJKMnj17Ghs2bDB8Pp/V5YW16upqY/78+UZCQoIhyUhLSzMWLVpkFBcXG16v1+rybK2qqsrIy8szsrOzjfj4eEOSkZGRYXz88cdWlxZyjv8OZUP+9a9/KTc3V7m5uSouLpYkPfTQQxowYIA8Hk/g9PDDD4fdd6YqKipUXFwcdCopKVF1dbUSEhKUlZWlSZMmafTo0Xw8ZRG+Q2ktr9erf/zjH8rNzdWHH36o//73v4qOjpbb7Q6aPzwej1JSUsLi4y4/wzB09uzZoPnjyJEjKisrU319vXr06KFJkyZp0qRJGjx4cFj1xu5u3Lihbdu2KTc3V5s3b1ZVVZXi4uL0yCOP3DGuk5KSrC43pOrr63XixInAePaP7VOnTkmSPB5PYFyH61e/wjZQ3urYsWPavXt30AR48eJFSVLbtm2VlpYmj8ejXr16qUOHDg2e2rZta/GSNMzn8+nq1auqrKy84/TZZ5/p0qVLKikpUXFxsS5cuCBJio6ODiy7x+NRenq6Hn/8cUKkDRAo7cPr9Wrv3r06ePBg0ArYtWvXJH3+lRv/e6hr166B+aJjx45B80f79u0VGRlp8dI0rL6+/q7zh/907tw5HTlyRCUlJaqqqpIktWvXLiiEPPbYY8rIyCBEtgI3btzQrl27dPjw4cC4Pnr0qOrq6iRJycnJ8ng8euSRR9SlS5c7xrP/lJiYaOt/1VhbW9vouD558mRg2f1HMfnSl74UGNMDBgzQsGHD1LdvX4uXxHoEygZcvnz5jjWRc+fO6bPPPgu8oW4XExMT9Ea62xssPj5ekZGRioqKCvp5+2VRUVHy+Xyqr6+X1+tt9GddXV2jb4jKykpduXLlrt/3crlcateunZKSkoLCo8fjUe/evdWmTZuWbjW+AAKlvfl8Pp05c+aOrfwXL15UZWVlg9+9TExMbHSltUOHDoqJiWl07rh1Dqmvr2/SHHL9+vUGVzb95/0B+XaRkZHq0KFDIGD4/8h6PB5169aN8OggN2/e1PHjx4PG9dGjR1VRUaErV67c9biWERERateu3T3HdXR09F3H8e0/IyIi7jqu7za2r1271uB49p8a2pciOjpaHTt2VPfu3YPGtMfjUefOnVu61a0SgbKZDMNocPJt7OQfyA2F0dsNGjRIBw8ebNJt/aHwXm/Yu4XdxMREW28Vwd0RKFsvwzBUVVXV6B+5xk5N3RHo8ccf165du5p0W38obGhFuLFTfHw8oRHyer26evVqs8ezf4NHU6PIo48+qkOHDjXptv5Q2JzxfOuKG+O6ecLry4H3gcvlUmxsrGJjY5t9oFLDMAJrUg2tUfnP+3w+uVyuBrdE3H7ezh8pAPh/LpdLiYmJSkxMVGpqarPu659DGtsq4z9vGIYiIiIa3Ip5+3n+eMKMW1dKmsvn890xnhs67x/XjW2hv/XEuA4dAmUIuVyuwEdRANBczCFwooiICEVERPAVq1aOzVoAAAAwhUAJAAAAUwiUAAAAMIVACQAAAFMIlAAAADCFQAkAAABTCJQAAAAwhUAJAAAAUwiUAAAAMIVACQAAAFMIlAAAADCFQAkAAABTCJQAAAAwhUAJAAAAUwiUAAAAMIVACQAAAFMIlAAAADCFQAkAAABTCJQAAAAwhUAJAAAAUwiUAAAAMIVACQAAAFMIlAAAADCFQAkAAABTCJQAAAAwhUAJAAAAUwiUAAAAMIVACQAAAFMIlAAAADCFQAkAAABTCJQAAAAwhUAJAAAAUwiUAAAAMCXK6gIANF+3bt1UU1NjdRkAAEiSXIZhGFYXAQAAgNaLj7wBAABgCoESAAAAphAoAQAAYAqBEgAAAKYQKAEAAGAKgRIAAACmECgBAABgCoESAAAAphAoAQAAYAqBEgAAAKYQKAEAAGAKgRIAAACmECgBAABgCoESAAAAphAoAQAAYAqBEgAAAKYQKAEAAGDK/wFthfMyZXqPOAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ rewrite by using the map-state duality\n" ] }, { "data": { "image/png": "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JSAgAOHh4Sa/y8vL63C5HTt29E4gIhvH91ASEdmoAQMG4NChQ9i2bZvUUWzK999/jx07dsDLy0vqKER2g4WSiMhG3XrrrZg9ezYee+wxFBYWSh3HJrTv0H/w4MFYsGCB1HGI7AYLJRGRDXv55ZcRERGBuLg4LFiwADU1NVJHskotLS3IyspCREQEzp8/j3feeYdvEyDqRiyUREQ2zMvLCwUFBcjOzsY777yDoKAg3HvvvXjvvffQ0NAgdTxJGQwGfP7551iwYAEGDBiAJUuWYObMmSgrK+uwA3MisoxM8It7iexeTk4O/vjHP+LixYtQKpVSx6Ee8vPPP2Pz5s3Yvn07vvnmG3h4eGDUqFHQaDTGQ2RkpF2+d1Cv16O0tBTFxcXQarXQarX4+uuvceHCBYSGhiI5ORmzZs1CZGSk1FGJ7BILJZEDYKF0POXl5cjJyUFhYSG0Wi3KysqM3/gycOBAY7kMCAhA3759Oz24ublJfC9+2cpYW1sLnU7X4VBdXY3jx49Dq9XixIkTaG1tBQAEBwdDo9HglltuQVJSEkaOHAmZTCbxPSGybyyURA6AhZKamppQUlJisgXv+++/R1VVFVpaWjq9jlwuh1Kp7LRs+vj4wNXVFc7OznBxcen02MPDA01NTTAYDGhtbe3y+NKlS50WRp1Oh7q6uk6zOTk5QalUIiIiwrj1NSoqCpGRkfD19e3BkSSiznA/lEREDqBPnz6IiYlBTEyMye+FEGhsbOyy0LUfampqoNPpcOLECWPRay+FVxfE9tMAMG7cOOTn5wP45bvjry6bV5/29PQ0FlWVSoXBgwcbf+6q0Hp5ecHJiR8DILIWLJRERA5MJpNBoVBAoVAgKCio2263ra0NBoMBTk5OcHJy4r+ciewcCyUREXW79iJJRI6Bj3YiIiIisggLJRERERFZhIWSiIiIiCzCQklEREREFmGhJCIiIiKLsFASERERkUVYKImIiIjIIiyURERERGQRFkoiIiIisggLJRERERFZhIWSiIiIiCzCQklEREREFmGhJCIiIiKLsFASERERkUVYKImIiIjIIiyURERERGQRFkoiIiIisggLJRERERFZhIWSiIiIiCzCQklEREREFmGhJCIiIiKLsFASERERkUVYKImIiIjIIiyURERERGQRFkoiIiIisggLJRERERFZhIWSiIiIiCzCQklEREREFmGhJHIASqUScXFxcHFxkToKERHZIZkQQkgdgoiIiIhsF7dQEhEREZFFWCiJiIiIyCIslERERERkERZKIiIiIrIICyURERERWYSFkoiIiIgswkJJRERERBZhoSQiIiIii7BQEhEREZFFWCiJiIiIyCIslERERERkERZKIiIiIrIICyURERERWYSFkoiIiIgswkJJRERERBZhoSQiIiIii7BQEhEREZFFWCiJiIiIyCIslERERERkkf8CoxycL7ZaK0gAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "↓ normal form\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAHzCAYAAAANaEUQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAXEklEQVR4nO3df6yWdf3H8dcJMDv8iPTOpacO/RI7tgPz4NTG2nSU2KphlC4HIdly/UHhApebqaBFGwzErL5r0k5suoLMbK1lMraj7JQ4oSWtMzGjjjKXntZKJEHwfP+omKQV/uBcvjmPx3b+uO+L+/6873PY57nrOvc5p214eHg4AMBr3uuaHgAAODKiDQBFiDYAFCHaAFCEaANAEaINAEWINgAUIdoAUIRoA0ARog0ARYg2ABQh2gBQhGgDQBGiDQBFiDYAFCHaAFCEaANAEaINAEWINgAUIdoAUIRoA0ARog0ARYg2ABQh2gBQhGgDQBGiDQBFiDYAFCHaAFCEaANAEaINAEWINgAUIdoAUIRoA0ARog0ARYg2ABQh2gBQhGgDQBGiDQBFiDYAFCHaAFCEaANAEaINAEWINgAUIdoAUIRoA0ARog0ARYg2ABQxtukBBgcHMzQ01PQYjIBWq5XOzs6mx4Cjwl42ejS5lzUa7cHBwXR1dWXv3r1NjsEIaW9vz8DAgHBzzLGXjS5N7mWNRntoaCh79+7Nrbfemq6uriZH4SgbGBjI/PnzMzQ0JNocc+xlo0fTe1njl8eTpKurKz09PU2PAfCK2Ms42rwRDQCKEG0AKEK0AaAI0QaAIkQbAIoQbQAoQrQBoAjRBoAiRBsAihBtAChCtAGgCNEGgCJEGwCKEG0AKEK0AaAI0QaAIkQbAIoQbQAoQrQBoAjRBoAiRBsAihBtAChCtAEYEW1tbbnzzjubHqM00R5hCxcuzIUXXtj0GAAUJNoAUIRoAxzjzj333CxatCiLFi3KG9/4xrRarVxzzTUZHh5Okuzbty9Lly5NR0dHxo8fn7PPPjt9fX2HPccPf/jDvPe9783rX//6vP3tb8/q1asPO/72t789N9xwQy655JKMHz8+HR0d+eY3v/lf53r00Udz8cUXZ/LkyTnhhBMyZ86c/OEPf3g1X/oxR7QBRoH169dn7Nixuf/++3PTTTdlzZo1WbduXZJk0aJF+eUvf5nvf//7efDBB3PRRRflggsuyMMPP5wk2bZtWy6++OJ88pOfzI4dO7Js2bJcc801+e53v3vYGqtWrcr06dPzq1/9KldddVUWL16cTZs2veg8zz77bGbPnp2JEydmy5Yt6e/vz4QJE3LBBRdk//79R/VzUdnYpgcA4Oh729velhtvvDFtbW057bTTsmPHjtx4442ZPXt2ent7Mzg4mFNOOSVJsnTp0tx1113p7e3NihUrsmbNmsyaNSvXXHNNkmTq1Kn57W9/m1WrVmXhwoWH1pg5c2auuuqqQ/+mv78/N954Yz74wQ++YJ4NGzbkueeey7p169LW1pYk6e3tzeTJk9PX15fzzz//KH9GanKmDTAKnHPOOYfimCTve9/78vDDD2fHjh05ePBgpk6dmgkTJhz6uOeee/LII48kSQYGBjJz5szDnm/mzJl5+OGHc/DgwcOe8/ne9773ZWBg4EXn+fWvf53f/e53mThx4qE1TzjhhDzzzDOH1uWFnGkDjGJ79uzJmDFjsm3btowZM+awYxMmTDiq686YMSO33XbbC469+c1vPmrrVifaAKPA1q1bD7t933335dRTT80ZZ5yRgwcP5oknnsj73//+F31sV1dX+vv7D7uvv78/U6dOPSz099133wvW6OrqetHn7OnpyYYNG3LSSSdl0qRJL+cljUoujwOMAoODg/niF7+Yhx56KN/73vdy8803Z/HixZk6dWrmzZuXBQsW5I477siuXbty//3352tf+1p++tOfJkmWLFmSzZs354YbbsjOnTuzfv36fOMb38jSpUsPW6O/vz8rV67Mzp07881vfjM/+MEPsnjx4hedZ968eWm1WpkzZ062bNmSXbt2pa+vL1/4whfy2GOPHfXPR1XOtAFGgQULFuTvf/97zjrrrIwZMyaLFy/O5ZdfnuQfbwD7yle+kiVLlmT37t1ptVo555xz8pGPfCTJP86KN27cmGuvvTY33HBDTj755Fx//fWHvQkt+UfcH3jggSxfvjyTJk3KmjVrMnv27Bedp729Pffee2++9KUvZe7cuXnqqafS0dGRWbNmOfP+L0R7hP37j0gAjIRx48Zl7dq1+b//+78XPbZ8+fIsX778Pz7+4x//eD7+8Y//1zUmTZqUjRs3/sfj//q58H95y1vekvXr1/+PyXk+l8cBoAjRBoAiXB4HOMb9+68kPRr8+tGR4UwbAIoQ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rewriter = Rewriter(['curry'])\n", "\n", "diagram = (\n", " Word('I', N) @ Word('see', N >> S << N) @\n", " Word('dead', N @ N.l) @ Word('people', N) >>\n", " Cup(N, N.r) @ Id(S) @ Cup(N.l, N) @ Cup(N.l, N)\n", ")\n", "draw(diagram)\n", "print('↓ rewrite by using the map-state duality')\n", "rewriter(diagram).draw()\n", "print('↓ normal form')\n", "rewriter(diagram).normal_form().draw()" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 4 }