Theorem: WeierstrassCurve.Projective.nonsingular_smul_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rcases (W.nonsingular_iff _).mp h with ⟨h, h'⟩
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h : W.Nonsingular (u • P)
⊢ W.Nonsingular P
state_after: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * (u • P) 1 * (u • P) 2 ≠ 3 * (u • P) 0 ^ 2 + 2 * W.a₂ * (u • P) 0 * (u • P) 2 + W.a₄ * (u • P) 2 ^ 2 ∨
    (u • P) 1 * (u • P) 2 ≠ -(u • P) 1 * (u • P) 2 - W.a₁ * (u • P) 0 * (u • P) 2 - W.a₃ * (u • P) 2 ^ 2 ∨
      (u • P) 1 ^ 2 + W.a₁ * (u • P) 0 * (u • P) 1 + 2 * W.a₃ * (u • P) 1 * (u • P) 2 ≠
        W.a₂ * (u • P) 0 ^ 2 + 2 * W.a₄ * (u • P) 0 * (u • P) 2 + 3 * W.a₆ * (u • P) 2 ^ 2
⊢ W.Nonsingular P

tactic: refine (W.nonsingular_iff P).mpr ⟨(W.equation_smul_iff P u).mp h, ?_⟩
state_before: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * (u • P) 1 * (u • P) 2 ≠ 3 * (u • P) 0 ^ 2 + 2 * W.a₂ * (u • P) 0 * (u • P) 2 + W.a₄ * (u • P) 2 ^ 2 ∨
    (u • P) 1 * (u • P) 2 ≠ -(u • P) 1 * (u • P) 2 - W.a₁ * (u • P) 0 * (u • P) 2 - W.a₃ * (u • P) 2 ^ 2 ∨
      (u • P) 1 ^ 2 + W.a₁ * (u • P) 0 * (u • P) 1 + 2 * W.a₃ * (u • P) 1 * (u • P) 2 ≠
        W.a₂ * (u • P) 0 ^ 2 + 2 * W.a₄ * (u • P) 0 * (u • P) 2 + 3 * W.a₆ * (u • P) 2 ^ 2
⊢ W.Nonsingular P
state_after: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * (u • P) 1 * (u • P) 2 ≠ 3 * (u • P) 0 ^ 2 + 2 * W.a₂ * (u • P) 0 * (u • P) 2 + W.a₄ * (u • P) 2 ^ 2 ∨
    (u • P) 1 * (u • P) 2 ≠ -(u • P) 1 * (u • P) 2 - W.a₁ * (u • P) 0 * (u • P) 2 - W.a₃ * (u • P) 2 ^ 2 ∨
      (u • P) 1 ^ 2 + W.a₁ * (u • P) 0 * (u • P) 1 + 2 * W.a₃ * (u • P) 1 * (u • P) 2 ≠
        W.a₂ * (u • P) 0 ^ 2 + 2 * W.a₄ * (u • P) 0 * (u • P) 2 + 3 * W.a₆ * (u • P) 2 ^ 2
⊢ W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
    P 1 * P 2 ≠ -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∨
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠ W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2

tactic: contrapose! h'
state_before: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * (u • P) 1 * (u • P) 2 ≠ 3 * (u • P) 0 ^ 2 + 2 * W.a₂ * (u • P) 0 * (u • P) 2 + W.a₄ * (u • P) 2 ^ 2 ∨
    (u • P) 1 * (u • P) 2 ≠ -(u • P) 1 * (u • P) 2 - W.a₁ * (u • P) 0 * (u • P) 2 - W.a₃ * (u • P) 2 ^ 2 ∨
      (u • P) 1 ^ 2 + W.a₁ * (u • P) 0 * (u • P) 1 + 2 * W.a₃ * (u • P) 1 * (u • P) 2 ≠
        W.a₂ * (u • P) 0 ^ 2 + 2 * W.a₄ * (u • P) 0 * (u • P) 2 + 3 * W.a₆ * (u • P) 2 ^ 2
⊢ W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
    P 1 * P 2 ≠ -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∨
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠ W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
state_after: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ W.a₁ * (u • P) 1 * (u • P) 2 = 3 * (u • P) 0 ^ 2 + 2 * W.a₂ * (u • P) 0 * (u • P) 2 + W.a₄ * (u • P) 2 ^ 2 ∧
    (u • P) 1 * (u • P) 2 = -(u • P) 1 * (u • P) 2 - W.a₁ * (u • P) 0 * (u • P) 2 - W.a₃ * (u • P) 2 ^ 2 ∧
      (u • P) 1 ^ 2 + W.a₁ * (u • P) 0 * (u • P) 1 + 2 * W.a₃ * (u • P) 1 * (u • P) 2 =
        W.a₂ * (u • P) 0 ^ 2 + 2 * W.a₄ * (u • P) 0 * (u • P) 2 + 3 * W.a₆ * (u • P) 2 ^ 2

