Theorem: Lean4Axiomatic.Integer.sqrt1_subst (Lean4Axiomatic/Integer/Sign.lean)

State before:
ℕ : Type
inst✝⁴ : Natural ℕ
ℤ : Type
inst✝³ : Core ℤ
inst✝² : Addition ℤ
inst✝¹ : Multiplication ℤ
inst✝ : Negation ℤ
a₁ a₂ : ℤ
⊢ a₁ ≃ a₂ → Sqrt1 a₁ → Sqrt1 a₂
Tactic:
intro (_ : a₁ ≃ a₂) (_ : Sqrt1 a₁)
State after:
ℕ : Type
inst✝⁴ : Natural ℕ
ℤ : Type
inst✝³ : Core ℤ
inst✝² : Addition ℤ
inst✝¹ : Multiplication ℤ
inst✝ : Negation ℤ
a₁ a₂ : ℤ
x✝¹ : a₁ ≃ a₂
x✝ : Sqrt1 a₁
⊢ Sqrt1 a₂

State before:
ℕ : Type
inst✝⁴ : Natural ℕ
ℤ : Type
inst✝³ : Core ℤ
inst✝² : Addition ℤ
inst✝¹ : Multiplication ℤ
inst✝ : Negation ℤ
a₁ a₂ : ℤ
x✝¹ : a₁ ≃ a₂
x✝ : Sqrt1 a₁
⊢ Sqrt1 a₂
Tactic:
have : a₂ * a₂ ≃ 1 := calc
  a₂ * a₂ ≃ _ := AA.substL (Rel.symm ‹a₁ ≃ a₂›)
  a₁ * a₂ ≃ _ := AA.substR (Rel.symm ‹a₁ ≃ a₂›)
  a₁ * a₁ ≃ _ := ‹Sqrt1 a₁›.elim
  1       ≃ _ := Rel.refl
State after:
ℕ : Type
inst✝⁴ : Natural ℕ
ℤ : Type
inst✝³ : Core ℤ
inst✝² : Addition ℤ
inst✝¹ : Multiplication ℤ
inst✝ : Negation ℤ
a₁ a₂ : ℤ
x✝¹ : a₁ ≃ a₂
x✝ : Sqrt1 a₁
this : a₂ * a₂ ≃ 1
⊢ Sqrt1 a₂

State before:
ℕ : Type
inst✝⁴ : Natural ℕ
ℤ : Type
inst✝³ : Core ℤ
inst✝² : Addition ℤ
inst✝¹ : Multiplication ℤ
inst✝ : Negation ℤ
a₁ a₂ : ℤ
x✝¹ : a₁ ≃ a₂
x✝ : Sqrt1 a₁
this : a₂ * a₂ ≃ 1
⊢ Sqrt1 a₂
Tactic:
exact Sqrt1.mk ‹a₂ * a₂ ≃ 1›
State after:
no goals