<div dir="ltr"><div>I stopped work on re-implementing it when I became disheartened, finding out that the original work was done by disabling the positivity and termination checkers. I couldn&#39;t see a way to do it with those checkers enabled. <br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">--<br>Martin Stone Davis<br><div><br>Postal/Residential:<br></div><div style="margin-left:40px"><span>1223 Ferry St</span><span><span><br></span></span></div><div style="margin-left:40px"><span><span>Apt 5<br></span></span></div><div style="margin-left:40px"><span>Eugene, OR 97401</span><br></div>Talk / <span></span>Text / Voicemail: <a href="tel:3106993578" value="+13106993578" target="_blank">(310) 699-3578</a><br>Electronic Mail: <a href="mailto:martin.stone.davis@gmail.com" target="_blank">martin.stone.davis@gmail.com</a><div><div><div><span></span></div></div></div></div></div><div dir="ltr"><span style="font-size:small">Website: </span><a href="http://martinstonedavis.com/" style="color:rgb(17,85,204);font-size:small" target="_blank">martinstonedavis.com</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Sun, Jan 24, 2016 at 10:10 PM, Kenichi Asai <span dir="ltr">&lt;<a href="mailto:asai@is.ocha.ac.jp" target="_blank">asai@is.ocha.ac.jp</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Martin,<br>
<br>
It appears you are re-implementing the Indexed Functors using the Agda<br>
standard library.  Do you make the code available somewhere?<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Kenichi Asai<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Wed, Jan 06, 2016 at 08:03:35PM -0800,<br>
 Martin Stone Davis wrote:<br>
