У меня есть доказательство в Coq, где одна из гипотез является:Не удается переписать подтермы в Coq
H : m = pred q * n + (r + n)
И у меня есть доказанная лемма, которая гласит:
Lemma suma_conmutativa: forall m, forall n, m + n = n + m.
Где + является нотацией для функция называется сума, что я определил:
Fixpoint suma (m:nat) (n:nat) : nat :=
match m with
| 0 => n
| S k => S (suma k n)
end.
Notation "m + n" := (suma m n).
по какой-то причине, когда я пытаюсь переписать suma_conmutativa with r n in H
я получаю следующее сообщение об ошибке:
Error: Found no subterm matching "r + n" in H.
Однако, очевидно, что подтерм согласуется с r + n в H. Почему это не может найти Coq?
спасибо.
Кажется, что это символ с обозначением, потому что если H было m = pred q * n + (suma r n), то, по-видимому, он мог бы переписать его. –
Да, вы уверены, что + в вашем выражении - ваша 'сума'? Пытается «Устранить печатные обозначения» (или эквивалент в вашей среде IDE). – Vinz