ich mit der Mathe-Klassen-Bibliothek spielen gerade begonnen haben um und ich würde möchte folgende Lemma beweisen:Mathe-Klassen: Beweisen Sie, dass MUNIT ihre eigene Negation ist
Require Import
MathClasses.interfaces.abstract_algebra MathClasses.interfaces.vectorspace MathClasses.interfaces.canonical_names.
Lemma Munit_is_its_own_negation `{Module R M} : Munit = - Munit.
Ich hatte geplant, zu beweisen dies etwa so:
- hinzufügen MUNIT auf der rechten Seite mit
right_identity
:Munit = - Munit & Munit
- verwenden
left_inverse
auf der rechten Seite:Munit = Munit
- Verwenden Sie
reflexivity
.
aber wenn ich versuche, rewrite <- right_inverse
anzuwenden, erhalte ich die folgende Fehlermeldung:
Error:
Unable to satisfy the following constraints:
In environment:
R : Type
M : Type
Re : Equiv R
Rplus : Plus R
Rmult : Mult R
Rzero : Zero R
Rone : One R
Rnegate : Negate R
Me : Equiv M
Mop : SgOp M
Munit : MonUnit M
Mnegate : Negate M
sm : ScalarMult R M
H : Module R M
?A : "Type"
?B : "Type"
?H : "Equiv (MonUnit M)"
?op : "?A → ?B → MonUnit M"
?inv : "?A → ?B"
?RightInverse : "RightInverse ?op ?inv Munit"
Warum sucht Coq für eine Equiv (MonUnit M)
anstatt nur einem Equiv M
oder MonUnit M
, die in der Umwelt sind? Ist es möglich, diesen Beweis zu vervollständigen? Wenn das so ist, wie?
Nur ein Tipp: es gibt eine prägnante Art und Weise ist, dass Sie alle Module importieren müssen: 'Von MathClasses.interfaces Import erfordern abstract_algebra Vektorraum canonical_names.' –