<br>
&gt; {-<br>
&gt; The fixed-point definition in section 2.3 of Generic Programming with Indexed<br>
&gt; Functors no longer type-checks in the latest version of Agda, which complains<br>
&gt; that μ is not strictly positive:<br>
&gt;<br>
&gt;   data μ {I O : Set} (F : (I ⊎ O) ▶ O) (r : Indexed I) (o : O) : Set where<br>
&gt;     ⟨_⟩ : ⟦ F ⟧ (r ∣ μ F r) o → μ F r o<br>
&gt;<br>
&gt; I haven&#39;t had any luck finding a workaround. The code below is ripped from the<br>
&gt; article and reproduces the problem I&#39;m having. Thanks in advance for any help<br>
&gt; solving this.<br>
&gt; -}<br>
&gt;<br>
&gt; module IndexedFunctor where<br>
&gt;   open import Function using (_∘_)<br>
&gt;   open import Relation.Binary.Core using (_≡_)<br>
&gt;<br>
&gt;   open import Data.Empty using (⊥)<br>
&gt;   open import Data.Unit using (⊤ ; tt)<br>
&gt;  <br>
&gt;   open import Data.Product using (_×_ ; ∃)<br>
&gt;   open import Data.Sum using (_⊎_ ; inj₁ ; inj₂)<br>
&gt;  <br>
&gt;   Indexed : Set → Set₁<br>
&gt;   Indexed I = I → Set<br>
&gt;<br>
&gt;   _▷_ : Set → Set → Set₁<br>
&gt;   I ▷ O = Indexed I → Indexed O<br>
&gt;<br>
&gt;   record _≃_ (A B : Set) : Set where<br>
&gt;     field<br>
&gt;       from : A → B<br>
&gt;       to   : B → A<br>
&gt;       iso₁ : ∀ {x} → to (from x) ≡ x<br>
&gt;       iso₂ : ∀ {x} → from (to x) ≡ x<br>
&gt;<br>
&gt;   _∣_ : ∀ {A B} → Indexed A → Indexed B → Indexed (A ⊎ B)<br>
&gt;   _∣_ ia _ (inj₁ x) = ia x<br>
&gt;   _∣_ _ ib (inj₂ x) = ib x<br>
&gt;<br>
&gt;   mutual<br>
&gt;     data _▶_ : Set → Set → Set₁ where<br>
&gt;       Z      : ∀ {I O} → I ▶ O<br>
&gt;       U      : ∀ {I O} → I ▶ O<br>
&gt;       I      : ∀ {I O} → I → I ▶ O<br>
&gt;       !      : ∀ {I O} → O → I ▶ O<br>
&gt;       _⊕_    : ∀ {I O}   → I ▶ O → I ▶ O → I ▶ O<br>
&gt;       _⊗_    : ∀ {I O}   → I ▶ O → I ▶ O → I ▶ O<br>
&gt;       _⊚_    : ∀ {I M O} → M ▶ O → I ▶ M → I ▶ O<br>
&gt;       _↗_↘_  : ∀ {I I&#39; O O&#39;} → I&#39; ▶ O&#39; → (I&#39; → I) → (O → O&#39;) → I ▶ O<br>
&gt;       Fix    : ∀ {I O} → (I ⊎ O) ▶ O → I ▶ O<br>
&gt;       ∑      : ∀ {I O} → {C : ⊥ ▶ ⊤} → (⟦ C ⟧ (λ _ → ⊤) tt → I ▶ O) → I ▶ O<br>
&gt;       Iso    : ∀ {I O} → (C : I ▶ O) → (D : I ▷ O) → ((r : Indexed I) → (o : O)<br>
&gt; → D r o ≃ ⟦ C ⟧ r o) → I ▶ O<br>
&gt;<br>
&gt;     data μ {I O : Set} (F : (I ⊎ O) ▶ O) (r : Indexed I) (o : O) : Set where<br>
&gt;       ⟨_⟩ : ⟦ F ⟧ (r ∣ μ F r) o → μ F r o<br>
&gt;   <br>
&gt;     ⟦_⟧ : ∀ {I O} → I ▶ O → I ▷ O<br>
&gt;     ⟦ Z         ⟧ r o = ⊥<br>
&gt;     ⟦ U         ⟧ r o = ⊤<br>
&gt;     ⟦ I i       ⟧ r o = r i<br>
&gt;     ⟦ F ↗ f ↘ g ⟧ r o = ⟦ F ⟧ (r ∘ f) (g o)<br>
&gt;     ⟦ F ⊕ G     ⟧ r o = ⟦ F ⟧ r o ⊎ ⟦ G ⟧ r o<br>
&gt;     ⟦ F ⊗ G     ⟧ r o = ⟦ F ⟧ r o × ⟦ G ⟧ r o<br>
&gt;     ⟦ F ⊚ G     ⟧ r o = ⟦ F ⟧ (⟦ G ⟧ r) o<br>
&gt;     ⟦ Fix F     ⟧ r o = μ F r o<br>
&gt;     ⟦ ! o&#39;      ⟧ r o = o ≡ o&#39;<br>
&gt;     ⟦ ∑ f       ⟧ r o = ∃ (λ i → ⟦ f i ⟧ r o)<br>
&gt;     ⟦ Iso C D e ⟧ r o = D r o<br>
&gt;<br>
&gt; --<br>
&gt; Martin Stone Davis<br>
&gt;<br>
&gt; Postal/Residential:<br>
&gt; 1223 Ferry St<br>
&gt; Apt 5<br>
&gt; Eugene, OR 97401<br>
&gt; Talk / Text / Voicemail: (310) 699-3578<br>
&gt; Electronic Mail: <a href="mailto:martin.stone.davis@gmail.com">martin.stone.davis@gmail.com</a><br>
&gt; Website: <a href="http://martinstonedavis.com" rel="noreferrer" target="_blank">martinstonedavis.com</a><br>
<br>
</div></div><div class="HOEnZb"><div class="h5">&gt; _______________________________________________<br>
&gt; Agda mailing list<br>
&gt; <a href="mailto:Agda@lists.chalmers.se">Agda@lists.chalmers.se</a><br>
&gt; <a href="https://lists.chalmers.se/mailman/listinfo/agda" rel="noreferrer" target="_blank">https://lists.chalmers.se/mailman/listinfo/agda</a><br>
</div></div></blockquote></div><br></div>