<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coq/test-suite/arithmetic, branch master</title>
<subtitle>The formal proof system</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/'/>
<entry>
<title>Turn various anomalies into regular errors in primitive declaration path</title>
<updated>2020-07-21T13:26:01+00:00</updated>
<author>
<name>Gaëtan Gilbert</name>
</author>
<published>2020-07-09T13:55:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=7461fe4f55ad9ee7c55c9b060e74a49d173b4ce7'/>
<id>7461fe4f55ad9ee7c55c9b060e74a49d173b4ce7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add tests for primitive floats</title>
<updated>2019-11-01T09:20:15+00:00</updated>
<author>
<name>Guillaume Bertholon</name>
</author>
<published>2018-07-16T11:30:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=1b0bd3a9e3a913a4928b68546a134a1a4448f9e8'/>
<id>1b0bd3a9e3a913a4928b68546a134a1a4448f9e8</id>
<content type='text'>
Add utility ldexp and frexp functions to prevent dealing with the shift of
ldshiftexp and frshiftexp everywhere.

Also move primitive integer tests to place all primitive tests in the
same directory.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add utility ldexp and frexp functions to prevent dealing with the shift of
ldshiftexp and frshiftexp everywhere.

Also move primitive integer tests to place all primitive tests in the
same directory.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use the precondition of diveucl_21 to avoid massaging the dividend.</title>
<updated>2019-07-29T19:36:35+00:00</updated>
<author>
<name>Guillaume Melquiond</name>
</author>
<published>2019-07-29T19:24:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=654254ca2e6ac94d3e0c62a127f92caff4b5938c'/>
<id>654254ca2e6ac94d3e0c62a127f92caff4b5938c</id>
<content type='text'>
All the implementations now return (0, 0) when the dividend is so large
that the quotient would overflow.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All the implementations now return (0, 0) when the dividend is so large
that the quotient would overflow.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add test from #10551.</title>
<updated>2019-07-29T19:30:59+00:00</updated>
<author>
<name>Guillaume Melquiond</name>
</author>
<published>2019-07-23T15:54:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=e51f2c020c09445def41264c65da695b02e0e9ce'/>
<id>e51f2c020c09445def41264c65da695b02e0e9ce</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[primitive integers] Make div21 implems consistent with its specification</title>
<updated>2019-05-03T14:12:06+00:00</updated>
<author>
<name>Pierre Roux</name>
</author>
<published>2019-05-02T06:16:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=dd60b4a292b870e08c23ddcb363630cbb2ed1227'/>
<id>dd60b4a292b870e08c23ddcb363630cbb2ed1227</id>
<content type='text'>
There are three implementations of this primitive:
* one in OCaml on 63 bits integer in kernel/uint63_amd64.ml
* one in OCaml on Int64 in kernel/uint63_x86.ml
* one in C on unsigned 64 bit integers in kernel/byterun/coq_uint63_native.h
Its specification is the axiom `diveucl_21_spec` in
theories/Numbers/Cyclic/Int63/Int63.v

* comment the implementations with loop invariants to enable an easy
  pen&amp;paper proof of correctness (note to reviewers: the one in
  uint63_amd64.ml might be the easiest to read)
* make sure the three implementations are equivalent
* fix the specification in Int63.v
  (only the lowest part of the result is actually returned)
* make a little optimisation in div21 enabled by the proof of correctness
  (cmp is computed at the end of the first loop rather than at the beginning,
   potentially saving one loop iteration while remaining correct)
* update the proofs in Int63.v and Cyclic63.v to take into account the
  new specifiation of div21
* add a test
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are three implementations of this primitive:
* one in OCaml on 63 bits integer in kernel/uint63_amd64.ml
* one in OCaml on Int64 in kernel/uint63_x86.ml
* one in C on unsigned 64 bit integers in kernel/byterun/coq_uint63_native.h
Its specification is the axiom `diveucl_21_spec` in
theories/Numbers/Cyclic/Int63/Int63.v

* comment the implementations with loop invariants to enable an easy
  pen&amp;paper proof of correctness (note to reviewers: the one in
  uint63_amd64.ml might be the easiest to read)
* make sure the three implementations are equivalent
* fix the specification in Int63.v
  (only the lowest part of the result is actually returned)
* make a little optimisation in div21 enabled by the proof of correctness
  (cmp is computed at the end of the first loop rather than at the beginning,
   potentially saving one loop iteration while remaining correct)
* update the proofs in Int63.v and Cyclic63.v to take into account the
  new specifiation of div21
* add a test
</pre>
</div>
</content>
</entry>
<entry>
<title>Primitive integers</title>
<updated>2019-02-04T13:12:40+00:00</updated>
<author>
<name>Maxime Dénès</name>
</author>
<published>2018-02-16T00:02:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=e43b1768d0f8399f426b92f4dfe31955daceb1a4'/>
<id>e43b1768d0f8399f426b92f4dfe31955daceb1a4</id>
<content type='text'>
This work makes it possible to take advantage of a compact
representation for integers in the entire system, as opposed to only
in some reduction machines. It is useful for heavily computational
applications, where even constructing terms is not possible without such
a representation.

Concretely, it replaces part of the retroknowledge machinery with
a primitive construction for integers in terms, and introduces a kind of
FFI which maps constants to operators (on integers). Properties of these
operators are expressed as explicit axioms, whereas they were hidden in
the retroknowledge-based approach.

This has been presented at the Coq workshop and some Coq Working Groups,
and has been used by various groups for STM trace checking,
computational analysis, etc.

Contributions by Guillaume Bertholon and Pierre Roux &lt;Pierre.Roux@onera.fr&gt;

Co-authored-by: Benjamin Grégoire &lt;Benjamin.Gregoire@inria.fr&gt;
Co-authored-by: Vincent Laporte &lt;Vincent.Laporte@fondation-inria.fr&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This work makes it possible to take advantage of a compact
representation for integers in the entire system, as opposed to only
in some reduction machines. It is useful for heavily computational
applications, where even constructing terms is not possible without such
a representation.

Concretely, it replaces part of the retroknowledge machinery with
a primitive construction for integers in terms, and introduces a kind of
FFI which maps constants to operators (on integers). Properties of these
operators are expressed as explicit axioms, whereas they were hidden in
the retroknowledge-based approach.

This has been presented at the Coq workshop and some Coq Working Groups,
and has been used by various groups for STM trace checking,
computational analysis, etc.

Contributions by Guillaume Bertholon and Pierre Roux &lt;Pierre.Roux@onera.fr&gt;

Co-authored-by: Benjamin Grégoire &lt;Benjamin.Gregoire@inria.fr&gt;
Co-authored-by: Vincent Laporte &lt;Vincent.Laporte@fondation-inria.fr&gt;
</pre>
</div>
</content>
</entry>
</feed>
