# HG changeset patch # User Shinji KONO # Date 1625179372 -32400 # Node ID b50a277631e14b14870c0b0f83a7f60485e0510b # Parent 8c492c69514c8d1eb5bb18ffe810432096f9e1f6 ... diff -r 8c492c69514c -r b50a277631e1 src/HyperReal.agda --- a/src/HyperReal.agda Thu Mar 18 16:55:49 2021 +0900 +++ b/src/HyperReal.agda Fri Jul 02 07:42:52 2021 +0900 @@ -7,39 +7,79 @@ open import Level renaming ( suc to succ ; zero to Zero ) open import Relation.Binary.PropositionalEquality hiding ( [_] ) open import Relation.Binary.Definitions +open import nat +open import logic -hnzero : (ℕ → ℕ) → Set -hnzero f = (x : ℕ) → ¬ ( x ≡ zero ) +HyperNat : Set +HyperNat = ℕ → ℕ + +_n*_ : (i j : HyperNat ) → HyperNat + +_n+_ : (i j : HyperNat ) → HyperNat +i n+ j = λ k → i k + j k + +i n* j = λ k → i k * j k + +-- _n<_ : ? -data HyperReal : Set where - hnat : (ℕ → ℕ) → HyperReal - hadd : HyperReal → (x : ℕ → ℕ ) → HyperReal - hsub : HyperReal → (x : ℕ → ℕ ) → HyperReal - hdiv : HyperReal → (x : ℕ → ℕ ) → hnzero x → HyperReal +-- postulate +-- _cmpHN_ : ( i j HyperNat ) → Dec ( i n< j ) + +hzero : HyperNat +hzero _ = 0 + +data HyperZ : Set where + hz : HyperNat → HyperNat → HyperZ -data Rational : Set where - rat : ℕ → ℕ → (z : ℕ) → ¬ (z ≡ zero) → Rational -- (x - y ) / z +_z*_ : (i j : HyperZ ) → HyperZ + +_z+_ : (i j : HyperZ ) → HyperZ +hz i i₁ z+ hz j j₁ = hz ( i n+ j ) (i₁ n+ j₁ ) -prat : Rational → ℕ -prat (rat x _ _ _ ) = x +-- ( i - i₁ ) * ( j - j₁ ) = i * j + i₁ * j₁ - i * j₁ - i₁ * j +hz i i₁ z* hz j j₁ = hz (λ k → i k * j k + i₁ k * j₁ k ) (λ k → i k * j₁ k - i₁ k * j k ) + +HNzero : HyperNat → Set +HNzero i = ( k : ℕ ) → i k ≡ 0 -mrat : Rational → ℕ -mrat (rat _ y _ _ ) = y +HNzero? : ( i : HyperNat ) → Dec (HNzero i) +HNzero? i = {!!} where + HNz1 : ( m k : ℕ ) → k < m → Dec (( j : ℕ ) → ( j < k ) → i j ≡ 0 ) + HNz1 (suc m) zero k