Commit Graph

11 Commits

Author SHA1 Message Date
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
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
Thomas E. Hansen
5742afe3a5 [ papers ] Set the stage for mc-ing Peterson's alg 2022-10-05 14:30:08 +02:00
Thomas E. Hansen
5f48fbe857 [ papers ] Add derived GCL control structures 2022-10-05 14:30:08 +02:00
Thomas E. Hansen
92ed8607e3 [ papers ] Start implementing GCL
I am upset about the amount of computation done in that view...
2022-10-05 14:30:08 +02:00