Changelog

Version 1.4.2

Build system
  • regenerated using a recent version of Autoconf

Version 1.4.1

Coq back-end
  • registered a few more theorems
Whole engine
  • fixed crash on negative literals in rewriting rules

Version 1.4.0

Syntax
  • changed precedence of unary minus, e.g., - 1 is parsed as -(1), -1*x as (-1)*x, - 1*x as -(1*x), -x*1 as -(x*1)
  • allowed ; as a separator for interval bounds, e.g., [1;2]
  • allowed p as exponent after a decimal integer, e.g., 1p2
Proof paths
  • decreased amount of pointless lemmas
Documentation
  • moved to reST
Build system
  • added support for DESTDIR during installation
Licensing
  • updated CeCILL from 2.0 to 2.1 and GPL from 2 to 3

Version 1.3.5

Whole engine
  • fixed crash on Windows 64-bit builds

Version 1.3.4

Build system
  • fixed compilation of a MinGW binary using a Cygwin toolchain

Version 1.3.3

Coq back-end
  • prepared for Flocq 3.0
Build system
  • fixed some STL debug failures

Version 1.3.2

Proof graph
  • fixed loss of information on some complicated hypotheses

Version 1.3.1

Fact database
  • improved handling of division
Proof graph
  • fixed loss of information for some case splits

Version 1.3.0

Arithmetic
  • added support for floating-point formats without minimal exponent
Proof graph
  • allowed dichotomy on variables without any known range
  • improved handling of half-bounded intervals
Proof paths
  • added heuristic for automatically selecting one variable for dichotomy
Main interface
  • added option -Eno-auto-dichotomy to disable the heuristic above
  • reduced amount of warnings in case of dichotomy failures
  • improved validity checking of rewriting rules

Version 1.2.2

Arithmetic
  • fixed incorrect error computation for negative inputs of float<zr>

Version 1.2.1

Proof graph
  • sped up simplification of large proofs
Coq back-end
  • fixed garbled generation of some theorem calls

Version 1.2.0

Fact database
  • improved handling of powers of two in mul_flt
  • fixed incorrect computation of the order-3 term of the relative error for division
  • added rewriting rules for emulating reverse propagation
Proof graph
  • improved proof simplification
Proof paths
  • improved performances by avoiding some absolute values
  • improved detection of approximate/exact pairs of expressions

Version 1.1.2

Back-ends
  • fixed missing proof parts with the LaTeX back-end
Main interface
  • fixed confusing message in case of failure

Version 1.1.1

Arithmetic
  • fixed incorrect error computation for some uncommon bound values
Back-ends
  • fixed crash on useless leaves with undefined properties

Version 1.1.0

Proof graph
  • added detection and avoidance of slow convergence
Main interface
  • added option -Echange-threshold to control detection of slow convergence

Version 1.0.0

Syntax
  • recognized e <> 0 for inputting NZR properties
Fact database
  • added some new theorems for NZR
Back-ends
  • added a back-end producing LaTeX files
  • disabled HOL Light back-end as it was not used
  • enabled automatic dichotomy and formula reduction
Proof graph
  • allowed arbitrary formulas as output of nodes
Main interface
  • removed option -Msequent as formulas are handled as a whole now

Version 0.18.0

Main interface
  • removed option -Mexpensive
  • added more details to -Mstatistics
Proof graph
  • improved performances
  • improved proof simplification
Coq back-end
  • fixed incorrect theorem name for square root

Version 0.17.1

Build system
  • fixed issues with MacOSX, BSD, and compilation flags

Version 0.17.0

Build system
  • switched to remake
Fact database
  • added theorems relating the ranges of two expressions, given the relative error between them
  • simplified squaring
Proof graph
  • allowed logic simplifications, even in case of indeterminate intervals
Documentation
  • added list of theorems

Version 0.16.6

Coq lambda back-end
  • fixed crash on goals that are trivial implications

