Skip to content

Instantly share code, notes, and snippets.

@Saizan
Created March 15, 2019 12:16
Show Gist options
  • Save Saizan/ff5bf95174e40c42c4294b27f47f1caf to your computer and use it in GitHub Desktop.
Save Saizan/ff5bf95174e40c42c4294b27f47f1caf to your computer and use it in GitHub Desktop.
{-# OPTIONS --cubical #-}
module Extension where
open import Agda.Primitive
open import Cubical.Core.Everything
open import Agda.Builtin.Nat
infixr 4 _,,_
record I×_ (A : Setω) : Setω where
constructor _,,_
field
fst : I
snd : A
open I×_ public
record EData l : Setω where
constructor _∣_
field
{face} : I
type : Set l
boundary : Partial face type
I^ : Nat → Setω
I^ zero = I
I^ (suc n) = I× I^ n
FunI : Nat → ∀ l → Setω
FunI zero l = EData l
FunI (suc n) l = I → FunI n l
uncurry : ∀ {n} {l} → FunI (suc n) l → I^ n → EData l
uncurry {zero} f c = f c
uncurry {suc n} f c = uncurry {n} (f (c .fst)) (c .snd)
postulate
primExtension : ∀ {l n} → (I^ n → EData l) → Set l
Ext : ∀ {n} {l} → FunI (suc n) l → Set l
Ext f = primExtension (uncurry f)
-- The `I` in (i j : I) is needed for inferring the type as Pi rather than PathP.
bar : Set
bar = Ext \ (i j : I) → Nat ∣ \ { (i = i0) → zero; (i = i1) → suc zero }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment