mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-18 09:48:38 +00:00
Lots of without-K (#110)
This commit is contained in:
@@ -120,16 +120,7 @@ abstract
|
||||
IntegralDomain.intDom orderedFieldIsIntDom = decidedIntDom R orderedFieldIntDom
|
||||
IntegralDomain.nontrivial orderedFieldIsIntDom pr = Field.nontrivial F (Equivalence.symmetric (Setoid.eq S) pr)
|
||||
|
||||
fromNIncreasing : (n : ℕ) → (fromN n) < (fromN (succ n))
|
||||
fromNIncreasing zero = <WellDefined reflexive (symmetric identRight) (0<1 nontrivial)
|
||||
fromNIncreasing (succ n) = <WellDefined groupIsAbelian groupIsAbelian (orderRespectsAddition (fromNIncreasing n) 1R)
|
||||
|
||||
fromNPreservesOrder : {a b : ℕ} → (a <N b) → (fromN a) < (fromN b)
|
||||
fromNPreservesOrder {zero} {succ zero} a<b = fromNIncreasing 0
|
||||
fromNPreservesOrder {zero} {succ (succ b)} a<b = <Transitive (fromNPreservesOrder (succIsPositive b)) (fromNIncreasing (succ b))
|
||||
fromNPreservesOrder {succ a} {succ b} a<b = <WellDefined groupIsAbelian groupIsAbelian (orderRespectsAddition (fromNPreservesOrder (canRemoveSuccFrom<N a<b)) 1R)
|
||||
|
||||
charZero : (n : ℕ) → (0R ∼ (fromN (succ n))) → False
|
||||
charZero n 0=sn = irreflexive (<WellDefined 0=sn reflexive (fromNPreservesOrder (succIsPositive n)))
|
||||
charZero n 0=sn = irreflexive (<WellDefined 0=sn reflexive (fromNPreservesOrder nontrivial (succIsPositive n)))
|
||||
charZero' : (n : ℕ) → ((fromN (succ n)) ∼ 0R) → False
|
||||
charZero' n pr = charZero n (symmetric pr)
|
||||
|
@@ -54,6 +54,19 @@ abstract
|
||||
halfHalves : {a : A} → (1/2 * (a + a)) ∼ a
|
||||
halfHalves {a} = transitive (*WellDefined reflexive (+WellDefined (symmetric identIsIdent) (symmetric identIsIdent))) (transitive (*WellDefined reflexive (symmetric *DistributesOver+')) (transitive *Associative (transitive (*WellDefined 1/2is1/2 reflexive) identIsIdent)))
|
||||
|
||||
abstract
|
||||
bothNearImpliesNear : {t r s : A} (e : A) .(0<e : 0R < e) → (abs (r + inverse t) < e) → (abs (s + inverse t) < e) → abs (r + inverse s) < (e + e)
|
||||
bothNearImpliesNear {t} {r} {s} e 0<e rNearT sNearT = u
|
||||
where
|
||||
pr : ((abs (r + inverse t)) + (abs (s + inverse t))) < (e + e)
|
||||
pr = ringAddInequalities rNearT sNearT
|
||||
t' : (abs (r + inverse t) + abs (t + inverse s)) < (e + e)
|
||||
t' = <WellDefined (+WellDefined reflexive (transitive (absNegation _) (absWellDefined _ _ (transitive invContravariant (+WellDefined (invTwice _) reflexive))))) reflexive pr
|
||||
u : abs (r + inverse s) < (e + e)
|
||||
u with triangleInequality (r + inverse t) (t + inverse s)
|
||||
... | inl t'' = <Transitive (<WellDefined (absWellDefined _ _ (transitive +Associative (+WellDefined (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invLeft) identRight)) reflexive))) reflexive t'') t'
|
||||
... | inr eq = <WellDefined (transitive (symmetric eq) (absWellDefined _ _ (transitive +Associative (+WellDefined (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invLeft) identRight)) reflexive)))) reflexive t'
|
||||
|
||||
private
|
||||
limitsUniqueLemma : (x : Sequence A) {r s : A} (xr : x ~> r) (xs : x ~> s) (r<s : r < s) → False
|
||||
limitsUniqueLemma x {r} {s} xr xs r<s = irreflexive (<WellDefined reflexive (symmetric prE) u')
|
||||
|
64
Fields/Orders/Limits/Lemmas.agda
Normal file
64
Fields/Orders/Limits/Lemmas.agda
Normal file
@@ -0,0 +1,64 @@
|
||||
{-# OPTIONS --safe --warning=error --without-K --guardedness #-}
|
||||
|
||||
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
|
||||
|
||||
open import LogicalFormulae
|
||||
open import Setoids.Subset
|
||||
open import Setoids.Setoids
|
||||
open import Setoids.Orders
|
||||
open import Sets.EquivalenceRelations
|
||||
open import Rings.Orders.Total.Definition
|
||||
open import Rings.Orders.Partial.Definition
|
||||
open import Rings.Definition
|
||||
open import Fields.Fields
|
||||
open import Groups.Definition
|
||||
open import Sequences
|
||||
open import Numbers.Naturals.Semiring
|
||||
open import Numbers.Naturals.Order
|
||||
open import Semirings.Definition
|
||||
open import Functions
|
||||
open import Fields.Orders.Total.Definition
|
||||
open import Numbers.Primes.PrimeNumbers
|
||||
|
||||
module Fields.Orders.Limits.Lemmas {a b c : _} {A : Set a} {S : Setoid {a} {b} A} {_+_ : A → A → A} {_*_ : A → A → A} {_<_ : Rel {_} {c} A} {R : Ring S _+_ _*_} {pOrder : SetoidPartialOrder S _<_} {F : Field R} {pRing : PartiallyOrderedRing R pOrder} (oF : TotallyOrderedField F pRing) where
|
||||
|
||||
open Ring R
|
||||
open TotallyOrderedField oF
|
||||
open TotallyOrderedRing oRing
|
||||
open PartiallyOrderedRing pRing
|
||||
open import Rings.Orders.Total.Lemmas oRing
|
||||
open import Rings.Orders.Partial.Lemmas pRing
|
||||
open SetoidTotalOrder total
|
||||
open SetoidPartialOrder pOrder
|
||||
open Group additiveGroup
|
||||
open import Groups.Lemmas additiveGroup
|
||||
open Setoid S
|
||||
open Equivalence eq
|
||||
open Field F
|
||||
open import Fields.CauchyCompletion.Definition (TotallyOrderedField.oRing oF) F
|
||||
open import Fields.Orders.Limits.Definition oF
|
||||
open import Fields.Lemmas F
|
||||
open import Fields.Orders.Total.Lemmas oF
|
||||
open import Rings.Characteristic R
|
||||
open import Rings.InitialRing R
|
||||
|
||||
private
|
||||
2!=3 : 2 ≡ 3 → False
|
||||
2!=3 ()
|
||||
|
||||
convergentSequenceCauchy : (nontrivial : 0R ∼ 1R → False) → {a : Sequence A} → {r : A} → a ~> r → (decidedCharacteristic : ((1R + 1R) ∼ 0R) || (((1R + 1R) ∼ 0R) → False)) → cauchy a
|
||||
convergentSequenceCauchy nontrivial {a} {r} a->r (inl 2=0) ε x with 1/nPositive 2 λ t → 2!=3 (characteristicWellDefined nontrivial {2} {3} twoIsPrime threeIsPrime (transitive (transitive +Associative identRight) 2=0) t)
|
||||
... | 0<1/3 with allInvertible (fromN 3) λ t → 2!=3 (characteristicWellDefined nontrivial {2} {3} twoIsPrime threeIsPrime (transitive (transitive +Associative identRight) 2=0) t)
|
||||
... | 1/3 , pr1/3 with a->r (1/3 * ε) (orderRespectsMultiplication 0<1/3 x)
|
||||
... | N , pr = N , λ {m} {n} → ans m n
|
||||
where
|
||||
2/3 : (1/3 + 1/3) < 1R
|
||||
2/3 = <WellDefined reflexive (transitive (transitive (+WellDefined (transitive (symmetric identIsIdent) *Commutative) (transitive (+WellDefined (transitive (symmetric identIsIdent) *Commutative) (transitive (+WellDefined (symmetric (transitive *Commutative identIsIdent)) (symmetric timesZero)) (symmetric *DistributesOver+))) (symmetric *DistributesOver+))) (symmetric *DistributesOver+)) pr1/3) (<WellDefined reflexive (transitive (+WellDefined reflexive (symmetric identRight)) (symmetric +Associative)) (orderRespectsAddition (<WellDefined identLeft reflexive (orderRespectsAddition 0<1/3 1/3)) 1/3))
|
||||
ans : (m n : ℕ) → N <N m → N <N n → abs (index a m + inverse (index a n)) < ε
|
||||
ans m n N<m N<n = <Transitive (bothNearImpliesNear {r} (1/3 * ε) (orderRespectsMultiplication 0<1/3 x) (pr m N<m) (pr n N<n)) (<WellDefined *DistributesOver+' identIsIdent (ringCanMultiplyByPositive x 2/3))
|
||||
convergentSequenceCauchy _ {a} {r} a->r (inr 2!=0) e 0<e with halve 2!=0 e
|
||||
... | e/2 , prE/2 with a->r e/2 (halvePositive' prE/2 0<e)
|
||||
... | N , pr = N , λ {m} {n} → ans m n
|
||||
where
|
||||
ans : (m n : ℕ) → N <N m → N <N n → abs (index a m + inverse (index a n)) < e
|
||||
ans m n N<m N<n = <WellDefined reflexive prE/2 (bothNearImpliesNear {r} e/2 (halvePositive' prE/2 0<e) (pr m N<m) (pr n N<n))
|
28
Fields/Orders/Partial/Lemmas.agda
Normal file
28
Fields/Orders/Partial/Lemmas.agda
Normal file
@@ -0,0 +1,28 @@
|
||||
{-# OPTIONS --safe --warning=error --without-K #-}
|
||||
|
||||
open import Rings.Definition
|
||||
open import Rings.Orders.Partial.Definition
|
||||
open import Setoids.Setoids
|
||||
open import Setoids.Orders
|
||||
open import Functions
|
||||
open import Fields.Fields
|
||||
open import Fields.Orders.Partial.Definition
|
||||
open import Numbers.Naturals.Semiring
|
||||
open import Sets.EquivalenceRelations
|
||||
open import LogicalFormulae
|
||||
open import Groups.Definition
|
||||
|
||||
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
|
||||
|
||||
module Fields.Orders.Partial.Lemmas {m n : _} {A : Set m} {S : Setoid {m} {n} A} {_+_ : A → A → A} {_*_ : A → A → A} {R : Ring S _+_ _*_} {F : Field R} {p : _} {_<_ : Rel {_} {p} A} {pOrder : SetoidPartialOrder S _<_} (oF : PartiallyOrderedField F pOrder) where
|
||||
|
||||
open Ring R
|
||||
open Group additiveGroup
|
||||
open Setoid S
|
||||
open Equivalence eq
|
||||
open Field F
|
||||
open PartiallyOrderedField oF
|
||||
open SetoidPartialOrder pOrder
|
||||
open import Rings.Orders.Partial.Lemmas oRing
|
||||
open import Rings.InitialRing R
|
||||
|
44
Fields/Orders/Total/Lemmas.agda
Normal file
44
Fields/Orders/Total/Lemmas.agda
Normal file
@@ -0,0 +1,44 @@
|
||||
{-# OPTIONS --safe --warning=error --without-K #-}
|
||||
|
||||
open import Rings.Definition
|
||||
open import Rings.Orders.Partial.Definition
|
||||
open import Rings.Orders.Total.Definition
|
||||
open import Setoids.Setoids
|
||||
open import Setoids.Orders
|
||||
open import Functions
|
||||
open import Fields.Fields
|
||||
open import Fields.Orders.Total.Definition
|
||||
open import Numbers.Naturals.Semiring
|
||||
open import Numbers.Naturals.Order
|
||||
open import Sets.EquivalenceRelations
|
||||
open import LogicalFormulae
|
||||
open import Groups.Definition
|
||||
|
||||
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
|
||||
|
||||
module Fields.Orders.Total.Lemmas {m n : _} {A : Set m} {S : Setoid {m} {n} A} {_+_ : A → A → A} {_*_ : A → A → A} {R : Ring S _+_ _*_} {F : Field R} {p : _} {_<_ : Rel {_} {p} A} {pOrder : SetoidPartialOrder S _<_} {oR : PartiallyOrderedRing R pOrder} (oF : TotallyOrderedField F oR) where
|
||||
|
||||
open Ring R
|
||||
open Group additiveGroup
|
||||
open Setoid S
|
||||
open Equivalence eq
|
||||
open Field F
|
||||
open TotallyOrderedField oF
|
||||
open TotallyOrderedRing oRing
|
||||
open PartiallyOrderedRing oR
|
||||
open SetoidTotalOrder total
|
||||
open SetoidPartialOrder pOrder
|
||||
open import Rings.InitialRing R
|
||||
open import Rings.Orders.Total.Lemmas oRing
|
||||
open import Rings.Orders.Partial.Lemmas oR
|
||||
open import Rings.Lemmas R
|
||||
open import Groups.Lemmas additiveGroup
|
||||
|
||||
1/nPositive : (n : ℕ) → (charNotN : (fromN (succ n) ∼ 0R) → False) → 0R < underlying (allInvertible _ charNotN)
|
||||
1/nPositive 0 nNot0 with allInvertible (fromN 1) nNot0
|
||||
... | 1/1 , pr1 = <WellDefined reflexive (transitive (symmetric pr1) (transitive (transitive (*WellDefined reflexive identRight) *Commutative) identIsIdent)) (0<1 λ i → nNot0 (transitive identRight (symmetric i)))
|
||||
1/nPositive (succ n) nNot0 with allInvertible (fromN (succ (succ n))) nNot0
|
||||
... | 1/n , pr1/n with totality 0R 1/n
|
||||
... | inr x = exFalso (nNot0 (oneZeroImpliesAllZero (transitive (symmetric (transitive (*WellDefined (symmetric x) reflexive) timesZero')) pr1/n)))
|
||||
... | inl (inl x) = x
|
||||
... | inl (inr x) = exFalso (1<0False (<WellDefined pr1/n timesZero' (ringCanMultiplyByPositive (fromNPreservesOrder (anyComparisonImpliesNontrivial x) (succIsPositive (succ n))) x)))
|
Reference in New Issue
Block a user