@@ -13,6 +13,7 @@ open import Data.Real.Base
1313open import Algebra.Definitions _≈_
1414open import Codata.Guarded.Stream
1515open import Codata.Guarded.Stream.Properties
16+ import Codata.Guarded.Stream.Relation.Binary.Pointwise as PW
1617open import Data.Product.Base
1718import Data.Integer.Base as ℤ
1819import Data.Nat.Base as ℕ
@@ -53,19 +54,7 @@ open import Relation.Binary.PropositionalEquality using (_≡_; refl; cong; cong
5354+-assoc : Associative _+_
5455+-assoc x y z ε = 0 , λ {n} _ → begin-strict
5556 ℚ.∣ lookup (zipWith ℚ._+_ (zipWith ℚ._+_ (sequence x) (sequence y)) (sequence z)) n ℚ.- lookup (zipWith ℚ._+_ (sequence x) (zipWith ℚ._+_ (sequence y) (sequence z))) n ∣
56- ≡⟨ cong₂ (λ a b → ℚ.∣ a ℚ.- b ∣)
57- (lookup-zipWith n ℚ._+_ (zipWith ℚ._+_ (sequence x) (sequence y)) (sequence z))
58- (lookup-zipWith n ℚ._+_ (sequence x) (zipWith ℚ._+_ (sequence y) (sequence z))) ⟩
59- ℚ.∣ (lookup (zipWith ℚ._+_ (sequence x) (sequence y)) n ℚ.+ lookup (sequence z) n) ℚ.- (lookup (sequence x) n ℚ.+ lookup (zipWith ℚ._+_ (sequence y) (sequence z)) n) ∣
60- ≡⟨ cong₂ (λ a b → ℚ.∣ (a ℚ.+ lookup (sequence z) n) ℚ.- (lookup (sequence x) n ℚ.+ b) ∣)
61- (lookup-zipWith n ℚ._+_ (sequence x) (sequence y))
62- (lookup-zipWith n ℚ._+_ (sequence y) (sequence z)) ⟩
63- ℚ.∣ ((lookup (sequence x) n ℚ.+ lookup (sequence y) n) ℚ.+ lookup (sequence z) n) ℚ.- (lookup (sequence x) n ℚ.+ (lookup (sequence y) n ℚ.+ lookup (sequence z) n)) ∣
64- ≡⟨ cong (λ a → ℚ.∣ a ℚ.- (lookup (sequence x) n ℚ.+ (lookup (sequence y) n ℚ.+ lookup (sequence z) n)) ∣) (ℚ.+-assoc (lookup (sequence x) n) (lookup (sequence y) n) (lookup (sequence z) n)) ⟩
65- ℚ.∣ (lookup (sequence x) n ℚ.+ (lookup (sequence y) n ℚ.+ lookup (sequence z) n)) ℚ.- (lookup (sequence x) n ℚ.+ (lookup (sequence y) n ℚ.+ lookup (sequence z) n)) ∣
66- ≡⟨ cong ℚ.∣_∣ (ℚ.+-inverseʳ (lookup (sequence x) n ℚ.+ (lookup (sequence y) n ℚ.+ lookup (sequence z) n))) ⟩
67- ℚ.∣ ℚ.0ℚ ∣
68- ≡⟨⟩
57+ ≡⟨ ℚ.d-definite (cong-lookup (PW.assoc ℚ.+-assoc (sequence x) (sequence y) (sequence z)) n) ⟩
6958 ℚ.0ℚ
7059 <⟨ ℚ.positive⁻¹ ε ⟩
7160 ε ∎
@@ -74,15 +63,16 @@ open import Relation.Binary.PropositionalEquality using (_≡_; refl; cong; cong
7463+-comm : Commutative _+_
7564+-comm x y ε = 0 , λ {n} _ → begin-strict
7665 ℚ.∣ lookup (zipWith ℚ._+_ (sequence x) (sequence y)) n ℚ.- lookup (zipWith ℚ._+_ (sequence y) (sequence x)) n ∣
77- ≡⟨ cong₂ (λ a b → ℚ.∣ a ℚ.- b ∣)
78- (lookup-zipWith n ℚ._+_ (sequence x) (sequence y))
79- (lookup-zipWith n ℚ._+_ (sequence y) (sequence x)) ⟩
80- ℚ.∣ (lookup (sequence x) n ℚ.+ lookup (sequence y) n) ℚ.- (lookup (sequence y) n ℚ.+ lookup (sequence x) n) ∣
81- ≡⟨ cong (λ a → ℚ.∣ a ℚ.- (lookup (sequence y) n ℚ.+ lookup (sequence x) n) ∣) (ℚ.+-comm (lookup (sequence x) n) (lookup (sequence y) n)) ⟩
82- ℚ.∣ (lookup (sequence y) n ℚ.+ lookup (sequence x) n) ℚ.- (lookup (sequence y) n ℚ.+ lookup (sequence x) n) ∣
83- ≡⟨ cong ℚ.∣_∣ (ℚ.+-inverseʳ (lookup (sequence y) n ℚ.+ lookup (sequence x) n)) ⟩
84- ℚ.∣ ℚ.0ℚ ∣
85- ≡⟨⟩
66+ ≡⟨ ℚ.d-definite (cong-lookup (PW.comm ℚ.+-comm (sequence x) (sequence y)) n) ⟩
67+ ℚ.0ℚ
68+ <⟨ ℚ.positive⁻¹ ε ⟩
69+ ε ∎
70+ where open ℚ.≤-Reasoning
71+
72+ +-identityˡ : LeftIdentity 0ℝ _+_
73+ +-identityˡ x ε = 0 , λ {n} _ → begin-strict
74+ ℚ.∣ lookup (zipWith ℚ._+_ (repeat ℚ.0ℚ) (sequence x)) n ℚ.- lookup (sequence x) n ∣
75+ ≡⟨ ℚ.d-definite (cong-lookup (PW.identityˡ ℚ.+-identityˡ (sequence x)) n) ⟩
8676 ℚ.0ℚ
8777 <⟨ ℚ.positive⁻¹ ε ⟩
8878 ε ∎
0 commit comments