Order intervals #
This file defines (nonempty) closed intervals in an order (see Set.Icc
). This is a prototype for
interval arithmetic.
Main declarations #
NonemptyInterval
: Nonempty intervals. Pairs where the second element is greater than the first.Interval
: Intervals. Either∅
or a nonempty interval.
The nonempty closed intervals in an order.
We define intervals by the pair of endpoints fst
, snd
. To convert intervals to the set of
elements between these endpoints, use the coercion NonemptyInterval α → Set α
.
Instances For
theorem
NonemptyInterval.ext
{α : Type u_6}
{inst✝ : LE α}
{x y : NonemptyInterval α}
(toProd : x.toProd = y.toProd)
:
The injection that induces the order on intervals.
Equations
Instances For
@[simp]
Equations
Equations
@[simp]
Turn an interval into an interval in the dual order.
Equations
Instances For
@[simp]
@[simp]
Equations
Equations
@[instance 100]
instance
NonemptyInterval.instMembership
{α : Type u_1}
[Preorder α]
:
Membership α (NonemptyInterval α)
Equations
{a}
as an interval.
Equations
Instances For
@[simp]
Equations
def
NonemptyInterval.map
{α : Type u_1}
{β : Type u_2}
[Preorder α]
[Preorder β]
(f : α →o β)
(a : NonemptyInterval α)
:
Pushforward of nonempty intervals.
Equations
Instances For
@[simp]
theorem
NonemptyInterval.dual_map
{α : Type u_1}
{β : Type u_2}
[Preorder α]
[Preorder β]
(f : α →o β)
(a : NonemptyInterval α)
:
def
NonemptyInterval.map₂
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[Preorder α]
[Preorder β]
[Preorder γ]
(f : α → β → γ)
(h₀ : ∀ (b : β), Monotone fun (a : α) => f a b)
(h₁ : ∀ (a : α), Monotone (f a))
:
NonemptyInterval α → NonemptyInterval β → NonemptyInterval γ
Binary pushforward of nonempty intervals.
Equations
Instances For
@[simp]
theorem
NonemptyInterval.map₂_snd
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[Preorder α]
[Preorder β]
[Preorder γ]
(f : α → β → γ)
(h₀ : ∀ (b : β), Monotone fun (a : α) => f a b)
(h₁ : ∀ (a : α), Monotone (f a))
(a✝ : NonemptyInterval α)
(a✝¹ : NonemptyInterval β)
:
@[simp]
theorem
NonemptyInterval.map₂_fst
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[Preorder α]
[Preorder β]
[Preorder γ]
(f : α → β → γ)
(h₀ : ∀ (b : β), Monotone fun (a : α) => f a b)
(h₁ : ∀ (a : α), Monotone (f a))
(a✝ : NonemptyInterval α)
(a✝¹ : NonemptyInterval β)
:
@[simp]
theorem
NonemptyInterval.dual_map₂
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[Preorder α]
[Preorder β]
[Preorder γ]
(f : α → β → γ)
(h₀ : ∀ (b : β), Monotone fun (a : α) => f a b)
(h₁ : ∀ (a : α), Monotone (f a))
(s : NonemptyInterval α)
(t : NonemptyInterval β)
:
dual (map₂ f h₀ h₁ s t) = map₂ (fun (a : αᵒᵈ) (b : βᵒᵈ) => OrderDual.toDual (f (OrderDual.ofDual a) (OrderDual.ofDual b))) ⋯ ⋯ (dual s) (dual t)
Equations
@[simp]
Equations
Equations
Consider a nonempty interval [a, b]
as the set [a, b]
.
Equations
Instances For
Equations
theorem
NonemptyInterval.coe_subset_coe
{α : Type u_1}
[PartialOrder α]
{s t : NonemptyInterval α}
:
theorem
NonemptyInterval.coe_ssubset_coe
{α : Type u_1}
[PartialOrder α]
{s t : NonemptyInterval α}
:
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
NonemptyInterval.subset_coe_map
{α : Type u_1}
{β : Type u_2}
[PartialOrder α]
[PartialOrder β]
(f : α →o β)
(s : NonemptyInterval α)
:
Equations
Equations
@[simp]
@[simp]
instance
Interval.instCoeNonemptyInterval
{α : Type u_1}
[LE α]
:
Coe (NonemptyInterval α) (Interval α)
Equations
instance
Interval.canLift
{α : Type u_1}
[LE α]
:
CanLift (Interval α) (NonemptyInterval α) WithBot.some fun (r : Interval α) => r ≠ ⊥
def
Interval.recBotCoe
{α : Type u_1}
[LE α]
{C : Interval α → Sort u_6}
(bot : C ⊥)
(coe : (a : NonemptyInterval α) → C ↑a)
(n : Interval α)
:
C n
Recursor for Interval
using the preferred forms ⊥
and ↑a
.
Equations
Instances For
{a}
as an interval.
Equations
Instances For
@[simp]
instance
Interval.instNontrivialOfNonempty
{α : Type u_1}
[Preorder α]
[Nonempty α]
:
Nontrivial (Interval α)
instance
Interval.boundedOrder
{α : Type u_1}
[Preorder α]
[BoundedOrder α]
:
BoundedOrder (Interval α)
Equations
Equations
Consider an interval [a, b]
as the set [a, b]
.
Equations
Instances For
@[simp]
@[simp]
@[simp]
theorem
Interval.subset_coe_map
{α : Type u_1}
{β : Type u_2}
[PartialOrder α]
[PartialOrder β]
(f : α →o β)
(s : Interval α)
:
@[simp]
Equations
Equations
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
NonemptyInterval.mem_coe_interval
{α : Type u_1}
[PartialOrder α]
{s : NonemptyInterval α}
{x : α}
:
@[simp]
noncomputable instance
Interval.completeLattice
{α : Type u_1}
[CompleteLattice α]
[DecidableLE α]
:
Equations
@[simp]
theorem
Interval.coe_sInf
{α : Type u_1}
[CompleteLattice α]
[DecidableLE α]
(S : Set (Interval α))
:
@[simp]
theorem
Interval.coe_iInf
{α : Type u_1}
{ι : Sort u_4}
[CompleteLattice α]
[DecidableLE α]
(f : ι → Interval α)
:
theorem
Interval.coe_iInf₂
{α : Type u_1}
{ι : Sort u_4}
{κ : ι → Sort u_5}
[CompleteLattice α]
[DecidableLE α]
(f : (i : ι) → κ i → Interval α)
: