将引理应用于绑定变量
Apply lemmas to bound variables
我可以证明以下引理:
lemma lem1: assumes "(a::real) ≤ b / c" and "c > 0" shows "a * c ≤ b"
using assms
using pos_le_divide_eq[of "c" "a" "b"] by auto
但是,如果我使用绑定变量,则证明不起作用。
lemma lem2: assumes "∀a b c. (a::real) ≤ b / c" and "∀c. c > 0" shows "∀a b c. a * c ≤ b"
using assms
using pos_le_divide_eq[of "c" "a" "b"]
将 ∀ 量词插入 pos_le_divide_eq 会更改数据类型,因此这是不可能的。我怎样才能解决lem2?
目前阅读lem2
第一个和最后一个假设讲的是不同的c
,即∀c. c > 0
也可以写成∀d. d > 0
,而在lem1
两个 c
指的是同一个变量。
因此,如果第一个公式中的 c
始终为正,则应该只有一个假设 ∀a b c. (a::real) ≤ b / c ∧ c > 0
。或者,如果任何值预期为正,则第二个假设需要阐明 c
的类型,类似于第一个假设中指定的方式:∀c. (c :: real) > 0
.
应用任一更改后 lem2
可以通过 auto
证明而无需 using pos_le_divide_eq[of "c" "a" "b"]
。
我可以证明以下引理:
lemma lem1: assumes "(a::real) ≤ b / c" and "c > 0" shows "a * c ≤ b"
using assms
using pos_le_divide_eq[of "c" "a" "b"] by auto
但是,如果我使用绑定变量,则证明不起作用。
lemma lem2: assumes "∀a b c. (a::real) ≤ b / c" and "∀c. c > 0" shows "∀a b c. a * c ≤ b"
using assms
using pos_le_divide_eq[of "c" "a" "b"]
将 ∀ 量词插入 pos_le_divide_eq 会更改数据类型,因此这是不可能的。我怎样才能解决lem2?
目前阅读lem2
第一个和最后一个假设讲的是不同的c
,即∀c. c > 0
也可以写成∀d. d > 0
,而在lem1
两个 c
指的是同一个变量。
因此,如果第一个公式中的 c
始终为正,则应该只有一个假设 ∀a b c. (a::real) ≤ b / c ∧ c > 0
。或者,如果任何值预期为正,则第二个假设需要阐明 c
的类型,类似于第一个假设中指定的方式:∀c. (c :: real) > 0
.
应用任一更改后 lem2
可以通过 auto
证明而无需 using pos_le_divide_eq[of "c" "a" "b"]
。