Lvc.Spilling.ToBeOutsourced

ToBeOutsourced




Lemma renamedApart_incl
      (s : stmt)
      (ra : ann (var × var))
  :
    renamedApart s ra
     match ra with
      | ann1 (D, D') an
        ⇒ union_fs (getAnn an) D D'
      | ann2 (D, D') ans ant
        ⇒ union_fs (getAnn ans) D D'
           union_fs (getAnn ant) D D'
      | annF (D, D') anF ant
        ⇒ ( (ans : ann (var × var)) n,
              get anF n ans
               union_fs (getAnn ans) D D')
           union_fs (getAnn ant) D D'
      | _True
      end
.
Proof.
  intros.
  invc H; simpl; unfold union_fs; eauto; set_simpl; pe_rewrite; repeat split;
    intros; inv_get; eauto with cset.
Qed.


Lemma injective_on_map_inter
      (X : Type)
      `{OrderedType X}
      (D s t : X)
      (f : X X)
  :
    Proper (_eq ==> _eq) f
     injective_on D f
     s D
     t D
     map f (s t) [=] map f s map f t
.
Proof.
  intros.
  apply incl_eq.
  - hnf; intros.
    cset_tac'.
    exploit (H1 x x0); eauto. eqs.
    rewrite H10 in ×. eauto.
  - hnf; intros.
    cset_tac.
Qed.