Dies ist ein bisschen theoretische Frage. Wir können fx
definieren, aber scheinbar nicht fx'
:Coq: Eine Anwendung testen
Function fx {A} (x:A) (f:A->Type) (g:Type->f x): f x := g (f x).
Definition fx' {A} (x:A) (f:A->Type): f x.
In gewisser Weise macht den Sinn, da man nicht von den f
beweisen kann und x
dass f
wurde (oder wird), die auf x
. Aber wir können f
-x
gelten etwas vom Typ zu bekommen Type
:
assert (h := f x).
Dies scheint rätselhaft: ein f
-x
anwenden können aber noch kann kein Zeugnis erhalten y: f x
, dass er so getan hat.
Die einzige Erklärung, die ich mir vorstellen kann, ist: als eine Art, f x
ist eine Anwendung, als ein Begriff, es ist nur ein Typ. Wir können keine frühere Anwendung von einem Typ ableiten; In ähnlicher Weise können wir aus einer Funktion und ihrem möglichen Argument nicht auf eine zukünftige Anwendung schließen. Was das Anwenden betrifft, ist es keine Stufe in einem Beweis, so dass wir kein Zeugnis davon haben können. Aber ich rate nur. Die Frage:
Ist es möglich, fx'
zu definieren? Wenn ja, wie; wenn nein, warum (bitte eine theoretische Erklärung geben)
'Funktion fx' ist hier nicht wirklich notwendig,' Definition fx' würde auch funktionieren. –
Ja (ich habe beide benutzt, um zu zeigen, dass beide funktionieren) – jaam