<div dir="ltr"><div>Hi Thorsten,</div><div><br></div><div>Currently we do not have such an option. I think it would make sense to add a pragma for disabling the universe check for a data/record type without disabling universe checking entirely. This would actually be easier to implement than NO_POSITIVITY_CHECK, as the universe check is done for a single data/record type rather than the whole mutual block. If there are no takers I could take a look at it (probably only after the POPL deadline though).</div><div><br></div><div>-- Jesper<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 26, 2018 at 11:52 AM, Thorsten Altenkirch <span dir="ltr"><<a href="mailto:Thorsten.Altenkirch@nottingham.ac.uk" target="_blank">Thorsten.Altenkirch@nottingham.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="#0563C1" vlink="#954F72" lang="EN-GB">
<div class="m_-1659341963716864934WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">I can switch off positivity checking locally by saying<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">{-# NO_POSITIVITY_CHECK #-}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">But I can’t say<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">{-# TYPE-IN-TYPE #-}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">data Prop : Set<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">T : Prop → Set<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">data Prop where<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> pi : (A : Set)(b : A → Prop) → Prop<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">T (pi A b) = (x : A) → T (b x)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Or is there a difference syntax? This would be useful for a simple-minded encoding of the calculus of constructions.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thorsten<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">P.S. I know I can avoid this by adding another level:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">data Prop : Set<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">T : Prop → Set<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">data U : Set<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">El : U → Set<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">{-# NO_POSITIVITY_CHECK #-}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">data U where<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> prop : U<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> pi : (a : U)(b : El a → U) → U<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> emb : Prop → U<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">El prop = Prop<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">El (pi a b) = (x : El a) → El (b x)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">El (emb p) = T p<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">data Prop where<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> pi : (a : U)(b : El a → Prop) → Prop<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">T (pi a b) = (x : El a) → T (b x)<u></u><u></u></span></p>
</div>
<pre>
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 contact the sender and delete the email and
attachment.
Any views or opinions expressed by the author of this email do not
necessarily reflect the views of the University of Nottingham. Email
communications with the University of Nottingham may be monitored
where permitted by law.
</pre></div>
<br>______________________________<wbr>_________________<br>
Agda mailing list<br>
<a href="mailto:Agda@lists.chalmers.se">Agda@lists.chalmers.se</a><br>
<a href="https://lists.chalmers.se/mailman/listinfo/agda" rel="noreferrer" target="_blank">https://lists.chalmers.se/<wbr>mailman/listinfo/agda</a><br>
<br></blockquote></div><br></div>