module extraexercises where open import Data.Nat open import Relation.Binary.PropositionalEquality as Eq open Eq.≡-Reasoning J : {A : Set} → (C : (x y : A) → x ≡ y → Set) → (c : (x : A) → C x x refl) → (x y : A) → (p : x ≡ y) → C x y p J C c x x refl = c x inv : {A : Set} {a b : A} → (d : a ≡ b) → sym (sym d) ≡ d inv {A} {a} {b} d = J (λ x y p → sym (sym p) ≡ p ) (λ x → refl) a b d -- Problem 2 assoc : {A : Set} {a b c d : A} → (e : a ≡ b) → (f : b ≡ c) → (g : c ≡ d) → trans (trans e f) g ≡ trans e (trans f g) assoc {a} {b} {c} {d} e f g = let whatever = J {! !} {! !} {! !} {! !} {! !} in {! !} -- Problem 6 -- id : {A : Set} → (a : A) → a ≡ a -- id a = refl -- interchange : {A : Set} -- → (a : A) -- → (d : id a ≡ id a) -- → (e : id a ≡ id a) -- → trans d e ≡ trans e d -- interchange a d e = -- let transde = trans d e in -- let transed = trans e d in -- let tmpl = J (λ x y p → {! !}) (λ x → {! !}) (id a) (id a) transde in -- {! !}