Skip to content

Commit e2ef3fb

Browse files
committed
Simplify and continue algebraic properties of reals
1 parent 3b796db commit e2ef3fb

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

src/Data/Real/Base.agda

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ open import Function.Metric.Rational.CauchySequence d-metric public renaming (Ca
2727
fromℚ :
2828
fromℚ = embed
2929

30+
0ℝ :
31+
0ℝ = fromℚ 0ℚ
32+
3033
_+_ :
3134
sequence (x + y) = zipWith ℚ._+_ (sequence x) (sequence y)
3235
isCauchy (x + y) ε = proj₁ [x] ℕ.+ proj₁ [y] , λ {m} {n} m≥N n≥N begin-strict

src/Data/Real/Properties.agda

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ open import Data.Real.Base
1313
open import Algebra.Definitions _≈_
1414
open import Codata.Guarded.Stream
1515
open import Codata.Guarded.Stream.Properties
16+
import Codata.Guarded.Stream.Relation.Binary.Pointwise as PW
1617
open import Data.Product.Base
1718
import Data.Integer.Base as ℤ
1819
import 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

Comments
 (0)