History log of /seL4-l4v-master/graph-refine/solver.py
Revision Date Author Comments
# b2ddb1f6 11-Mar-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

convert license headers to SPDX


# debb3352 24-Aug-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

More parallel model search in solver.

The existing implementation spawned parallel solvers to search for
a model, but waited for a single solver to test each result. This
implementation makes it all part of a single parallel cycle.
Somewhat tested.


# 39454154 06-Aug-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Quiet solver stderr channel.

One of my default solvers is a bit noisy on stderr. We can't handle
its memory exceptions, so just quiet them.


# ae17ea94 11-Jul-2018 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Factor out a common substitution pattern.


# bdbcb018 01-Jul-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Factor out some patterns and more debug code.

Adds some new helpers mk_n_implies and smt_num_t to factor out some
common use patterns. Also adds yet more debug tracing.


# 35c01de9 09-Apr-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

More diagnostic info.


# 423c9521 06-Apr-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Bugfixes.


# e4e3fdad 22-Mar-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Silliest of bugfixes in handling ctz.

Need to reverse first, then clz. Not the other way around. Seriously.


# c2b900e5 10-Mar-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Handle CountTrailingZeroes.


# 7822a049 21-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Fix solv.close () issue.

Problem was, solvers were being counted more than once in the active_solvers
list if they were repeatedly started up. This eventually leads to a solver
killing itself from time to time. Easily fixed.


# 5a233a57 20-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Slightly more debugging to track down closes.


# 3cff4c88 07-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Erm, correct output problems from previous.

Diagnostic information was being sent to the main channel, and
there was leftover excessive debug tracing. Oops.


# e6ff060e 07-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Slightly reduce output in previous.


# 8aa03b1f 07-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Bugfix parallel solver closing.

Traced down to a foolish 'self.close' when falling back to the slow solver
somewhere. Also trace what's happening to the solvers that are cut off.


# 9791b5de 06-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Tweaks to support Yices2.


# a102e0a8 02-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Stronger restrictions again on malformed models.


# 67fa917f 01-Feb-2017 Thomas Sewell <sew019@tsewell.data61.csiro.au>

Handle bad solver responses in parallel.

Running a flaky Z3 variant here that sometimes crashes and spams
the response buffer with things that might or might not parse.
Simple solution in parallel, drop that solver, and hope another
sorts things out.


# c99395c7 01-Feb-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Fix c_rodata optimisation idea.


# d5a1440b 24-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Report more on failures, in particular timeouts.


# 4799e326 24-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Bugfix: handle None case for rodata_ptrs.


# cc7fc25f 22-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Experiment with side-proving rodata ineqs.

The suspicion was that some slow-down seen lately was because the
rodata-witness value might now have a disjunction of possible
reasons for difference, which might make the solver logic for
understanding that function input are valid more obscure. A possible
fix for that is to pre-test and pre-assert that the witness must be
disjoint from problem pointers on the C side, based just on their PC.
That should simplify the SMT logic, one might think.


# c83833f7 22-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Try to close parallel solvers on interrupts.


# 61c098a9 17-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Change the way the .rodata section is handled.

The new version allows multiple things to be read-only data. This
allows handling the .boot.rodata pseudo-section from seL4, for
instance.


# 8bb8eeb3 07-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Mention the absence of psutil in timing msgs.


# a8bdc8f2 05-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Miniscule tweak to timing.


# 1fca976c 05-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Better timing messages, especially with psutil.


# 2080400c 02-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Fix solver self-test.

Two problems to fix, firstly that model updates led to a problem in
the check model wrapper, secondly that the self-test failed trivially
because the solver may include a result for the '.rodata_witness'
variable in the model, which makes it more complex than expected.


# d648ff9d 29-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Fix a bug with stack pointers in var analysis.

To do loop var analysis on stack slots, we 'virtualise' some nodes
to what they would be if stack slots were variables. Along the way,
the stack pointers themselves disappear, which is a problem if a
stack-relative address has been saved into a register other than the
stack pointer. To fix this we insert some redundant lvals in our
fake nodes.


# 61fe3c26 22-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

New model repair strategy.

It's a bit smarter. Also, in the parallel phase, it allows the
remaining parallel solvers to continue, so there's a chance that
a clean model will be generated while a partly erroneous model is
being repaired.


# 54ab302a 13-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Much better output for parallel solvers.

Previously the verbose mode for spawning parallel solvers was
*way* too verbose.


# c86baea2 05-Sep-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Add definitions for WordReverse.

