open import Paths
open data Segment
| left | right
| seg : left = right
def uniqueness (b : Segment) : left = b
| left ⇒ idp
| right ⇒ \i ⇒ seg i
| seg i ⇒ \j ⇒ seg (i ∧ j)
def isContrSegment : isContr Segment ⇒ (_, uniqueness)
private def funExt-lemma {A B : Type} (f g : A → B) (p : ∀ x → f x = g x) : Segment → A → B
| f, g, p, left, a ⇒ f a
| f, g, p, right, a ⇒ g a
| f, g, p, seg i, a ⇒ p a i
example def funExt' {A B : Type} (f g : A → B) (p : ∀ x → f x = g x) : f = g
⇒ pmap (funExt-lemma f g p) seg