Discussion of Homotopy Type Theory and Univalent Foundations
 help / color / Atom feed
* [HoTT] Different definitions of Sn
@ 2019-09-17 19:56 Kristina Sojakova
  2019-09-18  8:32 ` Anders Mortberg
  0 siblings, 1 reply; 6+ messages in thread
From: Kristina Sojakova @ 2019-09-17 19:56 UTC (permalink / raw)
  To: Homotopy Type Theory

Hello everybody,

Is it worked out somewhere that the two definitions of Sn as a 
suspension on one hand and a HIT with a point and an n-loop on the other 
hand are equivalent? This is also an exercise in the book. I know 
Favonia has some Agda code on spheres but I couldn't find this result in 
there.

Thanks,

Kristina


-- 
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/6c150b9c-fba6-47c1-2a6d-975b90f64638%40gmail.com.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [HoTT] Different definitions of Sn
  2019-09-17 19:56 [HoTT] Different definitions of Sn Kristina Sojakova
@ 2019-09-18  8:32 ` Anders Mortberg
  2019-09-18  9:00   ` Guillaume Brunerie
  0 siblings, 1 reply; 6+ messages in thread
From: Anders Mortberg @ 2019-09-18  8:32 UTC (permalink / raw)
  To: Kristina Sojakova; +Cc: Homotopy Type Theory

Hi Kristina,

We have proofs for S^0, S^1, S^2 and S^3 in Cubical Agda:
https://github.com/agda/cubical/blob/master/Cubical/HITs/Susp/Base.agda

However, I don't think we can even write down the general version of
S^n as a type with a point and an n-loop with the schema implemented
in Cubical Agda. As far as I know no other schema for HITs support
this kind of types either.

--
Anders

On Tue, Sep 17, 2019 at 9:56 PM Kristina Sojakova
<sojakova.kristina@gmail.com> wrote:
>
> Hello everybody,
>
> Is it worked out somewhere that the two definitions of Sn as a
> suspension on one hand and a HIT with a point and an n-loop on the other
> hand are equivalent? This is also an exercise in the book. I know
> Favonia has some Agda code on spheres but I couldn't find this result in
> there.
>
> Thanks,
>
> Kristina
>
>
> --
> You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/6c150b9c-fba6-47c1-2a6d-975b90f64638%40gmail.com.

-- 
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/CAMWCppm0sB2ZDMPM-jUYVpn8qxFJEfep6rsZs%3D8k%3Dhh6yGQF1w%40mail.gmail.com.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [HoTT] Different definitions of Sn
  2019-09-18  8:32 ` Anders Mortberg
@ 2019-09-18  9:00   ` Guillaume Brunerie
  2019-09-18 12:00     ` Anders Mörtberg
  0 siblings, 1 reply; 6+ messages in thread
From: Guillaume Brunerie @ 2019-09-18  9:00 UTC (permalink / raw)
  To: Anders Mortberg; +Cc: Kristina Sojakova, Homotopy Type Theory

Hi,

