Zulip Chat Archive

Stream: new members

Topic: logic manipulation

Michael Beeson (Oct 06 2020 at 03:38):

h93:  (y : M), y  b  y  z  ¬y  z
h94: (( (z_1 : M), z_1  z  z_1  b)   (x : M), x  b  x  z  b - z)  z  FINITE M

So what is the "easy" way to substitute a new variable, say t, for z_1 and x and get on with it from there? as I would
do with 'cases' if it were a positive existential; here it's a negative universal and I do not know the right command.

Kyle Miller (Oct 06 2020 at 04:04):

It's a bit hard to understand your question -- it can be very helpful having a minimal working example (#mwe), for example as an example. Here's an approximation, since I'm not sure what all your types are, along with some tactics that might be helpful in this context:

example (M : Type*) (b z : set M) (FINITE : Type*  set (set M))
  (h93:  (y : M), y  b  y  z  ¬y  z)
  (h94: (( (z_1 : M), z_1  z  z_1  b)   (x : M), x  b  x  z  b \ z)  z  FINITE M)
  : (z  FINITE M) :=
  apply h94,
  intros t ht,
  specialize h93 t,


Michael Beeson (Oct 06 2020 at 04:18):

Thank you, Kyle, "apply" was the thing I didn't know. I've written something like 14000 lines of Lean proofs and never once used "apply" because I don't know about it. Now I'll learn it. Also, thanks for demonstrating how I could have made a MWE out of this few lines. I didn't think it was possible.

Last updated: Dec 20 2023 at 11:08 UTC