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

Commit 5de765c

Browse files
mcdollMoritz Dollurkud
committed
feat(linear_algebra/linear_pmap): definition of the graph (#14920)
Define the graph of a partial linear map as the pushforward of the graph of the underlying linear map and prove some elementary facts. Co-authored-by: Moritz Doll <doll@uni-bremen.de> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>
1 parent aa812bd commit 5de765c

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

src/linear_algebra/linear_pmap.lean

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,3 +419,48 @@ def coprod (f : linear_pmap R E G) (g : linear_pmap R F G) :
419419
rfl
420420

421421
end linear_pmap
422+
423+
/-! ### Graph -/
424+
section graph
425+
426+
namespace linear_pmap
427+
428+
/-- The graph of a `linear_pmap` viewed as a submodule on `E × F`. -/
429+
def graph (f : linear_pmap R E F) : submodule R (E × F) :=
430+
f.to_fun.graph.map (f.domain.subtype.prod_map linear_map.id)
431+
432+
lemma mem_graph_iff' (f : linear_pmap R E F) {x : E × F} :
433+
x ∈ f.graph ↔ ∃ y : f.domain, (↑y, f y) = x :=
434+
by simp [graph]
435+
436+
@[simp] lemma mem_graph_iff (f : linear_pmap R E F) {x : E × F} :
437+
x ∈ f.graph ↔ ∃ y : f.domain, (↑y : E) = x.1 ∧ f y = x.2 :=
438+
by { cases x, simp_rw [mem_graph_iff', prod.mk.inj_iff] }
439+
440+
/-- The tuple `(x, f x)` is contained in the graph of `f`. -/
441+
lemma mem_graph (f : linear_pmap R E F) (x : domain f) : ((x : E), f x) ∈ f.graph :=
442+
by simp
443+
444+
lemma mem_graph_snd_inj (f : linear_pmap R E F) {x y : E} {x' y' : F} (hx : (x,x') ∈ f.graph)
445+
(hy : (y,y') ∈ f.graph) (hxy : x = y) : x' = y' :=
446+
begin
447+
rw [mem_graph_iff] at hx hy,
448+
rcases hx with ⟨x'', hx1, hx2⟩,
449+
rcases hy with ⟨y'', hy1, hy2⟩,
450+
simp only at hx1 hx2 hy1 hy2,
451+
rw [←hx1, ←hy1, set_like.coe_eq_coe] at hxy,
452+
rw [←hx2, ←hy2, hxy],
453+
end
454+
455+
lemma mem_graph_snd_inj' (f : linear_pmap R E F) {x y : E × F} (hx : x ∈ f.graph) (hy : y ∈ f.graph)
456+
(hxy : x.1 = y.1) : x.2 = y.2 :=
457+
by { cases x, cases y, exact f.mem_graph_snd_inj hx hy hxy }
458+
459+
/-- The property that `f 0 = 0` in terms of the graph. -/
460+
lemma graph_fst_eq_zero_snd (f : linear_pmap R E F) {x : E} {x' : F} (h : (x,x') ∈ f.graph)
461+
(hx : x = 0) : x' = 0 :=
462+
f.mem_graph_snd_inj h f.graph.zero_mem hx
463+
464+
end linear_pmap
465+
466+
end graph

0 commit comments

Comments
 (0)