inv-gen-game's People
inv-gen-game's Issues
Branches in loops break new game
Code in game_graph.ts responsible for building CFG from boogie level cannot yet handle branches in loops correctly (those seem like multiple looping paths). This exhibits as an exception in the browser while loading a new level.
JS evaluate mod on negative numbers wrong
JS semantics differ from boogie, z3, and sanity when evaluating (-1 mod *). For example
(-1 mod 3) evaluates to -1 in JS, and to 2 in boogie/z3. This is a big problem for mod levels. May need a different evaluation scheme in the frontend
DB may be corrupted by concurrently running server
Currently our database is a single sqlite file per experiment. As you can have multiple servers running at the same time in an experiment (when you pulished multiple hits at the same time) you can have concurrent accesses to the database. This can lead to corruption. Options include:
- For now only run 1 hit at a time for experiment
- Use a file lock
- Use an actual db server
Update grammar/ast to include attributes
The partition: attribute is useful, as it marks the assume statements genreated from if/loop conditionals.
It would be nice to add to the grammar and ast an option to hang attributes around.
Divison in JS differs from division in boogie
JS division is float, whereas boogie division is int. Thus any invariant using division evaluates differently in the UI and in the backend. Need a different evaluation scheme in the UI
New game cannot yet handle non-deterministic transitions
Non-deterministic transitions need to be handled in the buildGraph function in game_graph.ts.
z3 embedding assumes only int types
List to keep track:
- boogie_eval
Flatten And/Or trees being build for readability
We build a lot of redundant And/If levels in the expressions that we generated. Flatten those down for readability
Implementation of loops doesn't account for breaks/gotos
The implementation of loops currently conservatively assumes that the only way to exist a loop is from a single exit node straight from the loop header. This doesn't account for cases such as breaks/gotos out of the loop. For now this is not a problem - marking for future fixes.
Implementation of loops won't see properly past a single loop
Our implementation of loops currently looks at provably feasible paths. As a result, it may miss a loop, if for example it follows another loop, but only executes if the first loop has iterated a number of times.
For now not a problem, as we are dealing mostly with simple single-loop programs. Marking for future fix.
get_loop_header_values is inefficient
The current implementation looks for entire unrollings from the start repeatedly. Instead it should look for one more unroll starting with the final values of the previous invocation. I.e. try to extend a previous partial state.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.