Gibt es etwas wie die Taktik simpl
für Program Fixpoint
s?Coq simpl für Programm Fixpunkt
Insbesondere, wie kann man die folgende triviale Aussage beweisen?
Program Fixpoint bla (n:nat) {measure n} :=
match n with
| 0 => 0
| S n' => S (bla n')
end.
Lemma obvious: forall n, bla n = n.
induction n. reflexivity.
(* I'm stuck here. For a normal fixpoint, I could for instance use
simpl. rewrite IHn. reflexivity. But here, I couldn't find a tactic
transforming bla (S n) to S (bla n).*)
Offensichtlich gibt es keine Program Fixpoint
notwendig für dieses Spielzeug Beispiel, aber ich bin das gleiche Problem in einer komplizierteren Umgebung an, wo ich Beendigung der Program Fixpoint
manuell beweisen muß.
In der gleichen Idee können Sie das Gleichungslemma für 'bla' angeben:' forall n, bla n = match n mit | 0 => 0 | S n '=> S (bla n') ende. ' – eponier
Ist das wirklich die beste Antwort? Ist das nicht "Programm Fixpunkt" relativ kompliziert für große Funktionen, wenn Sie ein Reduktions-Lemma manuell schreiben müssen? –
Neuere Plugins wie 'Equations' erzeugen Reduktions-Lemmas für Sie. – gallais