Documentation

Mathlib.LinearAlgebra.Transvection

Transvections in a module #

Note on terminology #

In the mathematical litterature, linear maps of the form LinearMap.transvection f v are only called “transvections” when f v = 0. Otherwise, they are sometimes called “dilations” (especially if f v ≠ -1).

The definition is almost the same as that of Module.preReflection f v, up to a sign change, which are interesting when f v = 2, because they give “reflections”.

def LinearMap.transvection {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] (f : Module.Dual R V) (v : V) :

The transvection associated with a linear form f and a vector v.

NB. In mathematics, these linear maps are only called “transvections” when f v = 0. See also Module.preReflection for a similar definition, up to a sign.

Equations
    Instances For
      theorem LinearMap.transvection.apply {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] (f : Module.Dual R V) (v x : V) :
      (transvection f v) x = x + f x v
      theorem LinearMap.transvection.comp_of_left_eq_apply {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] {f : Module.Dual R V} {v w x : V} (hw : f w = 0) :
      (transvection f v) ((transvection f w) x) = (transvection f (v + w)) x
      theorem LinearMap.transvection.comp_of_left_eq {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] {f : Module.Dual R V} {v w : V} (hw : f w = 0) :
      theorem LinearMap.transvection.comp_of_right_eq_apply {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] {f g : Module.Dual R V} {v x : V} (hf : f v = 0) :
      (transvection f v) ((transvection g v) x) = (transvection (f + g) v) x
      theorem LinearMap.transvection.comp_of_right_eq {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] {f g : Module.Dual R V} {v : V} (hf : f v = 0) :
      @[simp]
      theorem LinearMap.transvection.of_left_eq_zero {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] (v : V) :
      theorem LinearMap.transvection.congr {R : Type u_1} {V : Type u_2} [Semiring R] [AddCommMonoid V] [Module R V] {W : Type u_3} [AddCommMonoid W] [Module R W] (f : Module.Dual R V) (v : V) (e : V ≃ₗ[R] W) :
      e ∘ₗ transvection f v ∘ₗ e.symm = (f ∘ₗ e.symm).transvection (e v)
      def LinearEquiv.transvection {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (h : f v = 0) :

      The transvection associated with a linear form f and a vector v such that f v = 0.

      Equations
        Instances For
          theorem LinearEquiv.transvection.apply {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (h : f v = 0) (x : V) :
          (transvection h) x = x + f x v
          @[simp]
          theorem LinearEquiv.transvection.coe_toLinearMap {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (h : f v = 0) :
          @[simp]
          theorem LinearEquiv.transvection.coe_apply {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v x : V} {h : f v = 0} :
          theorem LinearEquiv.transvection.trans_of_left_eq {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v w : V} (hv : f v = 0) (hw : f w = 0) (hvw : f (v + w) = 0 := by simp [hv, hw]) :
          theorem LinearEquiv.transvection.trans_of_right_eq {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f g : Module.Dual R V} {v : V} (hf : f v = 0) (hg : g v = 0) (hfg : (f + g) v = 0 := by simp [hf, hg]) :
          @[simp]
          theorem LinearEquiv.transvection.of_left_eq_zero {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] (v : V) (hv : 0 v = 0 := ) :
          @[simp]
          theorem LinearEquiv.transvection.of_right_eq_zero {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] (f : Module.Dual R V) (hf : f 0 = 0 := ) :
          theorem LinearEquiv.transvection.symm_eq {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (hv : f v = 0) (hv' : f (-v) = 0 := by simp [hv]) :
          theorem LinearEquiv.transvection.inv_eq {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (hv : f v = 0) (hv' : f (-v) = 0 := by simp [hv]) :
          theorem LinearEquiv.transvection.symm_eq' {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (hf : f v = 0) (hf' : (-f) v = 0 := by simp [hf]) :
          theorem LinearEquiv.transvection.inv_eq' {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (hf : f v = 0) (hf' : (-f) v = 0 := by simp [hf]) :
          def LinearEquiv.transvections (R : Type u_1) (V : Type u_2) [Ring R] [AddCommGroup V] [Module R V] :
          Set (V ≃ₗ[R] V)

          The set of transvections in the group of linear equivalences

          Equations
            Instances For
              theorem LinearEquiv.mem_transvections_iff {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {e : V ≃ₗ[R] V} :
              e transvections R V ∃ (f : Module.Dual R V) (v : V) (hfv : f v = 0), e = transvection hfv
              @[simp]
              theorem LinearEquiv.mem_transvections {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (hfv : f v = 0) :
              @[simp]
              theorem LinearEquiv.refl_mem_transvections {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] :
              @[simp]
              theorem LinearEquiv.one_mem_transvections {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] :
              theorem LinearEquiv.transvections_pow_mono {R : Type u_1} {V : Type u_2} [Ring R] [AddCommGroup V] [Module R V] :
              Monotone fun (n : ) => transvections R V ^ n
              def LinearEquiv.dilatransvections (R : Type u_1) (V : Type u_2) [Ring R] [AddCommGroup V] [Module R V] :
              Set (V ≃ₗ[R] V)

              Dilatransvections are linear equivalences V ≃ₗ[R] V whose associated linear map are given by LinearMap.transvection, i.e., are of the form x ↦ x + f x • v for f : Dual R V and v : V.

              Over a division ring, LinearEquiv.mem_dilatransvections_iff_rank shows that they correspond to the linear equivalences which differ from the identity map by a linear map of rank at most 1.

              Equations
                Instances For

                  Over a division ring, dilatransvections correspond to linear equivalences e such that the linear map e - id has rank at most 1.

                  See also LinearEquiv.mem_dilatransvections_iff_finrank.

                  Over a division ring, dilatransvections correspond to linear equivalences e such that the linear map e - id has rank at most 1.

                  See also LinearEquiv.mem_dilatransvections_iff_rank.

                  theorem IsBaseChange.transvection {R : Type u_3} {V : Type u_4} [CommSemiring R] [AddCommMonoid V] [Module R V] (A : Type u_5) [CommSemiring A] [Algebra R A] {W : Type u_6} [AddCommMonoid W] [Module R W] [Module A W] [IsScalarTower R A W] {ε : V →ₗ[R] W} (ibc : IsBaseChange A ε) (f : Module.Dual R V) (v : V) :
                  theorem LinearEquiv.transvection.baseChange {R : Type u_3} {V : Type u_4} {A : Type u_5} [CommRing R] [AddCommGroup V] [Module R V] [CommRing A] [Algebra R A] {f : Module.Dual R V} {v : V} (h : f v = 0) (hA : ((Module.Dual.baseChange A) f) (1 ⊗ₜ[R] v) = 0 := by simp [Algebra.algebraMap_eq_smul_one]) :
                  @[simp]
                  theorem LinearMap.transvection.det {R : Type u_3} {V : Type u_4} [CommRing R] [AddCommGroup V] [Module R V] [Module.Free R V] [Module.Finite R V] (f : Module.Dual R V) (v : V) :
                  @[simp]
                  theorem LinearEquiv.transvection.det_eq_one {R : Type u_3} {V : Type u_4} [CommRing R] [AddCommGroup V] [Module R V] {f : Module.Dual R V} {v : V} (hfv : f v = 0) :

                  Determinant of a transvection.

                  It is not necessary to assume that the module is finite and free because LinearMap.det is identically 1 otherwise.