在 Agda 中证明 m ≤ n -> k ≤ l -> m + k ≤ n + l
Prove m ≤ n -> k ≤ l -> m + k ≤ n + l in Agda
我要证明
{m n k l : ℕ} -> m ≤ n -> k ≤ l -> m + k ≤ n + l
在阿格达。
我可以通过下面的代码
证明m + k ≤ m + l
add≤ : {m n : ℕ} -> (k : ℕ) -> m ≤ n -> k + m ≤ k + n
add≤ zero exp = exp
add≤ (suc k) exp = s≤s (add≤ k exp)
既然能证明m + k ≤ m + l
,我就想证明m + l ≤ n + l
。如果我能做到这一点,我将使用我已经定义的 ≤-trans : Transitive _≤_
。
我可以用 m ≤ n, k ≤ l
证明 m + l ≤ n + l
吗?或者,我是否必须更改计划以使用 ≤-trans
?
简直了
open import Data.Nat
open import Data.Nat.Properties
le : {m n k l : ℕ} -> m ≤ n -> k ≤ l -> m + k ≤ n + l
le {n = n} z≤n q = ≤-steps n q
le (s≤s p) q = s≤s (le p q)
我要证明
{m n k l : ℕ} -> m ≤ n -> k ≤ l -> m + k ≤ n + l
在阿格达。 我可以通过下面的代码
证明m + k ≤ m + l
add≤ : {m n : ℕ} -> (k : ℕ) -> m ≤ n -> k + m ≤ k + n
add≤ zero exp = exp
add≤ (suc k) exp = s≤s (add≤ k exp)
既然能证明m + k ≤ m + l
,我就想证明m + l ≤ n + l
。如果我能做到这一点,我将使用我已经定义的 ≤-trans : Transitive _≤_
。
我可以用 m ≤ n, k ≤ l
证明 m + l ≤ n + l
吗?或者,我是否必须更改计划以使用 ≤-trans
?
简直了
open import Data.Nat
open import Data.Nat.Properties
le : {m n k l : ℕ} -> m ≤ n -> k ≤ l -> m + k ≤ n + l
le {n = n} z≤n q = ≤-steps n q
le (s≤s p) q = s≤s (le p q)