Fixed error and some mixup

This commit is contained in:
Denis Merigoux 2021-02-21 20:56:15 +01:00
parent f14235fa5e
commit b2d9407c2b
3 changed files with 7 additions and 3 deletions

View File

@ -53,6 +53,7 @@ val is_value: exp -> Tot bool
let rec is_value e =
match e with
| EAbs _ _ | EThunk _ | ELit _ | ENone -> true
| ESome (ELit (LError _)) -> false
| ESome e' -> is_value e'
| EList l -> is_value_list l
| _ -> false

View File

@ -141,6 +141,7 @@ let rec l_values_dont_step (e: exp) : Lemma
| EThunk _ -> ()
| ELit _ -> ()
| ENone -> ()
| ESome e' -> l_values_dont_step e'
| EList [] -> ()
| EList l -> l_values_dont_step_list e l
| _ -> ()
@ -600,7 +601,7 @@ let step_exceptions_head_value
(cons: (typed_l_exp tau))
(hd: (typed_l_exp tau))
: Pure (typed_l_exp (TOption tau) & nat)
(requires (True))
(requires (is_value hd))
(ensures (fun (new_acc, n) ->
is_value new_acc /\
take_l_steps tau (exceptions_head_lift tau tl acc just cons hd) n ==
@ -616,7 +617,7 @@ let step_exceptions_head_value_same_acc_result
(acc: (typed_l_exp (TOption tau)))
(just: (typed_l_exp TBool))
(cons: (typed_l_exp tau))
(hd: (typed_l_exp tau))
(hd: (typed_l_exp tau){is_value hd})
: Lemma (
let new_acc, _ = step_exceptions_head_value tau tl acc just cons hd in
let new_acc', _ = step_exceptions_head_value tau tl' acc just cons hd in
@ -650,7 +651,7 @@ let step_exceptions_empty_some_acc
(cons: (typed_l_exp tau))
(acc: (typed_l_exp tau))
: Pure nat
(requires (is_value acc))
(requires (is_value acc /\ not (is_error acc)))
(ensures (fun n ->
build_default_translation_typing [] (ESome acc) just cons tau empty;
take_l_steps tau

View File

@ -703,6 +703,7 @@ let rec translation_correctness_exceptions_empty_count_exception_triggered
D.typing D.empty dcons dtau /\
dacc_lacc_sync (translate_ty dtau) dacc lacc /\
Some? (D.step de) /\
L.is_value lacc /\
List.Tot.for_all D.is_value dexceptions /\
(D.step de == (match D.empty_count dacc dexceptions with
| D.AllEmpty -> None
@ -748,6 +749,7 @@ let rec translation_correctness_exceptions_empty_count_exception_triggered
n_err, l_err
| L.ESome lacc_inner ->
assert(L.is_value lacc_inner);
assert(not (L.is_error lacc_inner));
let n = step_exceptions_empty_some_acc ltau ljust lcons lacc_inner in
n, lacc_inner
end