Documentation

Mathlib.Algebra.AddTorsor.Basic

Torsors of additive group actions #

Further results for torsors, that are not in Mathlib/Algebra/AddTorsor/Defs.lean to avoid increasing imports there.

theorem Set.singleton_vsub_self {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] (p : P) :
theorem vsub_left_cancel {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] {p₁ pā‚‚ p : P} (h : p₁ -ᵄ p = pā‚‚ -ᵄ p) :
p₁ = pā‚‚

If the same point subtracted from two points produces equal results, those points are equal.

@[simp]
theorem vsub_left_cancel_iff {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] {p₁ pā‚‚ p : P} :
p₁ -ᵄ p = pā‚‚ -ᵄ p ↔ p₁ = pā‚‚

The same point subtracted from two points produces equal results if and only if those points are equal.

theorem vsub_left_injective {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] (p : P) :
Function.Injective fun (x : P) => x -ᵄ p

Subtracting the point p is an injective function.

theorem vsub_right_cancel {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] {p₁ pā‚‚ p : P} (h : p -ᵄ p₁ = p -ᵄ pā‚‚) :
p₁ = pā‚‚

If subtracting two points from the same point produces equal results, those points are equal.

@[simp]
theorem vsub_right_cancel_iff {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] {p₁ pā‚‚ p : P} :
p -ᵄ p₁ = p -ᵄ pā‚‚ ↔ p₁ = pā‚‚

Subtracting two points from the same point produces equal results if and only if those points are equal.

theorem vsub_right_injective {G : Type u_1} {P : Type u_2} [AddGroup G] [T : AddTorsor G P] (p : P) :
Function.Injective fun (x : P) => p -ᵄ x

Subtracting a point from the point p is an injective function.