We give a definition of S^n with one point and one n-loop by
introduction/elimination/reduction rules in our paper with Dan Licata
(https://guillaumebrunerie.github.io/pdf/lb13cpp.pdf), which can be
implemented in Agda (so Kristina’s question can be formulated and can
presumably be formalized in Agda) but I don’t think we actually proved
it.

Best,
Guillaume

Den ons 18 sep. 2019 kl 10:32 skrev Anders Mortberg <andersmortberg@gmail.com>:
>
> Hi Kristina,
>
> We have proofs for S^0, S^1, S^2 and S^3 in Cubical Agda:
> https://github.com/agda/cubical/blob/master/Cubical/HITs/Susp/Base.agda
>
> However, I don't think we can even write down the general version of
> S^n as a type with a point and an n-loop with the schema implemented
> in Cubical Agda. As far as I know no other schema for HITs support
> this kind of types either.
>
> --
> Anders
>
> On Tue, Sep 17, 2019 at 9:56 PM Kristina Sojakova
> <sojakova.kristina@gmail.com> wrote:
> >
> > Hello everybody,
> >
> > Is it worked out somewhere that the two definitions of Sn as a
> > suspension on one hand and a HIT with a point and an n-loop on the other
> > hand are equivalent? This is also an exercise in the book. I know
> > Favonia has some Agda code on spheres but I couldn't find this result in
> > there.
> >
> > Thanks,
> >
> > Kristina
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
> > To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/6c150b9c-fba6-47c1-2a6d-975b90f64638%40gmail.com.
>
> --
> You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/CAMWCppm0sB2ZDMPM-jUYVpn8qxFJEfep6rsZs%3D8k%3Dhh6yGQF1w%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/CAFJ3QW%2BznvLhFgBODptrjnKcY8QaEH8BxD3adrgRUNvo5fU%2BEQ%40mail.gmail.com.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [HoTT] Different definitions of Sn
  2019-09-18  9:00   ` Guillaume Brunerie
@ 2019-09-18 12:00     ` Anders Mörtberg
  2019-09-18 16:27       ` Licata, Dan
  0 siblings, 1 reply; 6+ messages in thread
From: Anders Mörtberg @ 2019-09-18 12:00 UTC (permalink / raw)
  To: Homotopy Type Theory

[-- Attachment #1.1: Type: text/plain, Size: 3433 bytes --]

Let me elaborate a bit on my answer. One might naively try to copy Dan and 
Guillaume's definition and write the following in Cubical Agda:


Omega : (A : Type₀) → A → Type₀
Omega A a = (a ≡ a)

itOmega : ℕ → (A : Type₀) → A → Type₀
itOmega zero A a = Omega A a
itOmega (suc n) A a = itOmega n (Omega A a) refl

data Sn (n : ℕ) : Type₀ where
  base : Sn n
  surf : itOmega n (Sn n) base


However Agda will complain as surf is not constructing an element of Sn. 
This might seem a bit funny as Cubical Agda is perfectly happy with


data S³ : Type₀ where 
  base : S³ 
  surf : Path (Path (base ≡ base) refl refl) refl refl 


But what is happening under the hood is that surf is a constructor taking 
i, j, and k in the interval and returning an element of S^3 with boundary 
"base" whenever i, j and k are 0 or 1. In cubicaltt we can write this HIT 
in the following way:


data S3 = base
 | surf <i j k> [ (i=0) -> base
                , (i=1) -> base
                , (j=0) -> base
                , (j=1) -> base
                , (k=0) -> base
                , (k=1) -> base ]


The problem is then clearer: in order to write the surf constructor of Sn 
we would have to quantify over n interval variables and specify the 
boundary of the n-cell. This is what that is not supported by any of the 
cubical schemas for HITs.

--
Anders

On Wednesday, September 18, 2019 at 11:00:22 AM UTC+2, Guillaume Brunerie 
wrote:
>
> Hi, 
>
> We give a definition of S^n with one point and one n-loop by 
> introduction/elimination/reduction rules in our paper with Dan Licata 
> (https://guillaumebrunerie.github.io/pdf/lb13cpp.pdf), which can be 
> implemented in Agda (so Kristina’s question can be formulated and can 
> presumably be formalized in Agda) but I don’t think we actually proved 
> it. 
>
> Best, 
> Guillaume 
>
> Den ons 18 sep. 2019 kl 10:32 skrev Anders Mortberg <andersm...@gmail.com 
> <javascript:>>: 
> > 
> > Hi Kristina, 
> > 
> > We have proofs for S^0, S^1, S^2 and S^3 in Cubical Agda: 
> > https://github.com/agda/cubical/blob/master/Cubical/HITs/Susp/Base.agda 
> > 
> > However, I don't think we can even write down the general version of 
> > S^n as a type with a point and an n-loop with the schema implemented 
> > in Cubical Agda. As far as I know no other schema for HITs support 
> > this kind of types either. 
> > 
> > -- 
> > Anders 
> > 
> > On Tue, Sep 17, 2019 at 9:56 PM Kristina Sojakova 
> > <sojakova...@gmail.com <javascript:>> wrote: 
> > > 
> > > Hello everybody, 
> > > 
> > > Is it worked out somewhere that the two definitions of Sn as a 
> > > suspension on one hand and a HIT with a point and an n-loop on the 
> other 
> > > hand are equivalent? This is also an exercise in the book. I know 
> > > Favonia has some Agda code on spheres but I couldn't find this result 
> in 
> > > there. 
> > > 
> > > Thanks, 
> > > 
> > > Kristina 
> > > 
> > > 
>

-- 
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/db712ad2-396f-4328-bb73-898dcb956834%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 19638 bytes --]

<div dir="ltr"><div>Let me elaborate a bit on my answer. One might naively try to copy Dan and Guillaume&#39;s definition and write the following in Cubical Agda:<br></div><div><br></div><div><br></div><div style="background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: break-word;" class="prettyprint"><code class="prettyprint"><div class="subprettyprint"><span style="color: #606;" class="styled-by-prettify">Omega</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">A </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Type</span><span style="color: #660;" class="styled-by-prettify">₀)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">→</span><span style="color: #000;" class="styled-by-prettify"> A </span><span style="color: #660;" class="styled-by-prettify">→</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Type</span><span style="color: #660;" class="styled-by-prettify">₀</span><span style="color: #000;" class="styled-by-prettify"><br></span><span style="color: #606;" class="styled-by-prettify">Omega</span><span style="color: #000;" class="styled-by-prettify"> A a </span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">a </span><span style="color: #660;" class="styled-by-prettify">≡</span><span style="color: #000;" class="styled-by-prettify"> a</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"><br><br>itOmega </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">ℕ</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">→</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">A </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Type</span><span style="color: #660;" class="styled-by-prettify">₀)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">→</span><span style="color: #000;" class="styled-by-prettify"> A </span><span style="color: #660;" class="styled-by-prettify">→</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Type</span><span style="color: #660;" class="styled-by-prettify">₀</span><span style="color: #000;" class="styled-by-prettify"><br>itOmega zero A a </span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Omega</span><span style="color: #000;" class="styled-by-prettify"> A a<br>itOmega </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">suc n</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> A a </span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #000;" class="styled-by-prettify"> itOmega n </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #606;" class="styled-by-prettify">Omega</span><span style="color: #000;" class="styled-by-prettify"> A a</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> refl<br><br>data </span><span style="color: #606;" class="styled-by-prettify">Sn</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">n </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">ℕ)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Type</span><span style="color: #660;" class="styled-by-prettify">₀</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">where</span><span style="color: #000;" class="styled-by-prettify"><br>  </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Sn</span><span style="color: #000;" class="styled-by-prettify"> n<br>  surf </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> itOmega n </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #606;" class="styled-by-prettify">Sn</span><span style="color: #000;" class="styled-by-prettify"> n</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span></div></code></div><br><div><br></div><div>However Agda will complain as surf is not constructing an element of Sn. This might seem a bit funny as Cubical Agda is perfectly happy with</div><div><br></div><div><br></div><div style="background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: break-word;" class="prettyprint"><code class="prettyprint"><div class="subprettyprint"><span style="color: #000;" class="styled-by-prettify">data S</span><span style="color: #660;" class="styled-by-prettify">³</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Type</span><span style="color: #660;" class="styled-by-prettify">₀</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">where</span><span style="color: #000;" class="styled-by-prettify"> <br>  </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> S</span><span style="color: #660;" class="styled-by-prettify">³</span><span style="color: #000;" class="styled-by-prettify"> <br>  surf </span><span style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #606;" class="styled-by-prettify">Path</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #606;" class="styled-by-prettify">Path</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">≡</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> refl refl</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> refl refl <br></span></div></code></div><div><br></div><div><br></div><div>But what is happening under the hood is that surf is a constructor taking i, j, and k in the interval and returning an element of S^3 with boundary &quot;base&quot; whenever i, j and k are 0 or 1. In cubicaltt we can write this HIT in the following way:</div><div><br></div><div><br></div><div><div style="background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: break-word;" class="prettyprint"><code class="prettyprint"><div class="subprettyprint"><span style="color: #000;" class="styled-by-prettify">data S3 </span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"><br> </span><span style="color: #660;" class="styled-by-prettify">|</span><span style="color: #000;" class="styled-by-prettify"> surf </span><span style="color: #660;" class="styled-by-prettify">&lt;</span><span style="color: #000;" class="styled-by-prettify">i j k</span><span style="color: #660;" class="styled-by-prettify">&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">[</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">i</span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #066;" class="styled-by-prettify">0</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">-&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"><br>                </span><span style="color: #660;" class="styled-by-prettify">,</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">i</span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #066;" class="styled-by-prettify">1</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">-&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"><br>                </span><span style="color: #660;" class="styled-by-prettify">,</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">j</span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #066;" class="styled-by-prettify">0</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">-&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"><br>                </span><span style="color: #660;" class="styled-by-prettify">,</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">j</span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #066;" class="styled-by-prettify">1</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">-&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"><br>                </span><span style="color: #660;" class="styled-by-prettify">,</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">k</span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #066;" class="styled-by-prettify">0</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">-&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"><br>                </span><span style="color: #660;" class="styled-by-prettify">,</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">(</span><span style="color: #000;" class="styled-by-prettify">k</span><span style="color: #660;" class="styled-by-prettify">=</span><span style="color: #066;" class="styled-by-prettify">1</span><span style="color: #660;" class="styled-by-prettify">)</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">-&gt;</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #008;" class="styled-by-prettify">base</span><span style="color: #000;" class="styled-by-prettify"> </span><span style="color: #660;" class="styled-by-prettify">]</span><span style="color: #000;" class="styled-by-prettify"><br></span></div></code></div><br><table class="highlight tab-size js-file-line-container" data-tab-size="8"><tbody><tr><td id="LC50" class="blob-code blob-code-inner js-file-line">
<br></td>
      </tr>
      <tr>
        </tr></tbody></table></div><div>The problem is then clearer: in order to write the surf constructor of Sn we would have to quantify over n interval variables and specify the boundary of the n-cell. This is what that is not supported by any of the cubical schemas for HITs.<br></div><div><br></div><div>--</div><div>Anders<br></div><div><br></div>On Wednesday, September 18, 2019 at 11:00:22 AM UTC+2, Guillaume Brunerie wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">Hi,
<br>
<br>We give a definition of S^n with one point and one n-loop by
<br>introduction/elimination/<wbr>reduction rules in our paper with Dan Licata
<br>(<a href="https://guillaumebrunerie.github.io/pdf/lb13cpp.pdf" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fguillaumebrunerie.github.io%2Fpdf%2Flb13cpp.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHVCIouiKMb5ofjV8iaDm4Ekb0zRw&#39;;return true;" onclick="this.href=&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fguillaumebrunerie.github.io%2Fpdf%2Flb13cpp.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHVCIouiKMb5ofjV8iaDm4Ekb0zRw&#39;;return true;">https://guillaumebrunerie.<wbr>github.io/pdf/lb13cpp.pdf</a>), which can be
<br>implemented in Agda (so Kristina’s question can be formulated and can
<br>presumably be formalized in Agda) but I don’t think we actually proved
<br>it.
<br>
<br>Best,
<br>Guillaume
<br>
<br>Den ons 18 sep. 2019 kl 10:32 skrev Anders Mortberg &lt;<a href="javascript:" target="_blank" gdf-obfuscated-mailto="kXEXDOXSAwAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">andersm...@gmail.com</a>&gt;:
<br>&gt;
<br>&gt; Hi Kristina,
<br>&gt;
<br>&gt; We have proofs for S^0, S^1, S^2 and S^3 in Cubical Agda:
<br>&gt; <a href="https://github.com/agda/cubical/blob/master/Cubical/HITs/Susp/Base.agda" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Fagda%2Fcubical%2Fblob%2Fmaster%2FCubical%2FHITs%2FSusp%2FBase.agda\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGpFGHco6XST3xx33l9x6gyHg4NBw&#39;;return true;" onclick="this.href=&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Fagda%2Fcubical%2Fblob%2Fmaster%2FCubical%2FHITs%2FSusp%2FBase.agda\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGpFGHco6XST3xx33l9x6gyHg4NBw&#39;;return true;">https://github.com/agda/<wbr>cubical/blob/master/Cubical/<wbr>HITs/Susp/Base.agda</a>
<br>&gt;
<br>&gt; However, I don&#39;t think we can even write down the general version of
<br>&gt; S^n as a type with a point and an n-loop with the schema implemented
<br>&gt; in Cubical Agda. As far as I know no other schema for HITs support
<br>&gt; this kind of types either.
<br>&gt;
<br>&gt; --
<br>&gt; Anders
<br>&gt;
<br>&gt; On Tue, Sep 17, 2019 at 9:56 PM Kristina Sojakova
<br>&gt; &lt;<a href="javascript:" target="_blank" gdf-obfuscated-mailto="kXEXDOXSAwAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">sojakova...@gmail.com</a>&gt; wrote:
<br>&gt; &gt;
<br>&gt; &gt; Hello everybody,
<br>&gt; &gt;
<br>&gt; &gt; Is it worked out somewhere that the two definitions of Sn as a
<br>&gt; &gt; suspension on one hand and a HIT with a point and an n-loop on the other
<br>&gt; &gt; hand are equivalent? This is also an exercise in the book. I know
<br>&gt; &gt; Favonia has some Agda code on spheres but I couldn&#39;t find this result in
<br>&gt; &gt; there.
<br>&gt; &gt;
<br>&gt; &gt; Thanks,
<br>&gt; &gt;
<br>&gt; &gt; Kristina
<br>&gt; &gt;
<br>&gt; &gt;
<br></blockquote></div>

<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">HomotopyTypeTheory+unsubscribe@googlegroups.com</a>.<br />
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/HomotopyTypeTheory/db712ad2-396f-4328-bb73-898dcb956834%40googlegroups.com?utm_medium=email&utm_source=footer">https://groups.google.com/d/msgid/HomotopyTypeTheory/db712ad2-396f-4328-bb73-898dcb956834%40googlegroups.com</a>.<br />

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [HoTT] Different definitions of Sn
  2019-09-18 12:00     ` Anders Mörtberg
@ 2019-09-18 16:27       ` Licata, Dan
  2019-09-18 19:19         ` Michael Shulman
  0 siblings, 1 reply; 6+ messages in thread
From: Licata, Dan @ 2019-09-18 16:27 UTC (permalink / raw)
  To: Anders Mörtberg; +Cc: Homotopy Type Theory

Thanks Anders.  To be clear, I don’t think we have any schemas or semantics of HITs that accept this definition of S^n (with an n-loop for an internally-specified n) in any non-cubical settings either; at the time, I was thinking of it more as exploring what you can do with the definition.  Proving the two definitions equivalent should be the same (modulo which definitional equalities you get) as implementing the one-n-loop rules in terms of suspensions, so that would be one way to justify these rules.  

Also, the proof of pi_n(S^n) = Z that Guillaume mentioned, which predated Freudenthal, is a lot more work than the one that you get from Freudenthal, so I’m not sure we have any motivating examples for why the one-n-loop definition is better than the suspension definition for arbitrary n.  

-Dan

> On Sep 18, 2019, at 8:00 AM, Anders Mörtberg <andersmortberg@gmail.com> wrote:
> 
> Let me elaborate a bit on my answer. One might naively try to copy Dan and Guillaume's definition and write the following in Cubical Agda:
> 
> 
> Omega : (A : Type₀) → A → Type₀
> Omega A a = (a ≡ a)
> 
> itOmega : ℕ → (A : Type₀) → A → Type₀
> itOmega zero A a = Omega A a
> itOmega (suc n) A a = itOmega n (Omega A a) refl
> 
> data Sn (n : ℕ) : Type₀ where
>   base : Sn n
>   surf : itOmega n (Sn n) base
> 
> 
> However Agda will complain as surf is not constructing an element of Sn. This might seem a bit funny as Cubical Agda is perfectly happy with
> 
> 
> data S³ : Type₀ where 
>   base : S³ 
>   surf : Path (Path (base ≡ base) refl refl) refl refl 
> 
> 
> But what is happening under the hood is that surf is a constructor taking i, j, and k in the interval and returning an element of S^3 with boundary "base" whenever i, j and k are 0 or 1. In cubicaltt we can write this HIT in the following way:
> 
> 
> data S3 = base
>  | surf <i j k> [ (i=0) -> base
>                 , (i=1) -> base
>                 , (j=0) -> base
>                 , (j=1) -> base
>                 , (k=0) -> base
>                 , (k=1) -> base ]
> 
> 
> The problem is then clearer: in order to write the surf constructor of Sn we would have to quantify over n interval variables and specify the boundary of the n-cell. This is what that is not supported by any of the cubical schemas for HITs.
> 
> --
> Anders
> 
> On Wednesday, September 18, 2019 at 11:00:22 AM UTC+2, Guillaume Brunerie wrote:
> Hi, 
> 
> We give a definition of S^n with one point and one n-loop by 
> introduction/elimination/reduction rules in our paper with Dan Licata 
> (https://guillaumebrunerie.github.io/pdf/lb13cpp.pdf), which can be 
> implemented in Agda (so Kristina’s question can be formulated and can 
> presumably be formalized in Agda) but I don’t think we actually proved 
> it. 
> 
> Best, 
> Guillaume 
> 
> Den ons 18 sep. 2019 kl 10:32 skrev Anders Mortberg <andersm...@gmail.com>: 
> > 
> > Hi Kristina, 
> > 
> > We have proofs for S^0, S^1, S^2 and S^3 in Cubical Agda: 
> > https://github.com/agda/cubical/blob/master/Cubical/HITs/Susp/Base.agda 
> > 
> > However, I don't think we can even write down the general version of 
> > S^n as a type with a point and an n-loop with the schema implemented 
> > in Cubical Agda. As far as I know no other schema for HITs support 
> > this kind of types either. 
> > 
> > -- 
> > Anders 
> > 
> > On Tue, Sep 17, 2019 at 9:56 PM Kristina Sojakova 
> > <sojakova...@gmail.com> wrote: 
> > > 
> > > Hello everybody, 
> > > 
> > > Is it worked out somewhere that the two definitions of Sn as a 
> > > suspension on one hand and a HIT with a point and an n-loop on the other 
> > > hand are equivalent? This is also an exercise in the book. I know 
> > > Favonia has some Agda code on spheres but I couldn't find this result in 
> > > there. 
> > > 
> > > Thanks, 
> > > 
> > > Kristina 
> > > 
> > > 
> 
> -- 
> You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/db712ad2-396f-4328-bb73-898dcb956834%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/DBF368F2-295C-4175-93F2-1EA01D49B95D%40wesleyan.edu.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [HoTT] Different definitions of Sn
  2019-09-18 16:27       ` Licata, Dan
@ 2019-09-18 19:19         ` Michael Shulman
  0 siblings, 0 replies; 6+ messages in thread
From: Michael Shulman @ 2019-09-18 19:19 UTC (permalink / raw)
  To: Licata, Dan; +Cc: Anders Mörtberg, Homotopy Type Theory

What I find more interesting is that it's even *possible* to
parametrize a definition of S^n with one n-loop by an internal n.  It
would be intriguing to try to find a schema or semantics for HITs that
allow paths of arbitrary internally-specified dimensions, and see
whether there are other examples that are more useful.  The only other
vaguely similar example that I know of is mentioned at the end of
https://homotopytypetheory.org/2014/11/02/universal-properties-without-function-extensionality/
(and implemented in the HoTT/Coq library), a definition of
localization that works in the absence of funext.

On Wed, Sep 18, 2019 at 9:27 AM Licata, Dan <dlicata@wesleyan.edu> wrote:
>
> Thanks Anders.  To be clear, I don’t think we have any schemas or semantics of HITs that accept this definition of S^n (with an n-loop for an internally-specified n) in any non-cubical settings either; at the time, I was thinking of it more as exploring what you can do with the definition.  Proving the two definitions equivalent should be the same (modulo which definitional equalities you get) as implementing the one-n-loop rules in terms of suspensions, so that would be one way to justify these rules.
>
> Also, the proof of pi_n(S^n) = Z that Guillaume mentioned, which predated Freudenthal, is a lot more work than the one that you get from Freudenthal, so I’m not sure we have any motivating examples for why the one-n-loop definition is better than the suspension definition for arbitrary n.
>
> -Dan
>
> > On Sep 18, 2019, at 8:00 AM, Anders Mörtberg <andersmortberg@gmail.com> wrote:
> >
> > Let me elaborate a bit on my answer. One might naively try to copy Dan and Guillaume's definition and write the following in Cubical Agda:
> >
> >
> > Omega : (A : Type₀) → A → Type₀
> > Omega A a = (a ≡ a)
> >
> > itOmega : ℕ → (A : Type₀) → A → Type₀
> > itOmega zero A a = Omega A a
> > itOmega (suc n) A a = itOmega n (Omega A a) refl
> >
> > data Sn (n : ℕ) : Type₀ where
> >   base : Sn n
> >   surf : itOmega n (Sn n) base
> >
> >
> > However Agda will complain as surf is not constructing an element of Sn. This might seem a bit funny as Cubical Agda is perfectly happy with
> >
> >
> > data S³ : Type₀ where
> >   base : S³
> >   surf : Path (Path (base ≡ base) refl refl) refl refl
> >
> >
> > But what is happening under the hood is that surf is a constructor taking i, j, and k in the interval and returning an element of S^3 with boundary "base" whenever i, j and k are 0 or 1. In cubicaltt we can write this HIT in the following way:
> >
> >
> > data S3 = base
> >  | surf <i j k> [ (i=0) -> base
> >                 , (i=1) -> base
> >                 , (j=0) -> base
> >                 , (j=1) -> base
> >                 , (k=0) -> base
> >                 , (k=1) -> base ]
> >
> >
> > The problem is then clearer: in order to write the surf constructor of Sn we would have to quantify over n interval variables and specify the boundary of the n-cell. This is what that is not supported by any of the cubical schemas for HITs.
> >
> > --
> > Anders
> >
> > On Wednesday, September 18, 2019 at 11:00:22 AM UTC+2, Guillaume Brunerie wrote:
> > Hi,
> >
> > We give a definition of S^n with one point and one n-loop by
> > introduction/elimination/reduction rules in our paper with Dan Licata
> > (https://guillaumebrunerie.github.io/pdf/lb13cpp.pdf), which can be
> > implemented in Agda (so Kristina’s question can be formulated and can
> > presumably be formalized in Agda) but I don’t think we actually proved
> > it.
> >
> > Best,
> > Guillaume
> >
> > Den ons 18 sep. 2019 kl 10:32 skrev Anders Mortberg <andersm...@gmail.com>:
> > >
> > > Hi Kristina,
> > >
> > > We have proofs for S^0, S^1, S^2 and S^3 in Cubical Agda:
> > > https://github.com/agda/cubical/blob/master/Cubical/HITs/Susp/Base.agda
> > >
> > > However, I don't think we can even write down the general version of
> > > S^n as a type with a point and an n-loop with the schema implemented
> > > in Cubical Agda. As far as I know no other schema for HITs support
> > > this kind of types either.
> > >
> > > --
> > > Anders
> > >
> > > On Tue, Sep 17, 2019 at 9:56 PM Kristina Sojakova
> > > <sojakova...@gmail.com> wrote:
> > > >
> > > > Hello everybody,
> > > >
> > > > Is it worked out somewhere that the two definitions of Sn as a
> > > > suspension on one hand and a HIT with a point and an n-loop on the other
> > > > hand are equivalent? This is also an exercise in the book. I know
> > > > Favonia has some Agda code on spheres but I couldn't find this result in
> > > > there.
> > > >
> > > > Thanks,
> > > >
> > > > Kristina
> > > >
> > > >
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
> > To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/db712ad2-396f-4328-bb73-898dcb956834%40googlegroups.com.
>
> --
> You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/DBF368F2-295C-4175-93F2-1EA01D49B95D%40wesleyan.edu.

-- 
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/HomotopyTypeTheory/CAOvivQy%2BUGKt3q8P8ed9N6E%2BjOUcjgQ49pxp0rBuDM%3DSoV-QbQ%40mail.gmail.com.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-17 19:56 [HoTT] Different definitions of Sn Kristina Sojakova
2019-09-18  8:32 ` Anders Mortberg
2019-09-18  9:00   ` Guillaume Brunerie
2019-09-18 12:00     ` Anders Mörtberg
2019-09-18 16:27       ` Licata, Dan
2019-09-18 19:19         ` Michael Shulman

Discussion of Homotopy Type Theory and Univalent Foundations

Archives are clonable: git clone --mirror http://inbox.vuxu.org/hott

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.hott


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git