order.disjointed

# Consecutive differences of sets #

This file defines the way to make a sequence of elements into a sequence of disjoint elements with the same partial sups.

For a sequence f : ℕ → α, this new sequence will be f 0, f 1 \ f 0, f 2 \ (f 0 ⊔ f 1). It is actually unique, as disjointed_unique shows.

## Main declarations #

• disjointed f: The sequence f 0, f 1 \ f 0, f 2 \ (f 0 ⊔ f 1), ....
• partial_sups_disjointed: disjointed f has the same partial sups as f.
• disjoint_disjointed: The elements of disjointed f are pairwise disjoint.
• disjointed_unique: disjointed f is the only pairwise disjoint sequence having the same partial sups as f.
• supr_disjointed: disjointed f has the same supremum as f. Limiting case of partial_sups_disjointed.

We also provide set notation variants of some lemmas.

## TODO #

Find a useful statement of disjointed_rec_succ.

One could generalize disjointed to any locally finite bot preorder domain, in place of ℕ. Related to the TODO in the module docstring of order.partial_sups.

def disjointed {α : Type u_1} (f : → α) :
→ α

If f : ℕ → α is a sequence of elements, then disjointed f is the sequence formed by subtracting each element from the nexts. This is the unique disjoint sequence whose partial sups are the same as the original sequence.

Equations
@[simp]
theorem disjointed_zero {α : Type u_1} (f : → α) :
0 = f 0
theorem disjointed_succ {α : Type u_1} (f : → α) (n : ) :
(n + 1) = f (n + 1) \ (partial_sups f) n
theorem disjointed_le_id {α : Type u_1}  :
theorem disjointed_le {α : Type u_1} (f : → α) :
f
theorem disjoint_disjointed {α : Type u_1} (f : → α) :
def disjointed_rec {α : Type u_1} {f : → α} {p : α → Sort u_2} (hdiff : Π ⦃t : α⦄ ⦃i : ⦄, p tp (t \ f i)) ⦃n :  :
p (f n)p n)

An induction principle for disjointed. To define/prove something on disjointed f n, it's enough to define/prove it for f n and being able to extend through diffs.

Equations
@[simp]
theorem disjointed_rec_zero {α : Type u_1} {f : → α} {p : α → Sort u_2} (hdiff : Π ⦃t : α⦄ ⦃i : ⦄, p tp (t \ f i)) (h₀ : p (f 0)) :
disjointed_rec hdiff h₀ = h₀
theorem monotone.disjointed_eq {α : Type u_1} {f : → α} (hf : monotone f) (n : ) :
(n + 1) = f (n + 1) \ f n
@[simp]
theorem partial_sups_disjointed {α : Type u_1} (f : → α) :
theorem disjointed_unique {α : Type u_1} {f d : → α} (hdisj : pairwise (disjoint on d)) (hsups : = ) :
d =

disjointed f is the unique sequence that is pairwise disjoint and has the same partial sups as f.

theorem supr_disjointed {α : Type u_1} (f : → α) :
(⨆ (n : ), n) = ⨆ (n : ), f n
theorem disjointed_eq_inf_compl {α : Type u_1} (f : → α) (n : ) :
n = f n ⨅ (i : ) (H : i < n), (f i)

### Set notation variants of lemmas #

theorem disjointed_subset {α : Type u_1} (f : set α) (n : ) :
n f n
theorem Union_disjointed {α : Type u_1} {f : set α} :
(⋃ (n : ), n) = ⋃ (n : ), f n
theorem disjointed_eq_inter_compl {α : Type u_1} (f : set α) (n : ) :
n = f n ⋂ (i : ) (H : i < n), (f i)
theorem preimage_find_eq_disjointed {α : Type u_1} (s : set α) (H : ∀ (x : α), ∃ (n : ), x s n) [Π (x : α) (n : ), decidable (x s n)] (n : ) :
(λ (x : α), nat.find _) ⁻¹' {n} = n