Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-05-06 | Prolog: increase inference limit for test queries | Timotej Lazar | |
Needed for problems/clp_fd/tobase_3. | |||
2016-05-06 | Prolog: increase inference limit for test queries | Timotej Lazar | |
Needed for problems/clp_fd/magic_1. | |||
2016-03-12 | Fix pengine regex | Timotej Lazar | |
2016-02-29 | Improved hints for ancestor/2. "Timeout results as False" ask_truthTO() ↵ | Aleksander Sadikov | |
function added. | |||
2016-02-23 | Replace urllib3.ReadTimeoutException with socket.timeout | Timotej Lazar | |
To keep compatibility with existing test / hint functions. | |||
2016-02-17 | prolog.engine: use a urllib3 HTTP connection pool | Timotej Lazar | |
Opening large numbers of single-shot requests caused local port exhaustion due to TIME_WAIT. | |||
2016-01-06 | Remove unused imports | Timotej Lazar | |
2015-12-10 | Add copyright info | Timotej Lazar | |
2015-11-30 | Limit the number of inferences for Prolog queries | Timotej Lazar | |
2015-11-27 | Fix: response on /pengine/destroy_all is just "ok" | Timotej Lazar | |
2015-11-18 | Fix test code in prolog.engine | Timotej Lazar | |
2015-11-04 | Fix prolog.engine.check_answers | Timotej Lazar | |
Variables not specified in the set of expected answers are now ignored. | |||
2015-09-17 | Replace prolog.engine.ask_all with check_answers | Timotej Lazar | |
When testing a program we can stop searching for new solutions after we have received a wrong one. | |||
2015-09-10 | Update prolog engine (sasha's aux functions for prolog hint testing added). | Aleksander Sadikov | |
2015-08-30 | Replaced localhost with 127.0.0.1 | Aleksander Sadikov | |
Windows takes a while to resolve the above. | |||
2015-08-28 | Fix regex for stripping internal Prolog engine IDs | Timotej Lazar | |
2015-08-27 | Strip trailing periods from Prolog queries | Timotej Lazar | |
2015-08-27 | Replace prolog.engine.run with ask_all | Timotej Lazar | |
Creating and destroying the pengine should be handled somewhere else. This commit also removes query functionality from prolog.engine.create. | |||
2015-08-27 | Fix a typo and add a comment | Timotej Lazar | |
2015-08-26 | Use /destroy_all to abort and destroy pengines | Timotej Lazar | |
Poorly documented, but works better than abort & destroy. | |||
2015-08-21 | Add a hashbang line to the Prolog server script | Timotej Lazar | |
2015-08-20 | Add prolog.engine.run | Timotej Lazar | |
Collects all the answers to a given query within the specified timeout. | |||
2015-08-20 | Simplify and privatize prolog.engine.get_message | Timotej Lazar | |
2015-08-20 | Add a timeout option for prolog.engine requests | Timotej Lazar | |
2015-08-20 | Replace strip_html function in prolog.engine | Timotej Lazar | |
2015-08-11 | Print 'true' on success with no bindings | Timotej Lazar | |
2015-08-11 | Improve error & warning reporting | Timotej Lazar | |
Hope it does not break anything. | |||
2015-08-11 | Use json-html format for Prolog replies | Timotej Lazar | |
The only way to get residuals in CLP queries. | |||
2015-08-11 | Merge prolog.engine.create{,_and_ask} functions | Timotej Lazar | |
2015-08-11 | Remove app-specific code from prolog.engine | Timotej Lazar | |
2015-08-11 | Specify timeout when generating test cases | Timotej Lazar | |
2015-08-11 | Print a random failing test for incorrect solution | Timotej Lazar | |
2015-08-11 | prolog.engine: use .get() to access reply | Timotej Lazar | |
In case SWI engine goes insane and returns a malformed reply (has happened). Also fix the test case in this file to use the new, classless methods. | |||
2015-08-11 | Move monkey.prolog to root module | Timotej Lazar | |
2015-08-11 | Move pymonkey stuff to monkey/ | Timotej Lazar | |
Importing pymonkey into webmonkey, let's see how this works. | |||
2015-08-11 | Add prolog.engine.test | Timotej Lazar | |
Depends on run_tests/3. | |||
2015-08-11 | Improve error handling in PrologEngine | Timotej Lazar | |
2015-08-11 | Delegate testing to a Prolog server | Timotej Lazar | |
... which obsoletes *a lot* of effort in making the testing procedure more robust in the past two years. Oh well. It seems to be the sanest way of coping with more than one simultaneous user (who could have predicted this use case?). The new way involves a PEngine server, and it seems to work quite well. Remember Knuth: premature optimization (as in ignoring possible solutions because they _might_ be to slow) is stupid. TODO: - library loading (again) - use of previous solution (again) - fix issues when converting non-ground terms to json Side note, constructivism works: in the past few days I have reached a much better but fundamentally ineffable intuition about Prolog, more so than in the past two years teaching it. So, fuck ITS and rather fix the schools by giving students something meaningful to do. Sigh. | |||
2015-08-11 | PrologEngine: add load/unload functions | Timotej Lazar | |
2015-08-11 | Store test cases in PrologEngine | Timotej Lazar | |
2015-08-11 | Add support for per-problem fact libraries | Timotej Lazar | |
Each fact library is loaded at most once, so different problems can share the same library (e.g. family-relation problems). | |||
2015-08-11 | Quote predicate name for abolish/1 | Timotej Lazar | |
2015-08-11 | Improve testing procedure | Timotej Lazar | |
For each query: - generate a single solution - incorrect solution / timeout / other error → FAIL - generate (up to) ten solutions - more than one distinct solution found → FAIL - timeout is OK (a correct solution was found above) - if reached this point → PASS | |||
2015-08-11 | Term.__iter__: create new Terms on each iteration | Timotej Lazar | |
2015-08-11 | Mark solution predicates as static after loading | Timotej Lazar | |
This prevents incorrect student solutions from overwriting or adding to predicates in solution<n> modules. | |||
2015-08-11 | Reorder functions in PrologEngine | Timotej Lazar | |
Place functions for internal use at the end. | |||
2015-08-11 | Use abolish/1 instead of erase/1 to remove clauses | Timotej Lazar | |
Using erase/1 keeps the dynamic property for all defined predicates in the testing module. This overrides the clauses in solution modules. For example, if the user defines conc/3 in the solution for the dup/2 problem, the correct conc/3 would not get used even after unloading all user's clauses. This commit also plugs a couple of memory leaks by opening (and later discarding) a new Prolog frame in functions test, load_solution and mark_solved. | |||
2015-08-11 | Improve handling of Prolog exceptions | Timotej Lazar | |
2015-08-11 | PrologEngine: disable autoload | Timotej Lazar | |
Turns out unix:dup/2 exists and is autoloaded if the student solution for dup/2 does not contain the predicate with this name; this can mess up subsequent tests. | |||
2015-08-11 | Load prolog/lib.pl during PrologEngine init | Timotej Lazar | |
This is always required for the safe_goal/1 predicate. |