Ltac AddSC_enrich :=
progress autorewrite with AddSC; intros; unfold OpaqueProp at 1.
Ltac AddAX_enrich :=
progress autorewrite with AddAX; intros; unfold OpaqueProp at 1.

(* Specifications: *)
Lemma finish_enrich: forall (G: Prop), G -> OpaqueProp (Typeclass_Rewrite nil -> OpaqueProp G).
Ltac enrich tac :=
first
[ tac
| match goal with
| |- OpaqueProp (Typeclass_Rewrite (?x :: _) -> _) =>
apply (pop_schedule x);
enrich tac;
apply (push_schedule x)
end
].