<div dir="ltr">If you had very/insanely dependent functions, you might be able try something like<div><br></div><div><div>ElimU : (X : U -&gt; Set) </div><div>       -&gt; (n : X nat)</div><div>       -&gt; (p : (a : U) -&gt; X a -&gt; (b : El a -&gt; U) -&gt; ((x : El a) -&gt; X (b x)) -&gt; X (pi a b))</div>

<div>       -&gt; (H : (a : U) -&gt; (b : U) -&gt; (eq : El a == El b) -&gt; transport X (eqU eq) (ElimU X n p H a) == ElimU X n p H b)</div><div>       -&gt; (a : U) -&gt; X a</div><div>ElimU X n p H nat = n</div><div>ElimU X n p H (pi a b) = p a (ElimU X n p H a) b (λ x -&gt; ElimU X n p H (b x))</div>

</div><div><br></div><div>I&#39;m not sure if this would pass the termination checker of any type theory with such functions, though...  (I&#39;m also not sure what could be done in standard dependent type theories.)</div>

<div><br></div><div>-Jason</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 23, 2014 at 6:23 PM, Altenkirch Thorsten <span dir="ltr">&lt;<a href="mailto:psztxa@exmail.nottingham.ac.uk" target="_blank">psztxa@exmail.nottingham.ac.uk</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif"><div>Thank you for pointing this out Guillaume. I always fall for this one :-)</div>

<div><br></div><div>We often want to say that a function on paths is an omega functor..</div><div><br></div><div>Thorsten</div><div><br></div><span><div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">

<span style="font-weight:bold">From: </span> Guillaume Brunerie &lt;<a href="mailto:guillaume.brunerie@gmail.com" target="_blank">guillaume.brunerie@gmail.com</a>&gt;<br><span style="font-weight:bold">Date: </span> Friday, 23 May 2014 16:27<br>

<span style="font-weight:bold">To: </span> Thorsten Altenkirch &lt;<a href="mailto:psztxa@exmail.nottingham.ac.uk" target="_blank">psztxa@exmail.nottingham.ac.uk</a>&gt;<br><span style="font-weight:bold">Cc: </span> agda list &lt;<a href="mailto:agda@lists.chalmers.se" target="_blank">agda@lists.chalmers.se</a>&gt;, &quot;<a href="mailto:HomotopyTypeTheory@googlegroups.com" target="_blank">HomotopyTypeTheory@googlegroups.com</a>&quot; &lt;<a href="mailto:homotopytypetheory@googlegroups.com" target="_blank">homotopytypetheory@googlegroups.com</a>&gt;<br>

<span style="font-weight:bold">Subject: </span> [HoTT] Re: [Agda] Higher inductive-recursive definitions?<br></div><div class=""><div><br></div><p dir="ltr">Hi Thorsten,</p><p dir="ltr">I don&#39;t know about the elimination rule, but I just wanted to point out that you won&#39;t get a univalent universe in this way because eqU refl and refl won&#39;t be identified, and similarly for concat (eqU p) (eqU q) and eqU (concat p q).<br>



And the obvious way to fix requires something like defining semi-simplicial types internally...</p><p dir="ltr">Guillaume</p></div><div class="gmail_quote"><div class="">Le 23 mai 2014 15:23, &quot;Altenkirch Thorsten&quot; &lt;<a href="mailto:psztxa@exmail.nottingham.ac.uk" target="_blank">psztxa@exmail.nottingham.ac.uk</a>&gt; a écrit :<br type="attribution">

</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif"><div class=""><div>

I would like to combine higher inductive definitions (I.e. have path constructors) with induction-recursion. One application would be to define a closed universe which is univalent. However, I cannot see any reasonable way to define an eliminator.</div>

<div><br></div><div>Ok, I start with a simple universe(using Agda) - an inductive recursive definition</div><div><br></div><div><div>data U : Set </div><div>El : U -&gt; Set</div><div><br></div><div>data U where</div><div>


  nat : U</div><div>  pi : (a : U)(b : El a -&gt; U) -&gt; U</div><div><br></div><div>El nat = Nat</div><div>El (pi a b) = (x : El a) -&gt; El (b x)</div></div><div><br></div><div>Now I can define an eliminator for the universe which allows me to define dependent functions by recursion over type codes:</div>

<div><br></div></div><div><div class=""><div>ElimU : (X : U -&gt; Set) </div><div>       -&gt; (X nat)</div><div>       -&gt; ((a : U) -&gt; X a -&gt; (b : El a -&gt; U) -&gt; ((x : El a) -&gt; X (b x)) -&gt; X (pi a b))</div>

<div>       -&gt; (a : U) -&gt; X a</div><div>ElimU X n p nat = n</div></div><div>ElimU X n p (pi a b) = p a (ElimU X n p a) b (? x -&gt; ElimU X n p (b x))</div><div> </div></div><div class=""><div>However, I also would like to add a path constructor, which identifies codes if the have the same semantics:</div>

<div><br></div><div><div>postulate </div><div>  eqU : forall {a b} -&gt; El a == El b -&gt; a == b</div></div><div><br></div><div>But I don&#39;t see a good way to modify the Eliminator. It seems that this corresponds to a condition on the eliminator as a whole.</div>

<div><br></div><div>An alternative is to quotient the universe afterwards. However, the problem is that in this case I cannot lift the pi constructor to the quotiented universe – the usual problem when quotienting infinitary constructors. This can usually be overcome by defining the path constructors mutually..</div>

<div><br></div><div>Any ideas? Maybe the whole thing doesn&#39;t make sense semantically?</div><div><br></div><div>Thorsten</div><br><p>This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please send it back to me, and immediately delete it.   Please do not use, copy or disclose the information contained in this message or in any attachment.  Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham.</p>

<p>This message has been checked for viruses but the contents of an attachment may still contain software viruses which could damage your computer system, you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation.</p>

<br></div></div><div class=""><br>_______________________________________________<br>
Agda mailing list<br><a href="mailto:Agda@lists.chalmers.se" target="_blank">Agda@lists.chalmers.se</a><br><a href="https://lists.chalmers.se/mailman/listinfo/agda" target="_blank">https://lists.chalmers.se/mailman/listinfo/agda</a><br>

<br></div></blockquote></div><div class=""><p></p>

-- <br>
You received this message because you are subscribed to the Google Groups &quot;Homotopy Type Theory&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:HomotopyTypeTheory+unsubscribe@googlegroups.com" target="_blank">HomotopyTypeTheory+unsubscribe@googlegroups.com</a>.<br>


For more options, visit <a href="https://groups.google.com/d/optout" target="_blank">https://groups.google.com/d/optout</a>.<br></div></span><div class="">
<br><p>This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please send it back to me, and immediately delete it.   Please do not use, copy or disclose the information contained in this message or in any attachment.  Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham.</p>

<p>This message has been checked for viruses but the contents of an attachment may still contain software viruses which could damage your computer system, you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation.</p>


<br></div></div><div class="HOEnZb"><div class="h5">

<p></p>

-- <br>
You received this message because you are subscribed to the Google Groups &quot;Homotopy Type Theory&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:HomotopyTypeTheory+unsubscribe@googlegroups.com" target="_blank">HomotopyTypeTheory+unsubscribe@googlegroups.com</a>.<br>


For more options, visit <a href="https://groups.google.com/d/optout" target="_blank">https://groups.google.com/d/optout</a>.<br>
</div></div></blockquote></div><br></div>