sort by:
Revision Author Date Message Commit Date
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
c1d874a Use [&] instead of [*] for product type 24 May 2019, 21:53:06 UTC
248bfd7 Rename modules 24 May 2019, 21:52:39 UTC
4883f16 Some progress on the proofs 24 May 2019, 01:38:23 UTC
4f7dfc2 Implement larger scale reordering check 24 May 2019, 01:34:47 UTC
3a70c4e Add warning 23 May 2019, 23:53:12 UTC
de94870 Add some sanity checks 23 May 2019, 22:27:28 UTC
4578081 Minor typos 23 May 2019, 22:26:23 UTC
dc02d39 Fix issue with write-set for implicits 23 May 2019, 22:05:11 UTC
eea2b9a More precise [disjoint_access_locations] 23 May 2019, 21:47:48 UTC
b9560b7 rw_set for push/pop 23 May 2019, 21:37:59 UTC
b78f0a2 Some minor restructuring 23 May 2019, 21:30:32 UTC
2ef1f06 Get the write set from an instruction 23 May 2019, 21:24:00 UTC
d96e038 Be able to get read-set from an instruction 23 May 2019, 21:21:49 UTC
5bdd33f Minor updates 23 May 2019, 02:02:58 UTC
46a2823 Set up some targets to work on for the InstructionReorder xformer 23 May 2019, 01:21:04 UTC
0fc4e02 Add a [possibly] monad, to make it easier to keep track of reasons 23 May 2019, 01:13:13 UTC
7ed4e6d Get started with instruction reorderer transformer 23 May 2019, 00:02:55 UTC
e907c1f Remove tab characters and trailing whitespace from files in vale directory 19 May 2019, 13:11:22 UTC
5f3f81d Update hints 18 May 2019, 23:58:09 UTC
a0b9e04 Merge branch 'fstar-master' into _vale_generic 18 May 2019, 19:59:58 UTC
f55b1f3 Rename modules in vale directory 18 May 2019, 19:00:44 UTC
191a53c Fix maximum length of ciphertext in Spec.AEAD.decrypt and state correctness lemma 16 May 2019, 16:32:52 UTC
f2c8b60 Merge Taint_Semantics_s into Bytes_Semantics_s, remove Taint_Semantics_s module 16 May 2019, 03:08:25 UTC
ac19640 Remove tainted_code and tainted_codes 15 May 2019, 23:17:37 UTC
back to top