MAT3253 Complex Variables

5. Chapter 2.7 Stereographic projection🔗

In Section 2.7 we define the stereographic projection. The main theorem is

Theorem 2.7.1. Define the stereographic projection

P :\mathbb{R}^2 \rightarrow S\setminus \{(0,0,2r)\}

by

P(x,y) = \Big( \frac{4r^2x}{4r^2+x^2+y^2},\ \frac{4r^2y}{4r^2+x^2+y^2},\ \frac{2r(x^2+y^2)}{4r^2+x^2+y^2} \Big).

This gives a bijection between the complex plane \mathbb{R}^2 and the punctured sphere S\setminus \{(0,0,2r)\}.

The point (0,0,2r) is called the point at infinity.

We want to show that this bijection maps circle/line on the complex plane to circles on the Riemann sphere. Straight lines on the complex plane correspond to circles that passes through the north pole.

The formalization below is done with the help of Harmonics Aristotle.

import Mathlib.Data.Complex.Basic
import Mathlib.Tactic

This section is noncomputable.

noncomputable section stereograph_projection

Open the name space Complex, Real and Set.

open Complex Real Set variable (r : ) -- r is the radius of the sphere

Definitions of the Riemann sphere S r with radius r. The point in S r satisfies

x^2 + y^2+ (z-r)^2 = r^2

In the definition below, p.1 is the x-coordinate, p.2.1 is the y-coordinate and p.2.2 is the z-coordinate.

def S : Set ( × × ) := { p | p.1^2 + p.2.1^2 + (p.2.2 - r)^2 = r^2 }

The north pole / point at infinity N is the point (0,0,2r).

def N : × × := (0, 0, 2 * r)

The stereographic projection is represented by P r A point p is mapped to P r p.

def P (p : × ) : × × := let x := p.1 let y := p.2 let den := 4 * r^2 + x^2 + y^2 (4 * r^2 * x / den, 4 * r^2 * y / den, 2 * r * (x^2 + y^2) / den)

Define the inverse of the stereographic projection by Q

def Q (p : × × ) : × := let α := p.1 let β := p.2.1 let γ := p.2.2 let den := 2 * r - γ (2 * r * α / den, 2 * r * β / den)

Show tha the image of the stereographic projection P lies in the punctured Riemann sphere S r\ {N r}.

theorem P_range (h_r : r > 0) -- asume r is positive (p : × ) : P r p S r \ {N r} := r:h_r:r > 0p: × P r p S r \ {N r} -- Substitute the coordinates of `P(p)` -- into the equation of the sphere $S$. have h_sphere : (4 * r^2 * p.1 / (4 * r^2 + p.1^2 + p.2^2))^2 + (4 * r^2 * p.2 / (4 * r^2 + p.1^2 + p.2^2))^2 + (2 * r * (p.1^2 + p.2^2) / (4 * r^2 + p.1^2 + p.2^2) - r)^2 = r^2 := r:h_r:r > 0p: × P r p S r \ {N r} All goals completed! 🐙 r:h_r:r > 0p: × h_sphere:(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) ^ 2 + (4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) ^ 2 + (2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) - r) ^ 2 = r ^ 2(have x := p.1; have y := p.2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)) {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} \ {(0, 0, 2 * r)} All goals completed! 🐙

Next, show that P and Q are inverse of each other.

