open import Data.Nat open import Relation.Binary.PropositionalEquality module Commut where n≡n+0 : ∀ {b} → b ≡ b + 0 n≡n+0 {zero} = refl n≡n+0 {suc b} = cong suc n≡n+0 s[b+n]≡b+s[n] : ∀ {b n} → suc (b + n) ≡ b + suc n s[b+n]≡b+s[n] {zero} = refl s[b+n]≡b+s[n] {suc n} = cong suc s[b+n]≡b+s[n] comm : ∀ {a b} → a + b ≡ b + a comm {zero} = n≡n+0 comm {suc a} = trans (cong suc (comm {a})) s[b+n]≡b+s[n]