|
| 1 | + |
| 2 | +{-# OPTIONS --cubical-compatible #-} |
| 3 | + |
| 4 | +module abhom where |
| 5 | + |
| 6 | +data _≡_ {A : Set} (a : A) : A → Set where |
| 7 | + refl : a ≡ a |
| 8 | + |
| 9 | +trp : ∀ {A} {B : A → Set} {a₁ a₂ : A} → (a₁ ≡ a₂) → B a₁ → B a₂ |
| 10 | +trp refl b = b |
| 11 | + |
| 12 | +_∙_ : ∀ {A} {a₁ a₂ a₃ : A} → (a₂ ≡ a₃) → (a₁ ≡ a₂) → (a₁ ≡ a₃) |
| 13 | + |
| 14 | +p ∙ refl = p |
| 15 | + |
| 16 | +refl∙ : ∀ {A} {a₁ a₂ : A} {p : a₁ ≡ a₂} → p ≡ (refl ∙ p) |
| 17 | +refl∙ {p = refl} = refl |
| 18 | + |
| 19 | +[_] : ∀ {A B} {a₁ a₂ : A} (f : A → B) → (a₁ ≡ a₂) → (f a₁) ≡ (f a₂) |
| 20 | +[ f ] refl = refl |
| 21 | + |
| 22 | +module ≡-Reasoning {A : Set} where |
| 23 | + |
| 24 | + infix 1 begin_ |
| 25 | + infixr 2 step-≡-∣ step-≡-⟩ |
| 26 | + infix 3 _∎ |
| 27 | + |
| 28 | + begin_ : ∀ {x y : A} → x ≡ y → x ≡ y |
| 29 | + begin x≡y = x≡y |
| 30 | + |
| 31 | + step-≡-∣ : ∀ (x : A) {y : A} → x ≡ y → x ≡ y |
| 32 | + step-≡-∣ x x≡y = x≡y |
| 33 | + |
| 34 | + step-≡-⟩ : ∀ (x : A) {y z : A} → y ≡ z → x ≡ y → x ≡ z |
| 35 | + step-≡-⟩ x y≡z x≡y = y≡z ∙ x≡y |
| 36 | + |
| 37 | + syntax step-≡-∣ x x≡y = x ≡⟨⟩ x≡y |
| 38 | + syntax step-≡-⟩ x y≡z x≡y = x ≡⟨ x≡y ⟩ y≡z |
| 39 | + |
| 40 | + _∎ : ∀ (x : A) → x ≡ x |
| 41 | + x ∎ = refl |
| 42 | + |
| 43 | +open ≡-Reasoning |
| 44 | + |
| 45 | +η≡ : ∀ {A B : Set} {f g : A → B} → (f ≡ g) → ∀ x → (f x) ≡ (g x) |
| 46 | +η≡ refl x = refl |
| 47 | + |
| 48 | +postulate fun-ext : ∀ {A B : Set} {f g : A → B} → (∀ x → (f x) ≡ (g x)) → (f ≡ g) |
| 49 | + |
| 50 | +η≡-∙ : ∀ {A B : Set} {f g h : A → B} (p : g ≡ h) (q : f ≡ g) → ∀ x → η≡ (p ∙ q) x ≡ ((η≡ p x) ∙ (η≡ q x)) |
| 51 | +η≡-∙ refl refl x = refl |
| 52 | + |
| 53 | +isProp : Set → Set |
| 54 | +isProp A = ∀ (x y : A) → x ≡ y |
| 55 | + |
| 56 | +isSet : Set → Set |
| 57 | +isSet A = ∀ (x y : A) → isProp (x ≡ y) |
| 58 | + |
| 59 | +isGrpd : Set → Set |
| 60 | +isGrpd A = ∀ (x y : A) → isSet (x ≡ y) |
| 61 | + |
| 62 | +is2Type : Set → Set |
| 63 | +is2Type A = ∀ (x y : A) → isGrpd (x ≡ y) |
| 64 | + |
| 65 | +data Σ (A : Set) (B : A → Set) : Set where |
| 66 | + _,_ : ∀ a → B a → Σ A B |
| 67 | + |
| 68 | +fst : ∀ {A B} → Σ A B → A |
| 69 | +fst (x , y) = x |
| 70 | + |
| 71 | +snd : ∀ {A B} → ∀ (p : Σ A B) → B (fst p) |
| 72 | +snd (x , y) = y |
| 73 | + |
| 74 | +Σ≡ : ∀ {A B} {x y : Σ A B} → x ≡ y → Σ ((fst x) ≡ (fst y)) (λ p → (snd y) ≡ (trp {B = B} p (snd x))) |
| 75 | +Σ≡ refl = refl , refl |
| 76 | + |
| 77 | +≡Σ : ∀ {A B} {x y : Σ A B} (p : (fst x) ≡ (fst y)) → (snd y) ≡ (trp {B = B} p (snd x)) → x ≡ y |
| 78 | +≡Σ {x = x₁ , x₂} {y = y₁ , y₂} refl refl = refl |
| 79 | + |
| 80 | +Ω : ∀ A → A → Set |
| 81 | +Ω A a = a ≡ a |
| 82 | + |
| 83 | +ptdMap : ∀ A (a : A) B (b : B) → Set |
| 84 | +ptdMap A a B b = Σ (A → B) λ f → b ≡ (f a) |
| 85 | + |
| 86 | +cst⋆ : ∀ A (a : A) B (b : B) → ptdMap A a B b |
| 87 | +cst⋆ A a B b = (λ _ → b) , refl |
| 88 | + |
| 89 | +ptw-∙ : ∀ {A B a b} → ptdMap A a (Ω B b) refl → ptdMap A a (Ω B b) refl → ptdMap A a (Ω B b) refl |
| 90 | +ptw-∙ {a = a} (f , f⋆) (g , g⋆) = (λ x → f x ∙ g x) , ([ _∙_ (f a) ] g⋆ ∙ f⋆) -- (([ (λ p → p ∙ (g a)) ] f⋆) ∙ [ (λ p → refl ∙ p) ] g⋆) |
| 91 | + |
| 92 | +≡-pdtMap : ∀ {A} {a : A} {B} {b : B} {f g : ptdMap A a B b} (p : f ≡ g) → (snd g) ≡ ((η≡ (fst (Σ≡ p)) a) ∙ (snd f)) |
| 93 | +≡-pdtMap refl = refl∙ |
| 94 | + |
| 95 | +trp-pdtMap : ∀ {A} {a : A} {B} {b : B} {f g : A → B} (p : f ≡ g) (q : b ≡ f a) → (trp p q) ≡ (η≡ p a ∙ q) |
| 96 | +trp-pdtMap refl q = refl∙ |
| 97 | + |
| 98 | +≡-pdtMap-∙ : ∀ {A} {a : A} {B} {b : B} {f g h : ptdMap A a B b} (p : g ≡ h) (q : f ≡ g) → (fst (Σ≡ (p ∙ q))) ≡ ((fst (Σ≡ p)) ∙ (fst (Σ≡ q))) |
| 99 | +≡-pdtMap-∙ refl refl = refl |
| 100 | + |
| 101 | + |
| 102 | +trp-≡-ptdMap-∙ : ∀ {A} {a : A} {B} {b : B} {f g h : ptdMap A a B b} (p : g ≡ h) (q : f ≡ g) |
| 103 | + → ([ _∙_ (η≡ (fst (Σ≡ p)) a) ] (≡-pdtMap q) ∙ ≡-pdtMap p) |
| 104 | + ≡ (trp {A = A → Ω B } ({!fun-ext!} ∙ ([ η≡ ] (≡-pdtMap-∙ p q))) (≡-pdtMap (p ∙ q))) |
| 105 | +trp-≡-ptdMap-∙ = {!!} |
| 106 | + |
| 107 | +abHom : ∀ BG shG B²H pt-B²H → Ω (ptdMap BG shG B²H pt-B²H) (cst⋆ BG shG B²H pt-B²H) → ptdMap BG shG (Ω B²H pt-B²H) refl |
| 108 | +abHom BG shG B²H pt-B²H p = (η≡ (fst (Σ≡ p))) , (≡-pdtMap p) |
| 109 | +--with Σ≡ p |
| 110 | +--... | p₁ , p₂ = (η≡ p₁) , (trp-pdtMap p₁ refl ∙ p₂) |
| 111 | + |
| 112 | +abHom-unit : ∀ BG shG B²H pt-B²H → (abHom BG shG B²H pt-B²H) refl ≡ (cst⋆ BG shG (Ω B²H pt-B²H) refl) |
| 113 | +abHom-unit BG shG B²H pt-B²H = refl |
| 114 | + |
| 115 | +abHom-mult : ∀ BG shG B²H pt-B²H p q → (abHom BG shG B²H pt-B²H) (p ∙ q) ≡ ptw-∙ (abHom BG shG B²H pt-B²H p) (abHom BG shG B²H pt-B²H q) |
| 116 | +abHom-mult BG shG B²H pt-B²H p q = ≡Σ (fun-ext (η≡-∙ (fst (Σ≡ p)) (fst (Σ≡ q))) ∙ ([ η≡ ] (≡-pdtMap-∙ p q))) {!(fun-ext (η≡-∙ (fst (Σ≡ p)) (fst (Σ≡ q))) ∙ |
| 117 | + [ η≡ ] (≡-pdtMap-∙ p q))!} |
| 118 | +--with Σ≡ p | Σ≡ q |
| 119 | +--... | p- , p⋆ | q- , q⋆ = ≡Σ ( fun-ext (η≡-∙ p- q-) ∙ {![ η≡ ] ?!} ) {!!} |
| 120 | + |
| 121 | + |
| 122 | + |
0 commit comments