Version 0.16.5

Arithmetic
  • fixed incorrect round-off error for values close to zero

Version 0.16.4

Proof graph
  • fixed crash when dichotomy fails to prove properties other than BND

Version 0.16.3

Proof graph
  • fixed crash when performing dichotomy while there are properties other than BND

Version 0.16.2

Coq lambda back-end
  • fixed incorrect certificate for intersection lemmas

Version 0.16.1

Proof graph
  • fixed segfault when splitting cases on a degenerate goal
  • reenabled logic reasoning for ABS and REL predicates
Coq lambda back-end
  • fixed signature of theorem mul_firs

Version 0.16.0

Coq lambda back-end
  • fixed syntax of proofs containing no variables
  • fixed typing of some floating-point constants
  • fixed signature of theorems rel_refl, div_fil, div_fir
Coq script back-end
  • fixed typing of some floating-point constants
  • fixed syntax for Coq support library 0.17
Fact database
  • added support for proving equalities between constants
  • changed fixed_of_fix so that it produces an EQL property

Version 0.15.1

Fact database
  • fixed broken simplification of a*b -/ c*b

Version 0.15.0

Fact database
  • added EQL predicate: e1 = e2
  • changed user rewriting to use the EQL predicate
  • improved rewriting rules to handle ABS, FIX, FLT, NZR, REL in addition to BND predicate
Syntax
  • added @FLT(e,k) and @FIX(e,k) for inputting FLT and FIX properties
  • added e1 = e2 for inputting EQL properties
  • allowed arbitrary logical propositions as termination condition for bisection

Version 0.14.1

Build system
  • fixed some platform-specific issues

Version 0.14.0

Coq back-end
  • added support for Coq support library 0.14

Version 0.13.0

Coq lambda back-end
  • simplified generated proofs
Proof graph
  • disabled sequent generation
  • disabled proof tracking for the null back-end
  • improved handling of deep logic negations
  • handled disjunctions by dichotomies (null back-end only)
Main interface
  • removed option -Monly-failure since there is only one proposition
Documentation
  • switched from jade to dblatex

Version 0.12.3

Coq lambda back-end
  • fixed incorrect invocation of some theorems
Arithmetic
  • fixed incorrect proofs for floating-point error near powers of two

Version 0.12.2

Back-ends
  • fixed output of underspecified REL goals

Version 0.12.1

Proof graph
  • fixed sequents with empty goals not being recognized as proved
Main interface
  • added option -Msequent to display goals as Gappa scripts
  • added option -Monly-failure to limit output to failing goals
  • improved display of extremely small/big bounds
  • improved display of rounding operators
Proof paths
  • fixed inequalities (lower bound) on absolute values being ignored
Arithmetic
  • improved relative operators handling when exponents are not constrained

Version 0.12.0

Back-ends
  • added back-end for producing Coq lambda terms (support is limited to what the Coq tactic can handle)
Proof graph
  • fixed handling of complicated goals
Main interface
  • added output of failed subgoals

Version 0.11.3

Coq back-end
  • applied correct theorems for intervals with infinite bounds

Version 0.11.2

Parser
  • fixed handling of CRLF end of line

Version 0.11.1

Main interface
  • removed error code on options --help and --version

Version 0.11.0

Proof graph
  • avoided splitting provably-singleton intervals
  • added score system for favoring successful schemes
Arithmetic
  • tightened rounding error when applied to short values
Proof paths
  • recognized lhs of user rewriting as potential user approximate
Syntax
  • added x -/ y in ... and |x -/ y| <= ... for REL properties
Build system
  • fixed compilation on Cygwin

Version 0.10.0

Proof graph
  • avoided infinite dichotomy on some unprovable propositions
Back-ends
  • fixed generation of subset facts
Fact database
  • reduced cycles in theorems
Main interface
  • added -Mschemes option for generating .dot scheme graphs
  • allowed input filename on command line

