simproc for Nat.primeFactorsList #
Note that since norm_num can only produce numerals,
we can't register this as a norm_num extension.
A proof of the partial computation of primeFactorsList.
Asserts that l is a sorted list of primes multiplying to n and lower bounded by a prime p.
Equations
Instances For
The argument explicitness in this section is chosen to make only the numerals in the factors list appear in the proof term.
theorem
Mathlib.Meta.Simproc.FactorsHelper.cons_of_le
{n m : β}
(a : β)
{b : β}
{l : List β}
(hβ : NormNum.IsNat (b * m) n)
(hβ : a β€ b)
(hβ : b.minFac = b)
(H : FactorsHelper m b l)
:
FactorsHelper n a (b :: l)
theorem
Mathlib.Meta.Simproc.FactorsHelper.cons
{n m a : β}
(b : β)
{l : List β}
(hβ : NormNum.IsNat (b * m) n)
(hβ : a.blt b = true)
(hβ : NormNum.IsNat b.minFac b)
(H : FactorsHelper m b l)
:
FactorsHelper n a (b :: l)
theorem
Mathlib.Meta.Simproc.FactorsHelper.singleton
(n : β)
{a : β}
(hβ : a.blt n = true)
(hβ : NormNum.IsNat n.minFac n)
:
FactorsHelper n a [n]
theorem
Mathlib.Meta.Simproc.FactorsHelper.cons_self
{n m : β}
(a : β)
{l : List β}
(h : NormNum.IsNat (a * m) n)
(H : FactorsHelper m a l)
:
FactorsHelper n a (a :: l)
theorem
Mathlib.Meta.Simproc.FactorsHelper.primeFactorsList_eq
{n : β}
{l : List β}
(H : FactorsHelper n 2 l)
:
def
Mathlib.Meta.Simproc.evalPrimeFactorsList
{en enl : Q(β)}
(hn : Q(NormNum.IsNat Β«$enΒ» Β«$enlΒ»))
:
Lean.MetaM ((l : Q(List β)) Γ Q(Β«$enΒ».primeFactorsList = Β«$lΒ»))
Given a natural number n, returns (l, β’ Nat.primeFactorsList n = l).