Skip to content
Snippets Groups Projects
Commit dffd84ad authored by Jacques-Henri Jourdan's avatar Jacques-Henri Jourdan
Browse files

Add lemma [lctx_lft_alive_external], which is useful for automation.

parent 265b0b9c
No related branches found
No related tags found
No related merge requests found
...@@ -216,7 +216,13 @@ Section lft_contexts. ...@@ -216,7 +216,13 @@ Section lft_contexts.
iExists q''. iIntros "{$Htok}!>Htok". iApply ("Hclose" with "[> -]"). iExists q''. iIntros "{$Htok}!>Htok". iApply ("Hclose" with "[> -]").
by iApply "Hclose'". by iApply "Hclose'".
Qed. Qed.
Lemma lctx_lft_alive_external κ κ':
(κ κ')%EL E lctx_lft_alive κ lctx_lft_alive κ'.
Proof.
intros. by eapply lctx_lft_alive_incl, lctx_lft_incl_external.
Qed.
Lemma lctx_lft_alive_list κs ϝ `{!frac_borG Σ} : Lemma lctx_lft_alive_list κs ϝ `{!frac_borG Σ} :
Forall lctx_lft_alive κs Forall lctx_lft_alive κs
(F : coPset) (qL : Qp), (F : coPset) (qL : Qp),
...@@ -305,7 +311,7 @@ Hint Resolve of_val_unlock : lrust_typing. ...@@ -305,7 +311,7 @@ Hint Resolve of_val_unlock : lrust_typing.
Hint Resolve Hint Resolve
lctx_lft_incl_relf lctx_lft_incl_static lctx_lft_incl_local' lctx_lft_incl_relf lctx_lft_incl_static lctx_lft_incl_local'
lctx_lft_incl_external' lctx_lft_incl_external'
lctx_lft_alive_static lctx_lft_alive_local lctx_lft_alive_static lctx_lft_alive_local lctx_lft_alive_external
elctx_sat_nil elctx_sat_lft_incl elctx_sat_app elctx_sat_refl elctx_sat_nil elctx_sat_lft_incl elctx_sat_app elctx_sat_refl
: lrust_typing. : lrust_typing.
Hint Resolve elctx_sat_cons_weaken elctx_sat_app_weaken_l elctx_sat_app_weaken_r Hint Resolve elctx_sat_cons_weaken elctx_sat_app_weaken_l elctx_sat_app_weaken_r
......
...@@ -54,10 +54,10 @@ Section option. ...@@ -54,10 +54,10 @@ Section option.
return: ["r"]]. return: ["r"]].
Lemma option_unwrap_or_type τ : Lemma option_unwrap_or_type τ :
typed_val (option_unwrap_or τ) (fn([]; option τ, τ) τ). typed_val (option_unwrap_or τ) (fn((λ ϝ, []); option τ, τ) τ).
Proof. Proof.
intros. iApply type_fn; [solve_typing..|]. iIntros "/= !#". iIntros ([] ret p). intros. iApply type_fn; [solve_typing..|]. iIntros "/= !#".
inv_vec p=>o def. simpl_subst. iIntros ([] ϝ ret p). inv_vec p=>o def. simpl_subst.
iApply type_case_own; [solve_typing|]. constructor; last constructor; last constructor. iApply type_case_own; [solve_typing|]. constructor; last constructor; last constructor.
+ right. iApply type_delete; [solve_typing..|]. + right. iApply type_delete; [solve_typing..|].
iApply type_jump; solve_typing. iApply type_jump; solve_typing.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment