Changelog of @hackage/code-conjure 0.5.14

Changelog for (Code) Conjure

v0.5.14 (February 2024)

  • improve commutative pruning, slightly faster Conjure
  • add carryOn, rewriting, requireDescent, adHocRedundancy switches to the Args record
  • add more benchmarks and tests

v0.5.12 (February 2024)

  • bump Speculate requirement to v0.4.20
  • improve testing of Conjure itself
  • improvements and fixes of Conjure's benchmarks

v0.5.10 (February 2024)

  • improve pruning of candidate functions;
  • Conjure: un-export experimental equalModuloTesting
  • Conjure.Conjurable: add conjureListFor, conjureSizeFor & conjureGrounds;
  • Reorganize internal modules
  • Add Conjure.Defn.Redundancy module for redundant candidates;
  • Add Conjure.Defn.Test module testing candidate definitions;
  • Add Conjure.Reason module for term-rewriting-based reasoning;
  • Add Conjure.Red module for recursive descent;
  • Conjure.Expr: add a few auxiliary functions
  • Move functions out of Conjure.Engine into new modules
  • add more examples and benchmarks;
  • improved testing of Conjure itself;
  • and several other improvements and fixes.

v0.5.8 (January 2024)

  • prune redundant mutants using a few new rules
  • rework numeric recursion criteria
  • improve pretty-printing
  • improve error handling
  • refactor and lint throughout
  • Conjurable tuples up to 12-tuples
  • bump Express requirement to v1.0.14 (bugfix)

v0.5.6 (November 2023)

  • Conjure module: no main API changes
  • Conjure.Engine: add equalModuloTesting
  • Conjure.Utils: add some misc functions
  • add bench/redundants that reports groups of redundant candidates

v0.5.4 (November 2023)

This has been the "dev" version after v0.5.2 for almost a couple of years:

  • report invalid theories-from-testing
  • weed-out some redundant candidates:
    • add and use isRedundantDefn
    • update how deconstructions are handled
  • add (but not use) conjureSize to Conjurable

v0.5.2 (March 2022)

  • show number of tested candidates
  • complete Conjurable derivation functions
  • reference related work on README
  • add switch to unique-modulo-testing candidates (slow) to allow computing the near upper/lower limit on pruning

v0.5.0 (September 2021)

  • allow synthesizing/conjuring from properties with conjureFromSpec;
  • complete Haddock documentation;
  • remove several unused functions;
  • add stub conjurableDerive functions;
  • Makefile: add targets to run GPS(2) and TerpreT benches.

v0.4.4 (September 2021)

  • remove need for explicit deconstructions:
    • use - and 1 instead of dec;
    • allow mod and div as deconstructions;
  • bump Express requirement to v1.0.6 (bugfix);
  • complete the GPS1 benchmark;
  • add GPS2 and TerpreT benchmarks;
  • minor fixes in the README.

v0.4.2 (August 2021)

  • default to using top-level patterns on generated functions;
  • memoize function evaluation;
  • double-check theory at the end and report warning on incorrect properties;
  • add prif to Conjure;
  • simplify deconstructor discovery and add conjureSize to Conjurable;
  • add cevaluate, ceval and cvl to Conjure.Conjurable;
  • add bench/gps and bench/lowtests;
  • improve tests and benchmarks.

v0.4.0 (July 2021)

  • background primitives are now provided with pr and prim.
  • report number of rules used in pruning
  • require Express v1.0.4 and Speculate v0.4.12
  • allow .. notation
  • add benchmarks, replicate, subset, p12, p30 and candidates
  • add and use the Defn type and conjureDefns
  • minor changes in benchmarks
  • cleanup unused code

v0.3.6 (June 2021)

  • add switch for descending recursions to allow generation of gcd
  • refactor recursion generation (replace a hole later)
  • change conjpureWith to take Args
  • rename two args fields to maxBodyRecursions and maxEvalRecursions at this point, the old names were misnomers.

v0.3.4 (June 2021)

  • reallow recursions under && and || (simplifies the generated or, and, set and elem functions)
  • only require deconstructions on a non-empty subset of arguments (allows fib01 to be produced)
  • limit number of terminal evaluations in recursiveToDynamic
  • fix bug in recursiveToDynamic (not counting some recursions)
  • add 4 new benchmarks: count, gcd, tree and setelem

v0.3.2 (June 2021)

  • significant runtime reduction in several benchmarks, e.g.:
    • take is now reachable in about 5 seconds
  • improved candidate generation:
    • faster runtime
    • fewer redundant/invalid candidates
  • limit recursive calls to use deconstructors
    • test to find deconstructors automatically
  • improve recursion evaluation method (revaluate replaces recursexpr)
  • add fibonacci benchmark
  • minor:
    • record runtimes with one decimal place instead of two
    • add longshot benchmark
    • add intercalate to the list benchmark
    • add stub Conjure.Constructors module

v0.3.0 (May 2021)

  • only automatically include an if for the return type of the given function
  • add the take-drop benchmark
  • make bottom-up enumeration more type directed

v0.2.8 (May 2021)

  • export the A, B, C, D, E and F helper types

v0.2.6 (May 2021)

  • require Express v0.1.10 due to hasHole being now exported there
  • require Eq result on conjure1, conjure2 and conjure3
  • code cleanup and more tests

v0.2.4 (May 2021)

  • allow conjuring from specifications in addition to partial definitions (conjure1, conjure2, conjure3 and related functions)
  • improve examples
  • improve criteria for automatic primitive inclusion:
    • only include if :: ... -> Bool if there are Bool primitives
    • include False and True automatically only on Speculate's background
  • add code-optional candidate nubbing and debug functions

v0.2.2 (May 2021)

  • by default, search for 60 argument combinations among 100000 enumerated combinations

v0.2.0 (May 2021)

  • search until 100% match is found and exit
  • other misc changes

v0.1.2 (April 2021)

For the changelog of earlier versions, check the git commit history.