ascent
ascent copied to clipboard
logic programming in Rust
If I understand correctly, ascent is't a 'differential datalog'-style implementation, but is optimized for batch processing. The API does however allow .run() to be called multiple times, so users will...
The project's current code formatting suffers from a couple of issues, affect: tl;dr: For the sake of making contributions hassle-free it would arguably be preferable to revert to Rust's default...
Fixes https://github.com/s-arash/ascent/issues/23
In the following program, the relation `stop2` is a copy of `stop`. And then `obstruct` is derived from `stop` the same way as `obstruct2` is from `stop2`. Therefore one would...
For generic programs ascent currently requires something along the following: ```rust ascent! { pub struct AscentProgram; relation dummy(T); // ... } ``` or ```rust ascent! { pub struct AscentProgram where...
The following fails in 0.5.0: ``` assert_eq!(ascent_run! { lattice a(i64) = vec![(0,),(1,)]; }.a, vec![(1,)]); ``` Presumably because the lattice joins are not executed on the incoming vector, as it is...
`syn` has undergone a major version bump. Since it's a slow package to compile, it'd be nice to have just one version of it in my dependency tree.
Given a program ```toml # Cargo.toml [dependencies] ascent = "0.4.0" ``` ```rust // main.rs use ascent::ascent; ascent! { relation edge(i32, i32); relation path(i32, i32); path(x, y)
This PR migrates a couple of the existing macro tests to a more mature (vs. the current `scratchpad.rs` approach) snapshot testing suite based on the tryexpand crate, which supports checking...