Simple operator that does the obvious thing, puts the bits of a
word in the opposite order. Can be used to count zeroes at the
other end, which is exactly what GCC does on ARM.


# bb7392e3 04-Sep-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Support a parallel word8-rep solver.


# 8b0b93b2 17-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Allow model generation in parallel solvers.

This allows the 'slow' solvers to be used in parallel mode to find models,
which rather than picking a single best solver to try to use.


# a3503872 09-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Report timeouts correctly in parallel.

The case where a parallel solver timed out or failed needs to be handled
carefully, permitting the other solvers to possibly solve the problem.


# d22aeb5c 08-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Miscellaneous updates.

1) Support new instruction'* function naming scheme from the graph decompiler
which includes instruction addresses in the name of the function. This makes
the instruction naming scheme uniform, which is a good thing.
2) Have tokens appear by name in SMT expressions and diagnostic results.
3) Miscellaneous refactor and cleanup


# 4a687109 02-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

New feature: instruction specs.

Adds bodies for instruction'mcr* and asm_instruction'mcr* etc functions.
Handles mcr and mrc forms already. These bodies just map to impl'mcr_
functions, but the mapping eliminates irrelevant complexity (some synonyms and
also the details of which register holds args/rets). Works for a couple of
functions.


# 63ae0a87 31-Jul-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Unlink solver input files.

They've been cluttering up /tmp/ directories until now. They aren't needed
once the solver has opened them, and can be unlinked by default. There are
better ways to export them than leaving them lying around on the disk.


# bda121a4 05-Jul-2016 Felix Kam <felix.kam@nicta.com.au>

fixed another typo


# a21dabe6 05-Jul-2016 Felix Kam <felix.kam@nicta.com.au>

fixed a typo


# 4dca5cd0 05-Jul-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Implementation of TokenWords: WordArray variant.

Indexed by Token rather than by a word type. Should be more
convenient to work with for various C ghost data.


# 2a73a6f3 05-Jul-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Initial implementation of Tokens.

Token is a new type that encodes strings. The only supported
operation is equality. They're actually encoded as unique words at
the SMT level, but we avoid committing to that too early.


# 749d32fd 09-May-2016 Felix Kam <felix.kam@nicta.com.au>

fixed "import signal" error in solver.py


# da422b7f 08-May-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Support 64-bit loads and stores.


# 603f5ae8 06-Apr-2016 Thomas Sewell <thomas.sewell@nicta.com.au>

Compatibility adjustment.

Relevant to some versions of python, apparently.


# 827dc5f7 13-Apr-2016 Felix Kam <felix.kam@nicta.com.au>

Adding graph-to-graph


# 4097bef4 13-Mar-2016 Felix Kam <felix.kam@nicta.com.au>

added a missing import sys


# d79dce84 12-Jan-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Parallelise more often.


# 0c1f1fe1 17-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

First steps toward floating point support.

This gets mostly just passed through to the relevant SMT logics. Since they're
still transitionally supported it's not clear whether to change the QF_ABV
logic or not.


# 7b2ac644 15-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Close parallel solvers on solver inst shutdown.


# bf2f517f 15-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Bugfix.


# d04c6f95 15-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Explain .solverlist strategies.


# 14e59514 15-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Better parallel implementation of hyp testing.


# a1b47e38 10-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

WIP: test_hyp_imps via parallel strategies.


# fa63ef22 10-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Make solver-set configurable per Solver instance.


# d3b6d777 10-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Do setsid on starting up forked solvers.


# ea41c460 07-Dec-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Add PArrayValid support.

Not fully tested yet, but this is the rough shape of support for array
size assertions, including dynamic array size assertions.


# 7e18d501 15-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Add no-C-information mode, tweak solver models.


# f76d32f2 14-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Robustness adjustments.


# e741b210 13-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Performance tweaks.


# 03152808 30-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

New toplevel result for solver timeout/error.

Until now we've been conflating proof failure caused by solver failure
and proof failure caused by logical incorrectness (sat when unsat was
required). Hopefully clarified.


# d809be79 29-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Better document SMT/.solverlist issues.

Raf found a couple of common misunderstandings, so I've been a lot
more explicit about which solvers are needed/useful and what to expect.


# e010704b 25-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Self-test both slow and fast solver.


# 86fb4ba3 25-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Distinguish quiet and regular test.


# c18cc8b4 25-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Add self-test mode for solver.py.


# 3d6869e3 24-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Import of graph-refine tool.