Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit fae32b6

Browse files
committed
refactor(analysis/normed_space/M_structure): generalize to arbitrary faithful actions (#14222)
This follows up from a comment in review of #12173 The motivation here is to allow `X →L[𝕜] X`, `X →+ X`, and other weaker or stronger endomorphisms to also be used This also tides up a few proof names and some poorly-rendering LaTeX
1 parent 189e5d1 commit fae32b6

File tree

1 file changed

+121
-117
lines changed

1 file changed

+121
-117
lines changed

src/analysis/normed_space/M_structure.lean

Lines changed: 121 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,14 @@ import tactic.noncomm_ring
1010
/-!
1111
# M-structure
1212
13-
A continuous projection `P` on a normed space `X` is said to be an L-projection if, for all `x` in
14-
`X`,
15-
$$
16-
∥x∥ = ∥P x∥ + ∥(1 - P) x∥.
17-
$$
13+
A projection P on a normed space X is said to be an L-projection (`is_Lprojection`) if, for all `x`
14+
in `X`,
15+
$\|x\| = \|P x\| + \|(1 - P) x\|$.
1816
19-
A continuous projection `P` on a normed space `X` is said to be an M-projection if, for all `x` in
20-
`X`,
21-
$$
22-
∥x∥ = max(∥P x∥,∥(1 - P) x∥).
23-
$$
17+
A projection P on a normed space X is said to be an M-projection if, for all `x` in `X`,
18+
$\|x\| = max(\|P x\|,\|(1 - P) x\|)$.
2419
25-
The L-projections on `X` form a Boolean algebra.
20+
The L-projections on `X` form a Boolean algebra (`is_Lprojection.subtype.boolean_algebra`).
2621
2722
## TODO (Motivational background)
2823
@@ -48,6 +43,10 @@ two-sided ideals of `A`.
4843
The approach to showing that the L-projections form a Boolean algebra is inspired by
4944
`measure_theory.measurable_space`.
5045
46+
Instead of using `P : X →L[𝕜] X` to represent projections, we use an arbitrary ring `M` with a
47+
faithful action on `X`. `continuous_linear_map.apply_module` can be used to recover the `X →L[𝕜] X`
48+
special case.
49+
5150
## References
5251
5352
* [Behrends, M-structure and the Banach-Stone Theorem][behrends1979]
@@ -59,62 +58,66 @@ M-summand, M-projection, L-summand, L-projection, M-ideal, M-structure
5958
6059
-/
6160

62-
variables {X : Type*} [normed_group X]
63-
64-
variables {𝕜 : Type*} [normed_field 𝕜] [normed_space 𝕜 X]
65-
61+
variables (X : Type*) [normed_group X]
62+
variables {M : Type} [ring M] [module M X]
6663
/--
6764
A projection on a normed space `X` is said to be an L-projection if, for all `x` in `X`,
68-
$$
69-
∥x∥ = ∥P x∥ + ∥(1 - P) x∥.
70-
$$
65+
$\|x\| = \|P x\| + \|(1 - P) x\|$.
66+
67+
Note that we write `P • x` instead of `P x` for reasons described in the module docstring.
7168
-/
72-
structure is_Lprojection (P : X →L[𝕜] X) : Prop :=
69+
structure is_Lprojection (P : M) : Prop :=
7370
(proj : is_idempotent_elem P)
74-
(Lnorm : ∀ (x : X), ∥x∥ = ∥P x∥ + ∥(1 - P) x∥)
71+
(Lnorm : ∀ (x : X), ∥x∥ = ∥P x∥ + ∥(1 - P) x∥)
7572

7673
/--
7774
A projection on a normed space `X` is said to be an M-projection if, for all `x` in `X`,
78-
$$
79-
∥x∥ = max(∥P x∥, ∥(1 - P) x∥).
80-
$$
75+
$\|x\| = max(\|P x\|,\|(1 - P) x\|)$.
76+
77+
Note that we write `P • x` instead of `P x` for reasons described in the module docstring.
8178
-/
82-
structure is_Mprojection (P : X →L[𝕜] X) : Prop :=
79+
structure is_Mprojection (P : M) : Prop :=
8380
(proj : is_idempotent_elem P)
84-
(Mnorm : ∀ (x : X), ∥x∥ = (max ∥P x∥ ∥(1 - P) x∥))
81+
(Mnorm : ∀ (x : X), ∥x∥ = (max ∥P • x∥ ∥(1 - P) • x∥))
82+
83+
variables {X}
8584

8685
namespace is_Lprojection
8786

88-
lemma Lcomplement {P : X →L[𝕜] X} (h: is_Lprojection P) : is_Lprojection (1 - P) :=
87+
lemma Lcomplement {P : M} (h: is_Lprojection X P) : is_Lprojection X (1 - P) :=
8988
⟨h.proj.one_sub, λ x, by { rw [add_comm, sub_sub_cancel], exact h.Lnorm x }⟩
9089

91-
lemma Lcomplement_iff (P : X →L[𝕜] X) : is_Lprojection P ↔ is_Lprojection (1 - P) :=
90+
lemma Lcomplement_iff (P : M) : is_Lprojection X P ↔ is_Lprojection X (1 - P) :=
9291
⟨Lcomplement, λ h, sub_sub_cancel 1 P ▸ h.Lcomplement⟩
9392

94-
lemma commute {P Q : X →L[𝕜] X} (h₁ : is_Lprojection P) (h₂ : is_Lprojection Q) : commute P Q :=
93+
lemma commute [has_faithful_scalar M X] {P Q : M} (h₁ : is_Lprojection X P)
94+
(h₂ : is_Lprojection X Q) : commute P Q :=
9595
begin
96-
have PR_eq_RPR : ∀ R : (X →L[𝕜] X), is_Lprojection R → (P * R = R * P * R) :=λ R h₃,
96+
have PR_eq_RPR : ∀ R : M, is_Lprojection X R → P * R = R * P * R := λ R h₃,
9797
begin
98-
ext,
98+
refine @eq_of_smul_eq_smul _ X _ _ _ _ (λ x, _),
9999
rw ← norm_sub_eq_zero_iff,
100-
have e1 : ∥R x∥ ≥ ∥R x∥ + 2 • ∥ (P * R) x - (R * P * R) x∥ :=
101-
calc ∥R x∥ = ∥R (P (R x))∥ + ∥(1 - R) (P (R x))∥ + (∥(R * R) x - R (P (R x))∥
102-
+ ∥(1 - R) ((1 - P) (R x))∥) :
103-
by rw [h₁.Lnorm, h₃.Lnorm, h₃.Lnorm ((1 - P) (R x)), continuous_linear_map.sub_apply 1 P,
104-
continuous_linear_map.one_apply, map_sub, continuous_linear_map.coe_mul]
105-
... = ∥R (P (R x))∥ + ∥(1 - R) (P (R x))∥ + (∥R x - R (P (R x))∥
106-
+ ∥((1 - R) * R) x - (1 - R) (P (R x))∥) : by rw [h₃.proj.eq,
107-
continuous_linear_map.sub_apply 1 P, continuous_linear_map.one_apply,
108-
map_sub,continuous_linear_map.coe_mul]
109-
... = ∥R (P (R x))∥ + ∥(1 - R) (P (R x))∥ + (∥R x - R (P (R x))∥ + ∥(1 - R) (P (R x))∥) :
110-
by rw [sub_mul, h₃.proj.eq, one_mul, sub_self, continuous_linear_map.zero_apply, zero_sub,
100+
have e1 : ∥R x∥ ≥ ∥R x∥ + 2 • ∥ (P * R) x - (R * P * R) x∥ :=
101+
calc ∥R x∥ = ∥R (P (R x))∥ + ∥(1 - R) (P • (R • x))∥ +
102+
(∥(R * R) • x - R • (P • (R • x))∥ + ∥(1 - R) ((1 - P) • (R • x))∥) :
103+
by rw [h₁.Lnorm, h₃.Lnorm, h₃.Lnorm ((1 - P) (R x)), sub_smul 1 P,
104+
one_smul, smul_sub, mul_smul]
105+
... = ∥R (P (R x))∥ + ∥(1 - R) (P (R x))∥ + (∥R x - R (P • (R • x))∥
106+
+ ∥((1 - R) * R) x - (1 - R) (P • (R • x))∥) : by rw [h₃.proj.eq,
107+
sub_smul 1 P, one_smul, smul_sub, mul_smul]
108+
... = ∥R • (P • (R • x))∥ + ∥(1 - R) • (P • (R • x))∥ +
109+
(∥R • x - R (P (R x))∥ + ∥(1 - R) (P • (R • x))∥) :
110+
by rw [sub_mul, h₃.proj.eq, one_mul, sub_self, zero_smul, zero_sub,
111111
norm_neg]
112-
... = ∥R (P (R x))∥ + ∥R x - R (P (R x))∥ + 2•∥(1 - R) (P (R x))∥ : by abel
113-
... ≥ ∥R x∥ + 2 • ∥ (P * R) x - (R * P * R) x∥ :
114-
by exact add_le_add_right (norm_le_insert' (R x) (R (P (R x)))) (2•∥(1 - R) (P (R x))∥),
112+
... = ∥R • (P • (R • x))∥ + ∥R • x - R • (P • (R • x))∥ + 2•∥(1 - R) • (P • (R • x))∥ : by abel
113+
... ≥ ∥R • x∥ + 2 • ∥ (P * R) • x - (R * P * R) • x∥ : by
114+
{ rw ge,
115+
have := add_le_add_right
116+
(norm_le_insert' (R • x) (R • (P • (R • x)))) (2•∥(1 - R) • (P • (R • x))∥),
117+
simpa only [mul_smul, sub_smul, one_smul] using this },
115118
rw ge at e1,
116-
nth_rewrite_rhs 0 ← add_zero (∥R x∥) at e1,
117-
rw [add_le_add_iff_left, two_smul, ← two_mul] at e1,
119+
nth_rewrite_rhs 0 ← add_zero (∥R x∥) at e1,
120+
rw [add_le_add_iff_left, two_smul, ← two_mul] at e1,
118121
rw le_antisymm_iff,
119122
refine ⟨_, norm_nonneg _⟩,
120123
rwa [←mul_zero (2 : ℝ), mul_le_mul_left (show (0 : ℝ) < 2, by norm_num)] at e1
@@ -127,109 +130,112 @@ begin
127130
show P * Q = Q * P, by rw [QP_eq_QPQ, PR_eq_RPR Q h₂]
128131
end
129132

130-
lemma mul {P Q : X →L[𝕜] X} (h₁ : is_Lprojection P) (h₂ : is_Lprojection Q) :
131-
is_Lprojection (P * Q) :=
133+
lemma mul [has_faithful_scalar M X] {P Q : M} (h₁ : is_Lprojection X P) (h₂ : is_Lprojection X Q) :
134+
is_Lprojection X (P * Q) :=
132135
begin
133136
refine ⟨is_idempotent_elem.mul_of_commute (h₁.commute h₂) h₁.proj h₂.proj, _⟩,
134137
intro x,
135138
refine le_antisymm _ _,
136-
{ calc ∥ x ∥ = ∥(P * Q) x + (x - (P * Q) x)∥ : by rw add_sub_cancel'_right ((P * Q) x) x
137-
... ≤ ∥(P * Q) x∥ + ∥ x - (P * Q) x ∥ : by apply norm_add_le
138-
... = ∥(P * Q) x∥ + ∥(1 - P * Q) x∥ : by rw [continuous_linear_map.sub_apply,
139-
continuous_linear_map.one_apply] },
140-
{ calc ∥x∥ = ∥P (Q x)∥ + (∥Q x - P (Q x)∥ + ∥x - Q x∥) : by rw [h₂.Lnorm x, h₁.Lnorm (Q x),
141-
continuous_linear_map.sub_apply, continuous_linear_map.one_apply,
142-
continuous_linear_map.sub_apply, continuous_linear_map.one_apply, add_assoc]
143-
... ≥ ∥P (Q x)∥ + ∥(Q x - P (Q x)) + (x - Q x)∥ :
144-
(add_le_add_iff_left (∥P(Q x)∥)).mpr (norm_add_le (Q x - P (Q x)) (x - Q x))
145-
... = ∥(P * Q) x∥ + ∥(1 - P * Q) x∥ : by rw [sub_add_sub_cancel',
146-
continuous_linear_map.sub_apply, continuous_linear_map.one_apply,
147-
continuous_linear_map.coe_mul] }
139+
{ calc ∥ x ∥ = ∥(P * Q) • x + (x - (P * Q) • x)∥ : by rw add_sub_cancel'_right ((P * Q) • x) x
140+
... ≤ ∥(P * Q) • x∥ + ∥ x - (P * Q) • x ∥ : by apply norm_add_le
141+
... = ∥(P * Q) • x∥ + ∥(1 - P * Q) • x∥ : by rw [sub_smul,
142+
one_smul] },
143+
{ calc ∥x∥ = ∥P • (Q • x)∥ + (∥Q • x - P • (Q • x)∥ + ∥x - Q • x∥) : by
144+
rw [h₂.Lnorm x, h₁.Lnorm (Q • x),
145+
sub_smul, one_smul,
146+
sub_smul, one_smul, add_assoc]
147+
... ≥ ∥P • (Q • x)∥ + ∥(Q • x - P • (Q • x)) + (x - Q • x)∥ :
148+
(add_le_add_iff_left (∥P • (Q • x)∥)).mpr (norm_add_le (Q • x - P • (Q • x)) (x - Q • x))
149+
... = ∥(P * Q) • x∥ + ∥(1 - P * Q) • x∥ : by rw [sub_add_sub_cancel',
150+
sub_smul, one_smul,
151+
mul_smul] }
148152
end
149153

150-
lemma join {P Q : X →L[𝕜] X} (h₁ : is_Lprojection P) (h₂ : is_Lprojection Q) :
151-
is_Lprojection (P + Q - P * Q) :=
154+
lemma join [has_faithful_scalar M X] {P Q : M} (h₁ : is_Lprojection X P) (h₂ : is_Lprojection X Q) :
155+
is_Lprojection X (P + Q - P * Q) :=
152156
begin
153157
convert (Lcomplement_iff _).mp (h₁.Lcomplement.mul h₂.Lcomplement) using 1,
154158
noncomm_ring,
155159
end
156160

157-
instance : has_compl { f : X →L[𝕜] X // is_Lprojection f } :=
161+
instance : has_compl { f : M // is_Lprojection X f } :=
158162
⟨λ P, ⟨1 - P, P.prop.Lcomplement⟩⟩
159163

160-
@[simp] lemma coe_compl (P : {P : X →L[𝕜] X // is_Lprojection P}) :
161-
↑(Pᶜ) = (1 : X →L[𝕜] X) - ↑P := rfl
164+
@[simp] lemma coe_compl (P : {P : M // is_Lprojection X P}) :
165+
↑(Pᶜ) = (1 : M) - ↑P := rfl
162166

163-
instance : has_inf {P : X →L[𝕜] X // is_Lprojection P} :=
167+
instance [has_faithful_scalar M X] : has_inf {P : M // is_Lprojection X P} :=
164168
⟨λ P Q, ⟨P * Q, P.prop.mul Q.prop⟩ ⟩
165169

166-
@[simp] lemma coe_inf (P Q : {P : X →L[𝕜] X // is_Lprojection P}) :
167-
↑(P ⊓ Q) = ((↑P : (X →L[𝕜] X)) * ↑Q) := rfl
170+
@[simp] lemma coe_inf [has_faithful_scalar M X] (P Q : {P : M // is_Lprojection X P}) :
171+
↑(P ⊓ Q) = ((↑P : (M)) * ↑Q) := rfl
168172

169-
instance : has_sup {P : X →L[𝕜] X // is_Lprojection P} :=
173+
instance [has_faithful_scalar M X] : has_sup {P : M // is_Lprojection X P} :=
170174
⟨λ P Q, ⟨P + Q - P * Q, P.prop.join Q.prop⟩ ⟩
171175

172-
@[simp] lemma coe_sup (P Q : {P : X →L[𝕜] X // is_Lprojection P}) :
173-
↑(P ⊔ Q) = ((↑P : X →L[𝕜] X) + ↑Q - ↑P * ↑Q) := rfl
176+
@[simp] lemma coe_sup [has_faithful_scalar M X] (P Q : {P : M // is_Lprojection X P}) :
177+
↑(P ⊔ Q) = ((↑P : M) + ↑Q - ↑P * ↑Q) := rfl
174178

175-
instance : has_sdiff {P : X →L[𝕜] X // is_Lprojection P} :=
179+
instance [has_faithful_scalar M X] : has_sdiff {P : M // is_Lprojection X P} :=
176180
⟨λ P Q, ⟨P * (1 - Q), by exact P.prop.mul Q.prop.Lcomplement ⟩⟩
177181

178-
@[simp] lemma coe_sdiff (P Q : {P : X →L[𝕜] X // is_Lprojection P}) :
179-
↑(P \ Q) = (↑P : X →L[𝕜] X) * (1 - ↑Q) := rfl
182+
@[simp] lemma coe_sdiff [has_faithful_scalar M X] (P Q : {P : M // is_Lprojection X P}) :
183+
↑(P \ Q) = (↑P : M) * (1 - ↑Q) := rfl
180184

181-
instance : partial_order {P : X →L[𝕜] X // is_Lprojection P} :=
182-
{ le := λ P Q, (↑P : X →L[𝕜] X) = ↑(P ⊓ Q),
185+
instance [has_faithful_scalar M X] : partial_order {P : M // is_Lprojection X P} :=
186+
{ le := λ P Q, (↑P : M) = ↑(P ⊓ Q),
183187
le_refl := λ P, by simpa only [coe_inf, ←sq] using (P.prop.proj.eq).symm,
184188
le_trans := λ P Q R h₁ h₂, by { simp only [coe_inf] at ⊢ h₁ h₂, rw [h₁, mul_assoc, ←h₂] },
185189
le_antisymm := λ P Q h₁ h₂, subtype.eq (by convert (P.prop.commute Q.prop).eq) }
186190

187-
lemma le_def (P Q : {P : X →L[𝕜] X // is_Lprojection P}) : P ≤ Q ↔ (P : X →L[𝕜] X) = ↑(P ⊓ Q) :=
191+
lemma le_def [has_faithful_scalar M X] (P Q : {P : M // is_Lprojection X P}) :
192+
P ≤ Q ↔ (P : M) = ↑(P ⊓ Q) :=
188193
iff.rfl
189194

190-
instance : has_zero {P : X →L[𝕜] X // is_Lprojection P} :=
195+
instance : has_zero {P : M // is_Lprojection X P} :=
191196
⟨⟨0, ⟨by rw [is_idempotent_elem, zero_mul],
192-
λ x, by simp only [continuous_linear_map.zero_apply, norm_zero, sub_zero,
193-
continuous_linear_map.one_apply, zero_add]⟩⟩⟩
197+
λ x, by simp only [zero_smul, norm_zero, sub_zero,
198+
one_smul, zero_add]⟩⟩⟩
194199

195-
@[simp] lemma coe_zero : ↑(0 : {P : X →L[𝕜] X // is_Lprojection P}) = (0 : X →L[𝕜] X) :=
200+
@[simp] lemma coe_zero : ↑(0 : {P : M // is_Lprojection X P}) = (0 : M) :=
196201
rfl
197202

198-
instance : has_one {P : X →L[𝕜] X // is_Lprojection P} :=
199-
⟨⟨1, sub_zero (1 : X →L[𝕜] X) ▸ (0 : {P : X →L[𝕜] X // is_Lprojection P}).prop.Lcomplement⟩⟩
203+
instance : has_one {P : M // is_Lprojection X P} :=
204+
⟨⟨1, sub_zero (1 : M) ▸ (0 : {P : M // is_Lprojection X P}).prop.Lcomplement⟩⟩
200205

201-
@[simp] lemma coe_one : ↑(1 : {P : X →L[𝕜] X // is_Lprojection P}) = (1 : X →L[𝕜] X) :=
206+
@[simp] lemma coe_one : ↑(1 : {P : M // is_Lprojection X P}) = (1 : M) :=
202207
rfl
203208

204-
instance : bounded_order {P : X →L[𝕜] X // is_Lprojection P} :=
209+
instance [has_faithful_scalar M X] : bounded_order {P : M // is_Lprojection X P} :=
205210
{ top := 1,
206-
le_top := λ P, (by rw mul_one : (↑P : X →L[𝕜] X) = ↑P * 1),
211+
le_top := λ P, (mul_one (P : M)).symm,
207212
bot := 0,
208-
bot_le := λ P, show 0 ≤ P, from zero_mul P, }
213+
bot_le := λ P, (zero_mul (P : M)).symm, }
209214

210-
@[simp] lemma coe_bot : ↑(bounded_order.bot : {P : X →L[𝕜] X // is_Lprojection P}) = (0 : X →L[𝕜] X)
211-
:= rfl
215+
@[simp] lemma coe_bot [has_faithful_scalar M X] :
216+
↑(bounded_order.bot : {P : M // is_Lprojection X P}) = (0 : M) := rfl
212217

213-
@[simp] lemma coe_top : ↑(bounded_order.top : {P : X →L[𝕜] X // is_Lprojection P}) = (1 : X →L[𝕜] X)
214-
:= rfl
218+
@[simp] lemma coe_top [has_faithful_scalar M X] :
219+
↑(bounded_order.top : {P : M // is_Lprojection X P}) = (1 : M) := rfl
215220

216-
lemma compl_mul_left {P : {P : X →L[𝕜] X // is_Lprojection P}} {Q : X →L[𝕜] X} :
217-
Q - ↑P * Q = ↑Pᶜ * Q := by rw [coe_compl, sub_mul, one_mul]
221+
lemma compl_mul {P : {P : M // is_Lprojection X P}} {Q : M} :
222+
↑Pᶜ * Q = Q - ↑P * Q := by rw [coe_compl, sub_mul, one_mul]
218223

219-
lemma compl_orthog {P : {P : X →L[𝕜] X // is_Lprojection P}} :
220-
(↑P : X →L[𝕜] X) * (↑Pᶜ) = 0 :=
224+
lemma mul_compl_self {P : {P : M // is_Lprojection X P}} :
225+
(↑P : M) * (↑Pᶜ) = 0 :=
221226
by rw [coe_compl, mul_sub, mul_one, P.prop.proj.eq, sub_self]
222227

223-
lemma distrib_lattice_lemma {P Q R : {P : X →L[𝕜] X // is_Lprojection P}} :
224-
((↑P : X →L[𝕜] X) + ↑Pᶜ * R) * (↑P + ↑Q * ↑R * ↑Pᶜ) = (↑P + ↑Q * ↑R * ↑Pᶜ) :=
225-
by rw [add_mul, mul_add, mul_add, mul_assoc ↑Pᶜ ↑R (↑Q * ↑R * ↑Pᶜ), ← mul_assoc ↑R (↑Q * ↑R) ↑Pᶜ,
228+
lemma distrib_lattice_lemma [has_faithful_scalar M X] {P Q R : {P : M // is_Lprojection X P}} :
229+
((↑P : M) + ↑Pᶜ * R) * (↑P + ↑Q * ↑R * ↑Pᶜ) = (↑P + ↑Q * ↑R * ↑Pᶜ) :=
230+
by rw [add_mul, mul_add, mul_add, mul_assoc ↑Pᶜ ↑R (↑Q * ↑R * ↑Pᶜ), ← mul_assoc ↑R (↑Q * ↑R) ↑Pᶜ,
226231
← coe_inf Q, (Pᶜ.prop.commute R.prop).eq, ((Q ⊓ R).prop.commute Pᶜ.prop).eq,
227232
(R.prop.commute (Q ⊓ R).prop).eq, coe_inf Q, mul_assoc ↑Q, ← mul_assoc, mul_assoc ↑R,
228-
(Pᶜ.prop.commute P.prop).eq, compl_orthog, zero_mul, mul_zero, zero_add, add_zero, ← mul_assoc,
233+
(Pᶜ.prop.commute P.prop).eq, mul_compl_self, zero_mul, mul_zero, zero_add, add_zero,
234+
← mul_assoc,
229235
P.prop.proj.eq, R.prop.proj.eq, ← coe_inf Q, mul_assoc, ((Q ⊓ R).prop.commute Pᶜ.prop).eq,
230236
← mul_assoc, Pᶜ.prop.proj.eq]
231237

232-
instance : distrib_lattice {P : X →L[𝕜] X // is_Lprojection P} :=
238+
instance [has_faithful_scalar M X] : distrib_lattice {P : M // is_Lprojection X P} :=
233239
{ le_sup_left := λ P Q, by rw [le_def, coe_inf, coe_sup, ← add_sub, mul_add, mul_sub, ← mul_assoc,
234240
P.prop.proj.eq, sub_self, add_zero],
235241
le_sup_right := λ P Q,
@@ -257,35 +263,33 @@ instance : distrib_lattice {P : X →L[𝕜] X // is_Lprojection P} :=
257263
begin
258264
have e₁: ↑((P ⊔ Q) ⊓ (P ⊔ R)) = ↑P + ↑Q * ↑R * ↑Pᶜ :=
259265
by rw [coe_inf, coe_sup, coe_sup,
260-
← add_sub, ← add_sub, compl_mul_left, compl_mul_left, add_mul, mul_add,
266+
← add_sub, ← add_sub, ←compl_mul, ←compl_mul, add_mul, mul_add,
261267
(Pᶜ.prop.commute Q.prop).eq, mul_add, ← mul_assoc, mul_assoc ↑Q, (Pᶜ.prop.commute P.prop).eq,
262-
compl_orthog, zero_mul, mul_zero, zero_add, add_zero, ← mul_assoc, mul_assoc ↑Q,
268+
mul_compl_self, zero_mul, mul_zero, zero_add, add_zero, ← mul_assoc, mul_assoc ↑Q,
263269
P.prop.proj.eq, Pᶜ.prop.proj.eq, mul_assoc, (Pᶜ.prop.commute R.prop).eq, ← mul_assoc],
264270
have e₂ : ↑((P ⊔ Q) ⊓ (P ⊔ R)) * ↑(P ⊔ Q ⊓ R) = ↑P + ↑Q * ↑R * ↑Pᶜ := by rw [coe_inf, coe_sup,
265-
coe_sup, coe_sup, ← add_sub, ← add_sub, ← add_sub, compl_mul_left, compl_mul_left,
266-
compl_mul_left, (Pᶜ.prop.commute (Q⊓R).prop).eq, coe_inf, mul_assoc, distrib_lattice_lemma,
271+
coe_sup, coe_sup, ← add_sub, ← add_sub, ← add_sub, ←compl_mul, ←compl_mul,
272+
←compl_mul, (Pᶜ.prop.commute (Q⊓R).prop).eq, coe_inf, mul_assoc, distrib_lattice_lemma,
267273
(Q.prop.commute R.prop).eq, distrib_lattice_lemma],
268274
rw [le_def, e₁, coe_inf, e₂],
269275
end,
270276
.. is_Lprojection.subtype.has_inf,
271277
.. is_Lprojection.subtype.has_sup,
272278
.. is_Lprojection.subtype.partial_order }
273279

274-
instance : boolean_algebra {P : X →L[𝕜] X // is_Lprojection P} :=
275-
{ sup_inf_sdiff := λ P Q,
276-
subtype.ext (by rw [coe_sup, coe_inf, coe_sdiff, mul_assoc, ← mul_assoc ↑Q,
277-
(Q.prop.commute P.prop).eq, mul_assoc ↑P ↑Q, ← coe_compl, compl_orthog, mul_zero, mul_zero,
278-
sub_zero, ← mul_add, coe_compl, add_sub_cancel'_right, mul_one]),
279-
inf_inf_sdiff := λ P Q,
280-
subtype.ext (by rw [coe_inf, coe_inf, coe_sdiff, coe_bot, mul_assoc, ← mul_assoc ↑Q,
281-
(Q.prop.commute P.prop).eq, ← coe_compl, mul_assoc, compl_orthog, mul_zero, mul_zero]),
280+
instance [has_faithful_scalar M X] : boolean_algebra {P : M // is_Lprojection X P} :=
281+
{ sup_inf_sdiff := λ P Q, subtype.ext $
282+
by rw [coe_sup, coe_inf, coe_sdiff, mul_assoc, ← mul_assoc ↑Q,
283+
(Q.prop.commute P.prop).eq, mul_assoc ↑P ↑Q, ← coe_compl, mul_compl_self, mul_zero, mul_zero,
284+
sub_zero, ← mul_add, coe_compl, add_sub_cancel'_right, mul_one],
285+
inf_inf_sdiff := λ P Q, subtype.ext $
286+
by rw [coe_inf, coe_inf, coe_sdiff, coe_bot, mul_assoc, ← mul_assoc ↑Q,
287+
(Q.prop.commute P.prop).eq, ← coe_compl, mul_assoc, mul_compl_self, mul_zero, mul_zero],
282288
inf_compl_le_bot := λ P,
283-
(subtype.ext (by rw [coe_inf, coe_compl, coe_bot, ← coe_compl, compl_orthog])).le,
289+
(subtype.ext (by rw [coe_inf, coe_compl, coe_bot, ← coe_compl, mul_compl_self])).le,
284290
top_le_sup_compl := λ P, (subtype.ext(by rw [coe_top, coe_sup, coe_compl,
285-
add_sub_cancel'_right, ← coe_compl, compl_orthog, sub_zero])).le,
286-
sdiff_eq := λ P Q,
287-
subtype.ext
288-
(by rw [coe_sdiff, ← coe_compl, coe_inf]),
291+
add_sub_cancel'_right, ← coe_compl, mul_compl_self, sub_zero])).le,
292+
sdiff_eq := λ P Q, subtype.ext $ by rw [coe_sdiff, ← coe_compl, coe_inf],
289293
.. is_Lprojection.subtype.has_compl,
290294
.. is_Lprojection.subtype.has_sdiff,
291295
.. is_Lprojection.subtype.bounded_order,

0 commit comments

Comments
 (0)