Ching-Tsun Chou
2018-09-04 07:11:53 UTC
First, how do I prove a "¬ 2 ≤ 1"? Neither arith nor simp nor (simp add:
eval_nat_numeral) works.
Second, I have simple inductive definition and a lemma:
inductive le :: "nat ⇒ nat ⇒ bool" (infix "⊑" 50) where
le_n: "n ⊑ n" |
le_S: "n ⊑ m ⟹ n ⊑ (Suc m)"
lemma le_leq: "n ⊑ m ⟹ n ≤ m"
apply (induction rule: le.induct)
by (simp_all)
But then when I try to prove:
lemma "¬ 2 ⊑ 1"
proof (intro notI)
assume "2 ⊑ 1"
then have "2 ≤ 1" *by (rule le_leq)*
I get stuck. I can't figure out how to use the lemma le_leq above.
Isabelle complains:
Failed to apply initial proof method⌂:
using this:
2 ⊑ 1
goal (1 subgoal):
1. 2 ≤ 1
What does that mean?
Thanks!
- Ching Tsun
eval_nat_numeral) works.
Second, I have simple inductive definition and a lemma:
inductive le :: "nat ⇒ nat ⇒ bool" (infix "⊑" 50) where
le_n: "n ⊑ n" |
le_S: "n ⊑ m ⟹ n ⊑ (Suc m)"
lemma le_leq: "n ⊑ m ⟹ n ≤ m"
apply (induction rule: le.induct)
by (simp_all)
But then when I try to prove:
lemma "¬ 2 ⊑ 1"
proof (intro notI)
assume "2 ⊑ 1"
then have "2 ≤ 1" *by (rule le_leq)*
I get stuck. I can't figure out how to use the lemma le_leq above.
Isabelle complains:
Failed to apply initial proof method⌂:
using this:
2 ⊑ 1
goal (1 subgoal):
1. 2 ≤ 1
What does that mean?
Thanks!
- Ching Tsun