Version 0.9.0

Syntax
  • added constraints on user rewriting, e.g., x -> 1/(1/x) { x <> 0 }
Whole engine
  • added detection of assumed facts in -Munconstrained mode
Fact database
  • added relative error propagation through division
Back-ends
  • fixed cache collisions between theorems
Proof graph
  • fixed intersection of relative errors
  • enabled bound simplification through rewriting rules
  • fixed handling of half-bounded goals

Version 0.8.0

HOL Light back-end
  • added new back-end
Proof graph
  • added option -Mexpensive to select best paths on length
Fact database
  • added predicate REL: x = y * (1 + e)
  • replaced rewriting rules on relative error by computations on REL
  • enhanced path finder to fill holes in theorems
  • put back rewriting rules to theorem level
  • fixed incorrect equality of variables
  • added predicate NZR: x <> 0
  • added propagation of FIX and FLT through rounding operators

Version 0.7.3

Fact database
  • generalized rounding theorems to any combination of errors and predicates
Whole engine
  • removed dependencies between sequents
Parser
  • removed automatic rounding of negated expressions
  • equated numbers with exponent zero but different radices
  • fixed grammar for multiple splits
Proof graph
  • improved quality of fixed split

Version 0.7.2

Parser
  • fixed incorrectly rounded intervals on input
Fact database
  • restricted domain of some rewriting rules

Version 0.7.1

Fact database
  • added error propagation through opposite, division, and square root
Coq back-end
  • fixed confusion between nodes from different proof graphs
  • optimized away trivial goal nodes

Version 0.7.0

Coq back-end
  • updated to support Gappa library version 0.1
Proof graph
  • added optimization pass for bound precision
Whole engine
  • simplified back-end handling

Version 0.6.5

Coq back-end
  • fixed square root generation
Fact database
  • disabled square root of negative numbers
Syntax
  • added fma(a,b,c) as a synonym for a*b+c
Arithmetic
  • added fma_rel
Main interface
  • added -Ereverted-fma option to change the meaning of fma(a,b,c) to c+a*b

Version 0.6.4

Arithmetic
  • fixed influence zone again for floating-point absolute error

Version 0.6.3

Proof graph
  • fixed failure when an inequality leads to a contradiction
  • added support for intersecting ABS predicates
Hint parser
  • added detection of useless hints
Parser
  • normalized numbers with fractional part ending by zero

Version 0.6.2

Fact database
  • fixed dependencies of rewriting rules relying on non-zero values; a race could lead to failed theorems
  • added formulas to compute the relative error of a sum
Arithmetic
  • added new directed rounding: to odd, away from zero
  • added new rounding to nearest with tie breaking: to odd, to zero, away from zero, up, down
  • fixed influence zone for floating-point absolute error

Version 0.6.1

Proof paths
  • improved detection of dead paths
Fact database
  • fixed patterns for generalized rounding operators
  • improved rewriting rules for approx/accurate pairs
  • renamed rewriting rules

Version 0.6.0

Syntax
  • added ways of specifying how interval splitting is done
  • added detection of badly-formed intervals in propositions
  • removed limitation on multiple hypotheses about the same expression
  • improved heuristic for detecting approx/accurate pairs
  • removed limitation on number of accurate expressions for a given approximate
  • removed hack for accurate expressions of rounded expressions (potentially disruptive)
Whole engine
  • added inequalities; as hypotheses, they cannot imply theorems but they can restrict computed ranges
Proof paths
  • put rewriting schemes to a higher level to remove constraints on approx/accurate pairs
  • added rewriting rules for replacing an accurate expression by an approximate and an error

Version 0.5.6

Fact database
  • cleaned theorems and removed redundant ones
Arithmetic
  • enabled test to zero with relative rounding; it can still be disabled by -Munconstrained
Coq back-end
  • improved script generation