@[simp]
theorem vsub_sub_vsub_cancel_left {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (p₁ pā‚‚ pā‚ƒ : P) :
pā‚ƒ -ᵄ pā‚‚ - (pā‚ƒ -ᵄ p₁) = p₁ -ᵄ pā‚‚

Cancellation subtracting the results of two subtractions.

@[simp]
theorem vadd_vsub_vadd_cancel_left {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (v : G) (p₁ pā‚‚ : P) :
(v +ᵄ p₁) -ᵄ (v +ᵄ pā‚‚) = p₁ -ᵄ pā‚‚
theorem vadd_vsub_vadd_comm {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (v₁ vā‚‚ : G) (p₁ pā‚‚ : P) :
(v₁ +ᵄ p₁) -ᵄ (vā‚‚ +ᵄ pā‚‚) = v₁ - vā‚‚ + (p₁ -ᵄ pā‚‚)
theorem sub_add_vsub_comm {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (v₁ vā‚‚ : G) (p₁ pā‚‚ : P) :
v₁ - vā‚‚ + (p₁ -ᵄ pā‚‚) = (v₁ +ᵄ p₁) -ᵄ (vā‚‚ +ᵄ pā‚‚)
theorem vsub_vadd_comm {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (p₁ pā‚‚ pā‚ƒ : P) :
(p₁ -ᵄ pā‚‚) +ᵄ pā‚ƒ = (pā‚ƒ -ᵄ pā‚‚) +ᵄ p₁
theorem vadd_eq_vadd_iff_sub_eq_vsub {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] {v₁ vā‚‚ : G} {p₁ pā‚‚ : P} :
v₁ +ᵄ p₁ = vā‚‚ +ᵄ pā‚‚ ↔ vā‚‚ - v₁ = p₁ -ᵄ pā‚‚
theorem vsub_sub_vsub_comm {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (p₁ pā‚‚ pā‚ƒ pā‚„ : P) :
p₁ -ᵄ pā‚‚ - (pā‚ƒ -ᵄ pā‚„) = p₁ -ᵄ pā‚ƒ - (pā‚‚ -ᵄ pā‚„)
@[simp]
theorem Set.vadd_set_vsub_vadd_set {G : Type u_1} {P : Type u_2} [AddCommGroup G] [AddTorsor G P] (v : G) (s t : Set P) :
instance Prod.instAddTorsor {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] :
AddTorsor (G Ɨ G') (P Ɨ P')
Equations
    @[simp]
    theorem Prod.fst_vadd {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] (v : G Ɨ G') (p : P Ɨ P') :
    (v +ᵄ p).1 = v.1 +ᵄ p.1
    @[simp]
    theorem Prod.snd_vadd {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] (v : G Ɨ G') (p : P Ɨ P') :
    (v +ᵄ p).2 = v.2 +ᵄ p.2
    @[simp]
    theorem Prod.mk_vadd_mk {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] (v : G) (v' : G') (p : P) (p' : P') :
    (v, v') +ᵄ (p, p') = (v +ᵄ p, v' +ᵄ p')
    @[simp]
    theorem Prod.fst_vsub {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] (p₁ pā‚‚ : P Ɨ P') :
    (p₁ -ᵄ pā‚‚).1 = p₁.1 -ᵄ pā‚‚.1
    @[simp]
    theorem Prod.snd_vsub {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] (p₁ pā‚‚ : P Ɨ P') :
    (p₁ -ᵄ pā‚‚).2 = p₁.2 -ᵄ pā‚‚.2
    @[simp]
    theorem Prod.mk_vsub_mk {G : Type u_1} {G' : Type u_2} {P : Type u_3} {P' : Type u_4} [AddGroup G] [AddGroup G'] [AddTorsor G P] [AddTorsor G' P'] (p₁ pā‚‚ : P) (p₁' pā‚‚' : P') :
    (p₁, p₁') -ᵄ (pā‚‚, pā‚‚') = (p₁ -ᵄ pā‚‚, p₁' -ᵄ pā‚‚')
    instance Pi.instAddTorsor {I : Type u} {fg : I → Type v} [(i : I) → AddGroup (fg i)] {fp : I → Type w} [(i : I) → AddTorsor (fg i) (fp i)] :
    AddTorsor ((i : I) → fg i) ((i : I) → fp i)

    A product of AddTorsors is an AddTorsor.

    Equations
      @[simp]
      theorem Pi.vsub_apply {I : Type u} {fg : I → Type v} [(i : I) → AddGroup (fg i)] {fp : I → Type w} [(i : I) → AddTorsor (fg i) (fp i)] (p q : (i : I) → fp i) (i : I) :
      (p -ᵄ q) i = p i -ᵄ q i
      theorem Pi.vsub_def {I : Type u} {fg : I → Type v} [(i : I) → AddGroup (fg i)] {fp : I → Type w} [(i : I) → AddTorsor (fg i) (fp i)] (p q : (i : I) → fp i) :
      p -ᵄ q = fun (i : I) => p i -ᵄ q i
      @[simp]
      theorem Equiv.constVAdd_zero (G : Type u_1) (P : Type u_2) [AddGroup G] [AddTorsor G P] :
      constVAdd P 0 = 1
      @[simp]
      theorem Equiv.constVAdd_add {G : Type u_1} (P : Type u_2) [AddGroup G] [AddTorsor G P] (v₁ vā‚‚ : G) :
      constVAdd P (v₁ + vā‚‚) = constVAdd P v₁ * constVAdd P vā‚‚
      def Equiv.constVAddHom {G : Type u_1} (P : Type u_2) [AddGroup G] [AddTorsor G P] :

      Equiv.constVAdd as a homomorphism from Multiplicative G to Equiv.perm P

      Equations
        Instances For
          @[simp]
          theorem Equiv.left_vsub_pointReflection {G : Type u_1} {P : Type u_2} [AddGroup G] [AddTorsor G P] (x y : P) :
          @[simp]
          theorem Equiv.right_vsub_pointReflection {G : Type u_1} {P : Type u_2} [AddGroup G] [AddTorsor G P] (x y : P) :
          theorem Equiv.pointReflection_fixed_iff_of_injective_two_nsmul {G : Type u_1} {P : Type u_2} [AddGroup G] [AddTorsor G P] {x y : P} (h : Function.Injective fun (x : G) => 2 • x) :

          x is the only fixed point of pointReflection x. This lemma requires x + x = y + y ↔ x = y. There is no typeclass to use here, so we add it as an explicit argument.

          In the special case of additive commutative groups (as opposed to just additive torsors), Equiv.pointReflection x coincides with Equiv.subLeft (2 • x).