A Sierpinski number is an odd positive integer, k, such that no positive integer of the form k * 2^n + 1 is prime. Similar to a Sierpinski number, a Riesel number is an odd positive integer, k, such that no positive integer of the form k * 2^n + 1 is prime. A cover for such a k is a finite list of positive integers such that each integer j of the appropriate form has a factor, d, in the cover, with 1 < d < j. Given a k and its cover, ACL2 is used to systematically verify that each integer of the given form has a non-trivial factor in the cover.
Sierpiński and Riesel numbers are not easy to find. To disqualify an odd positive integer as a Sierpiński number or a Riesel number, one need only locate a prime in the appropriate infinite list. With four exceptions, k = 47, 103, 143, 197, all of the first 100 odd positive integers, 1 ≤ k ≤ 199, are disqualified as Sierpiński numbers by finding at least one prime in the first eight elements of the infinite list [3]:
Both k = 103 and k = 197 are eliminated by finding a prime in the list no later than k2 16 + 1 [3], leaving 47 and 143 as the only possible Sierpiński numbers less than 200. It turns out that 143 • 2 53 + 1 and 47 • 2 583 + 1 are prime [3], eliminating them. Thus, there are no Sierpiński numbers in the range 1 ≤ k ≤ 199. The situation is similar for Riesel numbers.
In 1960, W. Sierpiński [7] proved, for k = 15511380746462593381, every member in the infinite list, given by (1), is divisible by one of the prime factors of the first six Fermat numbers. For nonnegative integer, n, the Fermat number, F n , is given by
The first five Fermat numbers are prime and F 5 is the product of two primes: [5] showed 509203 is a Riesel number with cover (3 5 7 13 17 241). It is possible for the same odd positive integer to be both a Sierpiński number and a Riesel number. An example [1] is k = 143665583045350793098657.
Given an odd positive integer, k, with a Sierpiński cover, C , here is the process used to verify that k is a Sierpiński number. There is a similar process for verfying Riesel numbers from their covers. The base case, when i = 0, follows from 1b above. The induction step, going from i = j to i = j + 1, follows from 1a above:
By 1a, d is a factor of the left summand of (2) and d is a factor of the right summand by the induction hypothesis.
To ensure that such d and i exist for every positive n, only a finite number of cases need be considered: Let ℓ be the least common multiple of all the b d ’s found for the d’s in C . Check for each n ∈ {0, 1, 2, . . . , ℓ -1}, that there always is a d in C that satisfies the equation
This process has not been formally verified in ACL2. For example, we don’t bother to check that every member of C is an odd prime. Instead, for each individual k and C , ACL2 events are generated that would prove k is a Sierpiński number, if all the events succeed. If some of the events fail, then, as usual when using ACL2, further study of the failure is required, in the hope of taking corrective action. The generation of these events is controlled by the macros verify-sierpinski and verify-riesel. These macros take three arguments: the name of a witness function that will find a factor for a given k2 n ± 1, the number k that is a Sierpiński or Riesel number, and the cover C for k. The macros then generate the proof, following the plan outlined in this section.
For each d in C , b d and c d from 1a and 1b, are computed. They are needed to define the witness function and to state the theorems mentioned in 1c, which are then proved. For example, the proof that 78557 is a Sierpiński number defines this witness function: To prove this, we first demonstrate that these cases are exhaustive when n is replaced by mod (n, 36) (where 36 is the least common multiple of all the moduli above). This can be checked, essentially, by computation. The actual modular equivalences that need to be proved depend on both the number 78557 and its cover. Although the theorem that is being proved is obviously true, there does not appear to be a way to prove it once and for all in ACL2, not even using encapsulate. Instead, a pair of theorems very much like the ones we have described needs to be proved from scratch for each different Sierpiński or Riesel number. As experienced ACL2 users, we are concerned that ACL2 will simply fail to prove this theorem for some combination of numbers and their covers. However, we have used these macros to generate the proof for each of the Sierpiński and Riesel numbers with covers listed in the appendix, and all of the proofs have gone through automatically. Note that the appendix essentially4 contains all the Sierpiński and Riesel numbers known to us.
There are odd positive integers, shown to be Sierpiński (or Riesel) numbers, that have no known covers. ACL2 proofs have been constructed for these numbers.
For example [1], k = 4008735125781478102999926000625 is a Sierpiński number, but no (complete) cover is known. For all positive integer, n, if mod (n, 4) = 2, then k • 2 n + 1 has a factor among the members of (3 17 97 241 257 673). To show k is a Sierpiński number, a factor of k • 2 n + 1 must be found for all positive integer, n, such that mod (n, 4) = 2. Such a factor is constructed using these facts:
• k = 44745755 4 is a fourth power
The left factor of (3) algebraically reduces to show 4004365181040050
A Riesel number, k, with no known cover, is given in Appendix A. In this example, k = a 2 is a square and
shows how to factor k • 2 m -1 when m is even a
This content is AI-processed based on open access ArXiv data.