Я установил Coquelicot поверх mathcomp/SSreflect.Библиотека Coquelicot для базового студенческого исчисления
Я хочу выполнить очень простой реальный анализ с ним, даже если я до сих пор не владею стандартным Coq.
Это моя первая лемма:
Definition fsquare (x : R) : R := x^2.
Lemma deriv_x2 : forall y, is_derive (fsquare) y (2 * y).
is_derive f x0 f'
является Coquelicot Prop, который гласит, что производная функции f at x0 is f'
.
Я уже доказал эту лемму благодаря тактике auto_derive
, предоставленной Coquelicot.
Если я хочу, чтобы мои руки немного грязный, это моя попытка без auto_derive
:
Lemma deriv_x2 : forall y, is_derive (fsquare) y (2 * y).
Proof.
move => y.
unfold fsquare.
evar_last.
apply is_derive_pow.
apply is_derive_id.
simpl.
А теперь я застрял с этим в ожидании суда:
1 subgoal
y : R_AbsRing
______________________________________(1/1)
2 * one * (y * 1) = 2 * y
Как решить Это ?
EDIT:
, если я позвоню ring
, я получаю:
Error: Tactic failure: not a valid ring equation.
если я раскрываться один, я получаю:
1 subgoal
y : R_AbsRing
______________________________________(1/1)
2 *
Ring.one
(AbelianGroup.Pack R_AbsRing (Ring.class R_AbsRing) R_AbsRing)
(Ring.class R_AbsRing) * (y * 1) = 2 * y
Возможно, вы захотите изучить [тактику кольца] (https://coq.inria.fr/refman/Reference-Manual028.html). – gallais
@ gallais: Thx. полевая тактика не срабатывает на данном этапе. Полагаю, мне нужно избавиться от термина «один». Я пробовал разворачиваться, но это не очень хорошая идея, я боюсь. – FZed
Вы пробовали «кольцо»? Здесь вам не нужна вся сила «поля». Для чего «разворачивается»? Я бы действительно ожидал, что было бы неплохо развернуть его. – gallais