File: Mathlib/Geometry/Euclidean/Inversion/Basic.lean

full_name: EuclideanGeometry.inversion
code: /-- Inversion in a sphere in an affine space. This map sends each point `x` to the point `y` such
that `y -ᵥ c = (R / dist x c) ^ 2 • (x -ᵥ c)`, where `c` and `R` are the center and the radius the
sphere. -/
def inversion (c : P) (R : ℝ) (x : P) : P 
goal: P

full_name: EuclideanGeometry.inversion_def
code: theorem inversion_def :
    inversion = fun (c : P) (R : ℝ) (x : P) => (R / dist x c) ^ 2 • (x -ᵥ c) +ᵥ c 
goal: EuclideanGeometry.inversion = fun c R x => (R / dist x c) ^ 2 • (x -ᵥ c) +ᵥ c

full_name: EuclideanGeometry.inversion_eq_lineMap
code: theorem inversion_eq_lineMap (c : P) (R : ℝ) (x : P) :
    inversion c R x = lineMap c x ((R / dist x c) ^ 2) 
goal: EuclideanGeometry.inversion c R x = (AffineMap.lineMap c x) ((R / dist x c) ^ 2)

full_name: EuclideanGeometry.inversion_vsub_center
code: theorem inversion_vsub_center (c : P) (R : ℝ) (x : P) :
    inversion c R x -ᵥ c = (R / dist x c) ^ 2 • (x -ᵥ c) 
goal: EuclideanGeometry.inversion c R x -ᵥ c = (R / dist x c) ^ 2 • (x -ᵥ c)

full_name: EuclideanGeometry.inversion_self
code: @[simp]
theorem inversion_self (c : P) (R : ℝ) : inversion c R c = c 
goal: EuclideanGeometry.inversion c R c = c

full_name: EuclideanGeometry.inversion_zero_radius
code: @[simp]
theorem inversion_zero_radius (c x : P) : inversion c 0 x = c 
goal: EuclideanGeometry.inversion c 0 x = c

full_name: EuclideanGeometry.inversion_mul
code: theorem inversion_mul (c : P) (a R : ℝ) (x : P) :
    inversion c (a * R) x = homothety c (a ^ 2) (inversion c R x) 
goal: EuclideanGeometry.inversion c (a * R) x = (AffineMap.homothety c (a ^ 2)) (EuclideanGeometry.inversion c R x)

full_name: EuclideanGeometry.inversion_dist_center
code: @[simp]
theorem inversion_dist_center (c x : P) : inversion c (dist x c) x = x 
goal: EuclideanGeometry.inversion c (dist x c) x = x

full_name: EuclideanGeometry.inversion_dist_center'
code: @[simp]
theorem inversion_dist_center' (c x : P) : inversion c (dist c x) x = x 
goal: EuclideanGeometry.inversion c (dist c x) x = x

full_name: EuclideanGeometry.inversion_of_mem_sphere
code: theorem inversion_of_mem_sphere (h : x ∈ Metric.sphere c R) : inversion c R x = x 
goal: EuclideanGeometry.inversion c R x = x

full_name: EuclideanGeometry.dist_inversion_center
code: /-- Distance from the image of a point under inversion to the center. This formula accidentally
works for `x = c`. -/
theorem dist_inversion_center (c x : P) (R : ℝ) : dist (inversion c R x) c = R ^ 2 / dist x c 
goal: dist (EuclideanGeometry.inversion c R x) c = R ^ 2 / dist x c

full_name: EuclideanGeometry.dist_center_inversion
code: /-- Distance from the center of an inversion to the image of a point under the inversion. This
formula accidentally works for `x = c`. -/
theorem dist_center_inversion (c x : P) (R : ℝ) : dist c (inversion c R x) = R ^ 2 / dist c x 
goal: dist c (EuclideanGeometry.inversion c R x) = R ^ 2 / dist c x

full_name: EuclideanGeometry.inversion_inversion
code: @[simp]
theorem inversion_inversion (c : P) {R : ℝ} (hR : R ≠ 0) (x : P) :
    inversion c R (inversion c R x) = x 
goal: EuclideanGeometry.inversion c R (EuclideanGeometry.inversion c R x) = x

full_name: EuclideanGeometry.inversion_involutive
code: theorem inversion_involutive (c : P) {R : ℝ} (hR : R ≠ 0) : Involutive (inversion c R) 
goal: Function.Involutive (EuclideanGeometry.inversion c R)

full_name: EuclideanGeometry.inversion_surjective
code: theorem inversion_surjective (c : P) {R : ℝ} (hR : R ≠ 0) : Surjective (inversion c R) 
goal: Function.Surjective (EuclideanGeometry.inversion c R)

full_name: EuclideanGeometry.inversion_injective
code: theorem inversion_injective (c : P) {R : ℝ} (hR : R ≠ 0) : Injective (inversion c R) 
goal: Function.Injective (EuclideanGeometry.inversion c R)

full_name: EuclideanGeometry.inversion_bijective
code: theorem inversion_bijective (c : P) {R : ℝ} (hR : R ≠ 0) : Bijective (inversion c R) 
goal: Function.Bijective (EuclideanGeometry.inversion c R)

