Skip to content
Snippets Groups Projects

Add lemmas used by RefinedRust

Merged Lennard Gäher requested to merge ci/lennard/refinedrust into master
2 unresolved threads
Files
3
+ 23
0
@@ -184,4 +184,27 @@ Proof.
eapply HK'', . rewrite elem_of_union. auto.
+ iRight. iFrame. iPureIntro. by apply lft_dead_in_insert_false.
Qed.
(* TODO : move? *)
Local Lemma gset_sup (m : gset positive) :
i : positive, k, k m (k < i)%positive.
Proof.
exists (Pos.succ (foldr Pos.max 1%positive (elements m))).
setoid_rewrite <-(elem_of_elements m). generalize (elements m) as l.
induction l as [ | n l IH]; simpl.
- intros ? []%elem_of_nil.
- intros ? [<- | H]%elem_of_cons; first lia.
apply IH in H. lia.
Qed.
Lemma lft_fresh_strong κ κ' :
i : positive, m : positive, (i < m)%positive (positive_to_lft m) κ' κ.
Proof.
unfold meet, lft_intersect.
destruct (gset_sup (dom κ)) as (i & Hi).
exists i. intros k Hik Heq. subst κ.
specialize (Hi k). ospecialize (Hi _); last lia.
apply gmultiset_elem_of_dom.
apply gmultiset_elem_of_disj_union.
left. by apply gmultiset_elem_of_singleton.
Qed.
End creation.
Loading