tactic: simp only [smul_fin3_ext]
state_before: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ W.a₁ * (u • P) 1 * (u • P) 2 = 3 * (u • P) 0 ^ 2 + 2 * W.a₂ * (u • P) 0 * (u • P) 2 + W.a₄ * (u • P) 2 ^ 2 ∧
    (u • P) 1 * (u • P) 2 = -(u • P) 1 * (u • P) 2 - W.a₁ * (u • P) 0 * (u • P) 2 - W.a₃ * (u • P) 2 ^ 2 ∧
      (u • P) 1 ^ 2 + W.a₁ * (u • P) 0 * (u • P) 1 + 2 * W.a₃ * (u • P) 1 * (u • P) 2 =
        W.a₂ * (u • P) 0 ^ 2 + 2 * W.a₄ * (u • P) 0 * (u • P) 2 + 3 * W.a₆ * (u • P) 2 ^ 2
state_after: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ W.a₁ * (↑u * P 1) * (↑u * P 2) = 3 * (↑u * P 0) ^ 2 + 2 * W.a₂ * (↑u * P 0) * (↑u * P 2) + W.a₄ * (↑u * P 2) ^ 2 ∧
    ↑u * P 1 * (↑u * P 2) = -(↑u * P 1) * (↑u * P 2) - W.a₁ * (↑u * P 0) * (↑u * P 2) - W.a₃ * (↑u * P 2) ^ 2 ∧
      (↑u * P 1) ^ 2 + W.a₁ * (↑u * P 0) * (↑u * P 1) + 2 * W.a₃ * (↑u * P 1) * (↑u * P 2) =
        W.a₂ * (↑u * P 0) ^ 2 + 2 * W.a₄ * (↑u * P 0) * (↑u * P 2) + 3 * W.a₆ * (↑u * P 2) ^ 2

tactic: exact ⟨by linear_combination (norm := ring1) (u : R) ^ 2 * h'.left,
  by linear_combination (norm := ring1) (u : R) ^ 2 * h'.right.left,
  by linear_combination (norm := ring1) (u : R) ^ 2 * h'.right.right⟩
state_before: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ W.a₁ * (↑u * P 1) * (↑u * P 2) = 3 * (↑u * P 0) ^ 2 + 2 * W.a₂ * (↑u * P 0) * (↑u * P 2) + W.a₄ * (↑u * P 2) ^ 2 ∧
    ↑u * P 1 * (↑u * P 2) = -(↑u * P 1) * (↑u * P 2) - W.a₁ * (↑u * P 0) * (↑u * P 2) - W.a₃ * (↑u * P 2) ^ 2 ∧
      (↑u * P 1) ^ 2 + W.a₁ * (↑u * P 0) * (↑u * P 1) + 2 * W.a₃ * (↑u * P 1) * (↑u * P 2) =
        W.a₂ * (↑u * P 0) ^ 2 + 2 * W.a₄ * (↑u * P 0) * (↑u * P 2) + 3 * W.a₆ * (↑u * P 2) ^ 2
state_after: no goals

tactic: linear_combination (norm := ring1) (u : R) ^ 2 * h'.left
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ W.a₁ * (↑u * P 1) * (↑u * P 2) = 3 * (↑u * P 0) ^ 2 + 2 * W.a₂ * (↑u * P 0) * (↑u * P 2) + W.a₄ * (↑u * P 2) ^ 2
state_after: no goals

tactic: linear_combination (norm := ring1) (u : R) ^ 2 * h'.right.left
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ ↑u * P 1 * (↑u * P 2) = -(↑u * P 1) * (↑u * P 2) - W.a₁ * (↑u * P 0) * (↑u * P 2) - W.a₃ * (↑u * P 2) ^ 2
state_after: no goals

tactic: linear_combination (norm := ring1) (u : R) ^ 2 * h'.right.right
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h✝ : W.Nonsingular (u • P)
h : W.Equation (u • P)
h' :
  W.a₁ * P 1 * P 2 = 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∧
    P 1 * P 2 = -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∧
      P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 = W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2
⊢ (↑u * P 1) ^ 2 + W.a₁ * (↑u * P 0) * (↑u * P 1) + 2 * W.a₃ * (↑u * P 1) * (↑u * P 2) =
    W.a₂ * (↑u * P 0) ^ 2 + 2 * W.a₄ * (↑u * P 0) * (↑u * P 2) + 3 * W.a₆ * (↑u * P 2) ^ 2
state_after: no goals

tactic: rwa [inv_smul_smul]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
u : Rˣ
this : ∀ (u : Rˣ) {P : Fin 3 → R}, W.Nonsingular (u • P) → W.Nonsingular P
h : W.Nonsingular P
⊢ W.Nonsingular (u⁻¹ • u • P)
state_after: no goals