full_name: EuclideanGeometry.inversion_eq_center
code: theorem inversion_eq_center (hR : R ≠ 0) : inversion c R x = c ↔ x = c 
goal: EuclideanGeometry.inversion c R x = c ↔ x = c

full_name: EuclideanGeometry.inversion_eq_center'
code: @[simp]
theorem inversion_eq_center' : inversion c R x = c ↔ x = c ∨ R = 0 
goal: EuclideanGeometry.inversion c R x = c ↔ x = c ∨ R = 0

full_name: EuclideanGeometry.center_eq_inversion
code: theorem center_eq_inversion (hR : R ≠ 0) : c = inversion c R x ↔ x = c 
goal: c = EuclideanGeometry.inversion c R x ↔ x = c

full_name: EuclideanGeometry.center_eq_inversion'
code: @[simp]
theorem center_eq_inversion' : c = inversion c R x ↔ x = c ∨ R = 0 
goal: c = EuclideanGeometry.inversion c R x ↔ x = c ∨ R = 0

full_name: EuclideanGeometry.dist_inversion_inversion
code: /-- Distance between the images of two points under an inversion. -/
theorem dist_inversion_inversion (hx : x ≠ c) (hy : y ≠ c) (R : ℝ) :
    dist (inversion c R x) (inversion c R y) = R ^ 2 / (dist x c * dist y c) * dist x y 
goal: dist (EuclideanGeometry.inversion c R x) (EuclideanGeometry.inversion c R y) = R ^ 2 / (dist x c * dist y c) * dist x y

full_name: EuclideanGeometry.dist_inversion_mul_dist_center_eq
code: theorem dist_inversion_mul_dist_center_eq (hx : x ≠ c) (hy : y ≠ c) :
    dist (inversion c R x) y * dist x c = dist x (inversion c R y) * dist y c 
goal: dist (EuclideanGeometry.inversion c R x) y * dist x c = dist x (EuclideanGeometry.inversion c R y) * dist y c

full_name: EuclideanGeometry.mul_dist_le_mul_dist_add_mul_dist
code: /-- **Ptolemy's inequality**: in a quadrangle `ABCD`, `|AC| * |BD| ≤ |AB| * |CD| + |BC| * |AD|`. If
`ABCD` is a convex cyclic polygon, then this inequality becomes an equality, see
`EuclideanGeometry.mul_dist_add_mul_dist_eq_mul_dist_of_cospherical`. -/
theorem mul_dist_le_mul_dist_add_mul_dist (a b c d : P) :
    dist a c * dist b d ≤ dist a b * dist c d + dist b c * dist a d 
goal: dist a c * dist b d ≤ dist a b * dist c d + dist b c * dist a d

full_name: Filter.Tendsto.inversion
code: protected theorem Filter.Tendsto.inversion {α : Type*} {x c : P} {R : ℝ} {l : Filter α}
    {fc fx : α → P} {fR : α → ℝ} (hc : Tendsto fc l (𝓝 c)) (hR : Tendsto fR l (𝓝 R))
    (hx : Tendsto fx l (𝓝 x)) (hne : x ≠ c) :
    Tendsto (fun a ↦ inversion (fc a) (fR a) (fx a)) l (𝓝 (inversion c R x)) 
goal: Filter.Tendsto (fun a => EuclideanGeometry.inversion (fc a) (fR a) (fx a)) l (𝓝 (EuclideanGeometry.inversion c R x))

full_name: ContinuousWithinAt.inversion
code: protected nonrec theorem ContinuousWithinAt.inversion (hc : ContinuousWithinAt c s a₀)
    (hR : ContinuousWithinAt R s a₀) (hx : ContinuousWithinAt x s a₀) (hne : x a₀ ≠ c a₀) :
    ContinuousWithinAt (fun a ↦ inversion (c a) (R a) (x a)) s a₀ 
goal: ContinuousWithinAt (fun a => EuclideanGeometry.inversion (c a) (R a) (x a)) s a₀

full_name: ContinuousAt.inversion
code: protected nonrec theorem ContinuousAt.inversion (hc : ContinuousAt c a₀) (hR : ContinuousAt R a₀)
    (hx : ContinuousAt x a₀) (hne : x a₀ ≠ c a₀) :
    ContinuousAt (fun a ↦ inversion (c a) (R a) (x a)) a₀ 
goal: ContinuousAt (fun a => EuclideanGeometry.inversion (c a) (R a) (x a)) a₀

full_name: ContinuousOn.inversion
code: protected theorem ContinuousOn.inversion (hc : ContinuousOn c s) (hR : ContinuousOn R s)
    (hx : ContinuousOn x s) (hne : ∀ a ∈ s, x a ≠ c a) :
    ContinuousOn (fun a ↦ inversion (c a) (R a) (x a)) s 
goal: ContinuousOn (fun a => EuclideanGeometry.inversion (c a) (R a) (x a)) s

full_name: Continuous.inversion
code: protected theorem Continuous.inversion (hc : Continuous c) (hR : Continuous R) (hx : Continuous x)
    (hne : ∀ a, x a ≠ c a) : Continuous (fun a ↦ inversion (c a) (R a) (x a)) 
goal: Continuous fun a => EuclideanGeometry.inversion (c a) (R a) (x a)