Prove m ≤ n & # 8594; k ≤ l & # 8594; m + k ≤ n + l in Agda

I want to prove

{m n k l : ℕ} -> m ≤ n -> k ≤ l -> m + k ≤ n + l

      

in Agda. I can prove with the m + k ≤ m + l

following code

add≤ : {m n : ℕ} -> (k : ℕ) -> m ≤ n -> k + m ≤ k + n
add≤ zero exp = exp
add≤ (suc k) exp = s≤s (add≤ k exp)

      

Since I can prove it m + k ≤ m + l

, I want to prove it m + l ≤ n + l

. If I can do this, I will use the ≤-trans : Transitive _≤_

one I have already defined.

Can I prove m + l ≤ n + l

with help m ≤ n, k ≤ l

? Or, should I change my usage plan ≤-trans

?

+3


source to share


1 answer


It's simple



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)

      

+2


source







All Articles