sort by:
Revision Author Date Message Commit Date
5547401 Remove [unchanged] and [unchanged_all] 05 June 2019, 20:24:35 UTC
a789041 Progress on proof of [lemma_instr_write_output_explicit_only_affects_write_aux2] 05 June 2019, 19:56:18 UTC
aaea69e Progress on proof for [lemma_instr_write_output_implicit_only_affects_write_aux2] 05 June 2019, 19:53:39 UTC
70ffe35 Remove old comment 05 June 2019, 18:11:49 UTC
2b85ce4 Add to the equiv_states sanity check 05 June 2019, 00:42:30 UTC
9c9e1b9 We can thus now remove [unchanged_upon_both_non_disjoint] which was unprovable before 05 June 2019, 00:36:27 UTC
51ba03c And with that, we have proven [lemma_equiv_states_when_except_none] 05 June 2019, 00:35:11 UTC
2a69fff Make it easier to skip out on some parts of the state 05 June 2019, 00:34:30 UTC
5850a1f Introduce [lemma_locations_complete] 05 June 2019, 00:27:57 UTC
8d1d69c Finish proving [lemma_unchanged_at_and_except] 05 June 2019, 00:16:46 UTC
229a784 Fix another admit by reproving [lemma_unchanged_at_combine] 05 June 2019, 00:13:22 UTC
9239eb1 Fix a bunch of [admit ()]s and remove [unchanged_at_extended] 04 June 2019, 23:56:17 UTC
f44171c Move a sanity check out; fix minor things up 04 June 2019, 23:56:10 UTC
299cacf Auto trigger lemma upon [!!(disjoint_location a1 a2)] 04 June 2019, 23:48:58 UTC
11e8f1b Get the file verifying again by adding admits / removing stuff 04 June 2019, 23:36:44 UTC
f4ab205 Split away the sanity checks 04 June 2019, 23:36:36 UTC
b9bec81 Remove unnecessary dependency 04 June 2019, 23:19:09 UTC
d6f2d26 Rename the module itself 04 June 2019, 23:18:40 UTC
0707b53 Change return types to better match with expected intentions 04 June 2019, 23:16:07 UTC
1829603 Perform a massive renaming [access_location] -> [location] 04 June 2019, 23:14:04 UTC
ce16bcb Add documentation; clean up some lemmas 04 June 2019, 23:11:26 UTC
d5ba176 Cleanup to mark things exposed by the fsti better 04 June 2019, 22:58:27 UTC
9d44d45 Introduce updates and "truly disjoint" lemma 04 June 2019, 22:50:55 UTC
a33d00c Copy all the [access_locations] and disjointness stuff into a separate module 04 June 2019, 22:50:07 UTC
b5e8596 File at least verifies now; some lemmas broke though which we need to fix 04 June 2019, 18:24:09 UTC
2a5defc Handle memory locations more precisely. See msg. For example, the following instruction actually _reads_ from RAX and writes to some location in memory. Previously this would've been considered to not really be a read from RAX but we were relying upon the conservative behavior of the [disjoint] operation to be correct; now it is baked into the definition of the read-write sets. ``` mov [rax + 5], 10 ``` 04 June 2019, 17:50:55 UTC
c5133c8 Access locations now handle all memory as one huge block, and all stack as another huge block 04 June 2019, 17:50:24 UTC
4cd53cc Demonstrate counter-example showing my intuition of lemma being wrong is correct 04 June 2019, 17:03:40 UTC
87ca739 Some progress 04 June 2019, 01:20:06 UTC
4a340d9 Some progress towards [unchanged_upon_both_non_disjoint]. See msg. In order to prove [unchanged_upon_both_non_disjoint], we need to show that our notion of [disjoint_access_locations] is _actually_ conservative. On the way to showing this, we need to additionally introduce the notion of an [access_location] that is [always_constant] since otherwise, it messes with the way the lists work and how disjoint-ness works. 04 June 2019, 00:19:22 UTC
68e526f Move towards using [unchanged_at_extended]. See msg. The issue with the previous approach is because we need to be conservative. This in particular means that if we have both [unchanged_at locs s1 s2] and [unchanged_except locs s1 s2], we **DO NOT** have [unchanged_except Nil s1 s2], even thought it might seem like we should. An example that demonstrates this is if we assume that XMM1 is not disjoint from RAX. This is a conservative assumption and is correct and sound. However, at this point, we face our conundrum. Assume the [locs] above is the singleton set [RAX]. Since [unchanged_at] looks **only** at the locations within the [locs] and [unchanged_except] looks at locations which are _strictly_ disjoint from the [locs], the [XMM1] is not talked about whatsoever. This means that with this definition, we have a situation where the [XMM1] register _could_ have different values, and thus this is a counter-example. We fix this by extending [unchanged_at], to get [unchanged_at_extended]. This new extended definition takes into account everything that is not provably disjoint. This means that it is more difficult to prove, but it provides much more if it were to exist in the precondition. Additionally, it properly encodes the notion of conservatively equal. Thus, with this definition, we can now (trivially) show that [unchanged_at_extended locs s1 s2] and [unchanged_except locs s1 s2] implies [unchanged_except Nil s1 s2]. It does throw some extra stuff into the picture; in particular, we can no longer as easily show the behavior upon two operations that are commuted. We need to introduce a new notion of [unchanged_upon_both_non_disjoint] which allows one to talk about two different sets of access locations; and is true only if their intersection is maintained across both states. It remains to be seen how much extra effort this new approach will take up for proving things from [untainted_eval_ins] though. 03 June 2019, 23:22:10 UTC
7b31fab Demonstrate the exact case of failure for the current [unchanged_at] definition 03 June 2019, 22:21:34 UTC
aa1ca86 Get to work on proving write-behavior for instructions 03 June 2019, 21:51:38 UTC
6055e85 Now that we've got commutativity in general, we have to work on specializing it 03 June 2019, 18:41:34 UTC
df20b0f Remove the old style 03 June 2019, 17:10:47 UTC
271ac8d Maintain same [valid_addr] mapping between [unchanged_except] 01 June 2019, 01:13:30 UTC
4e7eca3 Propagate to stack proof 01 June 2019, 01:01:59 UTC
37929aa Progress on [lemma_equiv_states_when_except_none] for mem and memTaint 01 June 2019, 01:01:54 UTC
5466b7f Finish handling [initial_rsp] too 01 June 2019, 00:17:29 UTC
6dc0345 Finish handling the [ms_ok]s 01 June 2019, 00:12:19 UTC
9a4d374 Fix up issue wrt ok-equivalence 01 June 2019, 00:07:17 UTC
90fb001 It should be up to caller to show equal init_rsp 31 May 2019, 23:49:31 UTC
df2a6de Actually ensure that havoc'd flags are added into the write sets 31 May 2019, 23:25:15 UTC
d9cc3f1 Conservatively disallow instruction exchanges between non-generic instr 31 May 2019, 22:51:06 UTC
833c283 We use this taint better progress [equiv_states] upon [unchanged] 31 May 2019, 22:47:14 UTC
bc54d9a The value of an [access_location] should _also_ refer to its taint 31 May 2019, 22:46:18 UTC
03f5d8d Minor rlimit/fuel/ifuel fixes for speed!! 31 May 2019, 22:14:52 UTC
ba13d29 Fix [lemma_eval_instr_equiv_states] 31 May 2019, 22:11:22 UTC
c91197f Fix some minor regressions due to recent [equiv_states] changes 31 May 2019, 22:07:52 UTC
5af35dc That was one annoying proof; [lemma_unchanged_at_combine] done. 31 May 2019, 20:58:35 UTC
10e8a2a Fix precondition of [lemma_unchanged_at_combine] 31 May 2019, 20:10:30 UTC
107d3e4 Some progress on [lemma_unchanged_at_and_except] 31 May 2019, 20:06:36 UTC
ed86aa1 Progress on [lemma_equiv_states_when_except_none] 31 May 2019, 19:39:05 UTC
a58ad1c Stop being so strict for the equivalence-of-flags check 31 May 2019, 19:38:44 UTC
9b455f8 Finish up [lemma_commute] (lots of sub-lemmas yet to be proven though) 31 May 2019, 18:22:20 UTC
a43c84d The effect of [ok] should also be dependent only upon the reads 31 May 2019, 18:21:59 UTC
cb19a95 Some more progress 31 May 2019, 18:11:51 UTC
891afc4 Some progress using this new generic style 30 May 2019, 22:49:20 UTC
59e7f9b A new approach towards generically proving things 30 May 2019, 22:46:11 UTC
52cd98b Introduce [valid_dst_access_location] 30 May 2019, 21:22:54 UTC
c7e3ea5 Split up [disjoint_access_locations] 30 May 2019, 21:22:38 UTC
bb99f72 Yay! And now we have it proven for [_inouts] too! 30 May 2019, 00:38:13 UTC
427a54e No need to special case on [Some?] anymore :) 30 May 2019, 00:34:27 UTC
2a8079d Remove the [temp_] from the name since we are now diving down this route 30 May 2019, 00:33:44 UTC
27728d9 Progress! We now have unchanged read for args! 30 May 2019, 00:32:39 UTC
5199ba4 Get started, on the way to proving [lemma_untainted_eval_ins_exchange] 29 May 2019, 23:24:33 UTC
be43456 Make sure to note down the thoughts on [eq_code] 29 May 2019, 20:59:48 UTC
9a323b9 Update to new proof strategy to make life easier; document things :) 29 May 2019, 20:34:35 UTC
394c4de Fix the broken proof; damn rlimits 29 May 2019, 20:11:59 UTC
7506278 Finish up proof for [lemma_ins_exchange_allowed_symmetric] 29 May 2019, 20:09:06 UTC
8449690 Finish proving its symmetry 29 May 2019, 18:57:20 UTC
a0aff2f Cleaner-to-read definition of [disjoint_access_locations] 29 May 2019, 18:56:51 UTC
74e59ae A slightly fragile proof broke due to latest change 29 May 2019, 18:37:48 UTC
ff43f5c Fix the definition of [disjoint_access_location] 29 May 2019, 18:33:49 UTC
c3938bb [ins_exchange_allowed] can now be shown to be symmetric 29 May 2019, 18:31:52 UTC
c062b33 Split away the [disjoint] and prove some things about it 29 May 2019, 18:31:31 UTC
fa540fa Split away the [&&.] and the [for_all] 29 May 2019, 18:08:40 UTC
bded0f7 Add a docstring to the module 29 May 2019, 01:47:09 UTC
ee94a91 Add comment for review 29 May 2019, 01:39:06 UTC
1ee236e Finish proving [lemma_eval_instr_equiv_states] 29 May 2019, 01:35:51 UTC
a1e9524 Finish [lemma_untainted_eval_ins_equiv_states]; progress on [lemma_eval_instr_equiv_states] 29 May 2019, 01:19:34 UTC
3301861 Finish [lemma_eval_code_equiv_states], [lemma_eval_codes_equiv_states], etc 29 May 2019, 00:31:48 UTC
575707e Finish proof of [lemma_eval_ins_equiv_states] 29 May 2019, 00:13:28 UTC
1d64254 Progress on [lemma_eval_ins_equiv_states] 29 May 2019, 00:04:51 UTC
c9ae34d Keep track of memTaint and stackTaint in the state equivalence 28 May 2019, 23:46:32 UTC
147bf35 Progress on proof of [lemma_untainted_eval_ins_equiv_states] 28 May 2019, 23:33:49 UTC
f730bd8 Define [equiv_states_ext] to help F* "think harder"; progress on [lemma_untainted_eval_ins_equiv_states] 28 May 2019, 22:21:36 UTC
9361251 Progress on [lemma_untainted_eval_ins_equiv_states] 28 May 2019, 22:09:31 UTC
91a3f1d Progress on [lemma_eval_ins_equiv_states] 28 May 2019, 20:47:22 UTC
f50dc30 Progress on [lemma_instruction_exchange] 28 May 2019, 20:32:04 UTC
1658085 Finish proving [lemma_bubble_to_top] 28 May 2019, 19:50:15 UTC
e6259ce Add some convenience wrappers 28 May 2019, 19:44:15 UTC
5a1e021 Introduce [lemma_eval_codes_equiv_states] 28 May 2019, 19:31:09 UTC
7cfca8e Progress on [lemma_bubble_to_top] 28 May 2019, 19:18:04 UTC
0602506 Prove [lemma_code_exchange] 28 May 2019, 18:13:47 UTC
6a7d628 Bring in state filtering, to remove taint related stuff 28 May 2019, 18:13:26 UTC
ea8fb65 Use a specific definition for [equiv_states] 24 May 2019, 23:34:10 UTC
f36ecd2 Get started on [lemma_reordering] 24 May 2019, 23:01:43 UTC
2166cbe With the updated [untainted_eval_ins] we can now reconcile it well 24 May 2019, 21:59:38 UTC
ac711ca Update [untainted_eval_ins] to do the stack update better. See msg. The tainted semantics use [MReg rRsp (-8)] and something similar would be needed for the instruction reorderer as well; keeping it as a [MConst] would lead to more difficulties later on, and this change should not affect anything, hopefully. Had a discussion with @R1kM about this, and the older version existed only for legacy reasons. 24 May 2019, 21:55:22 UTC
back to top