add internal_eq_entails uPred law

Merged Ralf Jung requested to merge ralf/internal-eq-entails into master

This adds a new uPred law:

Lemma internal_eq_entails {A B : ofeT} (a1 a2 : A) (b1 b2 : B) :
  ( n, a1 {n} a2  b1 {n} b2)  a1  a2  b1  b2.

That law was very useful in !486 (merged) because it means this lemma:

  Local Lemma to_auth_map_singleton_includedN qe n m k e :
    {[k := to_auth_elem qe e]} {n} to_auth_map m  m !! k {n} Some e.

can be reused to prove the "internal" lemma

  Local Lemma to_auth_map_singleton_includedI qe M m c k e :
    to_auth_map m  {[k := to_auth_elem qe e]}  c @{uPredI M} m !! k  Some e.

Without internal_eq_entails, I think I'd have to re-prove the exact same thing again, which would be rather painful (it's a 20-line proof script and relies on a few other lemmas that all would require "internal" equivalents, so overall -- a lot of extra work).

internal_eq_entails is really just a special case of a law about siProp that we should have once we have the infrastructure for that.

Merge request reports