Ich arbeite mit der Mathematik-Klassen-Bibliothek in Coq. Diese Bibliothek verwendet geschickt Klassen, um Notationen zu überladen.Entfaltete verschachtelte Definitionen in Coq
(* From math-classes *)
Class Equiv A := equiv : relation A.
Infix "=" := equiv : type_scope.
(* My code *)
Definition MyDataType : Type := ...
Definition MyEquality (x y : MyDataType) : Prop := ...
Instance MyEq_equiv : Equiv MyDataType := MyEquality.
kann ich solchen Fällen für viele verschiedene Datentypen definieren und x = y
wird als Gleichheit verstanden werden, ich für die Art von x
und y
dank der Instanz Bewältigungsmechanismus registriert haben.
jedoch in Proofs mit diesen Gleichheiten zu tun ist ein bisschen ärgerlich, weil ich zu unfold
vielen aufeinander folgenden Definitionen:
Lemma MyEquality_refl : forall x : MyDataType, x = x.
Proof.
intro.
unfold equiv, MyEq_equiv, MyEquality.
...
Qed.
Gibt es eine effizientere Art und Weise diesen unfold
zu tun?
Ihre zweite Lösung funktioniert super, danke! – pintoch
Froh, zu helfen :) –