guage-clojure">(lambda [A :type]
  (lambda [B :type]
    (lambda [v A]
      (lambda [f (==&gt; A B)]
        (f v)))))
</code></pre>
<p>The type of the expression above is as follows:</p>
<pre><code class="language-clojure">(forall [A :type]
  (forall [B :type]
    (forall [v A]
       (forall [f (==&gt; A B)]
          B))))
</code></pre>
<p>This is quite verbose so let’s try to simplify this. We remark that in the type, there is no occurrence of the variables <code>v</code> and <code>F</code> and we ha