Proof graph
  • fixed premature halt when a case split was a failure
  • fixed case split not noticing newly discovered bounds
Main interface
  • simplified display of hypotheses and sorted display of goals

Version 0.5.5

Whole engine
  • added square root (no rule checking though)
  • modified rewriting rules to apply to approximates instead of just rounded values
  • added ABS predicate to workaround abuse of absolute values in theorems
Syntax
  • added syntax to define user approximates
Fact database
  • added option to disable constraint checking around zero
Arithmetic
  • generalized fixed-point range enforcing to any expression
Proof paths
  • enhanced the detection of dead paths that contain cycles

Version 0.5.4

Syntax
  • reduced the number of false-positive for unbound identifiers
  • merged variables and functions anew in order to correctly detect define-after-uses errors
Proof graph
  • added fifo processing of proof schemes
  • handled case splitting on empty goals
  • added more general schemes for case splitting
Hint parser
  • shut up warning messages about trivial integers as denominator

Version 0.5.3

Proof graph
  • fixed goal removal: undefined goals require “optimal” solutions

Version 0.5.2

Proof graph
  • simplified node memory handling
  • simplified graph handling
  • put dichotomy at a higher level, outside of proof schemes
  • replaced hypothesis property vectors by bit vectors, stored in-place if possible
Syntax
  • added detection of unbound identifiers
Whole engine
  • added support for complex logical properties

Version 0.5.1

Whole engine
  • added FIX and FLT predicates in addition to the original BND predicate

Version 0.5.0

Whole engine
  • generalized rounding modes as functions
  • generalized functions with rounding theorems
  • removed default rounding theorems
Syntax
  • split variables and functions
  • simplified rounding and function syntax: purely C++-template-like syntax
  • added NOT and OR logical operators
Arithmetic
  • replaced relative rounding by functions
  • factored number rounding handling
  • added fixed-point arithmetic
  • generalized floating-point rounding modes to any triplet (precision, subnormal smallest exponent, direction)
Proof graph
  • reduced the number of node types by demoting theorem and axiom nodes to internal facts

Version 0.4.12

Syntax
  • added a way to define new names for rounding operators
  • simplified the handling of negative numbers
Coq back-end
  • fixed representation of relative rounding

Version 0.4.11

Proof graph
  • fixed a missing dependency cleanup for an owned union node
Main interface
  • added parsing of embedded options

Version 0.4.10

Proof graph
  • changed the node hypotheses to be graph hypotheses
Fact database
  • switched some other facts to the absolute value of the denominators
  • added an explicit exclusion pattern for the rewriting rules (e.g., x * x is no more excluded)
Main interface
  • added basic command-line parsing for warnings and parameters

Version 0.4.9

Numbers and arithmetic
  • separated number handling from special arithmetic
  • added relative, a format for handling varying precision rounding
Formulas
  • implemented absolute value
Fact database
  • made relative error depends on absolute value of the range
Proof graph
  • fixed a bug related to the clean-up of the last graph of a dichotomy
  • strengthened the role of modus nodes

Version 0.4.8

Fact database
  • tightened intervals for a + b + a * b
  • discarded multiple occurrences of the same term in the rewriting rules
  • cleaned up rewriting rules

Version 0.4.7

Hint parser
  • sped up verification

Version 0.4.6

Floating-point numbers
  • disabled relative error for subnormal numbers (potentially disruptive)
Homogen numbers
  • cleaned up
  • added non-homogen double rounded format
Hint parser
  • added pseudo-support for quotient in hint
Parser
  • added support for C99 hexadecimal floating-point format
Proof graph
  • replaced useless empty intersections by contradiction proofs

Version 0.4.5

Proof graph
  • reworked modus ponens creation to fix an assertion failure in lemma invocation
Fact database
  • added conditional rules (potentially disruptive)
Homogen numbers
  • split roundings between initialization and computation
Coq back-end
  • implemented union