Zulip Chat Archive

Stream: new members

Topic: congr under an existential


Yakov Pechersky (Sep 21 2020 at 22:03):

Is there an existing lemma that says the following? Is it a pi lemma?

example {α β γ δ : Type} {x y : α} {f : α  β  γ} {g : γ  δ} (h :  z, f x z = f y z) :
   z, g (f x z) = g (f y z) :=
begin
  obtain z, hz := h,
  use z,
  rw hz,
end

Yakov Pechersky (Sep 21 2020 at 22:17):

I guess the reverse, with a hypothesis about injectivity of g is what I really want.

Yakov Pechersky (Sep 21 2020 at 22:20):

Ah, a variant of exists.imp

Yakov Pechersky (Sep 21 2020 at 22:27):

So, why does the first example work but not the second?

lemma exists_inj {α β γ δ : Type} {x : α} {f : α  β} {g : β  γ} (hg : function.injective g)
  (h :  z, g (f x) = g z) :  z, f x = z :=
Exists.imp (λ z H, @hg (f x) z H) h
lemma exists_inj {α β γ δ : Type} {x : α} {f : α  β} {g : β  γ} (hg : function.injective g)
  (h :  z, g (f x) = g z) :  z, f x = z :=
Exists.imp (λ z H, hg H) h

Mario Carneiro (Sep 21 2020 at 22:37):

function.injective is a definition that wraps something like \forall {{x y}}, f x = f y -> x = y

Yakov Pechersky (Sep 21 2020 at 22:38):

So it can't infer the (f x) or z. Got it. In any case, this isn't leading me down to where I want because of the "exists can only elim into prop" issue.

Mario Carneiro (Sep 21 2020 at 22:38):

Oh, it's the elab order

Mario Carneiro (Sep 21 2020 at 22:38):

lemma exists_inj {α β γ δ : Type} {x : α} {f : α  β} {g : β  γ} (hg : function.injective g)
  (h :  z, g (f x) = g z) :  z, f x = z :=
h.imp (λ z H, hg H)

this works fine

Mario Carneiro (Sep 21 2020 at 22:39):

What are you trying to do?

Yakov Pechersky (Sep 21 2020 at 22:40):

I'm basically trying to do the equivalent of an apply_fun on both sides of an equality that is behind an existential.

Mario Carneiro (Sep 21 2020 at 22:42):

but you did that

Mario Carneiro (Sep 21 2020 at 22:42):

so that must not be the problem

Yakov Pechersky (Sep 21 2020 at 22:42):

I'm going to try something, will be back later with attempts.

Mario Carneiro (Sep 21 2020 at 22:43):

Generally, you should open an existential if you want to work on the contents


Last updated: Dec 20 2023 at 11:08 UTC