@@ -0,0 +1,271 @@
{- # OPTIONS - - safe - - warning=error # -}
open import LogicalFormulae
open import Numbers.Naturals
open import Numbers.Integers
open import Numbers.Rationals
open import Groups.Groups
open import Groups.GroupsLemmas
open import Groups.GroupDefinition
open import Rings.RingDefinition
open import Fields.Fields
open import PrimeNumbers
open import Setoids.Setoids
open import Setoids.Orders
open import Functions
open import Fields.FieldOfFractions
open import Fields.FieldOfFractionsOrder
open import Rings.IntegralDomains
open import Rings.RingLemmas
module Numbers.RationalsLemmas where
triangleInequality : { a b : ℚ } → ( absQ ( a +Q b) ) ≤Q ( ( absQ a) +Q ( absQ b) )
triangleInequality { a} { b} with SetoidTotalOrder.totality ℚ TotalOrder 0 Q a
triangleInequality { a} { b} | inl ( inl 0 <a) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q b
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inl 0 <b) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inl 0 <b) | inl ( inl 0 <a+b) = inr ( reflexive { a +Q b} )
where
open Reflexive ( Equivalence.reflexiveEq ( Setoid.eq ( fieldOfFractionsSetoid ℤ IntDom) ) )
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inl 0 <b) | inl ( inr a+b<0) = exFalso ( exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { 0 Q} { a +Q b} a+b<0 ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q +Q 0 Q} { 0 Q} { a +Q b} { a +Q b} ( symmetric { 0 Q} { 0 Q +Q 0 Q} ( Group.multIdentRight ( Ring.additiveGroup ℚ Ring) { 0 Q} ) ) ( reflexive { a +Q b} ) ( ringAddInequalities ℚ Ordered { 0 Q} { a} { 0 Q} { b} 0 <a 0 <b) ) ) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inl 0 <b) | inr 0 = a+b = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q +Q 0 Q} { 0 Q} { a +Q b} { 0 Q} ( multIdentRight { 0 Q} ) ( symmetric { 0 Q} { a +Q b} 0 = a+b) ( ringAddInequalities ℚ Ordered { 0 Q} { a} { 0 Q} { b} 0 <a 0 <b) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inr b<0) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inr b<0) | inl ( inl 0 <a+b) = inl ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b +Q a} { a +Q b} { inverse b +Q a} { a +Q inverse b} ( Ring.groupIsAbelian ℚ Ring { b} { a} ) ( Ring.groupIsAbelian ℚ Ring { inverse b} { a} ) ( OrderedRing.orderRespectsAddition ℚ Ordered { b} { inverse b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b} { 0 Q} { inverse b} b<0 ( ringMinusFlipsOrder'' ℚ Ordered { b} b<0) ) a) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inr b<0) | inl ( inr a+b<0) = inl ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { inverse a +Q inverse b} { inverse ( a +Q b) } { a +Q inverse b} { a +Q inverse b} ( transitive { inverse a +Q inverse b} { inverse b +Q inverse a} { inverse ( a +Q b) } ( Ring.groupIsAbelian ℚ Ring { inverse a} { inverse b} ) ( symmetric { inverse ( a +Q b) } { inverse b +Q inverse a} ( invContravariant ( Ring.additiveGroup ℚ Ring) { a} { b} ) ) ) ( reflexive { a +Q inverse b} ) ( OrderedRing.orderRespectsAddition ℚ Ordered { inverse a} { a} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { inverse a} { 0 Q} { a} ( ringMinusFlipsOrder ℚ Ordered { a} 0 <a) 0 <a) ( inverse b) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inl ( inr b<0) | inr 0 = a+b = inl ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { a} { a +Q ( inverse b) } 0 <a ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q +Q a} { a} { inverse b +Q a} { a +Q inverse b} ( multIdentLeft { a} ) ( Ring.groupIsAbelian ℚ Ring { inverse b} { a} ) ( OrderedRing.orderRespectsAddition ℚ Ordered { 0 Q} { inverse b} ( ringMinusFlipsOrder'' ℚ Ordered { b} b<0) a) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inr 0 = b with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inl ( inl 0 <a) | inr 0 = b | inl ( inl 0 <a+b) = inr ( wellDefined { a} { b} { a} { 0 Q} ( reflexive { a} ) ( symmetric { 0 Q} { b} 0 = b) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inr 0 = b | inl ( inr a+b<0) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { 0 Q} { a +Q b} a+b<0 ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { a} { a +Q b} ( reflexive { 0 Q} ) ( transitive { a} { a +Q 0 Q} { a +Q b} ( symmetric { a +Q 0 Q} { a} ( multIdentRight { a} ) ) ( wellDefined { a} { 0 Q} { a} { b} ( reflexive { a} ) 0 = b) ) 0 <a) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inl 0 <a) | inr 0 = b | inr 0 = a+b = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { a +Q b} { a} { a +Q b} 0 = a+b ( transitive { a} { a +Q 0 Q} { a +Q b} ( symmetric { a +Q 0 Q} { a} ( multIdentRight { a} ) ) ( wellDefined { a} { 0 Q} { a} { b} ( reflexive { a} ) 0 = b) ) 0 <a) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q b
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inl 0 <b) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inl 0 <b) | inl ( inl 0 <a+b) = inl ( OrderedRing.orderRespectsAddition ℚ Ordered { a} { inverse a} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} { 0 Q} { inverse a} a<0 ( ringMinusFlipsOrder'' ℚ Ordered { a} a<0) ) b)
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inl 0 <b) | inl ( inr a+b<0) = inl ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { inverse a +Q inverse b} { inverse ( a +Q b) } { inverse a +Q b} { inverse a +Q b} ( transitive { inverse a +Q inverse b} { inverse b +Q inverse a} { inverse ( a +Q b) } ( Ring.groupIsAbelian ℚ Ring { inverse a} { inverse b} ) ( symmetric { inverse ( a +Q b) } { inverse b +Q inverse a} ( invContravariant ( Ring.additiveGroup ℚ Ring) { a} { b} ) ) ) ( reflexive { inverse a +Q b} ) blah)
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
blah : ( inverse a +Q inverse b) <Q ( inverse a +Q b)
blah = SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { inverse b +Q inverse a} { inverse a +Q inverse b} { b +Q inverse a} { inverse a +Q b} ( Ring.groupIsAbelian ℚ Ring { inverse b} { inverse a} ) ( Ring.groupIsAbelian ℚ Ring { b} { inverse a} ) ( OrderedRing.orderRespectsAddition ℚ Ordered { inverse b} { b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { inverse b} { 0 Q} { b} ( ringMinusFlipsOrder ℚ Ordered { b} 0 <b) 0 <b) ( inverse a) )
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inl 0 <b) | inr 0 = a+b = inl ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { b} { inverse a +Q b} 0 <b ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b +Q 0 Q} { b} { b +Q inverse a} { inverse a +Q b} ( multIdentRight { b} ) ( Ring.groupIsAbelian ℚ Ring { b} { inverse a} ) ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q +Q b} { b +Q 0 Q} { inverse a +Q b} { b +Q inverse a} ( Ring.groupIsAbelian ℚ Ring { 0 Q} { b} ) ( Ring.groupIsAbelian ℚ Ring { inverse a} { b} ) ( OrderedRing.orderRespectsAddition ℚ Ordered { 0 Q} { inverse a} ( ringMinusFlipsOrder'' ℚ Ordered { a} a<0) b) ) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inr b<0) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inr b<0) | inl ( inl 0 <a+b) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { 0 Q} { a +Q b} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { a +Q b} { 0 Q +Q 0 Q} { 0 Q} ( reflexive { a +Q b} ) ( multIdentRight { 0 Q} ) ( ringAddInequalities ℚ Ordered { a} { 0 Q} { b} { 0 Q} a<0 b<0) ) 0 <a+b) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inr b<0) | inl ( inr a+b<0) = inr ( transitive { inverse ( fieldOfFractionsPlus ℤ IntDom a b) } { fieldOfFractionsPlus ℤ IntDom ( inverse b) ( inverse a) } { fieldOfFractionsPlus ℤ IntDom ( inverse a) ( inverse b) } ( invContravariant ( Ring.additiveGroup ℚ Ring) { a} { b} ) ( Ring.groupIsAbelian ℚ Ring { inverse b} { inverse a} ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inl ( inr b<0) | inr 0 = a+b = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { 0 Q} { 0 Q} { 0 Q} ( symmetric { 0 Q} { a +Q b} 0 = a+b) ( reflexive { 0 Q} ) ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { a +Q b} { 0 Q +Q 0 Q} { 0 Q} ( reflexive { a +Q b} ) ( multIdentLeft { 0 Q} ) ( ringAddInequalities ℚ Ordered { a} { 0 Q} { b} { 0 Q} a<0 b<0) ) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inr 0 = b with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inl ( inr a<0) | inr 0 = b | inl ( inl 0 <a+b) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} { 0 Q} { a} a<0 ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { a +Q b} { a} ( reflexive { 0 Q} ) ( transitive { a +Q b} { a +Q 0 Q} { a} ( wellDefined { a} { b} { a} { 0 Q} ( reflexive { a} ) ( symmetric { 0 Q} { b} 0 = b) ) ( multIdentRight { a} ) ) 0 <a+b) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inr 0 = b | inl ( inr a+b<0) = inr ( transitive { inverse ( a +Q b) } { ( inverse b) +Q ( inverse a) } { ( inverse a) +Q 0 Q} ( invContravariant ( Ring.additiveGroup ℚ Ring) { a} { b} ) ( transitive { inverse b +Q inverse a} { inverse a +Q inverse b} { inverse a +Q 0 Q} ( Ring.groupIsAbelian ℚ Ring { inverse b} { inverse a} ) ( wellDefined { inverse a} { inverse b} { inverse a} { 0 Q} ( reflexive { inverse a} ) ( transitive { inverse b} { inverse 0 Q} { 0 Q} ( inverseWellDefined ( Ring.additiveGroup ℚ Ring) { b} { 0 Q} ( symmetric { 0 Q} { b} 0 = b) ) ( symmetric { 0 Q} { inverse 0 Q} ( invIdentity ( Ring.additiveGroup ℚ Ring) ) ) ) ) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inl ( inr a<0) | inr 0 = b | inr 0 = a+b = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} { 0 Q} { 0 Q} { 0 Q} ( transitive { a} { a +Q b} { 0 Q} ( transitive { a} { a +Q 0 Q} { a +Q b} ( symmetric { a +Q 0 Q} { a} ( multIdentRight { a} ) ) ( wellDefined { a} { 0 Q} { a} { b} ( reflexive { a} ) 0 = b) ) ( symmetric { 0 Q} { a +Q b} 0 = a+b) ) ( reflexive { 0 Q} ) a<0) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a with SetoidTotalOrder.totality ℚ TotalOrder 0 Q b
triangleInequality { a} { b} | inr 0 = a | inl ( inl 0 <b) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inr 0 = a | inl ( inl 0 <b) | inl ( inl 0 <a+b) = inr ( Group.wellDefined ( Ring.additiveGroup ℚ Ring) { a} { b} { 0 Q} { b} ( symmetric { 0 Q} { a} 0 = a) ( reflexive { b} ) )
where
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inl ( inl 0 <b) | inl ( inr a+b<0) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { 0 Q} { a +Q b} a+b<0 ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { b} { a +Q b} ( reflexive { 0 Q} ) ( transitive { b} { 0 Q +Q b} { a +Q b} ( symmetric { 0 Q +Q b} { b} ( Group.multIdentLeft ( Ring.additiveGroup ℚ Ring) { b} ) ) ( Group.wellDefined ( Ring.additiveGroup ℚ Ring) { 0 Q} { b} { a} { b} 0 = a ( reflexive { b} ) ) ) 0 <b) ) )
where
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inl ( inl 0 <b) | inr 0 = a+b = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { b} { b} { b} ( transitive { 0 Q} { a +Q b} { b} 0 = a+b ( transitive { a +Q b} { 0 Q +Q b} { b} ( wellDefined { a} { b} { 0 Q} { b} ( symmetric { 0 Q} { a} 0 = a) ( reflexive { b} ) ) ( multIdentLeft { b} ) ) ) ( reflexive { b} ) 0 <b) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inl ( inr b<0) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inr 0 = a | inl ( inr b<0) | inl ( inl 0 <a+b) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b} { 0 Q} { b} b<0 ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { a +Q b} { b} ( reflexive { 0 Q} ) ( transitive { a +Q b} { 0 Q +Q b} { b} ( wellDefined { a} { b} { 0 Q} { b} ( symmetric { 0 Q} { a} 0 = a) ( reflexive { b} ) ) ( multIdentLeft { b} ) ) 0 <a+b) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inl ( inr b<0) | inl ( inr a+b<0) = inr ( transitive { inverse ( a +Q b) } { inverse b +Q inverse a} { 0 Q +Q inverse b} ( invContravariant ( Ring.additiveGroup ℚ Ring) { a} { b} ) ( transitive { inverse b +Q inverse a} { inverse a +Q inverse b} { 0 Q +Q inverse b} ( Ring.groupIsAbelian ℚ Ring { inverse b} { inverse a} ) ( wellDefined { inverse a} { inverse b} { 0 Q} { inverse b} ( transitive { inverse a} { inverse 0 Q} { 0 Q} ( symmetric { inverse 0 Q} { inverse a} ( inverseWellDefined ( Ring.additiveGroup ℚ Ring) { 0 Q} { a} 0 = a) ) ( invIdentity ( Ring.additiveGroup ℚ Ring) ) ) ( reflexive { inverse b} ) ) ) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inl ( inr b<0) | inr 0 = a+b = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { b} { b} { 0 Q} { b} ( reflexive { b} ) ( transitive { 0 Q} { a +Q b} { b} 0 = a+b ( transitive { a +Q b} { 0 Q +Q b} { b} ( wellDefined { a} { b} { 0 Q} { b} ( symmetric { 0 Q} { a} 0 = a) ( reflexive { b} ) ) ( multIdentLeft { b} ) ) ) b<0) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inr 0 = b with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( a +Q b)
triangleInequality { a} { b} | inr 0 = a | inr 0 = b | inl ( inl 0 <a+b) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { a +Q b} { 0 Q} ( reflexive { 0 Q} ) ( transitive { a +Q b} { 0 Q +Q 0 Q} { 0 Q} ( wellDefined { a} { b} { 0 Q} { 0 Q} ( symmetric { 0 Q} { a} 0 = a) ( symmetric { 0 Q} { b} 0 = b) ) ( multIdentRight { 0 Q} ) ) 0 <a+b) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inr 0 = b | inl ( inr a+b<0) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a +Q b} { 0 Q} { 0 Q} { 0 Q} ( transitive { a +Q b} { 0 Q +Q 0 Q} { 0 Q} ( wellDefined { a} { b} { 0 Q} { 0 Q} ( symmetric { 0 Q} { a} 0 = a) ( symmetric { 0 Q} { b} 0 = b) ) ( multIdentRight { 0 Q} ) ) ( reflexive { 0 Q} ) a+b<0) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
triangleInequality { a} { b} | inr 0 = a | inr 0 = b | inr 0 = a+b = inr refl
absNegation : ( a : ℚ ) → ( ( absQ a) = Q ( absQ ( negateQ a) ) )
absNegation a with SetoidTotalOrder.totality ℚ TotalOrder 0 Q a
absNegation a | inl ( inl 0 <a) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( negateQ a)
absNegation a | inl ( inl 0 <a) | inl ( inl 0 <-a) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} { 0 Q} { a} ( ringMinusFlipsOrder''' ℚ Ordered { a} 0 <-a) 0 <a) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inl ( inl 0 <a) | inl ( inr _) = symmetric { inverse ( inverse a) } { a} ( invTwice ( Ring.additiveGroup ℚ Ring) a)
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inl ( inl 0 <a) | inr 0 = -a = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { a} { 0 Q} ( reflexive { 0 Q} ) ( transitive { a} { inverse 0 Q} { 0 Q} ( swapInv ( Ring.additiveGroup ℚ Ring) { a} { 0 Q} ( symmetric { 0 Q} { inverse a} 0 = -a) ) ( invIdentity ( Ring.additiveGroup ℚ Ring) ) ) 0 <a) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inl ( inr a<0) with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( negateQ a)
absNegation a | inl ( inr a<0) | inl ( inl _) = Reflexive.reflexive ( Equivalence.reflexiveEq ( Setoid.eq ( fieldOfFractionsSetoid ℤ IntDom) ) ) { Group.inverse ( Ring.additiveGroup ℚ Ring) a}
absNegation a | inl ( inr a<0) | inl ( inr -a<0) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.transitive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { a} { 0 Q} ( ringMinusFlipsOrder' ℚ Ordered { a} -a<0) a<0) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inl ( inr a<0) | inr -a=0 = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { a} { 0 Q} { 0 Q} { 0 Q} ( transitive { a} { inverse 0 Q} { 0 Q} ( swapInv ( Ring.additiveGroup ℚ Ring) { a} { 0 Q} ( symmetric { 0 Q} { inverse a} -a=0) ) ( invIdentity ( Ring.additiveGroup ℚ Ring) ) ) ( reflexive { 0 Q} ) a<0) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inr 0 = a with SetoidTotalOrder.totality ℚ TotalOrder 0 Q ( negateQ a)
absNegation a | inr 0 = a | inl ( inl 0 <-a) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} { 0 Q} { inverse a} { 0 Q} ( reflexive { 0 Q} ) ( transitive { inverse a} { inverse 0 Q} { 0 Q} ( symmetric { inverse 0 Q} { inverse a} ( inverseWellDefined ( Ring.additiveGroup ℚ Ring) { 0 Q} { a} 0 = a) ) ( invIdentity ( Ring.additiveGroup ℚ Ring) ) ) 0 <-a) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inr 0 = a | inl ( inr -a<0) = exFalso ( SetoidPartialOrder.irreflexive ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { 0 Q} ( SetoidPartialOrder.wellDefined ( fieldOfFractionsOrder ℤ IntDom ℤ OrderedRing) { inverse a} { 0 Q} { 0 Q} { 0 Q} ( transitive { inverse a} { inverse 0 Q} { 0 Q} ( symmetric { inverse 0 Q} { inverse a} ( inverseWellDefined ( Ring.additiveGroup ℚ Ring) { 0 Q} { a} 0 = a) ) ( invIdentity ( Ring.additiveGroup ℚ Ring) ) ) ( reflexive { 0 Q} ) -a<0) )
where
open Group ( Ring.additiveGroup ℚ Ring)
open Setoid ( fieldOfFractionsSetoid ℤ IntDom)
open Symmetric ( Equivalence.symmetricEq eq)
open Reflexive ( Equivalence.reflexiveEq eq)
open Transitive ( Equivalence.transitiveEq eq)
absNegation a | inr 0 = a | inr _ = refl