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

convert license headers to SPDX


# 858715f6 23-Jul-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Integrate future induction.

The required checks and search process were added recently.
The ProofNode proof script type now has a SingleRevInduct
proof kind, which captures the reverse-induction at a single
loop point, and the search process emits the relevant proof
scripts.

This required a minor restructure of the searcher.


# 87f29cdb 20-Jul-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Tweaks, setup for next feature.


# 4cccd431 12-Jul-2018 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Adjusted hypothesis kind, Eq assuming PC.

This is a fairly big change, I guess. The 'future' proof I need to
do requires a hypothesis kind in which an equality is gated by
whether the relevant addresses are visited. Perhaps all equalities
could be phrased this way anyway?


# 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.


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

Report more on failures, in particular timeouts.


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

Some more inner loop handling sanity.

This gets us past the 'check' phase of problem setup for functions
with inner loops.


# 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.


# 4cd3fe2b 09-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Tweaks, mostly diagnostic.


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

Take more care with scan_mem_calls.

With some asm wrappers and other rare cases, some ASM-side functions
fetch/save the stack and others don't. This leads to confusion about
the number of calls any memory has participated in. Since this case
is rare anyway, just merge the call sets and be pessimistic about
which functions have 'really' been called.


# 130a9cfe 04-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Trace reasons for skipping funcall pairings.


# 717df8de 02-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Fix funcall pair optimisation for ro-functions.

The funcall pair optimisation tracks how many function calls have
contributed to any given memory variable. Special care is now taken
for read-only C functions which don't return an updated memory.


# 1d0919e9 20-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Minor bugfixes.


# 04a60da1 14-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

The calls-on-memory optimisation.

Track, for each memory object, the number of calls to various
functions that have gone into it. Well, a range, min-max. Avoid
producing function relations for function call pairs that can't
reasonably be related. This may substantially reduce the problem
complexity for function calls in loops that get unrolled a fair
bit.


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

Search performance improvements.

Tweaking now, less tracing, more caching, more caution in using the
necessary linear sequence alignment, and a cache to avoid repeatedly
testing similar weakly aligned splits.


# bd491304 31-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Tweak handling of reachability.

Move reachability cache to problem (from rep_graph), use in check
to insist on discovering (0) loop bounds slightly less often.


# 3ba7950c 31-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Add 'strncmp' optimisation to search algorithm.

The search algorithm performed poorly in functions such as strncmp
where the only values changing in the loop are linear sequences.
(The approach is to relate these linear sequences to the initial
values rather than any matching values in the other loop.)

The optimisation is to first scan for any memory access addresses or
function call arguments that form linear progressions, and try to
match them. In particular, if doing so requires a case split, it's a
fast way to find it. In general we also narrow down to a smaller
collection of possible loop matching sequences.


# ef35cb9b 21-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Adjust handling of unusual restrs in rep_graph.


# a010a214 19-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Address minor issues in previous.


# 6cfd82a3 19-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

More use of parallel model generation.


# 2516659f 12-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Debug & fix some array assertion issues.


# 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.


# 5cb52d39 06-Jun-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Improve some diagnostics.


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

Parallelise more often.


# 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.


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

Performance tweaks.


# be8155ec 08-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Bugfixes.


# 11039ac4 01-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Simplify search_bound, bugfixes.


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

Import of graph-refine tool.