如何使用在不等式两边相加的相同变量来解决 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(用 substrewrite H),然后 cbn。然后寻找算术引理(如 htnw 所示)或使用 auto with arith.