{-# OPTIONS --without-K --safe #-} module Fragment.Examples.CSemigroup.Arith.Reasoning where open import Fragment.Examples.CSemigroup.Arith.Base +-direct : ∀ {m n} → (m + 2) + (3 + n) ≡ m + (n + 5) +-direct {m} {n} = begin (m + 2) + (3 + n) ≡⟨ fragment CSemigroupFrex +-csemigroup ⟩ m + (n + 5) ∎ open import Data.Nat.Properties using (*-distribˡ-+) +-inner : ∀ {m n k} → k * (m + 2) + k * (3 + n) ≡ (m + n + 5) * k +-inner {m} {n} {k} = begin k * (m + 2) + k * (3 + n) ≡⟨ sym (*-distribˡ-+ k (m + 2) (3 + n)) ⟩ k * ((m + 2) + (3 + n)) ≡⟨ cong (k *_) (fragment CSemigroupFrex +-csemigroup) ⟩ k * (m + n + 5) ≡⟨ fragment CSemigroupFrex *-csemigroup ⟩ (m + n + 5) * k ∎