Documentation

Mathlib.Tactic.NormNum.IsSquare

norm_num extension for IsSquare #

The extension in this file handles natural, integer, and rational numbers.

TODO #

Add extensions for ℚ≥0, , ℝ≥0, ℝ≥0∞, (or any algebraically closed field?), ZMod n. Probably, these extensions should go to different files.

theorem Mathlib.Meta.NormNum.isSquare_nat_of_isNat (a n : ) (h : IsNat a n) (m : ) (hm : m * m = n) :
theorem Mathlib.Meta.NormNum.not_isSquare_nat_of_isNat (a n : ) (h : IsNat a n) (m k : ) (hm : m * m = k) (hk₁ : k.blt n = true) (hk₂ : n.ble (k + 2 * m) = true) :

If m ^ 2 < n < (m + 1) ^ 2, then n is not a square. We write this condition as k < n ≤ k + 2 * m, where k = m * m.

theorem Mathlib.Meta.NormNum.isSquare_of_isNNRat_rat (a : ) (n d : ) (hn : IsSquare n) (hd : IsSquare d) (ha : IsNNRat a n d) :
theorem Mathlib.Meta.NormNum.not_isSquare_of_isRat_neg (a : ) (n d : ) (hn : n 0) (hd : d 0) (ha : IsRat a (Int.negOfNat n) d) :