diff --git a/theories/typing/lib/option.v b/theories/typing/lib/option.v index 9b7df4c5e8911a3cbb02b72bf73db6322d65c942..e95e0aa0f03c0503219108d964fd0c63deacb2e5 100644 --- a/theories/typing/lib/option.v +++ b/theories/typing/lib/option.v @@ -24,19 +24,19 @@ Section option. Lemma option_as_mut_type Ï„ : typed_val - option_as_mut (fn(∀ α, [α]; &uniq{α} (option Ï„)) → option (&uniq{α}Ï„)). + option_as_mut (fn(∀ α, (λ Ï, [Ï âŠ‘ α]); &uniq{α} (option Ï„)) → option (&uniq{α}Ï„)). Proof. - intros. iApply type_fn; [solve_typing..|]. iIntros "/= !#". iIntros (α ret p). + intros. iApply type_fn; [solve_typing..|]. iIntros "/= !#". iIntros (α Ï ret p). inv_vec p=>o. simpl_subst. iApply type_deref; [solve_typing..|]. iIntros (o'). simpl_subst. iApply type_new; [solve_typing..|]. iIntros (r). simpl_subst. - iApply (type_cont [] [] (λ _, [o â— _; r â— _])%TC) ; [solve_typing..| |]. + iApply (type_cont [] [Ï âŠ‘ []]%LL (λ _, [o â— _; r â— _])%TC) ; [solve_typing..| |]. - iIntros (k). simpl_subst. iApply type_case_uniq; [solve_typing..|]. constructor; last constructor; last constructor; left. + iApply (type_sum_unit (option $ &uniq{α}Ï„)%T); [solve_typing..|]. iApply type_jump; solve_typing. - + iApply (type_sum_assign (option $ &uniq{α}Ï„)%T); [solve_typing..|]. + + iApply (type_sum_assign (option $ &uniq{α}Ï„)%T); [try solve_typing..|]. iApply type_jump; solve_typing. - iIntros "/= !#". iIntros (k args). inv_vec args. simpl_subst. iApply type_delete; [solve_typing..|].