- IST : I → LinearOrder T
Instances
@[instance_reducible]
instance
instFunLikeIndexedLOrderLinearOrder
{T : Type u_1}
{I : Type u_2}
:
FunLike (IndexedLOrder I T) I (LinearOrder T)
Equations
- instFunLikeIndexedLOrderLinearOrder = { coe := fun (a : IndexedLOrder I T) => IndexedLOrder.IST, coe_injective := ⋯ }
def
IndexedLOrder.isDominant
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.isDominant σ C = ∀ (y : T), ∃ i ∈ C, ∀ x ∈ σ, y ≤ x
Instances For
theorem
IndexedLOrder.Nonempty_of_Dominant
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
{σ : Finset T}
{C : Finset I}
(h : isDominant σ C)
:
C.Nonempty
theorem
IndexedLOrder.Dominant_of_subset
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ τ : Finset T)
(C : Finset I)
:
τ ⊆ σ → isDominant σ C → isDominant τ C
theorem
IndexedLOrder.Dominant_of_supset
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C D : Finset I)
:
C ⊆ D → isDominant σ C → isDominant σ D
@[reducible, inline]
abbrev
IndexedLOrder.mini
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
{σ : Finset T}
(h2 : σ.Nonempty)
(i : I)
:
T
Equations
- IndexedLOrder.mini h2 i = σ.min' h2
Instances For
theorem
IndexedLOrder.keylemma_of_dominant
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
{σ : Finset T}
{C : Finset I}
(h1 : isDominant σ C)
(h2 : σ.Nonempty)
:
theorem
IndexedLOrder.card_le_of_domiant
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
{σ : Finset T}
{C : Finset I}
(h1 : isDominant σ C)
:
theorem
IndexedLOrder.empty_Dominant
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
{D : Finset I}
(h : D.Nonempty)
:
@[reducible, inline]
abbrev
IndexedLOrder.isCell
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C : Finset I)
:
Equations
Instances For
@[reducible, inline]
abbrev
IndexedLOrder.isRoom
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.isRoom σ C = (IndexedLOrder.isCell σ C ∧ C.card = σ.card)
Instances For
theorem
IndexedLOrder.sigma_nonempty_of_room
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
{σ : Finset T}
{C : Finset I}
(h : isRoom σ C)
:
σ.Nonempty
@[reducible, inline]
abbrev
IndexedLOrder.isDoor
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.isDoor σ C = (IndexedLOrder.isCell σ C ∧ C.card = σ.card + 1)
Instances For
inductive
IndexedLOrder.isDoorof
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(τ : Finset T)
(D : Finset I)
(σ : Finset T)
(C : Finset I)
:
- idoor {T : Type u_1} {I : Type u_2} [IST : IndexedLOrder I T] [DecidableEq T] [DecidableEq I] {τ : Finset T} {D : Finset I} {σ : Finset T} {C : Finset I} (h0 : isCell σ C) (h1 : isDoor τ D) (x : T) : x ∉ τ → ∀ (h2 : insert x τ = σ) (h3 : D = C), isDoorof τ D σ C
- odoor {T : Type u_1} {I : Type u_2} [IST : IndexedLOrder I T] [DecidableEq T] [DecidableEq I] {τ : Finset T} {D : Finset I} {σ : Finset T} {C : Finset I} (h0 : isCell σ C) (h1 : isDoor τ D) (j : I) : j ∉ C → ∀ (h2 : τ = σ) (h3 : D = insert j C), isDoorof τ D σ C
Instances For
theorem
IndexedLOrder.isCell_of_door
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C : Finset I)
[DecidableEq T]
[DecidableEq I]
{τ : Finset T}
{D : Finset I}
(h1 : isDoorof τ D σ C)
:
isCell τ D
theorem
IndexedLOrder.isRoom_of_Door
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
{σ : Finset T}
{C : Finset I}
[DecidableEq T]
[DecidableEq I]
{τ : Finset T}
{D : Finset I}
(h1 : isDoorof τ D σ C)
:
isRoom σ C
theorem
IndexedLOrder.room_is_not_door
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(σ : Finset T)
(C : Finset I)
[DecidableEq T]
[DecidableEq I]
(h1 : isRoom σ C)
(τ : Finset T)
(D : Finset I)
:
@[reducible, inline]
abbrev
IndexedLOrder.isOutsideDoor
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(τ : Finset T)
(D : Finset I)
:
Equations
- IndexedLOrder.isOutsideDoor τ D = (IndexedLOrder.isDoor τ D ∧ τ = Finset.empty)
Instances For
@[reducible, inline]
abbrev
IndexedLOrder.isInternalDoor
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(τ : Finset T)
(D : Finset I)
:
Equations
- IndexedLOrder.isInternalDoor τ D = (IndexedLOrder.isDoor τ D ∧ τ.Nonempty)
Instances For
theorem
IndexedLOrder.outsidedoor_singleton
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(i : I)
:
theorem
IndexedLOrder.outsidedoor_is_singleton
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
{τ : Finset T}
{D : Finset I}
(h : isOutsideDoor τ D)
:
def
IndexedLOrder.M_set
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(τ : Finset T)
(D : Finset I)
(i : I)
(h_nonempty : τ.Nonempty)
:
Set T
Equations
- IndexedLOrder.M_set τ D i h_nonempty = {y : T | ∀ k ∈ D, k ≠ i → IndexedLOrder.mini h_nonempty k < y}
Instances For
def
IndexedLOrder.is_maximal_in_M_set
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
(τ : Finset T)
(D : Finset I)
(i : I)
(h_nonempty : τ.Nonempty)
(x : T)
:
Equations
- IndexedLOrder.is_maximal_in_M_set τ D i h_nonempty x = (x ∈ IndexedLOrder.M_set τ D i h_nonempty ∧ ∀ y ∈ IndexedLOrder.M_set τ D i h_nonempty, y ≤ x)
Instances For
noncomputable def
IndexedLOrder.m_element
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(i : I)
(h_nonempty : τ.Nonempty)
(h : (M_set τ D i h_nonempty).Nonempty)
:
T
Equations
- IndexedLOrder.m_element τ D i h_nonempty h = (IndexedLOrder.M_set τ D i h_nonempty).toFinset.max' ⋯
Instances For
theorem
IndexedLOrder.m_element_is_maximal
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(i : I)
(h_nonempty : τ.Nonempty)
(h : (M_set τ D i h_nonempty).Nonempty)
:
is_maximal_in_M_set τ D i h_nonempty (m_element τ D i h_nonempty h)
theorem
IndexedLOrder.sublemma_3_1
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(h_door : isDoor τ D)
(h_nonempty : τ.Nonempty)
(i : I)
:
theorem
IndexedLOrder.sublemma_3_2
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(x : T)
(h_door : isDoor τ D)
(h_nonempty : τ.Nonempty)
(h_not_mem : x ∉ τ)
(a b : I)
(ha : a ∈ D)
(hb : b ∈ D)
(hab : a ≠ b)
(h_eq : mini h_nonempty a = mini h_nonempty b)
:
isDominant (insert x τ) D ↔ ∃ i ∈ {a, b}, (M_set τ D i h_nonempty).Nonempty ∧ is_maximal_in_M_set τ D i h_nonempty x
theorem
IndexedLOrder.m_element_not_in_tau
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(i a b : I)
(h_door : isDoor τ D)
(h_nonempty : τ.Nonempty)
(ha_mem : a ∈ D)
(hb_mem : b ∈ D)
(hab : a ≠ b)
(h_eq_mini : mini h_nonempty a = mini h_nonempty b)
(h_M_nonempty : (M_set τ D i h_nonempty).Nonempty)
(h_i_is : i = a ∨ i = b)
:
m_element τ D i h_nonempty h_M_nonempty ∉ τ
theorem
IndexedLOrder.odoor_index_in_pair
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
[Fintype T]
(τ : Finset T)
(D C : Finset I)
(a b j : I)
(_h_door : isDoor τ D)
(h_nonempty : τ.Nonempty)
(ha_mem : a ∈ D)
(hb_mem : b ∈ D)
(hab : a ≠ b)
(h_eq_mini : mini h_nonempty a = mini h_nonempty b)
(h_dom : isDominant τ C)
(h_room_card : C.card = τ.card)
(_hj_not_mem : j ∉ C)
(hc_eq : D = insert j C)
:
theorem
IndexedLOrder.maximal_element_unique
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(i : I)
(h_nonempty : τ.Nonempty)
(h_M_nonempty : (M_set τ D i h_nonempty).Nonempty)
(x : T)
(h_x_max : is_maximal_in_M_set τ D i h_nonempty x)
:
theorem
IndexedLOrder.idoor_determines_element
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(a b : I)
(h_door : isDoor τ D)
(h_nonempty : τ.Nonempty)
(ha_mem : a ∈ D)
(hb_mem : b ∈ D)
(hab : a ≠ b)
(h_eq_mini : mini h_nonempty a = mini h_nonempty b)
(h_Ma_nonempty : (M_set τ D a h_nonempty).Nonempty)
(h_Mb_nonempty : (M_set τ D b h_nonempty).Nonempty)
(x : T)
(h_room : isRoom (insert x τ) D)
(hx_not_mem : x ∉ τ)
:
theorem
IndexedLOrder.internal_door_two_rooms
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
[Fintype T]
(τ : Finset T)
(D : Finset I)
(h_int_door : isInternalDoor τ D)
:
def
IndexedLOrder.isColorful
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
(c : T → I)
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.isColorful c σ C = (IndexedLOrder.isCell σ C ∧ Finset.image c σ = C)
Instances For
def
IndexedLOrder.isNearlyColorful
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
(c : T → I)
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.isNearlyColorful c σ C = (IndexedLOrder.isCell σ C ∧ (C \ Finset.image c σ).card = 1)
Instances For
def
IndexedLOrder.isTypedNC
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
(c : T → I)
(i : I)
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.isTypedNC c i σ C = (IndexedLOrder.isCell σ C ∧ C \ Finset.image c σ = {i})
Instances For
theorem
IndexedLOrder.not_colorful_of_TypedNC
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
{i : I}
(h1 : isTypedNC c i σ C)
:
¬isColorful c σ C
theorem
IndexedLOrder.NC_of_TNC
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
{i : I}
(h1 : isTypedNC c i σ C)
:
isNearlyColorful c σ C
theorem
IndexedLOrder.room_of_colorful
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
(h : isColorful c σ C)
:
isRoom σ C
noncomputable def
IndexedLOrder.pick_colorful_point
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
(h : isColorful c σ C)
:
↥σ
Equations
Instances For
theorem
IndexedLOrder.NC_of_outsidedoor
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
(h : isOutsideDoor σ C)
:
isNearlyColorful c σ C
theorem
IndexedLOrder.NC_or_C_of_door
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
{i : I}
{τ : Finset T}
{D : Finset I}
(h1 : isTypedNC c i τ D)
(h2 : isDoorof τ D σ C)
:
theorem
IndexedLOrder.NCtype_of_door
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
{i : I}
{τ : Finset T}
{D : Finset I}
(h1 : isTypedNC c i τ D)
:
theorem
IndexedLOrder.isTypedNC_of_isNearlyColorful_of_isDoorof_isTypedNC
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
{τ : Finset T}
{D : Finset I}
{i : I}
(h_nc : isNearlyColorful c τ D)
(h_door : isDoorof τ D σ C)
(h_room_typed : isTypedNC c i σ C)
:
isTypedNC c i τ D
theorem
IndexedLOrder.card_of_NCcell
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{D : Finset I}
(h : isNearlyColorful c σ D)
:
theorem
IndexedLOrder.image_subset_of_NCdoor
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
(h1 : isNearlyColorful c σ C)
(h2 : isDoor σ C)
:
Finset.image c σ ⊆ C
theorem
IndexedLOrder.image_erase_eq_erase_image_of_unique
{T : Type u_3}
{I : Type u_4}
[DecidableEq T]
[DecidableEq I]
(σ : Finset T)
(c : T → I)
{z : T}
:
z ∈ σ → ∀ (uniq : ∀ ⦃w : T⦄, w ∈ σ → c w = c z → w = z), Finset.image c (σ.erase z) = (Finset.image c σ).erase (c z)
@[reducible, inline]
abbrev
IndexedLOrder.NCdoors
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
(σ : Finset T)
(C : Finset I)
:
Equations
- IndexedLOrder.NCdoors c σ C = {(τ, D) : Finset T × Finset I | IndexedLOrder.isNearlyColorful c τ D ∧ IndexedLOrder.isDoorof τ D σ C}
Instances For
theorem
IndexedLOrder.three_collision_card_bound
{T : Type u_1}
{I : Type u_2}
[DecidableEq I]
[DecidableEq T]
(σ : Finset T)
(c : T → I)
(a b z : T)
(ha_in_σ : a ∈ σ)
(hb_in_σ : b ∈ σ)
(hz_in_σ : z ∈ σ)
(hab_ne : a ≠ b)
(haz_ne : a ≠ z)
(hbz_ne : b ≠ z)
(hc_eq : c a = c b)
(hcz_eq : c b = c z)
:
theorem
IndexedLOrder.image_erase_collision_preserves
{T : Type u_1}
{I : Type u_2}
[DecidableEq I]
[DecidableEq T]
(σ : Finset T)
(c : T → I)
(x y : T)
(hx_in_σ : x ∈ σ)
(hy_in_σ : y ∈ σ)
(hxy_ne : x ≠ y)
(hcxy_eq : c x = c y)
:
theorem
IndexedLOrder.collision_door_valid
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
[DecidableEq T]
(σ : Finset T)
(C : Finset I)
:
theorem
IndexedLOrder.doors_of_NCroom
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
[DecidableEq T]
(h_room : isRoom σ C)
(h_nc : isNearlyColorful c σ C)
:
@[reducible, inline]
noncomputable abbrev
IndexedLOrder.colorful
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
:
Equations
- IndexedLOrder.colorful c = {x : Finset T × Finset I | IndexedLOrder.isColorful c x.1 x.2}
Instances For
@[reducible, inline]
noncomputable abbrev
IndexedLOrder.dbcountingset
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
(i : I)
:
Equations
- IndexedLOrder.dbcountingset c i = {x : (Finset T × Finset I) × Finset T × Finset I | IndexedLOrder.isTypedNC c i x.1.1 x.1.2 ∧ IndexedLOrder.isDoorof x.1.1 x.1.2 x.2.1 x.2.2}
Instances For
theorem
IndexedLOrder.dbcount_outside_door'
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
(i : I)
:
theorem
IndexedLOrder.dbcount_outside_door_odd
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
(i : I)
:
Odd {x ∈ dbcountingset c i | isOutsideDoor x.1.1 x.1.2}.card
theorem
IndexedLOrder.fiber_size_internal_door
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
[Fintype T]
[Fintype I]
(c : T → I)
(i : I)
(y : Finset T × Finset I)
(hy_internal : isInternalDoor y.1 y.2)
(hy_typed : isTypedNC c i y.1 y.2)
:
theorem
IndexedLOrder.dbcount_internal_door_even
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
(i : I)
:
Even {x ∈ dbcountingset c i | ¬isOutsideDoor x.1.1 x.1.2}.card
theorem
IndexedLOrder.NC_of_NCdoor
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
{i : I}
{τ : Finset T}
{D : Finset I}
(h1 : isTypedNC c i τ D)
(h2 : isDoorof τ D σ C)
:
¬isColorful c σ C → isTypedNC c i σ C
theorem
IndexedLOrder.firber2_doors_NCroom
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
{c : T → I}
{σ : Finset T}
{C : Finset I}
[Fintype T]
[Fintype I]
{i : I}
(h0 : isRoom σ C)
(h1 : isTypedNC c i σ C)
:
theorem
IndexedLOrder.dbcount_NCroom
{T : Type u_1}
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
(i : I)
:
Even {x ∈ dbcountingset c i | ¬isColorful c x.2.1 x.2.2}.card
theorem
IndexedLOrder.typed_colorful_room_odd
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
(i : I)
:
Odd {x ∈ dbcountingset c i | isColorful c x.2.1 x.2.2}.card
theorem
IndexedLOrder.Scarf
{T : Type u_1}
[Inhabited T]
{I : Type u_2}
[IST : IndexedLOrder I T]
[DecidableEq T]
[DecidableEq I]
(c : T → I)
[Fintype T]
[Fintype I]
[Inhabited I]
: