/- Copyright (c) 2017 Johannes HΓΆlzl. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Johannes HΓΆlzl, YaΓ«l Dillies ! This file was ported from Lean 3 source module order.disjointed ! leanprover-community/mathlib commit f7fc89d5d5ff1db2d1242c7bb0e9062ce47ef47c ! Please do not edit these lines, except to modify the commit id ! if you have ported upstream changes. -/ import Mathlib.Order.PartialSups /-! # 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)`, .... * `partialSups_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`. * `iSup_disjointed`: `disjointed f` has the same supremum as `f`. Limiting case of `partialSups_disjointed`. We also provide set notation variants of some lemmas. ## TODO Find a useful statement of `disjointedRec_succ`. One could generalize `disjointed` to any locally finite bot preorder domain, in place of `β`. Related to the TODO in the module docstring of `Mathlib.Order.PartialSups`. -/ variable {Ξ±Ξ±: Type ?u.5976Ξ² :Ξ²: Type ?u.1032Type _} section GeneralizedBooleanAlgebra variable [GeneralizedBooleanAlgebraType _: Type (?u.5976+1)Ξ±] /-- 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. -/ def disjointed (Ξ±: Type ?u.8f :f: β β Ξ±β ββ: TypeΞ±) :Ξ±: Type ?u.17β ββ: TypeΞ± |Ξ±: Type ?u.170 =>0: βff: β β Ξ±0 |0: ?m.53n + 1 =>n: βf (f: β β Ξ±n +n: β1) \1: ?m.154partialSupspartialSups: {Ξ± : Type ?u.190} β [inst : SemilatticeSup Ξ±] β (β β Ξ±) β β βo Ξ±ff: β β Ξ±n #align disjointedn: βdisjointed @[simp] theoremdisjointed: {Ξ± : Type u_1} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±disjointed_zero (disjointed_zero: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), disjointed f 0 = f 0f :f: β β Ξ±β ββ: TypeΞ±) :Ξ±: Type ?u.618disjointeddisjointed: {Ξ± : Type ?u.632} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±ff: β β Ξ±0 =0: ?m.639ff: β β Ξ±0 := rfl #align disjointed_zero0: ?m.654disjointed_zero theoremdisjointed_zero: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), disjointed f 0 = f 0disjointed_succ (disjointed_succ: β (f : β β Ξ±) (n : β), disjointed f (n + 1) = f (n + 1) \ β(partialSups f) nf :f: β β Ξ±β ββ: TypeΞ±) (Ξ±: Type ?u.692n :n: ββ) :β: Typedisjointeddisjointed: {Ξ± : Type ?u.708} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±f (f: β β Ξ±n +n: β1) =1: ?m.718f (f: β β Ξ±n +n: β1) \1: ?m.789partialSupspartialSups: {Ξ± : Type ?u.825} β [inst : SemilatticeSup Ξ±] β (β β Ξ±) β β βo Ξ±ff: β β Ξ±n := rfl #align disjointed_succn: βdisjointed_succ theoremdisjointed_succ: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±) (n : β), disjointed f (n + 1) = f (n + 1) \ β(partialSups f) ndisjointed_le_id :disjointed_le_id: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±], disjointed β€ iddisjointed β€ (disjointed: {Ξ± : Type ?u.1039} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±id : (id: {Ξ± : Sort ?u.1062} β Ξ± β Ξ±β ββ: TypeΞ±) βΞ±: Type ?u.1029β ββ: TypeΞ±) :=Ξ±: Type ?u.1029Goals accomplished! πdisjointed β€ iddisjointed f n β€ id f ndisjointed β€ id
zerodisjointed f Nat.zero β€ id f Nat.zero
succdisjointed f (Nat.succ nβ) β€ id f (Nat.succ nβ)disjointed β€ id
zerodisjointed f Nat.zero β€ id f Nat.zero
zerodisjointed f Nat.zero β€ id f Nat.zero
succdisjointed f (Nat.succ nβ) β€ id f (Nat.succ nβ)Goals accomplished! πdisjointed β€ id
succdisjointed f (Nat.succ nβ) β€ id f (Nat.succ nβ)
succdisjointed f (Nat.succ nβ) β€ id f (Nat.succ nβ)#align disjointed_le_idGoals accomplished! πdisjointed_le_id theoremdisjointed_le_id: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±], disjointed β€ iddisjointed_le (disjointed_le: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), disjointed f β€ ff :f: β β Ξ±β ββ: TypeΞ±) :Ξ±: Type ?u.2095disjointeddisjointed: {Ξ± : Type ?u.2109} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±f β€f: β β Ξ±f :=f: β β Ξ±disjointed_le_iddisjointed_le_id: β {Ξ± : Type ?u.2522} [inst : GeneralizedBooleanAlgebra Ξ±], disjointed β€ idf #align disjointed_lef: β β Ξ±disjointed_le theoremdisjointed_le: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), disjointed f β€ fdisjoint_disjointed (disjoint_disjointed: β (f : β β Ξ±), Pairwise (Disjoint on disjointed f)f :f: β β Ξ±β ββ: TypeΞ±) : Pairwise (Ξ±: Type ?u.2546Disjoint onDisjoint: {Ξ± : Type ?u.2571} β [inst : PartialOrder Ξ±] β [inst : OrderBot Ξ±] β Ξ± β Ξ± β Propdisjointeddisjointed: {Ξ± : Type ?u.2732} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±f) :=f: β β Ξ±Goals accomplished! πPairwise (Disjoint on disjointed f)Disjoint (disjointed f m) (disjointed f n)Pairwise (Disjoint on disjointed f)Ξ±: Type u_1
Ξ²: Type ?u.2549
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
m: β
h: m < Nat.zero
zeroDisjoint (disjointed f m) (disjointed f Nat.zero)Ξ±: Type u_1
Ξ²: Type ?u.2549
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
m, nβ: β
h: m < Nat.succ nβ
succDisjoint (disjointed f m) (disjointed f (Nat.succ nβ))Pairwise (Disjoint on disjointed f)Ξ±: Type u_1
Ξ²: Type ?u.2549
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
m: β
h: m < Nat.zero
zeroDisjoint (disjointed f m) (disjointed f Nat.zero)Ξ±: Type u_1
Ξ²: Type ?u.2549
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
m: β
h: m < Nat.zero
zeroDisjoint (disjointed f m) (disjointed f Nat.zero)Ξ±: Type u_1
Ξ²: Type ?u.2549
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
m, nβ: β
h: m < Nat.succ nβ
succDisjoint (disjointed f m) (disjointed f (Nat.succ nβ))Goals accomplished! πPairwise (Disjoint on disjointed f)#align disjoint_disjointedGoals accomplished! πdisjoint_disjointed -- Porting note: `disjointedRec` had a change in universe level. /-- 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. -/ defdisjoint_disjointed: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), Pairwise (Disjoint on disjointed f)disjointedRec {disjointedRec: {Ξ± : Type u_1} β [inst : GeneralizedBooleanAlgebra Ξ±] β {f : β β Ξ±} β {p : Ξ± β Sort u_2} β (β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)) β β¦n : ββ¦ β p (f n) β p (disjointed f n)f :f: β β Ξ±β ββ: TypeΞ±} {Ξ±: Type ?u.4692p :p: Ξ± β Sort ?u.4707Ξ± βΞ±: Type ?u.4692SortSort _: Type ?u.4707_} (hdiff : β β¦Sort _: Type ?u.4707tt: ?m.4711iβ¦,i: ?m.4714pp: Ξ± β Sort ?u.4707t βt: ?m.4711p (p: Ξ± β Sort ?u.4707t \t: ?m.4711ff: β β Ξ±i)) : β β¦i: ?m.4714nβ¦,n: ?m.4759p (p: Ξ± β Sort ?u.4707ff: β β Ξ±n) βn: ?m.4759p (p: Ξ± β Sort ?u.4707disjointeddisjointed: {Ξ± : Type ?u.4764} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±ff: β β Ξ±n) |n: ?m.47590 =>0: βid |id: {Ξ± : Sort ?u.4803} β Ξ± β Ξ±n + 1 => funn: βh =>h: ?m.4903Goals accomplished! πΞ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.4707
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H: (k : β) β p (f (n + 1) \ β(partialSups f) k)p (disjointed f (n + 1))Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.4707
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H(k : β) β p (f (n + 1) \ β(partialSups f) k)Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.4707
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H: (k : β) β p (f (n + 1) \ β(partialSups f) k)p (disjointed f (n + 1))Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.4707
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H: (k : β) β p (f (n + 1) \ β(partialSups f) k)p (disjointed f (n + 1))Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.4707
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H(k : β) β p (f (n + 1) \ β(partialSups f) k)Goals accomplished! πΞ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.5212
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H.zerop (f (n + 1) \ β(partialSups f) Nat.zero)Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.5212
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
k: β
ih: p (f (n + 1) \ β(partialSups f) k)
H.succp (f (n + 1) \ β(partialSups f) (Nat.succ k))Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.5212
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
H.zerop (f (n + 1) \ β(partialSups f) Nat.zero)Ξ±: Type ?u.4692
Ξ²: Type ?u.4695
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
p: Ξ± β Sort ?u.5212
hdiff: β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)
n: β
h: p (f (n + 1))
k: β
ih: p (f (n + 1) \ β(partialSups f) k)
H.succp (f (n + 1) \ β(partialSups f) (Nat.succ k))Goals accomplished! π#align disjointed_recGoals accomplished! πdisjointedRec @[simp] theoremdisjointedRec: {Ξ± : Type u_1} β [inst : GeneralizedBooleanAlgebra Ξ±] β {f : β β Ξ±} β {p : Ξ± β Sort u_2} β (β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)) β β¦n : ββ¦ β p (f n) β p (disjointed f n)disjointedRec_zero {disjointedRec_zero: β {Ξ± : Type u_2} [inst : GeneralizedBooleanAlgebra Ξ±] {f : β β Ξ±} {p : Ξ± β Sort u_1} (hdiff : β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)) (hβ : p (f 0)), disjointedRec hdiff hβ = hβf :f: β β Ξ±β ββ: TypeΞ±} {Ξ±: Type ?u.5787p :p: Ξ± β Sort u_1Ξ± βΞ±: Type ?u.5787SortSort _: Type ?u.5802_} (hdiff : β β¦Sort _: Type ?u.5802tt: ?m.5806iβ¦,i: ?m.5809pp: Ξ± β Sort ?u.5802t βt: ?m.5806p (p: Ξ± β Sort ?u.5802t \t: ?m.5806ff: β β Ξ±i)) (i: ?m.5809hβ :hβ: p (f 0)p (p: Ξ± β Sort ?u.5802ff: β β Ξ±0)) :0: ?m.5854disjointedRec hdiffdisjointedRec: {Ξ± : Type ?u.5868} β [inst : GeneralizedBooleanAlgebra Ξ±] β {f : β β Ξ±} β {p : Ξ± β Sort ?u.5867} β (β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)) β β¦n : ββ¦ β p (f n) β p (disjointed f n)hβ =hβ: p (f 0)hβ := rfl #align disjointed_rec_zerohβ: p (f 0)disjointedRec_zero -- TODO: Find a useful statement of `disjointedRec_succ`. theoremdisjointedRec_zero: β {Ξ± : Type u_2} [inst : GeneralizedBooleanAlgebra Ξ±] {f : β β Ξ±} {p : Ξ± β Sort u_1} (hdiff : β¦t : Ξ±β¦ β β¦i : ββ¦ β p t β p (t \ f i)) (hβ : p (f 0)), disjointedRec hdiff hβ = hβMonotone.disjointed_eq {f :f: β β Ξ±β ββ: TypeΞ±} (Ξ±: Type ?u.5976hf : Monotonehf: Monotone ff) (f: β β Ξ±n :n: ββ) :β: Typedisjointeddisjointed: {Ξ± : Type ?u.6516} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±f (f: β β Ξ±n +n: β1) =1: ?m.6526f (f: β β Ξ±n +n: β1) \1: ?m.6595ff: β β Ξ±n :=n: βGoals accomplished! π#align monotone.disjointed_eqGoals accomplished! πMonotone.disjointed_eq @[simp] theoremMonotone.disjointed_eq: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] {f : β β Ξ±}, Monotone f β β (n : β), disjointed f (n + 1) = f (n + 1) \ f npartialSups_disjointed (partialSups_disjointed: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), partialSups (disjointed f) = partialSups ff :f: β β Ξ±β ββ: TypeΞ±) :Ξ±: Type ?u.6807partialSups (partialSups: {Ξ± : Type ?u.6821} β [inst : SemilatticeSup Ξ±] β (β β Ξ±) β β βo Ξ±disjointeddisjointed: {Ξ± : Type ?u.6824} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±f) =f: β β Ξ±partialSupspartialSups: {Ξ± : Type ?u.6936} β [inst : SemilatticeSup Ξ±] β (β β Ξ±) β β βo Ξ±f :=f: β β Ξ±Goals accomplished! πpartialSups (disjointed f) = partialSups f
h.hβ(partialSups (disjointed f)) n = β(partialSups f) npartialSups (disjointed f) = partialSups f
h.h.zeroβ(partialSups (disjointed f)) Nat.zero = β(partialSups f) Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)partialSups (disjointed f) = partialSups f
h.h.zeroβ(partialSups (disjointed f)) Nat.zero = β(partialSups f) Nat.zero
h.h.zeroβ(partialSups (disjointed f)) Nat.zero = β(partialSups f) Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)
h.h.zeroβ(partialSups (disjointed f)) Nat.zero = β(partialSups f) Nat.zero
h.h.zerodisjointed f 0 = β(partialSups f) Nat.zero
h.h.zeroβ(partialSups (disjointed f)) Nat.zero = β(partialSups f) Nat.zero
h.h.zerodisjointed f 0 = f 0
h.h.zeroβ(partialSups (disjointed f)) Nat.zero = β(partialSups f) Nat.zero
h.h.zerof 0 = f 0Goals accomplished! πpartialSups (disjointed f) = partialSups fΞ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) k β disjointed f (k + 1) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) k β disjointed f (k + 1) = β(partialSups f) k β f (k + 1)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) k β f (k + 1) \ β(partialSups f) k = β(partialSups f) k β f (k + 1)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups f) k β f (k + 1) \ β(partialSups f) k = β(partialSups f) k β f (k + 1)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups (disjointed f)) (Nat.succ k) = β(partialSups f) (Nat.succ k)Ξ±: Type u_1
Ξ²: Type ?u.6810
instβ: GeneralizedBooleanAlgebra Ξ±
f: β β Ξ±
k: β
ih: β(partialSups (disjointed f)) k = β(partialSups f) k
h.h.succβ(partialSups f) k β f (k + 1) = β(partialSups f) k β f (k + 1)#align partial_sups_disjointedGoals accomplished! πpartialSups_disjointed /-- `disjointed f` is the unique sequence that is pairwise disjoint and has the same partial sups as `f`. -/ theorempartialSups_disjointed: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), partialSups (disjointed f) = partialSups fdisjointed_unique {disjointed_unique: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] {f d : β β Ξ±}, Pairwise (Disjoint on d) β partialSups d = partialSups f β d = disjointed fff: β β Ξ±d :d: β β Ξ±β ββ: TypeΞ±} (hdisj : Pairwise (Ξ±: Type ?u.7987Disjoint onDisjoint: {Ξ± : Type ?u.8016} β [inst : PartialOrder Ξ±] β [inst : OrderBot Ξ±] β Ξ± β Ξ± β Propd)) (d: β β Ξ±hsups :hsups: partialSups d = partialSups fpartialSupspartialSups: {Ξ± : Type ?u.8189} β [inst : SemilatticeSup Ξ±] β (β β Ξ±) β β βo Ξ±d =d: β β Ξ±partialSupspartialSups: {Ξ± : Type ?u.8288} β [inst : SemilatticeSup Ξ±] β (β β Ξ±) β β βo Ξ±f) :f: β β Ξ±d =d: β β Ξ±disjointeddisjointed: {Ξ± : Type ?u.8303} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±f :=f: β β Ξ±Goals accomplished! πΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd n = disjointed f nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zeroβ(partialSups d) 0 = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zeroβ(partialSups f) 0 = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerof 0 = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerod Nat.zero = disjointed f Nat.zeroΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
h.zerof 0 = f 0Goals accomplished! πΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succβ(partialSups d) (Nat.succ n) \ β(partialSups d) n = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succβ(partialSups f) (Nat.succ n) \ β(partialSups f) n = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succ(β(partialSups f) n β f (n + 1)) \ β(partialSups f) n = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succ(β(partialSups f) n β f (n + 1)) \ β(partialSups f) n = f (n + 1) \ β(partialSups f) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succβ(partialSups f) n \ β(partialSups f) n β f (n + 1) \ β(partialSups f) n = f (n + 1) \ β(partialSups f) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succβ₯ β f (n + 1) \ β(partialSups f) n = f (n + 1) \ β(partialSups f) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succd (Nat.succ n) = disjointed f (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: d (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) n
h.succf (n + 1) \ β(partialSups f) n = f (n + 1) \ β(partialSups f) nGoals accomplished! πΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = (β(partialSups d) n β d (n + 1)) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) n \ β(partialSups d) n β d (n + 1) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = d (n + 1) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (n + 1) \ β(partialSups d) n = d (Nat.succ n)Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hd (Nat.succ n) = β(partialSups d) (Nat.succ n) \ β(partialSups d) nΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hDisjoint (β(partialSups d) n) (d (n + 1))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hDisjoint (β(partialSups d) n) (d (n + 1))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: β (m : β), m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hDisjoint (β(partialSups d) n) (d (n + 1))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hβ (m : β), m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: β (m : β), m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hDisjoint (β(partialSups d) n) (d (n + 1))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
h: β (m : β), m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hDisjoint (β(partialSups d) n) (d (n + 1))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n: β
hβ (m : β), m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))Goals accomplished! πΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, m: β
hm: m β€ n
hDisjoint (β(partialSups d) m) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, m: β
hmβ: m β€ n
hm: Nat.zero β€ n
h.zeroDisjoint (β(partialSups d) Nat.zero) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, m: β
hmβ: m β€ n
hm: Nat.zero β€ n
h.zeroDisjoint (β(partialSups d) Nat.zero) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, m: β
hmβ: m β€ n
hm: Nat.zero β€ n
h.zeroDisjoint (β(partialSups d) Nat.zero) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Goals accomplished! πΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed fΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) m β d (m + 1)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succDisjoint (β(partialSups d) (Nat.succ m)) (d (Nat.succ n))Ξ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups f
n, mβ: β
hmβ: mβ β€ n
m: β
ih: m β€ n β Disjoint (β(partialSups d) m) (d (Nat.succ n))
hm: Nat.succ m β€ n
h.succΞ±: Type u_1
Ξ²: Type ?u.7990
instβ: GeneralizedBooleanAlgebra Ξ±
f, d: β β Ξ±
hdisj: Pairwise (Disjoint on d)
hsups: partialSups d = partialSups fd = disjointed f#align disjointed_uniqueGoals accomplished! πdisjointed_unique end GeneralizedBooleanAlgebra section CompleteBooleanAlgebra variable [CompleteBooleanAlgebradisjointed_unique: β {Ξ± : Type u_1} [inst : GeneralizedBooleanAlgebra Ξ±] {f d : β β Ξ±}, Pairwise (Disjoint on d) β partialSups d = partialSups f β d = disjointed fΞ±] theoremΞ±: Type ?u.11582iSup_disjointed (iSup_disjointed: β {Ξ± : Type u_1} [inst : CompleteBooleanAlgebra Ξ±] (f : β β Ξ±), (β¨ n, disjointed f n) = β¨ n, f nf :f: β β Ξ±β ββ: TypeΞ±) : (β¨Ξ±: Type ?u.11591n,n: ?m.11611disjointeddisjointed: {Ξ± : Type ?u.11613} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±ff: β β Ξ±n) = β¨n: ?m.11611n,n: ?m.11695ff: β β Ξ±n :=n: ?m.11695iSup_eq_iSup_of_partialSups_eq_partialSups (iSup_eq_iSup_of_partialSups_eq_partialSups: β {Ξ± : Type ?u.11702} [inst : CompleteLattice Ξ±] {f g : β β Ξ±}, partialSups f = partialSups g β (β¨ n, f n) = β¨ n, g npartialSups_disjointedpartialSups_disjointed: β {Ξ± : Type ?u.11743} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), partialSups (disjointed f) = partialSups ff) #align supr_disjointedf: β β Ξ±iSup_disjointed theoremiSup_disjointed: β {Ξ± : Type u_1} [inst : CompleteBooleanAlgebra Ξ±] (f : β β Ξ±), (β¨ n, disjointed f n) = β¨ n, f ndisjointed_eq_inf_compl (disjointed_eq_inf_compl: β {Ξ± : Type u_1} [inst : CompleteBooleanAlgebra Ξ±] (f : β β Ξ±) (n : β), disjointed f n = f n β β¨ i, β¨ h, f iαΆf :f: β β Ξ±β ββ: TypeΞ±) (Ξ±: Type ?u.11795n :n: ββ) :β: Typedisjointeddisjointed: {Ξ± : Type ?u.11811} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±ff: β β Ξ±n =n: βff: β β Ξ±n β β¨n: βi <i: ?m.11856n,n: βff: β β Ξ±iαΆ :=i: ?m.11856Goals accomplished! πdisjointed f n = f n β β¨ i, β¨ h, f iαΆdisjointed f n = f n β β¨ i, β¨ h, f iαΆ
zero
zero
zero
zero
zero
zeroGoals accomplished! πdisjointed f n = f n β β¨ i, β¨ h, f iαΆdisjointed f n = f n β β¨ i, β¨ h, f iαΆdisjointed f n = f n β β¨ i, β¨ h, f iαΆdisjointed f n = f n β β¨ i, β¨ h, f iαΆ#align disjointed_eq_inf_complGoals accomplished! πdisjointed_eq_inf_compl end CompleteBooleanAlgebra /-! ### Set notation variants of lemmas -/ theoremdisjointed_eq_inf_compl: β {Ξ± : Type u_1} [inst : CompleteBooleanAlgebra Ξ±] (f : β β Ξ±) (n : β), disjointed f n = f n β β¨ i, β¨ h, f iαΆdisjointed_subset (f :disjointed_subset: β (f : β β Set Ξ±) (n : β), disjointed f n β f nβ β Setβ: TypeΞ±) (Ξ±: Type ?u.14154n :n: ββ) :β: Typedisjointed fdisjointed: {Ξ± : Type ?u.14178} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±n β fn: βn :=n: βdisjointed_le fdisjointed_le: β {Ξ± : Type ?u.14221} [inst : GeneralizedBooleanAlgebra Ξ±] (f : β β Ξ±), disjointed f β€ fn #align disjointed_subset disjointed_subset theoremn: βiUnion_disjointed {f :iUnion_disjointed: β {Ξ± : Type u_1} {f : β β Set Ξ±}, (Set.iUnion fun n => disjointed f n) = Set.iUnion fun n => f nβ β Setβ: TypeΞ±} : (βΞ±: Type ?u.14247n,n: ?m.14265disjointed fdisjointed: {Ξ± : Type ?u.14267} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±n) = βn: ?m.14265n, fn: ?m.14306n :=n: ?m.14306iSup_disjointed f #align Union_disjointediSup_disjointed: β {Ξ± : Type ?u.14318} [inst : CompleteBooleanAlgebra Ξ±] (f : β β Ξ±), (β¨ n, disjointed f n) = β¨ n, f niUnion_disjointed theoremiUnion_disjointed: β {Ξ± : Type u_1} {f : β β Set Ξ±}, (Set.iUnion fun n => disjointed f n) = Set.iUnion fun n => f ndisjointed_eq_inter_compl (f :disjointed_eq_inter_compl: β {Ξ± : Type u_1} (f : β β Set Ξ±) (n : β), disjointed f n = f n β© Set.iInter fun i => Set.iInter fun h => f iαΆβ β Setβ: TypeΞ±) (Ξ±: Type ?u.14397n :n: ββ) :β: Typedisjointed fdisjointed: {Ξ± : Type ?u.14412} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±n = fn: βn β© βn: βi <i: ?m.14444n, fn: βiαΆ :=i: ?m.14444disjointed_eq_inf_compl fdisjointed_eq_inf_compl: β {Ξ± : Type ?u.14504} [inst : CompleteBooleanAlgebra Ξ±] (f : β β Ξ±) (n : β), disjointed f n = f n β β¨ i, β¨ h, f iαΆn #align disjointed_eq_inter_compln: βdisjointed_eq_inter_compl theoremdisjointed_eq_inter_compl: β {Ξ± : Type u_1} (f : β β Set Ξ±) (n : β), disjointed f n = f n β© Set.iInter fun i => Set.iInter fun h => f iαΆpreimage_find_eq_disjointed (s :β β Setβ: TypeΞ±) (Ξ±: Type ?u.14598H : βH: β (x : Ξ±), β n, x β s nx, βx: ?m.14611n,n: ?m.14617x β sx: ?m.14611n) [βn: ?m.14617xx: ?m.14643n, Decidable (n: ?m.14646x β sx: ?m.14643n)] (n: ?m.14646n :n: ββ) : (funβ: Typex =>x: ?m.14676Nat.find (Nat.find: {p : β β Prop} β [inst : DecidablePred p] β (β n, p n) β βHH: β (x : Ξ±), β n, x β s nx)) β»ΒΉ' {x: ?m.14676n} =n: βdisjointed sdisjointed: {Ξ± : Type ?u.14944} β [inst : GeneralizedBooleanAlgebra Ξ±] β (β β Ξ±) β β β Ξ±n :=n: βGoals accomplished! π#align preimage_find_eq_disjointed preimage_find_eq_disjointedGoals accomplished! π