Coq новичок здесь, я недавно прошел самостоятельно через первые 7 глав " Логические основы ".
Я пытаюсь создать доказательство по индукциив Coq ∀ n>= 3, 2n+1 < 2^n
.
я начинаю с destruct
, удаляя ложные гипотезы, пока не достигну n = 3 .Затем я делаю индукцию на n , случай для n = 3 тривиален, но, как я могу доказать индуктивный шаг ??
Я вижу, как цель держится.Я могу доказать это с помощью анализа кейсов, используя destruct
, но не смог показать его в общем виде.
Используемые мной функции из " Logical Foundations"и можно увидеть здесь .
Мои доказательства пока:
(* n>=3, 2n+1 < 2^n *)
Theorem two_n_plus_one_leq_three_lt_wo_pow_n : forall n:nat,
(blt_nat (two_n_plus_one n) (exp 2 n)) = true
-> (bge_nat n 3) = true.
Proof.
intros n.
destruct n.
(* n = 0 *)
compute.
intros H.
inversion H.
destruct n.
(* n = 1 *)
compute.
intros H.
inversion H.
destruct n.
(* n = 2 *)
compute.
intros H.
inversion H.
induction n as [ | k IHk].
(* n = 3 *)
- compute.
reflexivity.
- rewrite <- IHk.
(* Inductive step... *)