0

I have found that I can prove the following lemma, which seems false to me.

lemma assumes "∀a b. f a > f b ∧ a ≠ b"
shows "∀a b. f b > f a"
using assms by auto

How can the lemma above be true? Is Isabelle substituting values as I have used the ∀ quantifier? If so, I want to state the for all values of a and b, f(a) is greater than f(b), how would I do this?

creator22
  • 9
  • 1

2 Answers2

0

The lemma you state is trivially true. Almost a direct instance of "A ==> A". From your assumption it may trivially be concluded that ∀a b. f a > f b. Then by renaming bound variables appropriately we obtain ∀b a. f b > f a. Moreover all-quantifiers may be reordered to obtain ∀a b. f b > f a.

chris
  • 4,988
  • 20
  • 36
0

Why does it seem false? You are stating that for ANY a and b, f a > f b and a ≠ b. This means that if say a = 0 and b = 1 then f 0 > f 1 but also when a = 1 and b = 0 it means that f 1 > f 0.

Furthermore, you assume ∀a b. f a > f b ∧ a ≠ b is true, this means you ASSUME that for any a and b, f a > f b AND a different from b. This is generally false as you can not have ∀a b. a ≠ b

Maybe what you meant to say was: ∀a b. (a ≠ b ==> f a > f b)? eg. for any a and b, if a ≠ b then f a > f b? Note that this still implies f b > f a as per the example above, it it really isn't saying anything meaningful.

  • I understand, I was confused. How would I represent for a in the set S, f a is greater than f b, where b also belongs to the set S? – creator22 Feb 10 '15 at 22:40
  • 1
    Instead of `∀a b. a ≠ b ==> f a > f b` (which is parsed as `(∀a b. a ≠ b) ==> f a > f b`) you probably want `∀a b. a ≠ b --> f a > f b`. – Brian Huffman Feb 10 '15 at 23:11
  • Note that this is probably not what you want, because that would mean that for any `a` and `b` with `a ≠ b`, you have both `f a < f b` and `f a > f b`. This should not hold for any sensible ordering. – Manuel Eberl Feb 11 '15 at 06:39
  • @creator22, can you give a concrete example of such a set S? I'm asking because if I understand your question right, you seem to be saying: if `S = {1,2}` then `f 1 > f 2`, but also `f 2 > f 1`, which doesn't make sense. – Eduard Nicodei Feb 11 '15 at 18:11