如何使用在不等式两边相加的相同变量来解决 COQ 中的简单不等式
How to solve a simple inequality in COQ with the same variable which is adding on both sides of the inequality
如您所见,我非常接近于在 COQ 中建立证明,但是我陷入了这种不等式。这很清楚,因为 l2 = hd2 :: tl2
。我只想去掉不等式两边的length l1
。
我该怎么做?我认为对此有一个简单的解决方案......也许这只是一个已经在 COQ 中的定理?
p : list ℕ * list ℕ
l1, l2 : list ℕ
hd1 : ℕ
tl1 : list ℕ
teq0 : l1 = hd1 :: tl1
hd2 : ℕ
tl2 : list ℕ
teq1 : l2 = hd2 :: tl2
teq : p = (l1, l2)
teq2 : (hd1 <=? hd2) = false
-----------------------------------------------
length l1 + length tl2 < length l1 + length l2
您可以先将 l2
替换为 hd2::tl2
(用 subst
或 rewrite H
),然后 cbn
。然后寻找算术引理(如 htnw
所示)或使用 auto with arith
.
如您所见,我非常接近于在 COQ 中建立证明,但是我陷入了这种不等式。这很清楚,因为 l2 = hd2 :: tl2
。我只想去掉不等式两边的length l1
。
我该怎么做?我认为对此有一个简单的解决方案......也许这只是一个已经在 COQ 中的定理?
p : list ℕ * list ℕ
l1, l2 : list ℕ
hd1 : ℕ
tl1 : list ℕ
teq0 : l1 = hd1 :: tl1
hd2 : ℕ
tl2 : list ℕ
teq1 : l2 = hd2 :: tl2
teq : p = (l1, l2)
teq2 : (hd1 <=? hd2) = false
-----------------------------------------------
length l1 + length tl2 < length l1 + length l2
您可以先将 l2
替换为 hd2::tl2
(用 subst
或 rewrite H
),然后 cbn
。然后寻找算术引理(如 htnw
所示)或使用 auto with arith
.