Abstract

We formally verify the Berlekamp–Zassenhaus algorithm for factoring square-free integer polynomials in Isabelle/HOL. We further adapt an existing formalization of Yun’s square-free factorization algorithm to integer polynomials, and thus provide an efficient and certified factorization algorithm for arbitrary univariate polynomials. The algorithm first performs factorization in the prime field mathrm {GF}(p){} and then performs computations in the ring of integers modulo p^k, where both p and k are determined at runtime. Since a natural modeling of these structures via dependent types is not possible in Isabelle/HOL, we formalize the whole algorithm using locales and local type definitions. Through experiments we verify that our algorithm factors polynomials of degree up to 500 within seconds.

Highlights

  • Modern algorithms to factor univariate integer polynomials—following Berlekamp and Zassenhaus—first preprocesses the input polynomial to extract the content and detect duplicate factors

  • Our experiments revealed that currently the preprocessing slows down the factorization algorithm, so the value of the Boolean constant is set to disable the preprocessing

  • There is some overhead in this approach—namely by copying the type-based algorithms into record-based ones, and by proving the transfer rules for each of the algorithms—it still simplifies the overall development: once this setup has been established, we can transfer statements about properties of the algorithms, without having to copy or adjust their proofs. This way, we obtain a formalized and executable factorization algorithm for polynomials in finite fields where the prime number p can be determined at runtime, and where the arithmetic in GF( p) is selected dynamically without the risk of integer overflow

Read more

Summary

Introduction

Modern algorithms to factor univariate integer polynomials—following Berlekamp and Zassenhaus—first preprocesses the input polynomial to extract the content and detect duplicate factors. – The first part of the algorithm is square-free factorization over integer polynomials. 6, we formalize Berlekamp’s algorithm, which factors polynomials over prime fields, using the type-based representation. Since Isabelle’s code generation does not work for the type-based representation of prime fields, we follow the steps presented in Sect. 10 we illustrate how to assemble all the previous results in order to obtain the verified factorize_int_poly algorithm This includes some optimizations for improving the runtime of the algorithm, such as the use of reciprocal polynomials and Karatsuba’s multiplication algorithm. The polynomial-time factorization algorithm of Lenstra et al [23] has been verified [11], and that formalization could directly use the results about steps 4–8 of Algorithm 1 from this paper without requiring any adaptations. The formalization as described in this paper corresponds to the AFP 2019 version which compiles with the Isabelle 2019 release

Related Work
Preliminaries
Formalizing Prime Fields
Type-Based Representation
Integer Representation
Record-Based Implementation
Abstraction Layer
Defining Implementations
Combination of Results
Square-Free Factorization of Integer Polynomials
Informal Description
Soundness of Berlekamp’s Algorithm
Formalizing the Distinct-Degree Factorization Algorithm
Implementing Finite Field Factorization
Mignotte’s Factor Bound
Reconstructing True Factors
10 Assembled Factorization Algorithm
11 Experimental Evaluation
Findings
12 Summary
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call