File: Mathlib/Tactic/NormNum/Prime.lean

full_name: Mathlib.Meta.NormNum.not_prime_mul_of_ble
code: theorem not_prime_mul_of_ble (a b n : ℕ) (h : a * b = n) (h₁ : a.ble 1 = false)
    (h₂ : b.ble 1 = false) : ¬ n.Prime 
goal: ¬Nat.Prime n

full_name: Mathlib.Meta.NormNum.deriveNotPrime
code: /-- Produce a proof that `n` is not prime from a factor `1 < d < n`. `en` should be the expression
  that is the natural number literal `n`. -/
def deriveNotPrime (n d : ℕ) (en : Q(ℕ)) : Q(¬ Nat.Prime $en) 
goal: Q(¬Nat.Prime «$en»)

full_name: Mathlib.Meta.NormNum.MinFacHelper
code: /-- A predicate representing partial progress in a proof of `minFac`. -/
def MinFacHelper (n k : ℕ) : Prop 
goal: Prop

full_name: Mathlib.Meta.NormNum.MinFacHelper.one_lt
code: theorem MinFacHelper.one_lt {n k : ℕ} (h : MinFacHelper n k) : 1 < n 
goal: 1 < n

full_name: Mathlib.Meta.NormNum.minFacHelper_0
code: theorem minFacHelper_0 (n : ℕ)
    (h1 : Nat.ble (nat_lit 2) n = true) (h2 : nat_lit 1 = n % (nat_lit 2)) :
    MinFacHelper n (nat_lit 3) 
goal: Mathlib.Meta.NormNum.MinFacHelper n 3

full_name: Mathlib.Meta.NormNum.minFacHelper_1
code: theorem minFacHelper_1 {n k k' : ℕ} (e : k + 2 = k') (h : MinFacHelper n k)
    (np : minFac n ≠ k) : MinFacHelper n k' 
goal: Mathlib.Meta.NormNum.MinFacHelper n k'

full_name: Mathlib.Meta.NormNum.minFacHelper_2
code: theorem minFacHelper_2 {n k k' : ℕ} (e : k + 2 = k') (nk : ¬ Nat.Prime k)
    (h : MinFacHelper n k) : MinFacHelper n k' 
goal: Mathlib.Meta.NormNum.MinFacHelper n k'

full_name: Mathlib.Meta.NormNum.minFacHelper_3
code: theorem minFacHelper_3 {n k k' : ℕ} (e : k + 2 = k') (nk : (n % k).beq 0 = false)
    (h : MinFacHelper n k) : MinFacHelper n k' 
goal: Mathlib.Meta.NormNum.MinFacHelper n k'

full_name: Mathlib.Meta.NormNum.isNat_minFac_1
code: theorem isNat_minFac_1 : {a : ℕ} → IsNat a (nat_lit 1) → IsNat a.minFac 1
  
goal: Mathlib.Meta.NormNum.IsNat a 1 → Mathlib.Meta.NormNum.IsNat a.minFac 1

full_name: Mathlib.Meta.NormNum.isNat_minFac_2
code: theorem isNat_minFac_2 : {a a' : ℕ} → IsNat a a' → a' % 2 = 0 → IsNat a.minFac 2
  
goal: Mathlib.Meta.NormNum.IsNat a a' → a' % 2 = 0 → Mathlib.Meta.NormNum.IsNat a.minFac 2

full_name: Mathlib.Meta.NormNum.isNat_minFac_3
code: theorem isNat_minFac_3 : {n n' : ℕ} → (k : ℕ) →
    IsNat n n' → MinFacHelper n' k → nat_lit 0 = n' % k → IsNat (minFac n) k
  
goal: Mathlib.Meta.NormNum.IsNat n n' →
  Mathlib.Meta.NormNum.MinFacHelper n' k → 0 = n' % k → Mathlib.Meta.NormNum.IsNat n.minFac k

full_name: Mathlib.Meta.NormNum.isNat_minFac_4
code: theorem isNat_minFac_4 : {n n' k : ℕ} →
    IsNat n n' → MinFacHelper n' k → (k * k).ble n' = false → IsNat (minFac n) n'
  
goal: Mathlib.Meta.NormNum.IsNat n n' →
  Mathlib.Meta.NormNum.MinFacHelper n' k → (k * k).ble n' = false → Mathlib.Meta.NormNum.IsNat n.minFac n'

full_name: Mathlib.Meta.NormNum.evalMinFac
code: /-- The `norm_num` extension which identifies expressions of the form `minFac n`. -/
@[norm_num Nat.minFac _] partial def evalMinFac :
  NormNumExt 
goal: Mathlib.Meta.NormNum.NormNumExt

full_name: Mathlib.Meta.NormNum.evalMinFac.aux
code: /-- The `norm_num` extension which identifies expressions of the form `minFac n`. -/
@[norm_num Nat.minFac _] partial def evalMinFac :
  NormNumExt 
goal: (c : Q(ℕ)) × Q(Mathlib.Meta.NormNum.IsNat «$n».minFac «$c»)

full_name: Mathlib.Meta.NormNum.evalMinFac.core
code: /-- The `norm_num` extension which identifies expressions of the form `minFac n`. -/
@[norm_num Nat.minFac _] partial def evalMinFac :
  NormNumExt 
goal: Lean.MetaM (Mathlib.Meta.NormNum.Result q(«$n».minFac))

full_name: Mathlib.Meta.NormNum.isNat_prime_0
code: theorem isNat_prime_0 : {n : ℕ} → IsNat n (nat_lit 0) → ¬ n.Prime
  
goal: Mathlib.Meta.NormNum.IsNat n 0 → ¬Nat.Prime n

full_name: Mathlib.Meta.NormNum.isNat_prime_1
code: theorem isNat_prime_1 : {n : ℕ} → IsNat n (nat_lit 1) → ¬ n.Prime
  
goal: Mathlib.Meta.NormNum.IsNat n 1 → ¬Nat.Prime n

full_name: Mathlib.Meta.NormNum.isNat_prime_2
code: theorem isNat_prime_2 : {n n' : ℕ} →
    IsNat n n' → Nat.ble 2 n' = true → IsNat (minFac n') n' → n.Prime
  
goal: Mathlib.Meta.NormNum.IsNat n n' → Nat.ble 2 n' = true → Mathlib.Meta.NormNum.IsNat n'.minFac n' → Nat.Prime n

full_name: Mathlib.Meta.NormNum.isNat_not_prime
code: theorem isNat_not_prime {n n' : ℕ} (h : IsNat n n') : ¬n'.Prime → ¬n.Prime 
goal: ¬Nat.Prime n' → ¬Nat.Prime n

full_name: Mathlib.Meta.NormNum.evalNatPrime
code: /-- The `norm_num` extension which identifies expressions of the form `Nat.Prime n`. -/
@[norm_num Nat.Prime _] def evalNatPrime : NormNumExt 
goal: Mathlib.Meta.NormNum.NormNumExt

full_name: Mathlib.Meta.NormNum.evalNatPrime.core
code: /-- The `norm_num` extension which identifies expressions of the form `Nat.Prime n`. -/
@[norm_num Nat.Prime _] def evalNatPrime : NormNumExt 
goal: Lean.MetaM (Mathlib.Meta.NormNum.Result q(Nat.Prime «$n»))