There is a newer version of this record available.

Software Open Access

A Verified Implementation of the Berlekamp–Zassenhaus Factorization Algorithm, supporting material

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


DCAT Export

<?xml version='1.0' encoding='utf-8'?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:adms="http://www.w3.org/ns/adms#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:dctype="http://purl.org/dc/dcmitype/" xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:duv="http://www.w3.org/ns/duv#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:frapo="http://purl.org/cerif/frapo/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:gsp="http://www.opengis.net/ont/geosparql#" xmlns:locn="http://www.w3.org/ns/locn#" xmlns:org="http://www.w3.org/ns/org#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:prov="http://www.w3.org/ns/prov#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:vcard="http://www.w3.org/2006/vcard/ns#" xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
  <rdf:Description rdf:about="https://doi.org/10.5281/zenodo.2539422">
    <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/>
    <dct:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>
    <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://doi.org/10.5281/zenodo.2539422</dct:identifier>
    <foaf:page rdf:resource="https://doi.org/10.5281/zenodo.2539422"/>
    <dct:creator>
      <rdf:Description rdf:about="http://orcid.org/0000-0002-5173-128X">
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0000-0002-5173-128X</dct:identifier>
        <foaf:name>Divasón, Jose</foaf:name>
        <foaf:givenName>Jose</foaf:givenName>
        <foaf:familyName>Divasón</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of La Rioja, Spain</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:creator>
      <rdf:Description rdf:about="http://orcid.org/0000-0002-6590-6220">
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0000-0002-6590-6220</dct:identifier>
        <foaf:name>Joosten, Sebastiaan J. C.</foaf:name>
        <foaf:givenName>Sebastiaan J. C.</foaf:givenName>
        <foaf:familyName>Joosten</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Innsbruck, Austria</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:creator>
      <rdf:Description rdf:about="http://orcid.org/0000-0002-0323-8829">
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0000-0002-0323-8829</dct:identifier>
        <foaf:name>Thiemann, René</foaf:name>
        <foaf:givenName>René</foaf:givenName>
        <foaf:familyName>Thiemann</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Innsbruck, Austria</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:creator>
      <rdf:Description rdf:about="http://orcid.org/0000-0001-8872-2240">
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0000-0001-8872-2240</dct:identifier>
        <foaf:name>Yamada, Akihisa</foaf:name>
        <foaf:givenName>Akihisa</foaf:givenName>
        <foaf:familyName>Yamada</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Innsbruck, Austria</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:title>A Verified Implementation of the Berlekamp–Zassenhaus Factorization Algorithm, supporting material</dct:title>
    <dct:publisher>
      <foaf:Agent>
        <foaf:name>Zenodo</foaf:name>
      </foaf:Agent>
    </dct:publisher>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#gYear">2018</dct:issued>
    <dcat:keyword>Factor Bounds</dcat:keyword>
    <dcat:keyword>Hensel Lifting</dcat:keyword>
    <dcat:keyword>Isabelle/HOL</dcat:keyword>
    <dcat:keyword>Local Type Definitions</dcat:keyword>
    <dcat:keyword>Polynomial Factorization</dcat:keyword>
    <dcat:keyword>Theorem Proving</dcat:keyword>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2018-12-23</dct:issued>
    <owl:sameAs rdf:resource="https://zenodo.org/record/2539422"/>
    <adms:identifier>
      <adms:Identifier>
        <skos:notation rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://zenodo.org/record/2539422</skos:notation>
        <adms:schemeAgency>url</adms:schemeAgency>
      </adms:Identifier>
    </adms:identifier>
    <dct:isVersionOf rdf:resource="https://doi.org/10.5281/zenodo.2525350"/>
    <dct:description>&lt;p&gt;This is the supporting material for the paper &lt;em&gt;A Verified Implementation of the Berlekamp&amp;ndash;Zassenhaus Factorization Algorithm&lt;/em&gt; by Jose Divas&amp;oacute;n, Sebastiaan Joosten, Ren&amp;eacute; Thiemann and Akihisa Yamada.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;We formalize the Berlekamp--Zassenhaus algorithm for factoring square-free integer polynomials in Isabelle/HOL. We further adapt an existing formalization of Yun&amp;#39;s square-free factorization algorithm to integer polynomials, and thus provide an efficient and certified factorization algorithm for arbitrary univariate polynomials.&lt;/p&gt; &lt;p&gt;The algorithm first performs factorization in the prime field GF(&lt;em&gt;p&lt;/em&gt;) and then performs computations in the ring of integers modulo &lt;em&gt;p&lt;sup&gt;k&lt;/sup&gt;&lt;/em&gt;, where both &lt;em&gt;p&lt;/em&gt; and &lt;em&gt;k&lt;/em&gt; 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.&lt;/p&gt; &lt;p&gt;Through experiments we verify that our algorithm factors polynomials of degree up to 500 within seconds.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Formalization&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The formalization is part of the &lt;a href="https://www.isa-afp.org/"&gt;Archive of Formal Proofs&lt;/a&gt; for &lt;a href="https://isabelle.in.tum.de/"&gt;Isabelle&lt;/a&gt; 2018 within the entry &lt;a href="https://www.isa-afp.org/entries/Berlekamp_Zassenhaus.html"&gt;The Factorization Algorithm of Berlekamp and Zassenhaus&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The following list documents the relationship between the paper and the formalization:&lt;/p&gt; &lt;p&gt;Section 1 Introduction&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Theorem 1 (page 2): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Factorize_Int_Poly.thy#Factorize_Int_Poly.thy-546"&gt;factorize_int_poly&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 3 Formalizing Prime Fields&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Lemma 1 (page 6): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Polynomial_Factorization/Square_Free_Factorization.thy#Square_Free_Factorization.thy-76"&gt;coprime_pderiv_imp_square_free&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 2 (page 8): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Suitable_Prime.thy#Suitable_Prime.thy-120"&gt;square_free_mod_imp_square_free&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 3 (page 8): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Poly_Mod_Finite_Field.thy#Poly_Mod_Finite_Field.thy-172"&gt;times_MP_Rel&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 4 (page 8): &lt;a href="https://isabelle.in.tum.de/repos/isabelle/file/Isabelle2018/src/HOL/Computational_Algebra/Polynomial.thy#l1388"&gt;degree_mult_eq&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 5 (page 8): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Poly_Mod_Finite_Field.thy#Poly_Mod_Finite_Field.thy-559"&gt;poly_mod_prime_type.degree_m_mult_eq&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 6 (page 8): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Poly_Mod_Finite_Field.thy#Poly_Mod_Finite_Field.thy-561"&gt;poly_mod_prime.degree_m_mult_eq&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 7 (page 10): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Arithmetic_Record_Based.thy#Arithmetic_Record_Based.thy-131"&gt;gcd_eucl_i&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 8 (page 10): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Finite_Field_Record_Based.thy#Finite_Field_Record_Based.thy-1583"&gt;finite_field_ops_integer&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 9 (page 11): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Finite_Field_Record_Based.thy#Finite_Field_Record_Based.thy-763"&gt;finite_field_ops32&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 10 (page 11): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Finite_Field_Record_Based.thy#Finite_Field_Record_Based.thy-1175"&gt;finite_field_ops64&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 11 (page 11): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Polynomial_Record_Based.thy#Polynomial_Record_Based.thy-829"&gt;euclidean_ring_ops_poly&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 12 (page 11): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Polynomial_Record_Based.thy#Polynomial_Record_Based.thy-842"&gt;poly_rel_gcd&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 13 (page 12): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Suitable_Prime.thy#Suitable_Prime.thy-54"&gt;prime_field_gen.square_free_impl(1)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 14 (page 12): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Suitable_Prime.thy#Suitable_Prime.thy-153"&gt;poly_mod_prime.square_free_impl(1)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 4 Square-Free Factorization of Integer Polynomials&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Theorem 2 (page 13): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Square_Free_Factorization_Int.thy#Square_Free_Factorization_Int.thy-595"&gt;square_free_factorization_int&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 5 Square-Free Polynomials in GF(&lt;em&gt;p&lt;/em&gt;)&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Lemma 15 (page 14): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Suitable_Prime.thy#Suitable_Prime.thy-314"&gt;suitable_prime_bz&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 6 Berlekamp&amp;#39;s Algorithm&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Theorem 3 (page 18): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Berlekamp_Type_Based.thy#Berlekamp_Type_Based.thy-3121"&gt;berlekamp_monic_factorization&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 17 (page 19): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Distinct_Degree_Factorization.thy#Distinct_Degree_Factorization.thy-680"&gt;degree_divisor1&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 17 (page 19): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Distinct_Degree_Factorization.thy#Distinct_Degree_Factorization.thy-728"&gt;degree_divisor2&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Theorem 4 (page 20): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Finite_Field_Factorization.thy#Finite_Field_Factorization.thy-120"&gt;finite_field_factorization&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Theorem 5 (page 22): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Finite_Field_Factorization_Record_Based.thy#Finite_Field_Factorization_Record_Based.thy-592"&gt;finite_field_factorization_int&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 7 Mignotte&amp;#39;s Factor Bound&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Lemma 18 (page 22): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Factor_Bound.thy#Factor_Bound.thy-272"&gt;factor_bound&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 19 (page 24): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Sqrt_Babylonian/Log_Impl.thy#Log_Impl.thy-164"&gt;log_ceiling&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 8 Hensel Lifting&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Lemma 21 (page 27): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Hensel_Lifting_Type_Based.thy#Hensel_Lifting_Type_Based.thy-652"&gt;hensel_1&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 22 (page 27): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Hensel_Lifting.thy#Hensel_Lifting.thy-729"&gt;unique_hensel_binary&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemma 23 (page 29): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Berlekamp_Hensel.thy#Berlekamp_Hensel.thy-570"&gt;hensel_lifting_unique&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 9 Reconstructing True Factors&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Theorem 6 (page 31): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Reconstruction.thy#Reconstruction.thy-879"&gt;zassenhaus_reconstruction&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Section 10 Assembled Factorization Algorithm&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Theorem 7 (page 32): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Berlekamp_Zassenhaus.thy#Berlekamp_Zassenhaus.thy-110"&gt;berlekamp_zassenhaus_factorization_irreducible&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Theorem 8 (page 32): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Factorize_Int_Poly.thy#Factorize_Int_Poly.thy-265"&gt;internal_int_poly_factorization_mem&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Theorem 8 (page 32): &lt;a href="https://bitbucket.org/isa-afp/afp-2018/src/Isabelle2018/thys/Berlekamp_Zassenhaus/Factorize_Int_Poly.thy#Factorize_Int_Poly.thy-289"&gt;internal_int_poly_factorization&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Experiments&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;One can rerun the experiments as follows:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a href="https://zenodo.org/record/2539422/files/Experiments.zip"&gt;Download and extract the attached file&lt;/a&gt;&lt;a href="https://zenodo.org/api/files/a48bcf23-3369-48bd-b60e-a02eb88ed926/formalization_and_experiments.zip"&gt;.&lt;/a&gt;&lt;/li&gt; &lt;li&gt;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.&lt;/li&gt; &lt;li&gt;Compile experiments/Code_Old/Main and experiments/Code_New/Main with -O2&lt;/li&gt; &lt;li&gt;Invoke ./experiments/Experiments/run_experiments.sh&lt;/li&gt; &lt;li&gt;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&lt;/li&gt; &lt;li&gt;To get the pdf-file, paste the output of the previous command into the first line of the Mathematica-file journal_plot.nb&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;One can also run the experiments disabling some of the optimizations by means of the files Code_New_No_{...}/Main.hs&lt;/p&gt; &lt;p&gt;In addition, the Isabelle file Generate_Code.thy generates the Haskell sources.&lt;/p&gt; &lt;p&gt;The following table contains all the experiments of Figure 1 in the article.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Polynomial &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mathematica&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Old&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;New&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_100.poly.txt"&gt;poly_100.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.478s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.194s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.085s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_101.poly.txt"&gt;poly_101.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.449s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.209s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.095s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_102.poly.txt"&gt;poly_102.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.475s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.247s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.145s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_103.poly.txt"&gt;poly_103.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.491s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.171s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.109s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_104.poly.txt"&gt;poly_104.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.479s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.131s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.096s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_105.poly.txt"&gt;poly_105.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.492s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.276s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.140s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_106.poly.txt"&gt;poly_106.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.458s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.148s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.097s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_107.poly.txt"&gt;poly_107.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.463s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.180s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.107s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_108.poly.txt"&gt;poly_108.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.472s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.216s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.122s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_109.poly.txt"&gt;poly_109.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.477s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.154s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.103s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_110.poly.txt"&gt;poly_110.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.457s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.180s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.119s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_111.poly.txt"&gt;poly_111.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.465s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.218s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.122s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_112.poly.txt"&gt;poly_112.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.487s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.217s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.132s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_113.poly.txt"&gt;poly_113.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.471s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.130s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.084s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_114.poly.txt"&gt;poly_114.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.465s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.269s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.120s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_115.poly.txt"&gt;poly_115.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.464s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.243s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.105s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_116.poly.txt"&gt;poly_116.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.457s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.269s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.122s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_117.poly.txt"&gt;poly_117.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.476s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.333s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.135s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_118.poly.txt"&gt;poly_118.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.498s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.220s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.082s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_119.poly.txt"&gt;poly_119.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.462s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.228s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.134s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_120.poly.txt"&gt;poly_120.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.449s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.318s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.109s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_121.poly.txt"&gt;poly_121.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.485s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.271s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.181s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_122.poly.txt"&gt;poly_122.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.483s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.229s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.108s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_123.poly.txt"&gt;poly_123.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.465s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.254s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.147s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_124.poly.txt"&gt;poly_124.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.495s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.278s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.158s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_125.poly.txt"&gt;poly_125.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.460s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.378s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.157s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_126.poly.txt"&gt;poly_126.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.480s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.306s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.168s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_127.poly.txt"&gt;poly_127.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.476s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.328s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.198s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_128.poly.txt"&gt;poly_128.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.492s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.272s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.144s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_129.poly.txt"&gt;poly_129.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.464s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.421s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.226s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_130.poly.txt"&gt;poly_130.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.483s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.267s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.132s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_131.poly.txt"&gt;poly_131.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.497s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.329s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.158s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_132.poly.txt"&gt;poly_132.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.471s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.482s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.241s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_133.poly.txt"&gt;poly_133.poly&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.493s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.448s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.294s&lt;br&gt; &lt;a href="http://cl-informatik.uibk.ac.at/software/ceta/experiments/factorization/experiments/poly_134.poly.txt"&gt;poly_134.poly&lt;/a&gt;&amp;nbsp</dct:description>
    <dct:accessRights rdf:resource="http://publications.europa.eu/resource/authority/access-right/PUBLIC"/>
    <dct:accessRights>
      <dct:RightsStatement rdf:about="info:eu-repo/semantics/openAccess">
        <rdfs:label>Open Access</rdfs:label>
      </dct:RightsStatement>
    </dct:accessRights>
    <dcat:distribution>
      <dcat:Distribution>
        <dct:license rdf:resource="https://creativecommons.org/licenses/by/4.0/legalcode"/>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.2539422"/>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.2539422"/>
        <dcat:byteSize>568092</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/2539422/files/Experiments.zip"/>
        <dcat:mediaType>application/zip</dcat:mediaType>
      </dcat:Distribution>
    </dcat:distribution>
  </rdf:Description>
</rdf:RDF>
474
78
views
downloads
All versions This version
Views 474199
Downloads 7830
Data volume 380.9 MB17.0 MB
Unique views 357166
Unique downloads 7129

Share

Cite as