Midpoint of a segment #
Main definitions #
midpoint R x y: midpoint of the segment[x, y]. We define it forxandyin a module over a ringRwith invertible2.AddMonoidHom.ofMapMidpoint: construct anAddMonoidHomgiven a mapfsuch thatfsends zero to zero and midpoints to midpoints.
Main theorems #
midpoint_eq_iff:zis the midpoint of[x, y]if and only ifx + y = z + z,midpoint_unique:midpoint R x ydoes not depend onR;midpoint x yis linear both inxandy;pointReflection_midpoint_left,pointReflection_midpoint_right:Equiv.pointReflection (midpoint R x y)swapsxandy.
We do not mark most lemmas as @[simp] because it is hard to tell which side is simpler.
Tags #
midpoint, AddMonoidHom
def
midpoint
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
P
midpoint x y is the midpoint of the segment [x, y].
Instances For
@[simp]
theorem
AffineMap.map_midpoint
{R : Type u_1}
{V : Type u_2}
{V' : Type u_3}
{P : Type u_4}
{P' : Type u_5}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
[AddCommGroup V']
[Module R V']
[AddTorsor V' P']
(f : P โแต[R] P')
(a b : P)
:
@[simp]
theorem
AffineEquiv.map_midpoint
{R : Type u_1}
{V : Type u_2}
{V' : Type u_3}
{P : Type u_4}
{P' : Type u_5}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
[AddCommGroup V']
[Module R V']
[AddTorsor V' P']
(f : P โแต[R] P')
(a b : P)
:
theorem
AffineEquiv.pointReflection_midpoint_left
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
(pointReflection R (midpoint R x y)) x = y
@[simp]
theorem
Equiv.pointReflection_midpoint_left
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
(pointReflection (midpoint R x y)) x = y
theorem
midpoint_comm
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
theorem
AffineEquiv.pointReflection_midpoint_right
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
(pointReflection R (midpoint R x y)) y = x
@[simp]
theorem
Equiv.pointReflection_midpoint_right
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
(pointReflection (midpoint R x y)) y = x
theorem
midpoint_vsub_midpoint
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ pโ pโ : P)
:
theorem
midpoint_vadd_midpoint
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(v v' : V)
(p p' : P)
:
theorem
midpoint_eq_iff
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x y z : P}
:
midpoint R x y = z โ (AffineEquiv.pointReflection R z) x = y
@[simp]
theorem
midpoint_pointReflection_left
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
midpoint R ((Equiv.pointReflection x) y) y = x
@[simp]
theorem
midpoint_pointReflection_right
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
midpoint R y ((Equiv.pointReflection x) y) = x
theorem
AffineEquiv.midpoint_pointReflection_left
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
midpoint R ((pointReflection R x) y) y = x
theorem
AffineEquiv.midpoint_pointReflection_right
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x y : P)
:
midpoint R y ((pointReflection R x) y) = x
@[simp]
theorem
midpoint_vsub_left
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ : P)
:
@[simp]
theorem
midpoint_vsub_right
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ : P)
:
@[simp]
theorem
left_vsub_midpoint
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ : P)
:
@[simp]
theorem
right_vsub_midpoint
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ : P)
:
theorem
midpoint_vsub
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ p : P)
:
theorem
vsub_midpoint
{R : Type u_1}
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ p : P)
:
@[simp]
theorem
midpoint_sub_left
{R : Type u_1}
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(vโ vโ : V)
:
@[simp]
theorem
midpoint_sub_right
{R : Type u_1}
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(vโ vโ : V)
:
@[simp]
theorem
left_sub_midpoint
{R : Type u_1}
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(vโ vโ : V)
:
@[simp]
theorem
right_sub_midpoint
{R : Type u_1}
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(vโ vโ : V)
:
@[simp]
theorem
midpoint_eq_left_iff
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x y : P}
:
midpoint R x y = x โ x = y
@[simp]
theorem
left_eq_midpoint_iff
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x y : P}
:
x = midpoint R x y โ x = y
@[simp]
theorem
midpoint_eq_right_iff
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x y : P}
:
midpoint R x y = y โ x = y
@[simp]
theorem
right_eq_midpoint_iff
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x y : P}
:
y = midpoint R x y โ x = y
theorem
midpoint_eq_midpoint_iff_vsub_eq_vsub
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x x' y y' : P}
:
theorem
midpoint_eq_iff'
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
{x y z : P}
:
midpoint R x y = z โ (Equiv.pointReflection z) x = y
theorem
midpoint_unique
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(R' : Type u_6)
[Ring R']
[Invertible 2]
[Module R' V]
(x y : P)
:
midpoint does not depend on the ring R.
@[simp]
theorem
midpoint_self
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(x : P)
:
midpoint R x x = x
@[simp]
theorem
midpoint_add_self
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x y : V)
:
theorem
midpoint_zero_add
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x y : V)
:
theorem
midpoint_eq_smul_add
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x y : V)
:
@[simp]
theorem
midpoint_self_neg
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x : V)
:
@[simp]
theorem
midpoint_neg_self
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x : V)
:
@[simp]
theorem
midpoint_sub_add
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x y : V)
:
midpoint R (x - y) (x + y) = x
@[simp]
theorem
midpoint_add_sub
(R : Type u_1)
{V : Type u_2}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
(x y : V)
:
midpoint R (x + y) (x - y) = x
theorem
midpoint_vsub_midpoint_same_left
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ pโ : P)
:
theorem
midpoint_vsub_midpoint_same_right
(R : Type u_1)
{V : Type u_2}
{P : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup V]
[Module R V]
[AddTorsor V P]
(pโ pโ pโ : P)
:
def
AddMonoidHom.ofMapMidpoint
(R : Type u_1)
(R' : Type u_2)
{E : Type u_3}
{F : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup E]
[Module R E]
[Ring R']
[Invertible 2]
[AddCommGroup F]
[Module R' F]
(f : E โ F)
(h0 : f 0 = 0)
(hm : โ (x y : E), f (midpoint R x y) = midpoint R' (f x) (f y))
:
A map f : E โ F sending zero to zero and midpoints to midpoints is an AddMonoidHom.
Instances For
@[simp]
theorem
AddMonoidHom.coe_ofMapMidpoint
(R : Type u_1)
(R' : Type u_2)
{E : Type u_3}
{F : Type u_4}
[Ring R]
[Invertible 2]
[AddCommGroup E]
[Module R E]
[Ring R']
[Invertible 2]
[AddCommGroup F]
[Module R' F]
(f : E โ F)
(h0 : f 0 = 0)
(hm : โ (x y : E), f (midpoint R x y) = midpoint R' (f x) (f y))
:
โ(ofMapMidpoint R R' f h0 hm) = f