diff --git a/theories/proofmode/classes.v b/theories/proofmode/classes.v index 32b0d168cff9f5eed06ef606ae1930a19900bc50..acef2f557eaa54b25e517d41736ef37700d32c74 100644 --- a/theories/proofmode/classes.v +++ b/theories/proofmode/classes.v @@ -389,10 +389,15 @@ Instance maybe_frame_default {PROP : bi} (R P : PROP) : TCOr (Affine R) (Absorbing P) → MaybeFrame false R P P false | 100. Proof. intros. rewrite /MaybeFrame /=. apply: sep_elim_r. Qed. -(* For each of the [MakeXxxx] class, there is a [KnownMakeXxxx] variant, - that only succeeds if the parameter(s) is not an evar. In the case - the parameter(s) is an evar, then [MakeXxxx] will not instantiate - it arbitrarily. *) +(* For each of the [MakeXxxx] class, there is a [KnownMakeXxxx] + variant, that only succeeds if the parameter(s) is not an evar. In + the case the parameter(s) is an evar, then [MakeXxxx] will not + instantiate it arbitrarily. + + The reason for this is that if given an evar, these typeclasses + would typically try to instantiate this evar with some arbitrary + logical constructs such as emp or True. Therefore, we use an Hint + Mode to disable all the instances that would have this behavior. *) Class MakeEmbed `{BiEmbedding PROP PROP'} (P : PROP) (Q : PROP') := make_embed : ⎡P⎤ ⊣⊢ Q. Arguments MakeEmbed {_ _ _ _} _%I _%I.