Skip to content

Commit 388dcca

Browse files
lowasserfredrik-bakke
authored andcommitted
Multiplication of closed intervals on rational numbers is subdistributive over addition (UniMath#1567)
Continuing to try to break off small chunks of UniMath#1384.
1 parent 363e2eb commit 388dcca

File tree

3 files changed

+238
-7
lines changed

3 files changed

+238
-7
lines changed

src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md

Lines changed: 76 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ open import elementary-number-theory.additive-group-of-rational-numbers
1212
open import elementary-number-theory.closed-intervals-rational-numbers
1313
open import elementary-number-theory.difference-rational-numbers
1414
open import elementary-number-theory.inequality-rational-numbers
15+
open import elementary-number-theory.poset-closed-intervals-rational-numbers
1516
open import elementary-number-theory.rational-numbers
1617
18+
open import foundation.binary-transport
1719
open import foundation.coproduct-types
1820
open import foundation.dependent-pair-types
1921
open import foundation.existential-quantification
@@ -90,6 +92,15 @@ abstract
9092
inv (is-section-diff-ℚ _ _)))
9193
( linear-leq-ℚ q (a +ℚ d))
9294
95+
is-in-add-interval-add-is-in-closed-interval-ℚ :
96+
([a,b] [c,d] : closed-interval-ℚ) (s t : ℚ) →
97+
is-in-closed-interval-ℚ [a,b] s → is-in-closed-interval-ℚ [c,d] t →
98+
is-in-closed-interval-ℚ (add-closed-interval-ℚ [a,b] [c,d]) (s +ℚ t)
99+
is-in-add-interval-add-is-in-closed-interval-ℚ
100+
((a , b) , _) ((c , d) , _) s t (a≤s , s≤b) (c≤t , t≤d) =
101+
( preserves-leq-add-ℚ a≤s c≤t ,
102+
preserves-leq-add-ℚ s≤b t≤d)
103+
93104
is-in-add-interval-is-in-minkowski-sum-ℚ :
94105
([a,b] [c,d] : closed-interval-ℚ) →
95106
(q : ℚ) →
@@ -103,17 +114,19 @@ abstract
103114
( add-closed-interval-ℚ [a,b] [c,d])
104115
( q)
105116
is-in-add-interval-is-in-minkowski-sum-ℚ
106-
[a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q q∈[a,b]+[c,d] =
117+
[a,b] [c,d] q q∈[a,b]+[c,d] =
107118
let
108119
open
109120
do-syntax-trunc-Prop
110-
( subtype-closed-interval-ℚ
111-
( add-closed-interval-ℚ [a,b] [c,d])
112-
( q))
121+
( subtype-closed-interval-ℚ (add-closed-interval-ℚ [a,b] [c,d]) q)
113122
in do
114-
((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d]
115-
( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) ,
116-
inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d))
123+
((s , t) , s∈[a,b] , t∈[c,d] , q=s+t) ← q∈[a,b]+[c,d]
124+
inv-tr
125+
( is-in-closed-interval-ℚ (add-closed-interval-ℚ [a,b] [c,d]))
126+
( q=s+t)
127+
( is-in-add-interval-add-is-in-closed-interval-ℚ [a,b] [c,d] s t
128+
( s∈[a,b])
129+
( t∈[c,d]))
117130
118131
has-same-elements-minkowski-add-closed-interval-ℚ :
119132
([a,b] [c,d] : closed-interval-ℚ) →
@@ -221,3 +234,59 @@ commutative-monoid-add-closed-interval-ℚ =
221234
( monoid-add-closed-interval-ℚ ,
222235
commutative-add-closed-interval-ℚ)
223236
```
237+
238+
### Containment on rational intervals is preserved by addition
239+
240+
```agda
241+
abstract
242+
preserves-leq-left-add-closed-interval-ℚ :
243+
([c,d] [a,b] [a',b'] : closed-interval-ℚ) →
244+
leq-closed-interval-ℚ [a,b] [a',b'] →
245+
leq-closed-interval-ℚ
246+
( add-closed-interval-ℚ [a,b] [c,d])
247+
( add-closed-interval-ℚ [a',b'] [c,d])
248+
preserves-leq-left-add-closed-interval-ℚ
249+
((c , d) , _) ((a , b) , _) ((a' , b') , _) (a'≤a , b≤b') =
250+
( preserves-leq-left-add-ℚ c a' a a'≤a ,
251+
preserves-leq-left-add-ℚ d b b' b≤b')
252+
253+
preserves-leq-right-add-closed-interval-ℚ :
254+
([a,b] [c,d] [c',d'] : closed-interval-ℚ) →
255+
leq-closed-interval-ℚ [c,d] [c',d'] →
256+
leq-closed-interval-ℚ
257+
( add-closed-interval-ℚ [a,b] [c,d])
258+
( add-closed-interval-ℚ [a,b] [c',d'])
259+
preserves-leq-right-add-closed-interval-ℚ [a,b] [c,d] [c',d'] [c,d]⊆[c',d'] =
260+
binary-tr
261+
( leq-closed-interval-ℚ)
262+
( commutative-add-closed-interval-ℚ [c,d] [a,b])
263+
( commutative-add-closed-interval-ℚ [c',d'] [a,b])
264+
( preserves-leq-left-add-closed-interval-ℚ
265+
( [a,b])
266+
( [c,d])
267+
( [c',d'])
268+
( [c,d]⊆[c',d']))
269+
270+
preserves-leq-add-closed-interval-ℚ :
271+
([a,b] [a',b'] [c,d] [c',d'] : closed-interval-ℚ) →
272+
leq-closed-interval-ℚ [a,b] [a',b'] → leq-closed-interval-ℚ [c,d] [c',d'] →
273+
leq-closed-interval-ℚ
274+
( add-closed-interval-ℚ [a,b] [c,d])
275+
( add-closed-interval-ℚ [a',b'] [c',d'])
276+
preserves-leq-add-closed-interval-ℚ
277+
[a,b] [a',b'] [c,d] [c',d'] [a,b]⊆[a',b'] [c,d]⊆[c',d'] =
278+
transitive-leq-closed-interval-ℚ
279+
( add-closed-interval-ℚ [a,b] [c,d])
280+
( add-closed-interval-ℚ [a,b] [c',d'])
281+
( add-closed-interval-ℚ [a',b'] [c',d'])
282+
( preserves-leq-left-add-closed-interval-ℚ
283+
( [c',d'])
284+
( [a,b])
285+
( [a',b'])
286+
( [a,b]⊆[a',b']))
287+
( preserves-leq-right-add-closed-interval-ℚ
288+
( [a,b])
289+
( [c,d])
290+
( [c',d'])
291+
( [c,d]⊆[c',d']))
292+
```

src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ open import elementary-number-theory.multiplicative-group-of-positive-rational-n
2222
open import elementary-number-theory.multiplicative-group-of-rational-numbers
2323
open import elementary-number-theory.multiplicative-monoid-of-rational-numbers
2424
open import elementary-number-theory.negative-rational-numbers
25+
open import elementary-number-theory.poset-closed-intervals-rational-numbers
2526
open import elementary-number-theory.positive-and-negative-rational-numbers
2627
open import elementary-number-theory.positive-rational-numbers
2728
open import elementary-number-theory.rational-numbers
@@ -753,3 +754,137 @@ commutative-monoid-mul-closed-interval-ℚ =
753754
( monoid-mul-closed-interval-ℚ ,
754755
commutative-mul-closed-interval-ℚ)
755756
```
757+
758+
### Multiplication of closed intervals is subdistributive
759+
760+
```agda
761+
abstract
762+
left-subdistributive-mul-add-closed-interval-ℚ :
763+
([a,b] [c,d] [e,f] : closed-interval-ℚ) →
764+
leq-closed-interval-ℚ
765+
( mul-closed-interval-ℚ [a,b] (add-closed-interval-ℚ [c,d] [e,f]))
766+
( add-closed-interval-ℚ
767+
( mul-closed-interval-ℚ [a,b] [c,d])
768+
( mul-closed-interval-ℚ [a,b] [e,f]))
769+
left-subdistributive-mul-add-closed-interval-ℚ [a,b] [c,d] [e,f] =
770+
leq-closed-interval-leq-subtype-ℚ
771+
( mul-closed-interval-ℚ [a,b] (add-closed-interval-ℚ [c,d] [e,f]))
772+
( add-closed-interval-ℚ
773+
( mul-closed-interval-ℚ [a,b] [c,d])
774+
( mul-closed-interval-ℚ [a,b] [e,f]))
775+
( λ q q∈[a,b]⟨[c,d]+[e,f]⟩ →
776+
let
777+
open
778+
do-syntax-trunc-Prop
779+
( subtype-closed-interval-ℚ
780+
( add-closed-interval-ℚ
781+
( mul-closed-interval-ℚ [a,b] [c,d])
782+
( mul-closed-interval-ℚ [a,b] [e,f]))
783+
( q))
784+
in do
785+
((qab , qcdef) , qab∈[a,b] , qcdef∈[c,d]+[e,f] , q=qab*qcdef) ←
786+
is-in-minkowski-product-is-in-mul-closed-interval-ℚ
787+
( [a,b])
788+
( add-closed-interval-ℚ [c,d] [e,f])
789+
( q)
790+
( q∈[a,b]⟨[c,d]+[e,f]⟩)
791+
((qcd , qef) , qcd∈[c,d] , qef∈[e,f] , qcdef=qcd+qef) ←
792+
is-in-minkowski-sum-is-in-add-closed-interval-ℚ
793+
( [c,d])
794+
( [e,f])
795+
( qcdef)
796+
( qcdef∈[c,d]+[e,f])
797+
inv-tr
798+
( is-in-closed-interval-ℚ
799+
( add-closed-interval-ℚ
800+
( mul-closed-interval-ℚ [a,b] [c,d])
801+
( mul-closed-interval-ℚ [a,b] [e,f])))
802+
( ( q=qab*qcdef) ∙
803+
( ap-mul-ℚ refl qcdef=qcd+qef) ∙
804+
( left-distributive-mul-add-ℚ qab qcd qef))
805+
( is-in-add-interval-add-is-in-closed-interval-ℚ
806+
( mul-closed-interval-ℚ [a,b] [c,d])
807+
( mul-closed-interval-ℚ [a,b] [e,f])
808+
( qab *ℚ qcd)
809+
( qab *ℚ qef)
810+
( is-in-mul-interval-mul-is-in-closed-interval-ℚ
811+
( [a,b])
812+
( [c,d])
813+
( qab)
814+
( qcd)
815+
( qab∈[a,b])
816+
( qcd∈[c,d]))
817+
( is-in-mul-interval-mul-is-in-closed-interval-ℚ
818+
( [a,b])
819+
( [e,f])
820+
( qab)
821+
( qef)
822+
( qab∈[a,b])
823+
( qef∈[e,f]))))
824+
```
825+
826+
### Containment of intervals is preserved by multiplication
827+
828+
```agda
829+
abstract
830+
preserves-leq-left-mul-closed-interval-ℚ :
831+
([c,d] [a,b] [a',b'] : closed-interval-ℚ) →
832+
leq-closed-interval-ℚ [a,b] [a',b'] →
833+
leq-closed-interval-ℚ
834+
( mul-closed-interval-ℚ [a,b] [c,d])
835+
( mul-closed-interval-ℚ [a',b'] [c,d])
836+
preserves-leq-left-mul-closed-interval-ℚ [c,d] [a,b] [a',b'] [a,b]⊆[a',b'] =
837+
leq-closed-interval-leq-subtype-ℚ
838+
( mul-closed-interval-ℚ [a,b] [c,d])
839+
( mul-closed-interval-ℚ [a',b'] [c,d])
840+
( binary-tr
841+
( _⊆_)
842+
( eq-minkowski-mul-closed-interval-ℚ [a,b] [c,d])
843+
( eq-minkowski-mul-closed-interval-ℚ [a',b'] [c,d])
844+
( preserves-leq-left-minkowski-mul-Commutative-Monoid
845+
( commutative-monoid-mul-ℚ)
846+
( subtype-closed-interval-ℚ [c,d])
847+
( subtype-closed-interval-ℚ [a,b])
848+
( subtype-closed-interval-ℚ [a',b'])
849+
( leq-subtype-leq-closed-interval-ℚ [a,b] [a',b'] [a,b]⊆[a',b'])))
850+
851+
preserves-leq-right-mul-closed-interval-ℚ :
852+
([a,b] [c,d] [c',d'] : closed-interval-ℚ) →
853+
leq-closed-interval-ℚ [c,d] [c',d'] →
854+
leq-closed-interval-ℚ
855+
( mul-closed-interval-ℚ [a,b] [c,d])
856+
( mul-closed-interval-ℚ [a,b] [c',d'])
857+
preserves-leq-right-mul-closed-interval-ℚ [a,b] [c,d] [c',d'] [c,d]⊆[c',d'] =
858+
binary-tr
859+
( leq-closed-interval-ℚ)
860+
( commutative-mul-closed-interval-ℚ [c,d] [a,b])
861+
( commutative-mul-closed-interval-ℚ [c',d'] [a,b])
862+
( preserves-leq-left-mul-closed-interval-ℚ
863+
( [a,b])
864+
( [c,d])
865+
( [c',d'])
866+
( [c,d]⊆[c',d']))
867+
868+
preserves-leq-mul-closed-interval-ℚ :
869+
([a,b] [a',b'] [c,d] [c',d'] : closed-interval-ℚ) →
870+
leq-closed-interval-ℚ [a,b] [a',b'] → leq-closed-interval-ℚ [c,d] [c',d'] →
871+
leq-closed-interval-ℚ
872+
( mul-closed-interval-ℚ [a,b] [c,d])
873+
( mul-closed-interval-ℚ [a',b'] [c',d'])
874+
preserves-leq-mul-closed-interval-ℚ
875+
[a,b] [a',b'] [c,d] [c',d'] [a,b]⊆[a',b'] [c,d]⊆[c',d'] =
876+
transitive-leq-closed-interval-ℚ
877+
( mul-closed-interval-ℚ [a,b] [c,d])
878+
( mul-closed-interval-ℚ [a,b] [c',d'])
879+
( mul-closed-interval-ℚ [a',b'] [c',d'])
880+
( preserves-leq-left-mul-closed-interval-ℚ
881+
( [c',d'])
882+
( [a,b])
883+
( [a',b'])
884+
( [a,b]⊆[a',b']))
885+
( preserves-leq-right-mul-closed-interval-ℚ
886+
( [a,b])
887+
( [c,d])
888+
( [c',d'])
889+
( [c,d]⊆[c',d']))
890+
```

