lean4
tlaplus
Our great sponsors
lean4 | tlaplus | |
---|---|---|
53 | 38 | |
3,739 | 2,208 | |
5.3% | 1.5% | |
9.9 | 9.1 | |
2 days ago | 3 days ago | |
Lean | Java | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lean4
-
Dafny is a verification-aware programming language
Recently replaced by Lean, though.
https://github.com/cedar-policy/cedar-spec
https://lean-lang.org
- The Mechanics of Proof
- Natural Deduction in Logic (2015)
-
The Wizardry Frontier
Nice read! Rust has pushed, and will continue to push, the limits of practical, bare metal, memory safe languages. And it's interesting to think about what's next, maybe eventually there will be some form of practical theorem proving "for the masses". Lean 4 looks great and has potential, but it's still mostly a language for mathematicians. There has been some research on AI constructed proofs, which could be the best of both worlds because then the type checker can verify that the AI generated code/proof is indeed correct. Tools like Kani are also a step forward in program correctness.
-
Lean4 helped Terence Tao discover a small bug in his recent paper
Yeah, I believe they said intend for it to be used as a general purpose programming language. I used it to complete Advent of Code last year.
There are some really interesting features for general purpose programming in there. For example: you can code updates to arrays in a functional style (change a value, get a new array back), but if the refcount is 1, it updates in place. This works for inductive types and structures, too. So I was able to efficiently use C-style arrays (O(1) update/lookup) while writing functional code. (paper: https://arxiv.org/abs/1908.05647 )
Another interesting feature is that the "do" blocks include mutable variables and for loops (with continue / break / return), that gets compiled down to monad operations. (paper: https://dl.acm.org/doi/10.1145/3547640 )
And I'm impressed that you can add to the syntax of the language, in the same way that the language is implemented, and then use that syntax in the next line of code. (paper: https://lmcs.episciences.org/9362/pdf ). There is an example in the source repository that adds and then uses a JSX-like syntax. (https://github.com/leanprover/lean4/blob/master/tests/playgr... )
- A Linguagem Lua completa 30 anos!
- Lean 4.0
- Lean 4.0.0, first official lean4 release
-
Looking to start a new community for people who want to use code for everything
My latest inspiration to use code to a) replace my video editor, b) learn the basics of EDM production and c) understand a few topics in higher maths. This might sound very strange given there are specialised tools for these jobs. There's iMovie / Adobe Premier for video, there's GarageBand and FL studio for music and old good pen and pencil for math proofs. But these tools have three big limitations. First they have a lot of idiosyncratic learning, you have to spend quite some time getting used to these tools and my experience is that this time is quite upsetting. In contrast, you only have to learn to code one, maybe spend a few hours getting used to the syntax of another language. I'm not sure if that's true for most people but it was true for me using the tools mentioned above and wanted a place to discuss and see other people ideas and experiments. The second issue is that all these custom-made tools, are not composing easily. I can't search for all math proofs that used a single theorem. I can't create a plugin for iMovie and apply it to all my videos. I can't pick easily pick a rhythm from the internet and build upon for fun. There's also the issue of costs and version control, all tools I'm using today are open source and my work is stored in my repositories. This way I can create branches and test my ideas and I'm also confident that I can work in these projects in years.
-
In Which I Claim Rich Hickey Is Wrong
Dafny and Whiley are two examples with explicit verification support. Idris and other dependently typed languages should all be rich enough to express the required predicate but might not necessarily be able to accept a reasonable implementation as proof. Isabelle, Lean, Coq, and other theorem provers definitely can express the capability but aren't going to churn out much in the way of executable programs; they're more useful to guide an implementation in a more practical functional language but then the proof is separated from the implementation, and you could also use tools like TLA+.
https://dafny.org/
https://whiley.org/
https://www.idris-lang.org/
https://isabelle.in.tum.de/
https://leanprover.github.io/
https://coq.inria.fr/
http://lamport.azurewebsites.net/tla/tla.html
tlaplus
- Ask HN: Usefulness of formal verification (Coq) and formal verification (TLA+)?
-
Quint: A specification language based on the temporal logic of actions (TLA)
```
https://github.com/tlaplus/tlaplus/blob/master/tlatools/org....
In any case, our whole team thinks TLA is great, and we're happy people like you and Ron find it so useful and insightful. We also think it is a very insightful.
-
Concurrent Data-structure Design Walk-Through
There are no tests! There are various ways to test concurrent data structures. You could use a stress test, where you spawn a lot of threads and let them mutate the map in a random way and then check the consistency of the map and some invariants. You could learn TLA+ and write a formal model of the map and then verify it.
-
In Which I Claim Rich Hickey Is Wrong
Dafny and Whiley are two examples with explicit verification support. Idris and other dependently typed languages should all be rich enough to express the required predicate but might not necessarily be able to accept a reasonable implementation as proof. Isabelle, Lean, Coq, and other theorem provers definitely can express the capability but aren't going to churn out much in the way of executable programs; they're more useful to guide an implementation in a more practical functional language but then the proof is separated from the implementation, and you could also use tools like TLA+.
https://dafny.org/
https://whiley.org/
https://www.idris-lang.org/
https://isabelle.in.tum.de/
https://leanprover.github.io/
https://coq.inria.fr/
http://lamport.azurewebsites.net/tla/tla.html
-
Programming Languages Going Above and Beyond
I wish something like Lamport's TLA+ (https://lamport.azurewebsites.net/tla/tla.html) was supported in modern language compilers - perhaps with annotations/macros and a mini formal DSL.
- Ask HN: How you understand TLA+ and how you use TLA+ in your projects?
-
A collection of lock-free data structures written in standard C++11
Checking the invariant with assert is also useful in my limited experience with concurrency.
https://lamport.azurewebsites.net/tla/tla.html
- Ask HN: Is writing a math proof like programming without ever running your code?
-
What I've Learned About Formal Methods in Half a Year
One advantage of formal methods is in determining "what was expected" (including all the goofy edge cases) without having to burrow into the details of code.
Take a look at Alloy (http://alloytools.org/) and TLA+ (https://lamport.azurewebsites.net/tla/tla.html) for example. (Or even the ancient Z ("Zed") notation (https://www.cs.cmu.edu/~15819/zedbook.pdf)).
-
How do I get the set of process identifier of PlusCal?
The pcal generator does *not* generate a definition for the set of labels. However, some users have suggested to add such a feature: https://github.com/tlaplus/tlaplus/issues/613
What are some alternatives?
z3_tutorial - Jupyter notebooks for tutorial on the Z3 SMT solver
dafny - Dafny is a verification-aware programming language
coq - Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs.
Agda - Agda is a dependently typed programming language / interactive theorem prover.
apalache - APALACHE: symbolic model checker for TLA+ and Quint
ATS-Postiats - ATS2: Unleashing the Potentials of Types and Templates
stateright - A model checker for implementing distributed systems.
ts-sql - A SQL database implemented purely in TypeScript type annotations.
awesome-programming-languages - The list of an awesome programming languages that you might be interested in
roc - A fast, friendly, functional language. Work in progress!
adventofcode - Advent of Code solutions of 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 and 2023 in Scala