From cbd12fe5b8264d31352532da3c3b6e364345b2e0 Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Tue, 15 Nov 2016 00:04:50 +0100 Subject: [PATCH] refactor commutativity proof --- src/Data/Nat.hs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Data/Nat.hs b/src/Data/Nat.hs index b1b6991..1a4001e 100644 --- a/src/Data/Nat.hs +++ b/src/Data/Nat.hs @@ -121,14 +121,22 @@ switch SZ m = Refl switch (SS n) m = cong SS (switch n m) -- | Lemma -succ ∷ Sℕ n → Sℕ m → S (n :+ m) :≡ (n :+ S m) -succ SZ m = Refl -succ (SS n) m = cong SS (succ n m) +succ_right ∷ Sℕ n → Sℕ m → S (n :+ m) :≡ (n :+ S m) +succ_right SZ m = Refl +succ_right (SS n) m = cong SS (succ_right n m) + +-- | Lemma +succ_left ∷ Sℕ n → Sℕ m → S (n :+ m) :≡ (S n :+ m) +succ_left n m = succ_right n m ∾ switch n m -- | Relation between successor and addition succ_plus ∷ Sℕ n → (n :+ S Z) :≡ S n succ_plus n = switch n SZ ∾ plus_right_id (SS n) +-- | Successor of predecessor +succ_pred ∷ Sℕ (S n) → S (Pred n) :≡ n +succ_pred (SS (SS n)) = Refl + -- | Right identity of addition plus_right_id ∷ Sℕ n → (n :+ Z) :≡ n plus_right_id SZ = Refl @@ -143,5 +151,4 @@ plus_assoc (SS a) b c = cong SS (plus_assoc a b c) plus_commut ∷ Sℕ n → Sℕ m → (n :+ m) :≡ (m :+ n) plus_commut n SZ = plus_right_id n plus_commut n (SS m) = - (sym (succ n m) ∾ cong SS (plus_commut n m)) ∾ - (succ m n ∾ switch m n) + sym (succ_right n m) ∾ cong SS (plus_commut n m) ∾ succ_left m n