src/elementary-number-theory/poset-closed-intervals-rational-numbers.lagda.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ open import elementary-number-theory.closed-intervals-rational-numbers
1111
open import elementary-number-theory.decidable-total-order-rational-numbers
1212
1313
open import foundation.binary-relations
14+
open import foundation.logical-equivalences
15+
open import foundation.subtypes
1416
open import foundation.universe-levels
1517
1618
open import order-theory.closed-intervals-total-orders
@@ -60,3 +62,28 @@ abstract
6062
poset-closed-interval-ℚ : Poset lzero lzero
6163
poset-closed-interval-ℚ = poset-closed-interval-Total-Order ℚ-Total-Order
6264
```
65+
66+
### Containment of closed intervals is equivalent to containment of subtypes
67+
68+
```agda
69+
abstract
70+
leq-subtype-iff-leq-closed-interval-ℚ :
71+
([a,b] [c,d] : closed-interval-ℚ) →
72+
( leq-closed-interval-ℚ [a,b] [c,d] ↔
73+
( subtype-closed-interval-ℚ [a,b] ⊆ subtype-closed-interval-ℚ [c,d]))
74+
leq-subtype-iff-leq-closed-interval-ℚ =
75+
leq-subtype-iff-leq-closed-interval-Total-Order ℚ-Total-Order
76+
77+
leq-subtype-leq-closed-interval-ℚ :
78+
([a,b] [c,d] : closed-interval-ℚ) → leq-closed-interval-ℚ [a,b] [c,d] →
79+
subtype-closed-interval-ℚ [a,b] ⊆ subtype-closed-interval-ℚ [c,d]
80+
leq-subtype-leq-closed-interval-ℚ =
81+
leq-subtype-leq-closed-interval-Total-Order ℚ-Total-Order
82+
83+
leq-closed-interval-leq-subtype-ℚ :
84+
([a,b] [c,d] : closed-interval-ℚ) →
85+
subtype-closed-interval-ℚ [a,b] ⊆ subtype-closed-interval-ℚ [c,d] →
86+
leq-closed-interval-ℚ [a,b] [c,d]
87+
leq-closed-interval-leq-subtype-ℚ =
88+
leq-closed-interval-leq-subtype-Total-Order ℚ-Total-Order
89+
```

0 commit comments

Comments
 (0)