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

Commit 6862653

Browse files
committed
feat(linear_algebra/dual): more about dual annihilator, some refactoring, and documentation (#17521)
* Extend documentation with descriptions of main definitions and results. * Move `linear_map.dual_map` earlier in the file and redefine it to use `module.transpose`. * `fintype` -> `set.finite` for `module.dual_bases`. * Rename `submodule.dual_annihilator_comap` to `submodule.dual_coannihilator`. * Add galois correspondence and coinsertion for `submodule.dual_annihilator`; replace proofs using standard GC lemmas. * Add `submodule.dual_pairing` and `submodule.dual_copairing` for bilinear forms that are nondegenerate for subspaces. * Add missing isomorphisms associated to these. * Generalize `f.dual_map.range = f.ker.dual_annihilator` to vector spaces of arbitrary dimension. * Add lemmas for facts such as `(W ⊓ W').dual_annihilator = W.dual_annihilator ⊔ W'.dual_annihilator`. Thanks to Junyan Xu for the generalization to `dual_quot_equiv_dual_annihilator`.
1 parent 808ea4e commit 6862653

File tree

3 files changed

+575
-251
lines changed

3 files changed

+575
-251
lines changed

src/linear_algebra/basic.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,6 +1472,11 @@ end linear_map
14721472
f.range_restrict.range = ⊤ :=
14731473
by simp [f.range_cod_restrict _]
14741474

1475+
@[simp] lemma linear_map.ker_range_restrict [semiring R] [add_comm_monoid M]
1476+
[add_comm_monoid M₂] [module R M] [module R M₂] (f : M →ₗ[R] M₂) :
1477+
f.range_restrict.ker = f.ker :=
1478+
linear_map.ker_cod_restrict _ _ _
1479+
14751480
/-! ### Linear equivalences -/
14761481
namespace linear_equiv
14771482

src/linear_algebra/bilinear_form.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,15 +1090,15 @@ begin
10901090
exact hx.2 _ submodule.mem_top }
10911091
end
10921092

1093-
lemma to_lin_restrict_range_dual_annihilator_comap_eq_orthogonal
1093+
lemma to_lin_restrict_range_dual_coannihilator_eq_orthogonal
10941094
(B : bilin_form K V) (W : subspace K V) :
1095-
(B.to_lin.dom_restrict W).range.dual_annihilator_comap = B.orthogonal W :=
1095+
(B.to_lin.dom_restrict W).range.dual_coannihilator = B.orthogonal W :=
10961096
begin
10971097
ext x, split; rw [mem_orthogonal_iff]; intro hx,
10981098
{ intros y hy,
1099-
rw submodule.mem_dual_annihilator_comap at hx,
1099+
rw submodule.mem_dual_coannihilator at hx,
11001100
refine hx (B.to_lin.dom_restrict W ⟨y, hy⟩) ⟨⟨y, hy⟩, rfl⟩ },
1101-
{ rw submodule.mem_dual_annihilator_comap,
1101+
{ rw submodule.mem_dual_coannihilator,
11021102
rintro _ ⟨⟨w, hw⟩, rfl⟩,
11031103
exact hx w hw }
11041104
end
@@ -1113,9 +1113,9 @@ lemma finrank_add_finrank_orthogonal
11131113
finrank K V + finrank K (W ⊓ B.orthogonal ⊤ : subspace K V) :=
11141114
begin
11151115
rw [← to_lin_restrict_ker_eq_inf_orthogonal _ _ b₁,
1116-
to_lin_restrict_range_dual_annihilator_comap_eq_orthogonal _ _,
1116+
to_lin_restrict_range_dual_coannihilator_eq_orthogonal _ _,
11171117
finrank_map_subtype_eq],
1118-
conv_rhs { rw [← @subspace.finrank_add_finrank_dual_annihilator_comap_eq K V _ _ _ _
1118+
conv_rhs { rw [← @subspace.finrank_add_finrank_dual_coannihilator_eq K V _ _ _ _
11191119
(B.to_lin.dom_restrict W).range,
11201120
add_comm, ← add_assoc, add_comm (finrank K ↥((B.to_lin.dom_restrict W).ker)),
11211121
linear_map.finrank_range_add_finrank_ker] },

0 commit comments

Comments
 (0)