English
Under nondegenerate hx, the full expression of addXYZ has a structured, explicit form involving addZ and a 3-vector of affine coordinates, mirroring the earlier Z-ne-zero analyses.
Русский
При ненулевом Z и невырожденном hx добавляются явные выражения для addXYZ через addZ и вектор афинных координат.
LaTeX
$$$$ \\text{addXYZ}(P,Q) = addZ(P,Q) \\cdot \\!\\left[ \\text{affine X}, \\text{affine Y}, 1 \\right] $$$$
Lean4
theorem addXYZ_of_Z_ne_zero [DecidableEq F] {P Q : Fin 3 → F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P z ≠ 0)
(hQz : Q z ≠ 0) (hx : P x * Q z ^ 2 ≠ Q x * P z ^ 2) :
W.addXYZ P Q =
addZ P Q •
![W.toAffine.addX (P x / P z ^ 2) (Q x / Q z ^ 2)
(W.toAffine.slope (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3) (Q y / Q z ^ 3)),
W.toAffine.addY (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3)
(W.toAffine.slope (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3) (Q y / Q z ^ 3)),
1] :=
by
have hZ {n : ℕ} : IsUnit <| addZ P Q ^ n := (isUnit_addZ_of_X_ne hx).pow n
erw [addXYZ, smul_fin3, ← addX_of_Z_ne_zero hP hQ hPz hQz hx, hZ.mul_div_cancel, ← addY_of_Z_ne_zero hP hQ hPz hQz hx,
hZ.mul_div_cancel, mul_one]