113 lines
2.5 KiB
Agda
113 lines
2.5 KiB
Agda
|
{-# OPTIONS --without-K #-}
|
|||
|
|
|||
|
module Ch6HoTT where
|
|||
|
|
|||
|
-- S¹-ind : (P : S¹ → Set) → (b : P base) → (ℓ : transport loop b ≡ b) → (x : S¹) → P x
|
|||
|
-- S¹-ind P b ℓ base = transport ? b
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-- f : A → B
|
|||
|
-- a1 a2 : A
|
|||
|
-- p : a1 ≡ a2
|
|||
|
--
|
|||
|
-- (ap f p) : f a1 ≡ f a2
|
|||
|
|
|||
|
|
|||
|
-- f : (x : A) → B x
|
|||
|
-- a1 a2 : A
|
|||
|
-- p : a1 ≡ a2
|
|||
|
--
|
|||
|
-- T : B a1 → B a2
|
|||
|
-- T = transport B p
|
|||
|
-- (apd f p) : T (f a1) ≡ f a2
|
|||
|
-- (apd f p) : transport B p (f a1) ≡ f a2
|
|||
|
|
|||
|
import Relation.Binary.PropositionalEquality as Eq
|
|||
|
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_) renaming (Set to Type) public
|
|||
|
|
|||
|
data _≡_ {l : Level} {A : Type l} : A → A → Type l where
|
|||
|
refl : (x : A) → x ≡ x
|
|||
|
|
|||
|
-- Path induction
|
|||
|
path-ind : ∀ {u} → {A : Set} →
|
|||
|
(C : (x y : A) → x ≡ y → Set u) →
|
|||
|
(c : (x : A) → C x x (refl x)) →
|
|||
|
{x y : A} → (p : x ≡ y) → C x y p
|
|||
|
path-ind C c {x} (refl x) = c x
|
|||
|
|
|||
|
Path : {l : Level} (A : Type l) → A → A → Type l
|
|||
|
Path A x y = x ≡ y
|
|||
|
|
|||
|
syntax Path A x y = x ≡ y [ A ]
|
|||
|
|
|||
|
id : {ℓ : Level} {A : Set ℓ} → A → A
|
|||
|
id x = x
|
|||
|
|
|||
|
-- Transport
|
|||
|
transport : {X : Set} (P : X → Set) {x y : X} → x ≡ y → P x → P y
|
|||
|
transport P (refl x) = id
|
|||
|
|
|||
|
ap : {A B : Set} (f : A → B) {x y : A} → x ≡ y → f x ≡ f y
|
|||
|
ap f p = path-ind (λ x y p → f x ≡ f y) (λ x → ?) p
|
|||
|
|
|||
|
postulate
|
|||
|
S¹ : Set
|
|||
|
|
|||
|
base : S¹
|
|||
|
|
|||
|
loop : base ≡ base [ S¹ ]
|
|||
|
|
|||
|
-- (apd f p) : transport B p (f a1) ≡ f a2
|
|||
|
-- apd _ loop
|
|||
|
-- f : (x : A) → C x
|
|||
|
-- loop : base ≡ base, base : S¹
|
|||
|
--
|
|||
|
-- apd f loop : transport C loop (f base) ≡ f base
|
|||
|
--
|
|||
|
-- S¹-ind : (C : S¹ → Set)
|
|||
|
-- → (c-base : C base)
|
|||
|
-- → (c-loop : ?)
|
|||
|
-- → (s : S¹) → C s
|
|||
|
--
|
|||
|
-- N-ind : () → (c-zero : C 0) → ... → (n : N) → C n
|
|||
|
--
|
|||
|
-- N-ind 0 : C 0
|
|||
|
--
|
|||
|
-- f : (x : S¹) → C x
|
|||
|
-- f = S¹-ind C _ _
|
|||
|
--
|
|||
|
-- f base : C base
|
|||
|
--
|
|||
|
-- apd (f) loop : (transport C loop (f base)) ≡ f base
|
|||
|
-- (c-loop : (transport C loop (f base)) ≡ f base)
|
|||
|
--
|
|||
|
-- ap f (p₁ ∙ p₂) = (ap f p₁) ∙ (ap f p₂)
|
|||
|
|
|||
|
-- (λ _ → A)
|
|||
|
|
|||
|
lemma625 : {A : Set} → (a : A) → (p : a ≡ a) → (S¹ → A)
|
|||
|
lemma625 a p s1 = ?
|
|||
|
|
|||
|
lemma625prop1 : {A : Set} {a : A} {p : a ≡ a} → (lemma625 a p base ≡ a)
|
|||
|
-- lemma625prop1 = refl
|
|||
|
|
|||
|
lemma625prop2 : {A : Set} (a : A) → (p : a ≡ a) → ap (lemma625 a p) loop ≡ p
|
|||
|
-- lemma625prop2 a p = refl
|
|||
|
|
|||
|
-- f : S¹ → A
|
|||
|
-- f = lemma625 a p
|
|||
|
--
|
|||
|
-- f-loop : f base ≡ f base
|
|||
|
-- f-loop : ap f loop
|
|||
|
--
|
|||
|
-- f-loop ≡ p
|