1. 16 Mar, 2019 1 commit
    • Jakob Botsch Nielsen's avatar
      More efficient list encoding for Countable · 9b209c98
      Jakob Botsch Nielsen authored
      This changes the encoding used for finite lists of values of countable
      types to be linear instead of exponential. The encoding works by
      duplicating bits of each element so that 0 -> 00 and 1 -> 11, and then
      separating each element with 10. The top 1-bits are not kept since we
      know a 10 is starting a new element which ends with a 1.
      
      Fix #28
      9b209c98
  2. 15 Mar, 2019 5 commits
  3. 14 Mar, 2019 6 commits
  4. 06 Mar, 2019 1 commit
  5. 04 Mar, 2019 1 commit
  6. 03 Mar, 2019 3 commits
    • Robbert's avatar
      Merge branch 'robbert/infinite' into 'master' · 7b80dd85
      Robbert authored
      Overhaul of the `Infinite`/`Fresh` infrastructure
      
      See merge request !58
      7b80dd85
    • Robbert Krebbers's avatar
    • Robbert Krebbers's avatar
      Overhaul of the `Infinite`/`Fresh` infrastructure. · 3184ef61
      Robbert Krebbers authored
      - The class `Infinite A` is now defined as having a function
        `fresh : list A → A`, that given a list `xs`, gives an element `x ∉ xs`.
      - For most types this `fresh` function has a sensible computable behavior,
        for example:
        + For numbers, it yields one added to the maximal element in `xs`.
        + For strings, it yields the first string representation of a number that is
          not in `xs`.
      - For any type `C` of finite sets with elements of infinite type `A`, we lift
        the fresh function to `C → A`.
      
      As a consequence:
      
      - It is now possible to pick fresh elements from _any_ finite set and from
        _any_ list with elements of an infinite type. Before it was only possible
        for specific finite sets, e.g. `gset`, `pset`, ...
      - It makes the code more uniform. There was a lot of overlap between having a
        `Fresh` and an `Infinite` instance. This got unified.
      3184ef61
  7. 01 Mar, 2019 4 commits
  8. 28 Feb, 2019 2 commits
  9. 23 Feb, 2019 4 commits
  10. 22 Feb, 2019 1 commit
  11. 21 Feb, 2019 10 commits
  12. 20 Feb, 2019 2 commits