Zulip Chat Archive
Stream: new members
Topic: function extensionality and transports
Edward Ayers (Aug 08 2018 at 18:40):
lemma my_ext : ∀ (α :Type) (P Q : α -> Type) (f : Π (a : α), P a ) (g : Π (a : α), Q a) (p : ∀ (a : α), P a = Q a), (∀ (a : α), ((p a) ▸ (f a)) = g a) -> ((funext p) ▸ f) = g := by sorry
Some questions:
1. How do I get the transport triangles to work? I get the same error if I reverse the arguments so I don't even know if I'm using it the right way round
2. How do I prove it?
3. Is it crazy to want to do this?
Chris Hughes (Aug 08 2018 at 18:44):
The triangles are for eq.subst
which can only make proofs, not data. You have to use eq.rec
I think. You could also use heq ==
Mario Carneiro (Aug 08 2018 at 18:48):
lemma my_ext (α :Type) (P Q : α -> Type) (f : Π (a : α), P a ) (g : Π (a : α), Q a) (p : ∀ (a : α), P a = Q a) : (∀ (a : α), (eq.rec_on (p a) (f a) : Q a) = g a) -> (eq.rec_on (funext p : P = Q) f : Π (a : α), Q a) = g := by cases (funext p : P = Q); exact funext
Last updated: Dec 20 2023 at 11:08 UTC