Software Open Access
Divasón, Jose;
Joosten, Sebastiaan J. C.;
Thiemann, René;
Yamada, Akihisa
<?xml version='1.0' encoding='utf-8'?> <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:creator>Divasón, Jose</dc:creator> <dc:creator>Joosten, Sebastiaan J. C.</dc:creator> <dc:creator>Thiemann, René</dc:creator> <dc:creator>Yamada, Akihisa</dc:creator> <dc:date>2018-12-23</dc:date> <dc:description>This is the supporting material for the paper A Verified Implementation of the Berlekamp–Zassenhaus Factorization Algorithm by Jose Divasón, Sebastiaan Joosten, René Thiemann and Akihisa Yamada. Abstract We formalize 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(p) and then performs computations in the ring of integers modulo pk, 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. Formalization The formalization is part of the Archive of Formal Proofs for Isabelle 2018 within the entry The Factorization Algorithm of Berlekamp and Zassenhaus. The following list documents the relationship between the paper and the formalization: Section 1 Introduction Theorem 1 (page 2): factorize_int_poly Section 3 Formalizing Prime Fields Lemma 1 (page 6): coprime_pderiv_imp_square_free Lemma 2 (page 8): square_free_mod_imp_square_free Lemma 3 (page 8): times_MP_Rel Lemma 4 (page 8): degree_mult_eq Lemma 5 (page 8): poly_mod_prime_type.degree_m_mult_eq Lemma 6 (page 8): poly_mod_prime.degree_m_mult_eq Lemma 7 (page 10): gcd_eucl_i Lemma 8 (page 10): finite_field_ops_integer Lemma 9 (page 11): finite_field_ops32 Lemma 10 (page 11): finite_field_ops64 Lemma 11 (page 11): euclidean_ring_ops_poly Lemma 12 (page 11): poly_rel_gcd Lemma 13 (page 12): prime_field_gen.square_free_impl(1) Lemma 14 (page 12): poly_mod_prime.square_free_impl(1) Section 4 Square-Free Factorization of Integer Polynomials Theorem 2 (page 13): square_free_factorization_int Section 5 Square-Free Polynomials in GF(p) Lemma 15 (page 14): suitable_prime_bz Section 6 Berlekamp's Algorithm Theorem 3 (page 18): berlekamp_monic_factorization Lemma 17 (page 19): degree_divisor1 Lemma 17 (page 19): degree_divisor2 Theorem 4 (page 20): finite_field_factorization Theorem 5 (page 22): finite_field_factorization_int Section 7 Mignotte's Factor Bound Lemma 18 (page 22): factor_bound Lemma 19 (page 24): log_ceiling Section 8 Hensel Lifting Lemma 21 (page 27): hensel_1 Lemma 22 (page 27): unique_hensel_binary Lemma 23 (page 29): hensel_lifting_unique Section 9 Reconstructing True Factors Theorem 6 (page 31): zassenhaus_reconstruction Section 10 Assembled Factorization Algorithm Theorem 7 (page 32): berlekamp_zassenhaus_factorization_irreducible Theorem 8 (page 32): internal_int_poly_factorization_mem Theorem 8 (page 32): internal_int_poly_factorization Experiments One can rerun the experiments as follows: Download and extract the attached file. Inspect the path of the constant binary within the file experiments/Code_Old/Mathematica.hs whether it matches your Mathematica installation. Otherwise you can deactivate the Mathematica experiments by disabling the external factorization in experiments/Experiments/run_experiment.sh. Compile experiments/Code_Old/Main and experiments/Code_New/Main with -O2 Invoke ./experiments/Experiments/run_experiments.sh To turn the raw data into .csv-files and generated the Mathematica-graph, change to the experiments/Experiments directory and invoke ./time_tables_to_mathematica.sh To get the pdf-file, paste the output of the previous command into the first line of the Mathematica-file journal_plot.nb One can also run the experiments disabling some of the optimizations by means of the files Code_New_No_{...}/Main.hs In addition, the Isabelle file Generate_Code.thy generates the Haskell sources. The following table contains all the experiments of Figure 1 in the article. Polynomial Mathematica Old New poly_100.poly 0.478s 0.194s 0.085s poly_101.poly 0.449s 0.209s 0.095s poly_102.poly 0.475s 0.247s 0.145s poly_103.poly 0.491s 0.171s 0.109s poly_104.poly 0.479s 0.131s 0.096s poly_105.poly 0.492s 0.276s 0.140s poly_106.poly 0.458s 0.148s 0.097s poly_107.poly 0.463s 0.180s 0.107s poly_108.poly 0.472s 0.216s 0.122s poly_109.poly 0.477s 0.154s 0.103s poly_110.poly 0.457s 0.180s 0.119s poly_111.poly 0.465s 0.218s 0.122s poly_112.poly 0.487s 0.217s 0.132s poly_113.poly 0.471s 0.130s 0.084s poly_114.poly 0.465s 0.269s 0.120s poly_115.poly 0.464s 0.243s 0.105s poly_116.poly 0.457s 0.269s 0.122s poly_117.poly 0.476s 0.333s 0.135s poly_118.poly 0.498s 0.220s 0.082s poly_119.poly 0.462s 0.228s 0.134s poly_120.poly 0.449s 0.318s 0.109s poly_121.poly 0.485s 0.271s 0.181s poly_122.poly 0.483s 0.229s 0.108s poly_123.poly 0.465s 0.254s 0.147s poly_124.poly 0.495s 0.278s 0.158s poly_125.poly 0.460s 0.378s 0.157s poly_126.poly 0.480s 0.306s 0.168s poly_127.poly 0.476s 0.328s 0.198s poly_128.poly 0.492s 0.272s 0.144s poly_129.poly 0.464s 0.421s 0.226s poly_130.poly 0.483s 0.267s 0.132s poly_131.poly 0.497s 0.329s 0.158s poly_132.poly 0.471s 0.482s 0.241s poly_133.poly 0.493s 0.448s 0.294s poly_134.poly 0.474s 0.317s 0.172s poly_135.poly 0.507s 0.408s 0.170s poly_136.poly 0.502s 0.429s 0.242s poly_137.poly 0.499s 0.279s 0.171s poly_138.poly 0.480s 0.326s 0.195s poly_139.poly 0.499s 0.327s 0.157s poly_140.poly 0.481s 0.390s 0.245s poly_141.poly 0.516s 0.412s 0.249s poly_142.poly 0.496s 0.295s 0.192s poly_143.poly 0.500s 0.280s 0.185s poly_144.poly 0.525s 0.513s 0.268s poly_145.poly 0.518s 0.424s 0.257s poly_146.poly 0.492s 0.478s 0.209s poly_147.poly 0.474s 0.595s 0.296s poly_148.poly 0.483s 0.379s 0.209s poly_149.poly 0.483s 0.542s 0.296s poly_150.poly 0.493s 0.224s 0.131s poly_151.poly 0.484s 0.533s 0.232s poly_152.poly 0.537s 0.473s 0.183s poly_153.poly 0.513s 0.500s 0.301s poly_154.poly 0.487s 0.357s 0.183s poly_155.poly 0.544s 0.659s 0.294s poly_156.poly 0.497s 0.627s 0.221s poly_157.poly 0.491s 0.706s 0.390s poly_158.poly 0.538s 0.473s 0.208s poly_159.poly 0.487s 0.920s 0.470s poly_160.poly 0.544s 0.665s 0.249s poly_161.poly 0.515s 0.605s 0.207s poly_162.poly 0.509s 1.037s 0.384s poly_163.poly 0.493s 0.622s 0.294s poly_164.poly 0.498s 0.441s 0.269s poly_165.poly 0.487s 0.889s 0.432s poly_166.poly 0.561s 0.578s 0.299s poly_167.poly 0.531s 0.905s 0.236s poly_168.poly 0.504s 0.834s 0.318s poly_169.poly 0.533s 1.177s 0.347s poly_170.poly 0.534s 0.743s 0.271s poly_171.poly 0.509s 0.718s 0.393s poly_172.poly 0.590s 0.703s 0.342s poly_173.poly 0.488s 0.828s 0.259s poly_174.poly 0.526s 0.711s 0.346s poly_175.poly 0.522s 0.722s 0.428s poly_176.poly 0.559s 0.722s 0.295s poly_177.poly 0.521s 1.151s 0.320s poly_178.poly 0.504s 0.816s 0.333s poly_179.poly 0.535s 1.206s 0.629s poly_180.poly 0.495s 0.707s 0.293s poly_181.poly 0.478s 0.948s 0.331s poly_182.poly 0.537s 1.259s 0.435s poly_183.poly 0.519s 0.863s 0.390s poly_184.poly 0.550s 1.716s 0.669s poly_185.poly 0.507s 1.166s 0.320s poly_186.poly 0.556s 1.187s 0.508s poly_187.poly 0.547s 1.070s 0.654s poly_188.poly 0.529s 0.979s 0.354s poly_189.poly 1.232s 1.565s 0.578s poly_190.poly 0.578s 1.383s 0.407s poly_191.poly 0.521s 1.093s 0.417s poly_192.poly 0.510s 1.031s 0.393s poly_193.poly 0.623s 0.886s 0.524s poly_194.poly 0.548s 1.434s 0.562s poly_195.poly 0.525s 1.580s 0.336s poly_196.poly 0.567s 1.640s 0.647s poly_197.poly 0.543s 1.223s 0.593s poly_198.poly 0.569s 1.351s 0.732s poly_199.poly 0.547s 1.096s 0.469s poly_200.poly 0.507s 1.449s 0.729s poly_201.poly 0.643s 1.653s 0.594s poly_202.poly 0.550s 1.233s 0.361s poly_203.poly 0.612s 1.274s 0.651s poly_204.poly 0.538s 1.064s 0.595s poly_205.poly 0.628s 1.539s 0.767s poly_206.poly 0.587s 1.217s 0.486s poly_207.poly 0.496s 1.833s 0.533s poly_208.poly 0.565s 1.547s 0.370s poly_209.poly 0.557s 1.796s 0.805s poly_210.poly 0.507s 1.988s 0.504s poly_211.poly 0.710s 1.440s 0.661s poly_212.poly 0.567s 1.301s 0.443s poly_213.poly 0.535s 1.277s 0.463s poly_214.poly 0.562s 1.963s 0.769s poly_215.poly 0.607s 1.809s 0.695s poly_216.poly 0.556s 1.627s 0.835s poly_217.poly 0.583s 2.044s 0.837s poly_218.poly 0.622s 2.638s 0.571s poly_219.poly 0.618s 1.851s 0.755s poly_220.poly 0.549s 2.227s 0.605s poly_221.poly 0.562s 1.441s 0.725s poly_222.poly 0.519s 1.129s 0.595s poly_223.poly 0.538s 2.158s 0.863s poly_224.poly 0.542s 1.832s 0.646s poly_225.poly 0.533s 3.330s 0.928s poly_226.poly 0.635s 1.760s 0.953s poly_227.poly 0.560s 1.580s 0.460s poly_228.poly 0.609s 2.838s 1.023s poly_229.poly 0.636s 1.961s 0.860s poly_230.poly 0.643s 1.743s 0.459s poly_231.poly 0.756s 2.141s 0.722s poly_232.poly 0.553s 2.869s 1.206s poly_233.poly 0.627s 1.933s 0.755s poly_234.poly 0.567s 3.316s 0.435s poly_235.poly 0.633s 2.612s 0.758s poly_236.poly 0.542s 1.896s 0.490s poly_237.poly 0.693s 3.163s 0.729s poly_238.poly 0.647s 1.464s 0.699s poly_239.poly 0.555s 1.564s 0.658s poly_240.poly 0.567s 2.361s 0.793s poly_241.poly 0.640s 3.208s 0.607s poly_242.poly 0.780s 2.006s 0.876s poly_243.poly 0.556s 2.465s 0.973s poly_244.poly 0.694s 2.305s 1.191s poly_245.poly 0.588s 2.651s 0.525s poly_246.poly 0.588s 3.791s 0.973s poly_247.poly 0.684s 3.583s 0.820s poly_248.poly 0.626s 3.027s 1.153s poly_249.poly 0.540s 1.997s 0.647s poly_250.poly 0.614s 2.558s 1.139s poly_251.poly 0.663s 2.376s 1.259s poly_252.poly 0.655s 2.551s 0.952s poly_253.poly 0.685s 3.436s 0.999s poly_254.poly 0.727s 3.217s 1.133s poly_255.poly 0.831s 2.706s 0.923s poly_256.poly 0.730s 3.011s 1.385s poly_257.poly 0.605s 2.808s 1.121s poly_258.poly 0.609s 2.056s 0.825s poly_259.poly 0.740s 3.579s 1.263s poly_260.poly 0.655s 3.068s 1.411s poly_261.poly 0.647s 2.959s 1.240s poly_262.poly 0.574s 3.489s 1.158s poly_263.poly 0.757s 3.162s 1.207s poly_264.poly 0.710s 3.118s 1.047s poly_265.poly 0.728s 3.967s 1.332s poly_266.poly 0.765s 3.685s 1.115s poly_267.poly 0.592s 4.304s 1.330s poly_268.poly 0.717s 3.360s 1.578s poly_269.poly 0.885s 4.903s 0.857s poly_270.poly 0.953s 3.333s 1.233s poly_271.poly 0.817s 3.409s 0.753s poly_272.poly 0.776s 3.498s 1.303s poly_273.poly 0.707s 4.628s 0.852s poly_274.poly 0.689s 5.255s 1.282s poly_275.poly 0.892s 5.099s 0.855s poly_276.poly 0.567s 4.737s 1.194s poly_277.poly 0.873s 4.736s 0.962s poly_278.poly 0.766s 3.295s 1.257s poly_279.poly 0.969s 2.762s 0.942s poly_280.poly 0.732s 4.787s 0.891s poly_281.poly 0.732s 4.608s 1.302s poly_282.poly 0.871s 5.127s 0.782s poly_283.poly 0.738s 3.931s 1.004s poly_284.poly 0.857s 4.326s 1.888s poly_285.poly 0.646s 5.082s 1.506s poly_286.poly 0.815s 4.132s 1.396s poly_287.poly 0.965s 4.368s 1.355s poly_288.poly 0.746s 4.417s 1.476s poly_289.poly 0.764s 6.243s 1.312s poly_290.poly 0.610s 3.899s 0.984s poly_291.poly 0.680s 5.110s 0.958s poly_292.poly 0.717s 5.487s 0.880s poly_293.poly 0.717s 8.597s 1.738s poly_294.poly 0.721s 6.355s 2.375s poly_295.poly 0.987s 3.809s 1.191s poly_296.poly 0.876s 5.080s 2.065s poly_297.poly 0.882s 5.162s 1.925s poly_298.poly 1.053s 6.622s 1.675s poly_299.poly 0.787s 4.366s 1.351s poly_300.poly 0.878s 7.252s 1.340s poly_301.poly 0.718s 5.359s 0.977s poly_302.poly 1.076s 5.446s 1.446s poly_303.poly 1.355s 3.074s 1.388s poly_304.poly 0.710s 7.352s 1.100s poly_305.poly 0.862s 5.038s 1.036s poly_306.poly 0.640s 5.466s 2.315s poly_307.poly 0.907s 6.191s 2.003s poly_308.poly 0.825s 4.889s 1.787s poly_309.poly 1.157s 4.730s 1.683s poly_310.poly 1.048s 6.380s 1.899s poly_311.poly 0.821s 5.340s 1.493s poly_312.poly 0.734s 4.584s 1.257s poly_313.poly 0.875s 5.126s 1.942s poly_314.poly 1.152s 6.076s 1.132s poly_315.poly 0.646s 8.902s 2.290s poly_316.poly 0.864s 7.926s 1.816s poly_317.poly 0.865s 5.540s 2.609s poly_318.poly 1.217s 8.536s 2.028s poly_319.poly 0.787s 6.662s 2.033s poly_320.poly 1.368s 5.776s 1.548s poly_321.poly 0.984s 8.860s 2.601s poly_322.poly 0.869s 9.124s 1.810s poly_323.poly 0.648s 6.936s 1.108s poly_324.poly 0.937s 7.901s 1.841s poly_325.poly 0.901s 6.507s 2.776s poly_326.poly 0.733s 6.871s 1.727s poly_327.poly 0.765s 8.104s 2.637s poly_328.poly 0.885s 10.401s 2.218s poly_329.poly 1.001s 4.122s 1.249s poly_330.poly 0.785s 6.544s 1.827s poly_331.poly 0.918s 9.594s 1.460s poly_332.poly 0.843s 7.225s 3.023s poly_333.poly 1.150s 11.494s 2.873s poly_334.poly 0.950s 10.194s 2.355s poly_335.poly 1.172s 8.722s 2.315s poly_336.poly 1.027s 6.473s 1.449s poly_337.poly 0.751s 11.346s 1.752s poly_338.poly 0.813s 9.438s 1.968s poly_339.poly 0.815s 7.378s 2.027s poly_340.poly 0.664s 8.289s 1.205s poly_341.poly 0.919s 6.848s 2.083s poly_342.poly 1.027s 14.903s 1.691s poly_343.poly 1.158s 9.495s 2.103s poly_344.poly 0.812s 9.516s 3.305s poly_345.poly 1.189s 5.334s 2.104s poly_346.poly 1.014s 10.649s 3.294s poly_347.poly 0.975s 8.088s 1.566s poly_348.poly 0.877s 10.249s 2.408s poly_349.poly 0.850s 13.374s 3.216s poly_350.poly 1.246s 11.256s 2.747s poly_351.poly 0.959s 8.027s 2.336s poly_352.poly 1.013s 9.565s 2.848s poly_353.poly 0.764s 9.335s 1.650s poly_354.poly 1.242s 9.831s 2.840s poly_355.poly 1.636s 7.602s 2.256s poly_356.poly 1.080s 8.711s 3.033s poly_357.poly 0.776s 10.423s 3.029s poly_358.poly 0.909s 12.636s 3.057s poly_359.poly 0.894s 15.462s 3.104s poly_360.poly 1.062s 12.932s 3.219s poly_361.poly 0.964s 15.856s 2.869s poly_362.poly 0.863s 10.977s 4.597s poly_363.poly 1.288s 21.610s 2.335s poly_364.poly 0.895s 17.265s 1.675s poly_365.poly 0.979s 9.957s 2.394s poly_366.poly 1.727s 8.259s 3.021s poly_367.poly 0.977s 10.959s 4.299s poly_368.poly 1.248s 15.490s 3.341s poly_369.poly 0.791s 12.137s 3.151s poly_370.poly 0.754s 13.471s 1.879s poly_371.poly 1.289s 12.679s 2.693s poly_372.poly 0.856s 6.906s 1.488s poly_373.poly 1.442s 9.346s 3.019s poly_374.poly 0.961s 13.392s 3.527s poly_375.poly 0.982s 9.665s 2.495s poly_376.poly 1.431s 8.820s 2.613s poly_377.poly 1.262s 10.092s 2.358s poly_378.poly 1.067s 13.103s 4.017s poly_379.poly 0.798s 11.407s 2.530s poly_380.poly 1.381s 12.311s 2.954s poly_381.poly 1.278s 8.984s 1.999s poly_382.poly 0.895s 9.518s 2.817s poly_383.poly 0.945s 13.615s 3.512s poly_384.poly 1.031s 19.243s 3.481s poly_385.poly 1.046s 13.784s 2.661s poly_386.poly 1.275s 10.230s 3.170s poly_387.poly 0.976s 13.687s 3.704s poly_388.poly 0.733s 8.044s 1.772s poly_389.poly 0.902s 9.925s 2.886s poly_390.poly 0.766s 8.027s 1.704s poly_391.poly 0.774s 19.267s 3.956s poly_392.poly 1.368s 17.336s 2.238s poly_393.poly 1.079s 11.014s 3.572s poly_394.poly 0.971s 14.128s 4.558s poly_395.poly 1.163s 12.663s 2.931s poly_396.poly 0.984s 13.827s 2.365s poly_397.poly 1.796s 14.465s 4.155s poly_398.poly 0.899s 13.236s 1.938s poly_399.poly 1.339s 20.634s 4.699s poly_400.poly 1.162s 13.476s 1.849s poly_401.poly 1.086s 8.101s 2.171s poly_402.poly 1.891s 11.124s 3.086s poly_403.poly 0.988s 11.010s 2.644s poly_404.poly 1.051s 20.160s 2.425s poly_405.poly 1.647s 23.650s 5.199s poly_406.poly 1.036s 15.906s 4.767s poly_407.poly 1.083s 16.742s 2.401s poly_408.poly 1.177s 19.860s 3.804s poly_409.poly 1.107s 12.738s 3.757s poly_410.poly 1.193s 11.465s 3.740s poly_411.poly 1.550s 16.718s 3.228s poly_412.poly 1.252s 23.868s 4.908s poly_413.poly 0.895s 14.672s 2.091s poly_414.poly 1.146s 20.009s 4.559s poly_415.poly 1.152s 30.237s 3.488s poly_416.poly 1.262s 15.382s 3.950s poly_417.poly 1.472s 17.767s 3.577s poly_418.poly 1.928s 13.745s 2.527s poly_419.poly 1.431s 18.499s 3.931s poly_420.poly 1.035s 12.498s 4.095s poly_421.poly 2.506s 20.517s 3.537s poly_422.poly 1.489s 24.745s 4.400s poly_423.poly 1.250s 22.582s 6.671s poly_424.poly 0.972s 14.030s 2.653s poly_425.poly 1.212s 18.464s 5.370s poly_426.poly 0.962s 14.179s 2.795s poly_427.poly 1.252s 19.630s 5.115s poly_428.poly 1.220s 27.196s 6.014s poly_429.poly 1.027s 19.862s 5.965s poly_430.poly 1.201s 23.786s 5.561s poly_431.poly 1.734s 18.729s 2.498s poly_432.poly 1.238s 28.353s 4.299s poly_433.poly 1.174s 14.652s 2.770s poly_434.poly 1.760s 20.187s 6.655s poly_435.poly 1.538s 11.108s 2.718s poly_436.poly 1.594s 14.872s 3.205s poly_437.poly 1.147s 14.635s 3.155s poly_438.poly 1.690s 20.034s 3.980s poly_439.poly 1.411s 25.149s 2.364s poly_440.poly 1.163s 25.878s 4.781s poly_441.poly 1.384s 25.170s 5.160s poly_442.poly 0.870s 11.668s 2.323s poly_443.poly 0.951s 33.579s 6.205s poly_444.poly 1.065s 17.941s 2.910s poly_445.poly 1.998s 16.430s 3.563s poly_446.poly 1.045s 26.910s 4.228s poly_447.poly 1.295s 29.425s 5.399s poly_448.poly 1.661s 16.258s 2.585s poly_449.poly 1.622s 17.693s 4.303s poly_450.poly 1.641s 22.936s 6.282s poly_451.poly 1.703s 22.255s 4.342s poly_452.poly 1.430s 31.131s 4.344s poly_453.poly 1.971s 21.473s 4.852s poly_454.poly 1.567s 37.292s 6.394s poly_455.poly 1.935s 30.081s 4.497s poly_456.poly 1.516s 22.825s 6.350s poly_457.poly 0.990s 22.727s 5.842s poly_458.poly 2.405s 27.059s 5.239s poly_459.poly 2.000s 29.375s 3.965s poly_460.poly 1.269s 21.120s 4.921s poly_461.poly 1.220s 18.023s 3.005s poly_462.poly 1.530s 30.173s 5.349s poly_463.poly 1.502s 35.296s 4.015s poly_464.poly 2.152s 27.638s 4.711s poly_465.poly 1.497s 33.634s 6.219s poly_466.poly 1.395s 31.657s 5.550s poly_467.poly 1.275s 28.666s 4.809s poly_468.poly 2.117s 16.743s 3.226s poly_469.poly 2.483s 34.383s 5.065s poly_470.poly 2.317s 17.479s 5.529s poly_471.poly 1.959s 22.467s 7.354s poly_472.poly 2.504s 23.219s 3.251s poly_473.poly 3.680s 35.369s 7.189s poly_474.poly 1.325s 33.530s 5.067s poly_475.poly 1.061s 26.542s 5.007s poly_476.poly 1.638s 24.279s 3.182s poly_477.poly 1.551s 23.888s 7.094s poly_478.poly 1.480s 30.671s 5.880s poly_479.poly 1.545s 30.107s 8.659s poly_480.poly 1.674s 34.370s 7.401s poly_481.poly 2.276s 29.611s 5.249s poly_482.poly 2.612s 26.880s 7.500s poly_483.poly 2.534s 19.501s 3.872s poly_484.poly 2.033s 45.472s 5.112s poly_485.poly 2.442s 32.935s 6.633s poly_486.poly 1.616s 30.956s 6.961s poly_487.poly 1.807s 28.656s 3.263s poly_488.poly 1.165s 41.173s 5.497s poly_489.poly 1.978s 40.021s 4.627s poly_490.poly 1.133s 37.273s 5.103s poly_491.poly 2.112s 36.685s 7.104s poly_492.poly 2.086s 30.427s 7.117s poly_493.poly 1.297s 46.938s 6.873s poly_494.poly 1.755s 34.678s 5.329s poly_495.poly 2.274s 31.758s 6.371s poly_496.poly 2.010s 34.106s 9.385s poly_497.poly 2.014s 39.699s 5.630s poly_498.poly 1.945s 38.142s 3.470s poly_499.poly 1.622s 38.871s 5.723s</dc:description> <dc:identifier>https://zenodo.org/record/2539422</dc:identifier> <dc:identifier>10.5281/zenodo.2539422</dc:identifier> <dc:identifier>oai:zenodo.org:2539422</dc:identifier> <dc:relation>doi:10.5281/zenodo.2525350</dc:relation> <dc:rights>info:eu-repo/semantics/openAccess</dc:rights> <dc:rights>https://creativecommons.org/licenses/by/4.0/legalcode</dc:rights> <dc:subject>Factor Bounds</dc:subject> <dc:subject>Hensel Lifting</dc:subject> <dc:subject>Isabelle/HOL</dc:subject> <dc:subject>Local Type Definitions</dc:subject> <dc:subject>Polynomial Factorization</dc:subject> <dc:subject>Theorem Proving</dc:subject> <dc:title>A Verified Implementation of the Berlekamp–Zassenhaus Factorization Algorithm, supporting material</dc:title> <dc:type>info:eu-repo/semantics/other</dc:type> <dc:type>software</dc:type> </oai_dc:dc>
All versions | This version | |
---|---|---|
Views | 474 | 199 |
Downloads | 78 | 30 |
Data volume | 380.9 MB | 17.0 MB |
Unique views | 357 | 166 |
Unique downloads | 71 | 29 |