Commit 68f95e02 by Jacques-Henri Jourdan

extension -> sqle

parent 1d375f24
Pipeline #4740 passed with stages
in 5 minutes 43 seconds
......@@ -3,7 +3,7 @@ From promising Require Export base.
Inductive memOrder := | Plain | Relaxed | StrongRelaxed | AcqRel | SeqCst .
Instance memOrder_ext : Extension memOrder :=
Instance memOrder_sqle : Sqle memOrder :=
λ o1 o2,
match o1, o2 with
| Plain, _ => True
......@@ -32,7 +32,7 @@ Proof.
- move => [] []; firstorder.
Qed.
Instance memOrder_extension_dec : o1 o2 : memOrder, Decision (o1 o2).
Instance memOrder_sqle_dec : o1 o2 : memOrder, Decision (o1 o2).
Proof. move => [] []; firstorder. Qed.
Instance memOrder_join : Join memOrder :=
......
......@@ -36,7 +36,7 @@ Section Memory.
: WellformedResolver (m.(mrel)).
Proof. apply HW. Qed.
Global Instance baseMessage_ext : Extension baseMessage := eq.
Global Instance baseMessage_sqle : Sqle baseMessage := eq.
(* ======================================================================== *)
(** Cells are containers of messages per location,
......@@ -111,7 +111,7 @@ Section Memory.
C !! t' = C' !! t'.
Proof. inversion ADD. by rewrite lookup_insert_ne. Qed.
Lemma cell_addins_ext t m C C'
Lemma cell_addins_sqle t m C C'
(WF: wf C) (ADD: cell_addins t m C C') (WFt: wf (m.(mfrom),t]):
C C'.
Proof.
......@@ -201,7 +201,7 @@ Section Memory.
|rewrite lookup_insert_ne; last auto].
* apply adjacent_interval_disj.
* move => HL. rewrite TEQ.
apply (interval_ext_disj _ (m'.(mfrom), to']).
apply (interval_sqle_disj _ (m'.(mfrom), to']).
{ by apply WF. }
{ split; first done. by apply Qclt_le_weak. }
+ case (decide (to1 = to')) => [?|?];
......@@ -212,17 +212,17 @@ Section Memory.
rewrite lookup_insert_ne; last auto]).
* move => [<-] _. simpl. symmetry. apply adjacent_interval_disj.
* move => HL ?. rewrite lookup_insert_ne in HL; last auto.
apply (interval_ext_disj _ (m'.(mfrom), to']).
apply (interval_sqle_disj _ (m'.(mfrom), to']).
{ by apply WF. }
{ rewrite -TEQ. split; last done. by apply Qclt_le_weak. }
* move => HL [<-] _. rewrite TEQ.
symmetry. apply (interval_ext_disj _ (m'.(mfrom), to']).
symmetry. apply (interval_sqle_disj _ (m'.(mfrom), to']).
{ by apply WF. }
{ split; first done. by apply Qclt_le_weak. }
* case (decide (to2 = to')) => [?|?];
[subst to2; rewrite lookup_insert => HL [<-] _|
rewrite lookup_insert_ne; [apply WF|auto]].
symmetry. apply (interval_ext_disj _ (m'.(mfrom), to']).
symmetry. apply (interval_sqle_disj _ (m'.(mfrom), to']).
{ by apply WF. }
{ split; last done. rewrite -TEQ. by apply Qclt_le_weak. }
Qed.
......@@ -489,7 +489,7 @@ Section Memory.
case_match => Eqv.
eexists. eexists. repeat split; eauto.
- apply (cell_head_lookup (flip ())). by eauto.
- eapply (cell_head_top (flip (@extension Qp Qp_Extension))). by eauto.
- eapply (cell_head_top (flip (@sqle Qp Qp_sqle))). by eauto.
Qed.
Lemma cell_deallocated_correct2 C:
......@@ -983,10 +983,10 @@ Section Memory.
(** Proper instances *)
Global Instance closed_timemap_downclosed:
Proper ((@extension timeMap _) ==> (@eq memory) ==> flip impl) ().
Proper ((@sqle timeMap _) ==> (@eq memory) ==> flip impl) ().
Proof.
move => T1 T2 Ext M1 M2 -> In l t Eq2.
move : Ext => /(_ l). rewrite Eq2.
move => T1 T2 Sqle M1 M2 -> In l t Eq2.
move : Sqle => /(_ l). rewrite Eq2.
destruct (T2 !! l) as [to|] eqn:HT2; rewrite HT2; last done.
cbn => Le.
destruct (In _ _ HT2) as [m [to' [Le' Eq]]].
......@@ -994,15 +994,15 @@ Section Memory.
Qed.
Global Instance closed_view_downclosed:
Proper ((@extension view _) ==> (@eq memory) ==> flip impl) ().
Proper ((@sqle view _) ==> (@eq memory) ==> flip impl) ().
Proof.
move => ?? [Ext1 Ext2] ??-> [??]. split; by [rewrite Ext1|rewrite Ext2].
move => ?? [Sqle1 Sqle2] ??-> [??]. split; by [rewrite Sqle1|rewrite Sqle2].
Qed.
Global Instance opt_closed_view_downclosed:
Proper ((@extension (option view) _) ==> (@eq memory) ==> flip impl) ().
Proper ((@sqle (option view) _) ==> (@eq memory) ==> flip impl) ().
Proof.
move => [V1|] [V2|] Ext ??-> // In. move : Ext In. cbn => -> //.
move => [V1|] [V2|] Sqle ??-> // In. move : Sqle In. cbn => -> //.
Qed.
Lemma closed_timemap_wf_view (V : view) M (WF: wf V) (HC: V.(rlx) M):
......
......@@ -272,13 +272,13 @@ Section Wellformedness.
- eapply sc_fence_step_closed_sc; eauto. apply WF.
Qed.
(* threadView extension *)
Lemma acq_fence_step_tview_ext 𝓥 𝓥'
(* threadView sqle *)
Lemma acq_fence_step_tview_sqle 𝓥 𝓥'
(ACQ: acq_fence_step 𝓥 𝓥') (WF: wf 𝓥) :
𝓥 𝓥'.
Proof. inversion ACQ. constructor; [done|by apply WF|done]. Qed.
Lemma rel_fence_step_tview_ext L1 L2
Lemma rel_fence_step_tview_sqle L1 L2
(REL: rel_fence_step L1 L2) (WF: wf L1.(tv)) :
L1.(tv) L2.(tv).
Proof.
......@@ -296,7 +296,7 @@ Section Wellformedness.
by eexists.
Qed.
Lemma sc_fence_helper_tview_ext 𝓥 𝓥' 𝓢 𝓢'
Lemma sc_fence_helper_tview_sqle 𝓥 𝓥' 𝓢 𝓢'
(SC: sc_fence_helper 𝓥 𝓢 𝓥' 𝓢') (WF: wf 𝓥) :
𝓥 𝓥'.
Proof.
......@@ -304,7 +304,7 @@ Section Wellformedness.
set T' := 𝓥.(acq).(rlx) 𝓢.
set V' := mkView T' T'.
have ?: acq 𝓥 V'.
{ constructor; simpl; (etrans; last apply join_ext_l); [apply WF|done]. }
{ constructor; simpl; (etrans; last apply join_sqle_l); [apply WF|done]. }
rewrite EQSC; constructor; simpl; last done.
- move => l.
case (decide (l dom (gset _) T'))
......@@ -315,50 +315,50 @@ Section Wellformedness.
rewrite HE; last done. cbn. etrans; [apply WF|done].
+ destruct (rel 𝓥 !! l) as [t|] eqn:HRel; last done.
exfalso. apply NIn. rewrite gmap_join_dom_union elem_of_union. left.
apply (gmap_ext_dom_proper _ _ (view_ext_rlx _ _ (tview_wf_cur_acq _ WF))).
apply (gmap_sqle_dom_proper _ _ (view_sqle_rlx _ _ (tview_wf_cur_acq _ WF))).
apply (tview_wf_rel_dom _ WF), elem_of_dom. by eexists.
- etrans; [apply WF|done].
Qed.
Lemma sc_fence_step_tview_ext L1 𝓢1 L2 𝓢2
Lemma sc_fence_step_tview_sqle L1 𝓢1 L2 𝓢2
(SC: sc_fence_step L1 𝓢1 L2 𝓢2) (WF: wf L1.(tv)):
L1.(tv) L2.(tv).
Proof. inversion SC. by eapply sc_fence_helper_tview_ext. Qed.
Proof. inversion SC. by eapply sc_fence_helper_tview_sqle. Qed.
Lemma alloc_step_tview_ext 𝓥1 M1 l n 𝑚s 𝓥2 M2
Lemma alloc_step_tview_sqle 𝓥1 M1 l n 𝑚s 𝓥2 M2
(ALLOC: alloc_step 𝓥1 M1 l n 𝑚s 𝓥2 M2) :
𝓥1 𝓥2.
Proof. inversion ALLOC. by eapply alloc_helper_tview_ext. Qed.
Proof. inversion ALLOC. by eapply alloc_helper_tview_sqle. Qed.
Lemma dealloc_step_tview_ext 𝓥1 M1 l n 𝑚s 𝓥2 M2
Lemma dealloc_step_tview_sqle 𝓥1 M1 l n 𝑚s 𝓥2 M2
(DEALLOC: dealloc_step 𝓥1 M1 l n 𝑚s 𝓥2 M2):
𝓥1 𝓥2.
Proof. inversion DEALLOC. by eapply alloc_helper_tview_ext. Qed.
Proof. inversion DEALLOC. by eapply alloc_helper_tview_sqle. Qed.
Lemma read_step_tview_ext L1 M1 𝑚 o L2
Lemma read_step_tview_sqle L1 M1 𝑚 o L2
(READ: read_step L1 M1 𝑚 o L2) :
L1.(tv) L2.(tv).
Proof. inversion READ. by eapply read_helper_tview_ext. Qed.
Proof. inversion READ. by eapply read_helper_tview_sqle. Qed.
Lemma write_step_tview_ext L1 M1 𝑚 o b L2 M2
Lemma write_step_tview_sqle L1 M1 𝑚 o b L2 M2
(WRITE: write_step L1 M1 𝑚 o b L2 M2):
L1.(tv) L2.(tv).
Proof. inversion WRITE. by eapply write_helper_tview_ext. Qed.
Proof. inversion WRITE. by eapply write_helper_tview_sqle. Qed.
Lemma program_step_tview_ext b c1 ev c2
Lemma program_step_tview_sqle b c1 ev c2
(STEP: program_step b c1 ev c2) (WF: wf c1.(lc).(tv)):
c1.(lc).(tv) c2.(lc).(tv).
Proof.
inversion STEP; [..|by subst].
- by eapply alloc_step_tview_ext.
- by eapply dealloc_step_tview_ext.
- by eapply read_step_tview_ext.
- by eapply write_step_tview_ext.
- etrans; [by eapply read_step_tview_ext|by eapply write_step_tview_ext].
- by apply acq_fence_step_tview_ext.
- by apply rel_fence_step_tview_ext.
- by eapply sc_fence_step_tview_ext.
- by eapply sc_fence_step_tview_ext.
- by eapply alloc_step_tview_sqle.
- by eapply dealloc_step_tview_sqle.
- by eapply read_step_tview_sqle.
- by eapply write_step_tview_sqle.
- etrans; [by eapply read_step_tview_sqle|by eapply write_step_tview_sqle].
- by apply acq_fence_step_tview_sqle.
- by apply rel_fence_step_tview_sqle.
- by eapply sc_fence_step_tview_sqle.
- by eapply sc_fence_step_tview_sqle.
Qed.
(* promises sub *)
......@@ -1249,7 +1249,7 @@ Section Steps.
have ?: Some t ({[l := t]}: timeMap) !! l by rewrite lookup_insert.
move => [<-].
case_match; case_match => /=;
rewrite ?lookup_join; do ? (etrans; last apply join_ext_r); done.
rewrite ?lookup_join; do ? (etrans; last apply join_sqle_r); done.
Qed.
Lemma write_new_mview_closed o l (t t' : time) v 𝓥 M1 C V'
......@@ -1275,8 +1275,8 @@ Section Steps.
- apply CLOSED in Eqt1 as [m2 [t2 Eqt2]].
exists m2, t2. by rewrite (lookup_mem_first_ne l l1) //. }
have ?: 𝓥.(cur) M2.
{ constructor; last done. have Ext := (tview_wf_cur _ WF).
rewrite /wf /view_wf in Ext. by rewrite Ext. }
{ constructor; last done. have Sqle := (tview_wf_cur _ WF).
rewrite /wf /view_wf in Sqle. by rewrite Sqle. }
case_match; last done.
case_match.
- have CLOSED0: v0 M1.
......@@ -1292,8 +1292,8 @@ Section Steps.
exists m2, t2. by rewrite (lookup_mem_first_ne l l1). }
have ?: v0 M2.
{ constructor; last done.
have Ext := (tview_wf_rel _ WF) l. rewrite Heqo0 in Ext.
cbn in Ext. rewrite /wf /view_wf in Ext. by rewrite Ext. }
have Sqle := (tview_wf_rel _ WF) l. rewrite Heqo0 in Sqle.
cbn in Sqle. rewrite /wf /view_wf in Sqle. by rewrite Sqle. }
case_match; simpl; apply join_closed_view;
[done|by apply join_closed_view|done|done].
- case_match; simpl; [by apply join_closed_view|done].
......
......@@ -28,10 +28,10 @@ Qed.
Lemma interval_elem_ub (lb ub: time) (Lt: wf (lb, ub]): ub (lb, ub].
Proof. done. Qed.
Instance interval_ext : Extension interval :=
Instance interval_sqle : Sqle interval :=
λ il ir, low ir low il high il high ir.
Lemma interval_ext_in il ir t:
Lemma interval_sqle_in il ir t:
il ir t il t ir.
Proof. move => [??] [??].
split.
......@@ -48,10 +48,10 @@ Proof. move => ?? H ???. by eapply H. Qed.
Lemma adjacent_interval_disj t1 t2 t3: (t1, t2] (t2, t3].
Proof. move => t [_ /Qclt_not_le Le] [// ?]. Qed.
Lemma interval_ext_disj i1 i2 i3: i2 i3 i1 i2 i1 i3.
Lemma interval_sqle_disj i1 i2 i3: i2 i3 i1 i2 i1 i3.
Proof.
move => Disj ? ? ? ?.
eapply Disj; eauto. by eapply interval_ext_in.
eapply Disj; eauto. by eapply interval_sqle_in.
Qed.
Lemma interval_disjoint_ub_neq l1 u1 l2 u2
......
......@@ -38,14 +38,14 @@ Section ThreadView.
: WellformedResolver (𝓥.(rel) !! l).
Proof. by apply tview_wf_rel. Qed.
Record tview_ext' 𝓥1 𝓥2 :=
mkTViewExt {
tview_ext_rel : 𝓥1.(rel) 𝓥2.(rel);
tview_ext_cur : 𝓥1.(cur) 𝓥2.(cur);
tview_ext_acq : 𝓥1.(acq) 𝓥2.(acq);
Record tview_sqle' 𝓥1 𝓥2 :=
mkTViewSqle {
tview_sqle_rel : 𝓥1.(rel) 𝓥2.(rel);
tview_sqle_cur : 𝓥1.(cur) 𝓥2.(cur);
tview_sqle_acq : 𝓥1.(acq) 𝓥2.(acq);
}.
Global Instance tview_ext : Extension threadView := tview_ext'.
Global Instance tview_sqle : Sqle threadView := tview_sqle'.
Global Instance tview_PartialOrder : @PartialOrder threadView ().
Proof.
......@@ -63,8 +63,8 @@ Section ThreadView.
Global Instance tview_JSL : JoinSemiLattice threadView.
Proof.
constructor; first eauto with typeclass_instances.
- split; last split; apply join_ext_l.
- split; last split; apply join_ext_r.
- split; last split; apply join_sqle_l.
- split; last split; apply join_sqle_r.
- move => ??? [???] [???]; split; by eapply join_least.
Qed.
......@@ -79,14 +79,13 @@ Section ThreadView.
Global Instance closed_tview : ElemOf threadView memory := closed_tview'.
Global Instance closed_tview_downclosed :
Proper ((@extension threadView _) ==> (@eq memory) ==> flip impl) ().
Proper ((@sqle threadView _) ==> (@eq memory) ==> flip impl) ().
Proof.
move => [???] [???] [/= Ext1 Ext2 Ext3] ?? -> [/=???].
move => [???] [???] [/= Sqle1 Sqle2 Sqle3] ?? -> [/=???].
constructor => /=.
(* - by rewrite Ext1. *)
- move => l. by rewrite (Ext1 l).
- by rewrite Ext2.
- by rewrite Ext3.
- move => l. by rewrite (Sqle1 l).
- by rewrite Sqle2.
- by rewrite Sqle3.
Qed.
Lemma closed_timemap_wf_tview 𝓥 M (WF: wf 𝓥) (HC: 𝓥.(acq).(rlx) M):
......@@ -164,19 +163,19 @@ Section ThreadView.
case (decide (AcqRel _)) => _ /=; cbn; solve_jsl.
- case (decide (AcqRel _)) => [?|?] /=.
+ rewrite (decide_True).
* do 2 apply join_ext_mono_r. apply WF.
* do 2 apply join_sqle_mono_r. apply WF.
* etrans; by eauto.
+ have ? : cur 𝓥 V acq 𝓥 V by apply join_ext_mono_r,WF.
case_match; last done. etrans; last apply join_ext_l. done.
+ have ? : cur 𝓥 V acq 𝓥 V by apply join_sqle_mono_r,WF.
case_match; last done. etrans; last apply join_sqle_l. done.
Qed.
Lemma read_helper_tview_ext 𝓥 𝓥' o l t R
Lemma read_helper_tview_sqle 𝓥 𝓥' o l t R
(READ: read_helper 𝓥 o l t R 𝓥'):
𝓥 𝓥'.
Proof.
inversion READ. constructor; simpl; [done|..].
- rewrite CUR. clear. case_match; last apply join_ext_l. solve_jsl.
- rewrite ACQ. case_match; last apply join_ext_l. solve_jsl.
- rewrite CUR. clear. case_match; last apply join_sqle_l. solve_jsl.
- rewrite ACQ. case_match; last apply join_sqle_l. solve_jsl.
Qed.
Lemma write_helper_tview_wf 𝓥 𝓥' o l t Rr Rw
......@@ -208,15 +207,15 @@ Section ThreadView.
+ cbn.
have ?: Vra cur 𝓥 V.
{ rewrite VRA.
case (decide (AcqRel _)) => _ /=; [by auto|by apply join_ext_r]. }
case (decide (AcqRel _)) => _ /=; [by auto|by apply join_sqle_r]. }
rewrite VEq'. destruct (rel 𝓥 !! l) as [V0|] eqn:Eq0; last auto.
apply join_least; last by auto. etrans; last apply join_ext_l.
apply join_least; last by auto. etrans; last apply join_sqle_l.
have ?: Some V0 Some (cur 𝓥) by rewrite -Eq0; apply WF. done.
+ etrans; first apply WF. cbn. apply join_ext_l.
- apply join_ext_mono_r, WF.
+ etrans; first apply WF. cbn. apply join_sqle_l.
- apply join_sqle_mono_r, WF.
Qed.
Lemma write_helper_tview_ext 𝓥 𝓥' o l t Rr Rw
Lemma write_helper_tview_sqle 𝓥 𝓥' o l t Rr Rw
(WRITE: write_helper 𝓥 o l t Rr Rw 𝓥'):
𝓥 𝓥'.
Proof.
......@@ -225,9 +224,9 @@ Section ThreadView.
- move => l'. rewrite REL VEq'.
case (decide (l' = l)) => [->|?];
[rewrite lookup_insert|by rewrite lookup_insert_ne].
case (rel 𝓥 !! l) => [?|]; [cbn;apply join_ext_l|done].
- apply join_ext_l.
- apply join_ext_l.
case (rel 𝓥 !! l) => [?|]; [cbn;apply join_sqle_l|done].
- apply join_sqle_l.
- apply join_sqle_l.
Qed.
Lemma sc_fence_helper_tview_wf 𝓥 𝓥' 𝓢 𝓢'
......@@ -355,20 +354,20 @@ Section ThreadView.
rewrite EQSC. apply join_closed_timemap; [by apply CLOSED|by auto].
Qed.
Lemma sc_fence_helper_tview_ext 𝓥 𝓥' 𝓢 𝓢'
Lemma sc_fence_helper_tview_sqle 𝓥 𝓥' 𝓢 𝓢'
(WF: wf 𝓥)
(SC: sc_fence_helper 𝓥 𝓢 𝓥' 𝓢') :
𝓥 𝓥'.
Proof.
inversion SC.
have ?: 𝓥.(acq) {| pln := 𝓢'; rlx := 𝓢' |}.
{ rewrite EQSC. constructor; simpl; last apply join_ext_l.
etrans; last apply join_ext_l. apply WF. }
{ rewrite EQSC. constructor; simpl; last apply join_sqle_l.
etrans; last apply join_sqle_l. apply WF. }
constructor; simpl; [|etrans; [apply WF|done]|done].
move => l.
have HD : dom (gset loc) 𝓥.(rel) dom (gset _) 𝓢'.
{ etrans; first apply WF.
rewrite (view_ext_rlx _ _ (tview_wf_cur_acq _ WF))
rewrite (view_sqle_rlx _ _ (tview_wf_cur_acq _ WF))
EQSC gmap_join_dom_union.
apply union_subseteq_l. }
case (decide (l dom (gset loc) 𝓢')) as [IN|NIN].
......@@ -379,10 +378,10 @@ Section ThreadView.
exfalso. apply NIN, HD, elem_of_dom. by eexists.
Qed.
Lemma sc_fence_helper_sc_ext 𝓥 𝓥' 𝓢 𝓢'
Lemma sc_fence_helper_sc_sqle 𝓥 𝓥' 𝓢 𝓢'
(SC: sc_fence_helper 𝓥 𝓢 𝓥' 𝓢') :
𝓢 𝓢'.
Proof. inversion SC. rewrite EQSC. apply join_ext_r. Qed.
Proof. inversion SC. rewrite EQSC. apply join_sqle_r. Qed.
Lemma sc_fence_helper_closed_tview 𝓥 𝓥' 𝓢 𝓢' M
(SC: sc_fence_helper 𝓥 𝓢 𝓥' 𝓢')
......@@ -435,15 +434,15 @@ Section ThreadView.
+ eapply wf_mem_list_addins; eauto.
Qed.
Lemma alloc_helper_tview_ext 𝑚s 𝓥 𝓥'
Lemma alloc_helper_tview_sqle 𝑚s 𝓥 𝓥'
(ALLOC: alloc_helper 𝑚s 𝓥 𝓥') :
𝓥 𝓥'.
Proof.
induction ALLOC; first by auto.
apply write_helper_tview_ext in WRITE. etrans; eauto.
apply write_helper_tview_sqle in WRITE. etrans; eauto.
Qed.
Lemma alloc_helper_cur_ext 𝑚s 𝓥1 𝓥2
Lemma alloc_helper_cur_sqle 𝑚s 𝓥1 𝓥2
(ALLOC: alloc_helper 𝑚s 𝓥1 𝓥2) :
𝑚, 𝑚 𝑚s Some (mto 𝑚) pln (cur 𝓥2) !! mloc 𝑚.
Proof.
......@@ -452,9 +451,9 @@ Section ThreadView.
inversion_clear ALLOC.
move => /elem_of_cons [->|In].
- inversion WRITE. rewrite /= lookup_join VEq /= lookup_singleton.
apply join_ext_r.
apply join_sqle_r.
- etrans; first apply (IH _ NEXT _ In).
apply (write_helper_tview_ext _ _ _ _ _ _ _ WRITE).
apply (write_helper_tview_sqle _ _ _ _ _ _ _ WRITE).
Qed.
Lemma alloc_helper_cur_old 𝑚s 𝓥1 𝓥2 l
......
......@@ -14,14 +14,14 @@ Section View.
(** View wellformnedness *)
Global Instance view_wf : Wellformed view := λ V, V.(pln) V.(rlx).
(** View extension *)
Record view_ext' V1 V2 :=
mkViewExt {
view_ext_pln : V1.(pln) V2.(pln);
view_ext_rlx : V1.(rlx) V2.(rlx);
(** View order *)
Record view_sqle' V1 V2 :=
mkViewSqle {
view_sqle_pln : V1.(pln) V2.(pln);
view_sqle_rlx : V1.(rlx) V2.(rlx);
}.
Global Instance view_ext : Extension view := view_ext'.
Global Instance view_sqle : Sqle view := view_sqle'.
Global Instance view_PartialOrder : @PartialOrder view ().
Proof.
......@@ -39,8 +39,8 @@ Section View.
wf V1 wf V2 wf (V1 V2).
Proof.
move => W1 W2. rewrite /wf /view_wf. etrans.
apply join_ext_mono_r; first eauto.
by apply join_ext_mono_l.
apply join_sqle_mono_r; first eauto.
by apply join_sqle_mono_l.
Qed.
Global Instance view_join_wf_R {V1 V2: view} {_: WellformedResolver V1}
......@@ -56,8 +56,8 @@ Section View.
Global Instance view_JSL : JoinSemiLattice view.
Proof.
constructor; first eauto with typeclass_instances.
- split; apply join_ext_l.
- split; apply join_ext_r.
- split; apply join_sqle_l.
- split; apply join_sqle_r.
- move => ??? [??] [??]; split ; by eapply join_least.
Qed.
......@@ -79,7 +79,7 @@ Section View.
inj_countable _view_to_pair (Some _pair_to_view) _.
Proof. by destruct 0. Qed.
Global Instance view_equiv_ext_antisymm : AntiSymm (=) ().
Global Instance view_equiv_sqle_antisymm : AntiSymm (=) ().
Proof.
move => [??] [??] [H11 H12] [H21 H22].
f_equiv; simpl in *; by apply (anti_symm ()).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment