Commit Graph

1144 Commits

Author SHA1 Message Date
russoul
ebbae42c85 Add uncons' to base; rewrite head' and tail' in terms of uncons' 2023-08-23 11:04:23 +01:00
Marshall Abrams
bdb6531b86 Add documentation for Not. 2023-08-15 20:07:21 -05:00
Steve Dunham
badf1e98c8 [ base ] Make foldr1 and foldr1By public 2023-08-07 08:10:35 +01:00
Robert Wright
3c61471da3 Erase additional PreorderReasoning arguments 2023-08-04 13:37:46 +01:00
Steve Dunham
b481994bef [ fix ] Fixes build broken by #3021 2023-08-01 08:01:12 +01:00
scarf
c7abb148e8
feat: even and odd for Nat and Integral (#3021) 2023-07-31 08:36:40 +01:00
Saransh Chopra
4fcb0fb4a7
Remove decideLTE (#3031) 2023-07-27 08:04:24 +01:00
André Videla
a39bfc6ce3
Merge branch 'main' into constant_fin 2023-07-18 23:46:07 +09:00
Steve Dunham
8d7791ba55
[ base ] Add getTermCols and getTermLines to base library and fix pri… (#3009) 2023-07-18 09:42:47 -05:00
scarf
388d217757
docs: typo in list difference documentation (#3018) 2023-07-16 10:39:36 -05:00
Katarzyna Marek
5fd5b1e732 improvement: use std lib WellFounded for Sufficient 2023-07-05 16:44:07 +01:00
CodingCellist
18e887389f
[ papers ] Port the first part of "Deferring the details [...]" by Liam O'Connor (#2974)
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2023-07-05 16:42:58 +01:00
Robert Wright
754f6af55c Add orBothFalse proof 2023-07-05 16:36:55 +01:00
Robert Wright
af3c5fd454 Generalize Prelude proof helpers 2023-07-05 16:36:09 +01:00
stefan-hoeck
c1a5be9b5b [ performance ] make Eq and Ord for Fin run in constant time 2023-07-05 15:58:41 +02:00
Denis Buzdalov
5dcf62499d
[ elab ] Make elab scripts be able to record warnings (#2999) 2023-06-19 16:34:19 +01:00
André Videla
9f20ba2609
Merge pull request #2918 from buzden/min-max-gen-for-connex
[ new ] Add generalisations of `min` and `max` for `StronglyConnex`
2023-06-16 15:27:06 +01:00
Walter Smuts
98e5615dbc Typos: change all uses of inferable to inferrable
Achieves consistency...
2023-06-08 13:45:57 +02:00
Thomas E. Hansen
009eb270c1 Revert "[ fix ] Rename Prelude.Interface NS Lazy to ILazy"
This reverts commit bd231c2076, which is a
separate thing that should be its own PR.
2023-05-30 09:46:24 +02:00
Thomas E. Hansen
bcbe2b8c4f [ fix ] Rename Prelude.Interface NS Lazy to ILazy
This is required due to `Lazy` now being a reserved compiler primitive.

N.B. This may also break other dependencies and/or tools. Notably stuff
     outwith the Idris2 upstream. There's been some discussion in #2987.
2023-05-30 09:46:24 +02:00
Denis Buzdalov
91b7aafb74 [ base ] Add generalisations of min and max for StronglyConnex 2023-05-15 19:15:36 +03:00
Aleksei Volkov
298f91cf0a
[ base ] Implemented Ord for Name, Namespace and UserName (#2973) 2023-05-15 14:45:42 +01:00
Denis Buzdalov
c285ef06dd [ re #2960 ] Move defs of closures data types to a separate module 2023-05-11 15:31:45 +01:00
Robert Wright
9bfa04921a Add symmetric and transitive closure relations 2023-05-08 11:53:21 +01:00
madman-bob
a00b7ee7ec
Public export TTImp reflection functions (#2947)
Co-authored-by: Thomas E. Hansen <teh6@st-andrews.ac.uk>
Co-authored-by: Ohad Kammar <ohad.kammar@gmail.com>
2023-05-05 10:33:32 +01:00
stefan-hoeck
bc1a51ea18 [ regression ] revert to previous implementation of Show 2023-05-02 11:23:14 +02:00
stefan-hoeck
83f5ef27b6 [ new ] Eq, Ord, Semigroup, and Monoid for All 2023-05-02 11:23:14 +02:00
Denis Buzdalov
55efd7dd7b [ new ] Add Compose instances for Bi* interfaces, analogous to present 2023-04-25 12:59:25 +01:00
Steve Dunham
9544162bc4
[ new ] Add support for bi-directional pipes on POSIX systems (resolves #2935) (#2944) 2023-04-15 09:39:17 -05:00
G. Allais
b185f1ff85
[ new ] %unsafe pragma for escape hatches (#2937) 2023-04-03 21:42:47 +01:00
Thomas E. Hansen
87ebe7d932 [ contrib ] Add modFin and strengthenMod 2023-03-31 14:18:27 +02:00
Denis Buzdalov
cf63ee2ef2 [ base ] Add extraction functions to Data.Singleton 2023-03-28 11:29:09 +01:00
Robert Wright
fb956802ab Add Elem get and lookup functions 2023-03-23 19:36:20 +00:00
Steve Dunham
081938bad8 [ base ] Add support for unbuffered stdin 2023-03-07 13:28:25 -08:00
CodingCellist
7972c6acbd
[ new ] Implement bit-rotation operators (#2903)
* [ new ] Implement bit-rotation operators

Whereas `shiftR` and `shiftL` throw bits off the edge, the `rotR` and
`rotL` operations wrap the bits around to the start of the bit-stream.

* [ test ] visualise bit patterns instead

* [ fix ] print bit patterns the right way around

---------

Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2023-03-04 14:41:54 +00:00
CodingCellist
ba24892e2f
[ new ] Couple of useful things for Vect (#2904)
Co-authored-by: Ohad Kammar <ohad.kammar@ed.ac.uk>
Co-authored-by: André Videla <andre.videla@gmail.com>
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2023-03-03 15:58:44 +00:00
Ohad Kammar
1ea1cbeede Refactor Data.Nat to use preorder reasoning to improve readability 2023-03-03 15:45:31 +00:00
rhiannon morris
20ecc02569
add Functor impl for Tokenizer (#2901) 2023-02-28 09:20:21 +00:00
G. Allais
310a8f12cd
[ new ] missing buffer primitives (#2893) 2023-02-26 17:50:52 +00:00
Katarzyna Marek
a2c82e934e
[ contrib ] Sufficient view of lists (#2841) 2023-02-22 12:13:13 +00:00
Alex1005a
a9ad1dd0cc
[ contrib ] Performance improvement gcd in Data.Nat.Factor (#2886) 2023-02-22 12:08:49 +00:00
G. Allais
dc1b5387b8
[ re #2832 ] warn about conflicting fixity declarations (#2889) 2023-02-19 16:29:10 +00:00
crisoagf
7f9db70e15
Add PreorderReasoning comforts (#2778)
* Add PreorderReasoning comforts

* Drop interface approach in favour of computation

* Update libs/base/Syntax/PreorderReasoning.idr

---------

Co-authored-by: Cristóvão Gomes Ferreira <crisoagf@melo-gibson>
Co-authored-by: Ohad Kammar <ohad.kammar@gmail.com>
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
CI integration co-authored-by: @stefan-hoeck
2023-02-17 17:47:54 +00:00
Stefan Höck
b543daf5ab
[ contrib ] move SortedMap and SortedSet to base (#2884) 2023-02-16 11:02:43 -06:00
Zoe Stafford
ff822a747b
Js char io (#2887)
* Implement `{get,put}Char` for javascript backend

* Update changelog
2023-02-13 15:48:07 +00:00
Guillaume Allais
b173267f50 [ cleanup ] now that we can assert_total on data 2023-02-08 17:42:02 +00:00
G. Allais
7c66d10eae
[ papers ] Type-based Divide & Conquer (#2860) 2023-02-08 17:19:24 +00:00
Alex1005a
f3e8970f2c
Adding new properties to Data.Nat.Order.Properties (#2879)
* Add succLeftLte function

* Refactor fuelLemma

* Removal of redundant function and rename succLeftLte to decomposeLte

* Fix the style issues
2023-02-07 07:58:41 +00:00
Stefan Höck
f6a731695d
[ new ] constructor plus trivial impl for Interpolation (#2871)
* [ new ] constructor plus trivial impl for Interpolation

* [ doc ] update CHANGELOG

* [ test ] adjust expected test output
2023-02-04 07:47:28 -06:00
Mathew Polzin
ad12f8335c
[ new ] popen/pclose for the NodeJS backend. (#2857)
* implement popen and pclose (to an extent) for NodeJS

* bring node020 back into tests.

* ah, I see what was being done here. Fix the idris for the test.

* fix test's unreachable clause warning

* fix expectation

* Add note to CHANGELOG

* small tweaks to get popen into merge-ready state.
2023-01-30 09:38:42 -06:00
Denis Buzdalov
bbe96929f1 [ minor, base ] Relax requirement of the These.bifold 2023-01-26 22:15:15 +00:00
Denis Buzdalov
f4b44ba109 [ prelude ] Make some higher-kinded functions be tc-inlined 2023-01-25 16:51:11 +00:00
Marek L
7ec96cea7f [ doc ] Remove typo from Prelude.plus doc string and
reformat doc string for `Prelude.minus`
2023-01-24 23:35:03 +00:00
Mathew Polzin
4bedaac811
[ fix ] make color output toggling simpler and also more robust. (#2848)
* make color output toggling simpler and also more robust

* don't unintentionally assert that tests are run in an environment where colors are turned on.

* Update src/Idris/Env.idr
2023-01-22 13:35:57 -06:00
G. Allais
ea4a4c0f85
[ base ] fix the definition of die (#2854) 2023-01-19 11:09:28 +00:00
Mathew Polzin
24ac56de88
Moving Data.List.HasLength into base (#2844) 2023-01-16 00:07:21 -06:00
Denis Buzdalov
936b7270ae [ prelude ] Add lacking implementation of Traversable for Pair 2023-01-09 15:56:21 +00:00
Mathew Polzin
4005b40a95
[new] Vect.Quantifiers.All QoL (#2843)
* Add Show for Vect.All

* Add an alias for HVect to Data.Vect.Quantifiers.All

* Add a few utilities for Vect.Quantifiers.All to make it more at home in listy uses.

* Add CHANGELOG entries.
2023-01-09 00:57:00 -06:00
Stefan Höck
8db12f5a49
[ performance ] improve some Char functions (#2839) 2023-01-06 09:08:38 +00:00
Zoe Stafford
ae2d4efc17 add javascript support to System.Clock
This may behave incorrectly when used with web workers
2022-12-22 11:47:44 +00:00
Zoe Stafford
18ffb852de export {to,from}Nano in System.Clock
also rename some arguments and add docs
2022-12-21 15:49:32 +00:00
Denis Buzdalov
f4ebcadfad [ base ] Add forgetting conversions of Vect.Quantifiers 2022-12-20 16:36:27 +00:00
G. Allais
2f55a3ef8a
[ fix ] elaboration of records' telescopes of parameters (#2816) 2022-12-15 17:55:50 +00:00
Denis Buzdalov
ff6afb0c59 [ minor ] Make NotBothZero parameter of standard gcd to be erased 2022-12-05 15:10:16 +00:00
Denis Buzdalov
8d7b993cca [ cleanup ] Use several library functions instead of their code 2022-12-05 15:10:16 +00:00
Denis Buzdalov
33fe3f44db [ cleanup ] Clean up existing code in the Arrow module 2022-12-05 15:10:16 +00:00
Guillaume Allais
99eda4dd2b [ papers ] fill last hole in lambda pi formalisation 2022-12-05 15:02:04 +00:00
G. Allais
85bb822f3b
[ perf ] manually eta-expand unsaturated io_bind calls (#2785) 2022-12-01 15:31:00 +00:00
G. Allais
f96c5ca596
[ papers ] LambdaPi (#2780) 2022-12-01 13:48:48 +00:00
0xd34df00d
c6a8c9e7a7 [ base ] Move the worker outside of the Vect's reverse definition 2022-11-21 10:52:47 +00:00
Tim Engler
bff18428b4 Added seqL to Control.App and updated docs to fix #2761
Also updated test real002 to use the actual Control.App from
libs/base/Control/App.idr. Before it was using a different version that
existed within its test directory, tests/idris2/real002/Control/App.idr
2022-11-21 10:39:43 +00:00
Hattori, Hiroki
5c9f8e36a1
[ RefC ] Add 16 and 32 bit access to base/Data.Buffer . (#2609)
* Fix symbom mangling

* Revert "Fix symbom mangling"

This reverts commit 6481e80155.

* Fix typo

* [RefC] Add missed prims of setBuffer* .

* [ fix ] formatting

* [ re #2609 ] Use 'UInt' instead of 'Word'

More descriptive/to the point / Less assumed knowledge.

There are no *LE suffixes for UInt8, since endianness is to do with
multiple bytes and UInt8 is a single one.

Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
Co-authored-by: Thomas E. Hansen <teh6@st-andrews.ac.uk>
2022-11-15 12:15:06 +01:00
CodingCellist
70ef197cf6
[ base ] Deprecate setByte in favour of setBits8 (#2764)
* [ base ] Deprecate setByte in favour of setBits8
           Deprecate getByte; fix Core.Binary.Prims

Along with `setByte`, the `getByte` function should similarly be
deprecated since it also assumes the value will have the given size,
rather than guaranteeing it in the type.

CI highlighted some required changes in `Core.Binary.Prims` thanks to
`-Werror`. The fix was to add some `cast` calls where the old `getByte`
and `setByte` used to be.

The RefC buffer test will need updating once we remove the functions
completely. Added a note for future peeps.
2022-11-15 10:42:07 +01:00
Robert Wright
b2c42280bb Erase Fin fromInteger upper bound 2022-11-11 15:34:58 +00:00
Guillaume Allais
8556c81014 [ new ] typed ABT 2022-11-04 16:20:46 +00:00
G. Allais
fd46e31da3
[ new ] typed Krivine (#2749) 2022-11-04 10:05:31 +00:00
stefan-hoeck
6f5b19c389 [ cleanup ] bifoldMap already in Prelude 2022-11-03 14:11:15 +00:00
G. Allais
ad817538e0
[ new ] typed SECD (#2743) 2022-11-02 12:58:13 +00:00
G. Allais
4cd38a8c5d
[ new ] deriving Show (#2741) 2022-11-02 11:57:07 +00:00
G. Allais
ee8113bb9d
[ papers ] A Completely Unique Account of Enumeration (#2659) 2022-11-01 16:31:57 +00:00
Stefan Höck
85ddafbac5
[ fix ] bump version of linear and papers packages (#2735) 2022-10-28 08:55:35 +01:00
Edwin Brady
e125c9014f
Prepare release 0.6.0 (#2733)
* Prepare release 0.6.0

* Fix bootstrap chez

* Correct version in bootstrap chez
2022-10-27 16:32:16 +01:00
Stefan Höck
57c589ca80
[ performance ] More stack safety in the Prelude (#2704) 2022-10-26 09:54:53 +01:00
Aleksei Volkov
c906720ee3
[ base ] Change Reader to fix search for MonadReader instance (#2729) 2022-10-22 19:13:52 +01:00
G. Allais
475d13bb11
[ fix ] parsing of test lib's options (#2725)
Co-authored-by: Mathew Polzin <matt.polzin@gmail.com>
2022-10-21 21:01:54 +01:00
CodingCellist
47c2de3148
[ repl ] Add the ability to get detailed help, e.g. :help :help (#2722)
A common issue for users is that the behaviour of the various repl
commands are not documented anywhere despite some of them having complex
behaviour (e.g. `:set` which accepts a specific set of options). This
implements the ability to call `:?|:h|:help` on repl commands to request
detailed help for a specific repl command, while preserving the
behaviour that calling the help command without any arguments prints the
general help text.

Generic help is defined as the first line of the help text.
Detailed help is defined as the entire help text.

This means that `:help :t`, for example, does not error (there is no
detailed help) but instead just prints the single line of help text.

* [ repl ] Use unlines for detailed help (see #2087)

  Ideally, the lines affected should be multiline strings. But for some
  arcane reason, newlines in those get swallowed in Nix and Windows
  **CI** only Ô.o
  This was already documented in issue #2087.

* [ new ] --except for golden testing lib

  To allow CI to pass despite #2087

Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2022-10-21 14:35:33 +02:00
QDelta
e0a19aa01e
[ fix #2719 ] --only behavior in Test.Golden (#2720)
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2022-10-18 12:36:09 +01:00
Denis Buzdalov
eb4cc0054b [ golden ] Make options to store more flexible tests filter 2022-10-14 15:03:05 +01:00
Denis Buzdalov
2744a3a5a2
[ golden ] Truncate long test names when printing the results (#2553) 2022-10-06 19:18:34 +01:00
Thomas E. Hansen
bdbc0c72bf Make the linter happy 2022-10-05 14:30:08 +02:00
Thomas E. Hansen
cfe18b3d01 [ papers ] A bit of tidying up and clarification 2022-10-05 14:30:08 +02:00
Thomas E. Hansen
d25db9e353 [ papers ] Add implementation of Dekker's algorithm
This completes the implementation of the examples in the paper
"Applications of Applicative Proof Search" (Liam O'Connor, 2016).
Unfortunately, the final example is an example of something that _can_
be expressed, but _cannot_ be model-checked by the approach in the
paper.

(Side note on `petersonsCorrect`: The paper mentions that it checks in
~3 minutes on a 2013 MacBook Pro. Assuming they mean "type-checks", this
is roughly consistent with our observations of just short of 2 minutes.
I doubt that they evaluated it, since an attempt at doing this on a
reasonably modern server (Intel Xeon Gold 5220R, 502 GB of RAM) was
killed after just over 3 hours, producing the following resource log:

  Command exited with non-zero status 255
  Time: 11320.46s user, 35.12s system, 3h09m46s elapsed, 99%CPU
  Memory: 57644016 Kbytes RAM

)
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
260d9ecb58 [ papers ] Comment out petersonsCorrect for performance reasons
On average across 10 runs on an Intel Core i7-8750H with 15.2GB of
available system memory (16GB installed in system), type-checking
`libs/papers/Search/GCL.idr` WITH `petersonsCorrect` takes:

  * 1 minute  48.7 seconds, consuming 3.92GB of RAM

By contrast, commenting `petersonsCorrect` out results in type-checking
taking on average (same #runs, same config):

  * 0 minutes  1.2 seconds, consuming 0.25GB of RAM

And good luck trying to evaluate the thing!
(This might be a good performance test at some point, but uh, we're not
there yet...)
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
c5b114209e [ papers ] Tidy the Peterson's Prop type
Inspired by `Search/Properties.Pythagoras.formula`, having the CSP as
its own type allows for some better docs+understanding than `Prop ? ?`.
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
d5c9253e7e [ papers ] Fix impl.n s.t. model-checking Peterson's works
Thanks to the debug info supplied by #2673, I was able to spot which
functions were blocking and `public import` the relevant files in
`papers/Search/Properties.idr`.

As a result the GCL file now type-checks, albeit extremely slowly!
I stopped an evaluation of `petersonsCorrect` at the REPL after 15
minutes and ~14GB of RAM consumed.
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
36554eb56f [ papers ] Make ops total, implement termination mc
* Currying the `ops` function makes the totality checker spot that it
  _is_ actually total.
* Instance arguments are heavily abused in the paper, along with
  implicit `open` magic, but Idris allows no such ~~luxury~~
  obfuscation, so we have to pass things explicitly.
* `decSo` is not `public export`ed, so we have to define `IsTT` by
  pattern-matching (which is fine).

Currently, it gets stuck on checking `petersonsCorrect` for some,
currently unknown, reason. (And the log output is loooooong O.O)

Once again, this would not have been possible without gallais insigths.
Many thanks!

Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
8c76118f2f [ papers ] Finish Search.CTL
* Switch to `Inf` to actually use codata/corecursion.
* Add `%hint`s to mark the interface implementations as such, despite
  use of a record for `DepthInv` (this is necessary for other stuff).
* Pass in `Oh` to `reaches10.evidence` in order for things to work.

With huge thanks to gallais for helping me put the final things in
place!

Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
0d72964f21 [ papers ] Missed some public exports 2022-10-05 14:30:08 +02:00
Thomas E. Hansen
eb4749d381 [ papers ] Figure out types, start termination check
Termination checking needs figuring out. There is some funky stuff going
on with the half-deciders and their constructors. Other than that, I
**think** it's nearly done. God knows how much RAM it'll take though...
2022-10-05 14:30:08 +02:00
Thomas E. Hansen
6421973282 [ papers ] Add mutex and starv-free properties 2022-10-05 14:30:08 +02:00