# A Verified Implementation of the Berlekamp–Zassenhaus Factorization Algorithm

### Authors:

- Divasón, Jose
- Joosten, Sebastiaan J.
- Thiemann, René
- Yamada, Akihisa

Published in: Journal of automated reasoning pp 699–735

https://zenodo.org/record/2539422

### 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 GF(𝑝) and then performs computations in the ring of integers modulo 𝑝𝑘, 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.

### BibTeX entry:

```
@article{Divason20,
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 GF(𝑝) and then performs computations in the ring of integers modulo 𝑝𝑘, 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.},
author = {Divas{\'o}n, Jose and Joosten, Sebastiaan JC and Thiemann, Ren{\'e} and Yamada, Akihisa},
date-added = {2021-09-18 14:47:12 -0400},
date-modified = {2021-09-18 15:29:00 -0400},
journal = {Journal of automated reasoning},
month = {June},
number = {4},
pages = {699--735},
publisher = {Springer Netherlands},
title = {A Verified Implementation of the Berlekamp--Zassenhaus Factorization Algorithm},
url = {https://zenodo.org/record/2539422},
volume = {64},
year = {2020}
}
```