/-- The composition P ∘ Q is the identity function on the punctured sphere S \ {N}. -/ theorem P_left_inv (h_r : r > 0) (p : × × ) (hp : p S r \ {N r}) : P r (Q r p) = p := r:h_r:r > 0p: × × hp:p S r \ {N r}P r (Q r p) = p r:h_r:r > 0p: × × hp:p {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} \ {N r}(have x := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).1; have y := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)) = p r:h_r:r > 0p: × × hp:p {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} \ {N r}h:2 * r - p.2.2 = 0(have x := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).1; have y := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)) = pr:h_r:r > 0p: × × hp:p {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} \ {N r}h:¬2 * r - p.2.2 = 0(have x := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).1; have y := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)) = p r:h_r:r > 0p: × × hp:p {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} \ {N r}h:2 * r - p.2.2 = 0(have x := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).1; have y := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)) = pr:h_r:r > 0p: × × hp:p {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} \ {N r}h:¬2 * r - p.2.2 = 0(have x := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).1; have y := (have α := p.1; have β := p.2.1; have γ := p.2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)).2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)) = p r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:¬2 * r = p.2.2(4 * r ^ 2 * (2 * r * p.1 / (2 * r - p.2.2)) / (4 * r ^ 2 + (2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2), 4 * r ^ 2 * (2 * r * p.2.1 / (2 * r - p.2.2)) / (4 * r ^ 2 + (2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2), 2 * r * ((2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2) / (4 * r ^ 2 + (2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2)) = p r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:2 * r = p.2.2(0, 0, 0) = p exact False.elim <| hp.2 <| Prod.mk_inj.mpr r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:2 * r = p.2.2p.1 = 0 All goals completed! 🐙, Prod.mk_inj.mpr r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:2 * r = p.2.2p.2.1 = 0 All goals completed! 🐙, r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:2 * r = p.2.2p.2.2 = 2 * r All goals completed! 🐙 r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:¬2 * r = p.2.2(4 * r ^ 2 * (2 * r * p.1 / (2 * r - p.2.2)) / (4 * r ^ 2 + (2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2), 4 * r ^ 2 * (2 * r * p.2.1 / (2 * r - p.2.2)) / (4 * r ^ 2 + (2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2), 2 * r * ((2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2) / (4 * r ^ 2 + (2 * r * p.1 / (2 * r - p.2.2)) ^ 2 + (2 * r * p.2.1 / (2 * r - p.2.2)) ^ 2)) = p r:p: × × h_r:0 < rhp:p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2 ¬p = N rh:¬2 * r = p.2.2(4 * r * 2 * p.1 / ((r * 2 - p.2.2) * (4 + 2 ^ 2 * p.1 ^ 2 / (r * 2 - p.2.2) ^ 2 + 2 ^ 2 * p.2.1 ^ 2 / (r * 2 - p.2.2) ^ 2)), 4 * r * 2 * p.2.1 / ((r * 2 - p.2.2) * (4 + 2 ^ 2 * p.1 ^ 2 / (r * 2 - p.2.2) ^ 2 + 2 ^ 2 * p.2.1 ^ 2 / (r * 2 - p.2.2) ^ 2)), r * 2 ^ 3 * (p.1 ^ 2 + p.2.1 ^ 2) / ((r * 2 - p.2.2) ^ 2 * (4 + 2 ^ 2 * p.1 ^ 2 / (r * 2 - p.2.2) ^ 2 + 2 ^ 2 * p.2.1 ^ 2 / (r * 2 - p.2.2) ^ 2))) = p All goals completed! 🐙 /- The composition Q ∘ P is the identity on the complex plane. -/ theorem P_right_inv (h_r : r > 0) (p : × ) : Q r (P r p) = p := r:h_r:r > 0p: × Q r (P r p) = p r:h_r:r > 0p: × (have α := (have x := p.1; have y := p.2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)).1; have β := (have x := p.1; have y := p.2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)).2.1; have γ := (have x := p.1; have y := p.2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den)).2.2; have den := 2 * r - γ; (2 * r * α / den, 2 * r * β / den)) = p r:h_r:r > 0p: × (r ^ 2 * 4 * p.1 / (r ^ 2 * 4 + p.1 ^ 2 + p.2 ^ 2 - (p.1 ^ 2 + p.2 ^ 2)), r ^ 2 * 4 * p.2 / (r ^ 2 * 4 + p.1 ^ 2 + p.2 ^ 2 - (p.1 ^ 2 + p.2 ^ 2))) = p All goals completed! 🐙 def S_minus_N (r : ) : Set ( × × ) := S r \ {N r} def P_to_S (h_r : r > 0) (p : × ) : S_minus_N r := P r p, P_range r h_r p theorem P_bijective (h_r : r > 0) : Function.Bijective (P_to_S r h_r) := r:h_r:r > 0Function.Bijective (P_to_S r h_r) r:h_r:r > 0Function.Injective (P_to_S r h_r)r:h_r:r > 0Function.Surjective (P_to_S r h_r); r:h_r:r > 0Function.Injective (P_to_S r h_r) intro p r:h_r:r > 0p: × q: × P_to_S r h_r p = P_to_S r h_r q p = q r:h_r:r > 0p: × q: × h_eq:P_to_S r h_r p = P_to_S r h_r qp = q r:h_r:r > 0p: × q: × h_eq:P r p, = P r q, p = q r:h_r:r > 0p: × q: × h_eq:P r p, = P r q, this:Q r (P r p) = pp = q r:h_r:r > 0p: × q: × h_eq:P r p, = P r q, this✝:Q r (P r p) = pthis:Q r (P r q) = qp = q All goals completed! 🐙 r:h_r:r > 0Function.Surjective (P_to_S r h_r) r:h_r:r > 0p:(S_minus_N r) a, P_to_S r h_r a = p; r:h_r:r > 0p:(S_minus_N r)this:p S r \ {N r} P r (Q r p) = p a, P_to_S r h_r a = p r:h_r:r > 0p:(S_minus_N r)this:p S r \ {N r} P r (Q r p) = p a, P r a, = p All goals completed! 🐙 /- The complex definition of stereographic projection is equivalent to the real definition. -/ def P_complex (z : ) : × × := let den := 4 * r^2 + z^2 (4 * r^2 * z.re / den, 4 * r^2 * z.im / den, 2 * r * z^2 / den) theorem P_complex_eq_P (z : ) : P_complex r z = P r (z.re, z.im) := r:z:P_complex r z = P r (z.re, z.im) r:z:(have den := 4 * r ^ 2 + z ^ 2; (4 * r ^ 2 * z.re / den, 4 * r ^ 2 * z.im / den, 2 * r * z ^ 2 / den)) = have x := (z.re, z.im).1; have y := (z.re, z.im).2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den) r:z:4 * r ^ 2 * z.re / (4 * r ^ 2 + (z.re * z.re + z.im * z.im)) = 4 * r ^ 2 * z.re / (4 * r ^ 2 + z.re ^ 2 + z.im ^ 2) 4 * r ^ 2 * z.im / (4 * r ^ 2 + (z.re * z.re + z.im * z.im)) = 4 * r ^ 2 * z.im / (4 * r ^ 2 + z.re ^ 2 + z.im ^ 2) 2 * r * (z.re * z.re + z.im * z.im) / (4 * r ^ 2 + (z.re * z.re + z.im * z.im)) = 2 * r * (z.re ^ 2 + z.im ^ 2) / (4 * r ^ 2 + z.re ^ 2 + z.im ^ 2) r:z:True True True All goals completed! 🐙

A set s is a circle or line if the points (x,y)$ in s satisfy the equation

A(x^2+y^2)+Bx+Cy +D = 0

for some constants A, B, C and D are real numbers that arenot all equal to 0. When A is nonzero, this equation represents a circle. When A is zero, it is a straight line.

def IsCircleOrLine (s : Set ( × )) : Prop := A B C D : , (A 0 B 0 C 0) s = {p | A * (p.1^2 + p.2^2) + B * p.1 + C * p.2 + D = 0}

A set of points (x,y,z) on the Riemann sphere S r lie on a plane section if tehre are real constants a, b, c, not all zero, such that

a x + b y + c = d

for some real constant d.

def IsPlaneSection (r : ) (s : Set ( × × )) : Prop := a b c d : , (a 0 b 0 c 0) s = S r { p | a * p.1 + b * p.2.1 + c * p.2.2 = d }

We will show at the end of this section that the locus of this equation is mapped to a circle on the Riemann sphere. We first establish a correspondence between a point p ont the plane and its stereographic projection q on the Riemann sphere S r with radius r.

lemma stereographic_equation_iff (r : ) (hr : r 0) (A B C D : ) : let a := -B let b := -C let c := (D - 4 * r^2 * A) / (2 * r) let d := D p : × , A * (p.1^2 + p.2^2) + B * p.1 + C * p.2 + D = 0 let q := P r p a * q.1 + b * q.2.1 + c * q.2.2 = d := r:hr:r 0A:B:C:D:let a := -B; let b := -C; let c := (D - 4 * r ^ 2 * A) / (2 * r); let d := D; (p : × ), A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0 let q := P r p; a * q.1 + b * q.2.1 + c * q.2.2 = d r:hr:r 0A:B:C:D:let a := -B; let b := -C; let c := (D - 4 * r ^ 2 * A) / (2 * r); let d := D; (p : × ), A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0 let q := have x := p.1; have y := p.2; have den := 4 * r ^ 2 + x ^ 2 + y ^ 2; (4 * r ^ 2 * x / den, 4 * r ^ 2 * y / den, 2 * r * (x ^ 2 + y ^ 2) / den); a * q.1 + b * q.2.1 + c * q.2.2 = d r:hr:r 0A:B:C:D: (p : × ), A * (p.1 ^ 2 + p.2 ^ 2) + p.1 * B + p.2 * C + D = 0 4 * r ^ 2 * (-(p.1 * B) + -(p.2 * C)) + (p.1 ^ 2 + p.2 ^ 2) * (D - A * 4 * r ^ 2) = D * (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) All goals completed! 🐙

Finally, we prove that if s is a circle or a line, then we can find a plane section s' on the Riemann sphere, such that the image of s through the stereographic projection is the plane section s', possibly except the point at infinity.

/-- The stereographic projection P maps circles and lines in the complex plane to plane sections of the sphere S. -/ theorem stereographic_preserves_circle_line (r : ) (hr : r > 0) -- assume radius r is positive (s : Set ( × )) -- s is a set on the plane (h : IsCircleOrLine s) -- assume s is a circle or line : s', IsPlaneSection r s' --there is a plane section s' P r '' s = s' \ {N r} --image of s lies in s` \ {N r} := r:hr:r > 0s:Set ( × )h:IsCircleOrLine s s', IsPlaneSection r s' P r '' s = s' \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0} s', IsPlaneSection r s' P r '' s = s' \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0 s', IsPlaneSection r s' P r '' s = s' \ {N r}r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0) s', IsPlaneSection r s' P r '' s = s' \ {N r}; r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0 s', IsPlaneSection r s' P r '' s = s' \ {N r} r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + D = 0}h:B = 0 C = 0 D - 4 * r ^ 2 * A = 0 s', IsPlaneSection r s' P r '' {p | A * (p.1 ^ 2 + p.2 ^ 2) + D = 0} = s' \ {N r} -- Since $A \neq 0$, we can divide -- both sides of the equation -- $A * (p.1^2 + p.2^2) + 4 * r^2 * A = 0$ -- by $A$ to get $p.1^2 + p.2^2 + 4 * r^2 = 0$. have h_eq : {p : × | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = := r:hr:r > 0s:Set ( × )h:IsCircleOrLine s s', IsPlaneSection r s' P r '' s = s' \ {N r} exact Set.eq_empty_of_forall_notMem fun p hp => hD <| r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + D = 0}h:B = 0 C = 0 D - 4 * r ^ 2 * A = 0p: × hp:p {p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0}A = 0 All goals completed! 🐙 ; r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = s', IsPlaneSection r s' = s' \ {N r} r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = IsPlaneSection r r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = = \ {N r} r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = IsPlaneSection r r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = = \ {N r} All goals completed! 🐙 r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = (0 0 0 0 1 0) = S r {p | 0 * p.1 + 0 * p.2.1 + 1 * p.2.2 = 3 * r} r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = = {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} {p | p.2.2 = 3 * r}; exact Eq.symm ( Set.eq_empty_of_forall_notMem fun p hp => r:s:Set ( × )A:B:C:D:hr:0 < rhD:¬A = 0hs:s = h:B = 0 C = 0 D = 4 * r ^ 2 * Ah_eq:{p | A * (p.1 ^ 2 + p.2 ^ 2) + 4 * r ^ 2 * A = 0} = p: × × hp:p {p | p.1 ^ 2 + p.2.1 ^ 2 + (p.2.2 - r) ^ 2 = r ^ 2} {p | p.2.2 = 3 * r}False All goals completed! 🐙 ) r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0) s', IsPlaneSection r s' P r '' s = s' \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)IsPlaneSection r (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D})r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)P r '' s = (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)IsPlaneSection r (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)(-B 0 -C 0 (D - 4 * r ^ 2 * A) / (2 * r) 0) S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D} = S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}; All goals completed! 🐙 r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)P r '' s = (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:(x, y, z) P r '' s (x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:(x, y, z) P r '' s (x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r}r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:(x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} (x, y, z) P r '' s r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:(x, y, z) P r '' s (x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) S rr:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) {N r} r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) S rr:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)p: × hp:p s(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2), 2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) {N r} r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0(r = 0 p.1 = 0) 4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2 = 0 (r = 0 p.2 = 0) 4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2 = 0 ¬2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) = 2 * r r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0(4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) ^ 2 + (4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) ^ 2 + (2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) - r) ^ 2 = r ^ 2 -- Combine like terms and simplify the expression. r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 04 ^ 2 * r ^ 2 * (p.1 ^ 2 + p.2 ^ 2) + ((p.1 ^ 2 + p.2 ^ 2) * 2 - (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) ^ 2 = (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) ^ 2 All goals completed! 🐙 r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0-(B * (4 * r ^ 2 * p.1 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2))) + -(C * (4 * r ^ 2 * p.2 / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2))) + (D - 4 * r ^ 2 * A) / (2 * r) * (2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2)) = D r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 04 * r ^ 2 * (-(B * p.1) + -(p.2 * C)) + (D - 4 * r ^ 2 * A) * (p.1 ^ 2 + p.2 ^ 2) = (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) * D r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0h✝:D < 04 * r ^ 2 * (-(B * p.1) + -(p.2 * C)) + (D - 4 * r ^ 2 * A) * (p.1 ^ 2 + p.2 ^ 2) = (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) * Dr:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0h✝:0 D4 * r ^ 2 * (-(B * p.1) + -(p.2 * C)) + (D - 4 * r ^ 2 * A) * (p.1 ^ 2 + p.2 ^ 2) = (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) * D r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0h✝:D < 04 * r ^ 2 * (-(B * p.1) + -(p.2 * C)) + (D - 4 * r ^ 2 * A) * (p.1 ^ 2 + p.2 ^ 2) = (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) * Dr:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0h✝:0 D4 * r ^ 2 * (-(B * p.1) + -(p.2 * C)) + (D - 4 * r ^ 2 * A) * (p.1 ^ 2 + p.2 ^ 2) = (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) * D All goals completed! 🐙 r:s:Set ( × )A:B:C:D:p: × hr:0 < rhD:¬A = 0 ¬B = 0 ¬C = 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:B = 0 C = 0 ¬D - 4 * r ^ 2 * A = 0 ¬r = 0hp:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0(r = 0 p.1 = 0) 4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2 = 0 (r = 0 p.2 = 0) 4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2 = 0 ¬2 * r * (p.1 ^ 2 + p.2 ^ 2) / (4 * r ^ 2 + p.1 ^ 2 + p.2 ^ 2) = 2 * r All goals completed! 🐙 r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:(x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} (x, y, z) P r '' s r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:hxyz:(x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r}(x, y, z) P r '' s obtain p, hp : p : × , P r p = (x, y, z) := r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:hxyz:(x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r} p, P r p = (x, y, z) -- Use the inverse Q and `P_left_inv` -- to show surjectivity. All goals completed! 🐙 r:hr:r > 0s:Set ( × )A:B:C:D:hD:A 0 B 0 C 0hs:s = {p | A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0}h:¬(-B = 0 -C = 0 (D - 4 * r ^ 2 * A) / (2 * r) = 0)x:y:z:hxyz:(x, y, z) (S r {p | -B * p.1 + -C * p.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * p.2.2 = D}) \ {N r}p: × hp:P r p = (x, y, z)this:A * (p.1 ^ 2 + p.2 ^ 2) + B * p.1 + C * p.2 + D = 0 have q := P r p; -B * q.1 + -C * q.2.1 + (D - 4 * r ^ 2 * A) / (2 * r) * q.2.2 = D(x, y, z) P r '' s All goals completed! 🐙 end stereograph_projection