Мы в Telegram
Добавить новость
Новости сегодня

Новости от TheMoneytizer

Найти наибольший общий делитель чисел m и n.

Найти наибольший общий делитель чисел m и n, перебирая числа от min m n до 1, а не используя алгоритм Евклида.
В Coq есть операция m mod n (или modulo m n), которая возвращает остаток от деления m на n. Однако поскольку все функции в Coq являются тотальными, значение выражения m mod 0 равно 0 по определению. Также есть предикат (n | m) (пишется в скобках; или divide n m), который равен True, если n делит m. Следует обратить внимание, что modulo возвращает nat и следовательно может быть использован в программах, в то время как divide n m возвращает Prop и может использоваться только в спецификациях. Не забывайте использовать инструкции import, определение тактики bdestruct и пример нахождение максимума массива , которые находятся ниже.

Require Import Arith.
Require Import Lia.
Require Import Bool.
Import Nat Peano.

Search le.
Global Hint Resolve ltb_spec0 leb_spec0 eqb_spec : bdestruct.

Ltac bdestr X H :=
let e := fresh "e" in
evar (e : Prop);
assert (H : reflect e X); subst e;
[ eauto with bdestruct
| destruct H as [H | H];
[ | try first [apply nlt_ge in H | apply nle_gt in H]]].

Tactic Notation "bdestruct" constr(X) := let H := fresh in bdestr X H.

Tactic Notation "bdestruct" constr(X) "as" ident(H) := bdestr X H.


Section ArrayMax.

Variable array : nat -> nat.

( [arrayMax n] возвращает [max(array 0, ..., array n)]. Массив
непустой для любого n >= 0, поэтому максимум определен. *)

Fixpoint arrayMax (n : nat) : nat :=
match n with
| 0 => array 0
| S k => max (arrayMax k) (array n)
end.

Theorem arrayMaxSpec1 :
forall n i, i <= n -> array i <= arrayMax n.
Proof.
induction n as [| n IH]; intros i H.
* assert (H1 : i = 0) by lia. rewrite H1. reflexivity.
( Тактика [reflexivity] доказывает не только [M = M],
но и [M <= M]. *)
* assert (H1 : i <= n \/ i = S n) by lia.
clear H.
( Эта посылка больше не нужна. *)
simpl.
( Упрощение [arrayMax (S n)] по определению. *)
destruct H1 as [H1 | H1].
+ apply (le_trans _ (arrayMax n)).
- auto.
( Следует непосредственно из предположения индукции. *)
- apply le_max_l.
+ subst i.
( Или [rewrite H1]. *)
apply le_max_r.
Qed.

Check le_trans.


Fixpoint arrayMax' (n : nat) : nat :=
match n with
| 0 => array 0
| S k => let p := arrayMax' k in
if p <=? array n then array n else p
end.

Theorem arrayMaxSpec1' :
forall n i, i <= n -> array i <= arrayMax' n.
Proof.
induction n as [| n IH]; intros i H.
* assert (H1 : i = 0) by lia. now rewrite H1.
* assert (H1 : i <= n \/ i = S n) by lia; clear H.
simpl. destruct H1 as [H1 | H1].
+ apply (le_trans _ (arrayMax' n)).
- auto.
- bdestruct (arrayMax' n <=? array (S n)) as H.
-- assumption.
-- reflexivity.
+ subst i.
bdestruct (arrayMax' n <=? array (S n)) as H.
- easy.
- now apply lt_le_incl.
Qed.

Lemma max_variants : forall m n, max m n = m \/ max m n = n.
Proof.
Admitted.

Theorem arrayMaxSpec2 :
forall n, exists i, i <= n /\ array i = arrayMax n.
Proof.
Admitted.

Fixpoint arrayMaxHelp (n p : nat) : nat :=
match n with
| 0 => max p (array 0)
| S k => arrayMaxHelp k (max p (array n))
end.

Definition arrayMax1 (n : nat) : nat := arrayMaxHelp n (array n).

(** Докажите равенство функций arrayMax и arrayMax1 *)

Theorem maxEqual : forall n, arrayMax n = arrayMax1 n.
Admitted.

End ArrayMax.

Читайте на 123ru.net


Новости 24/7 DirectAdvert - доход для вашего сайта



Частные объявления в Вашем городе, в Вашем регионе и в России



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

Центр Всероссийского музея А. С. Пушкина откроется в библиотеке-читальне

Пока в Карелии тянут с решением по ОМК, в Москве вслед за Путиным говорят об амнистии для таких предприятий

В Алтайском крае суд вынес приговор мужчине, который пытался покинуть самолёт во время полёта и ударил бортпроводницу

"Они его съедают": Армия встала за обвиненного в мошенничестве генерал-майора Ивана Попова

Музыкальные новости

Активиста Булатова оштрафовали на 50 тысяч рублей за дискредитацию армии

Тревел-тату как искусство: Яндекс Плюс запустил проект «Из путешествия – с татуировкой»

Что там в IT: ИИ-отрыв Google, ChatGPT почти человек, отечественный BIOS

Футбол Беларуси. Минское «Динамо» сразилось с «Шахтером» из Солигорска

Новости России

Центр Всероссийского музея А. С. Пушкина откроется в библиотеке-читальне

Высокотехнологичную ферму племзавода «Повадино» построят в Домодедове

Спецназовцы Росгвардии и сотрудники военной контрразведки задержали нарушителей миграционного законодательства в ДНР

V Общероссийская конференция «Устойчивое развитие этнокультурного сектора» представит калейдоскоп успешных практик в сфере социального проектирования

Экология в России и мире

Футболисты ФК «Динамо Пушкино» заняли второе место в межрегиональном турнире Laffy Cup 2024

Июньские дни духовности: Православные праздники месяца от ясновидящей Галины Янко

Осторожно ВПЧ! Доктор Кутушов рассказал от чего появляются папилломы на теле

Российские туристы встретились с таджикскими строителями в Новой Зеландии и были удивлены их жизни и ответами на вопросы

Спорт в России и мире

Российский теннисист Медведев опустится на строчку в рейтинге ATP

Потапова проиграла на старте турнира WTA-500 в Страсбурге

Рыбакина узнала свое место в новом мировом рейтинге

Потапова не смогла пробиться во второй круг турнира WTA в Страсбурге

Moscow.media

MONT расширил продуктовую линейку ИБ-решений при поддержке «Сайберпик»

ТСД SAOTRON RT-T50: высокопроизводительный терминал сбора данных промышленного класса

Новые вызовы и обеспечение технологического суверенитета квалифицированными кадрами обсудили в Москве

Bluetooth-сканер штрих-кодов SAOTRON P04 на базе CMOS-матрицы







Топ новостей на этот час

Rss.plus





СМИ24.net — правдивые новости, непрерывно 24/7 на русском языке с ежеминутным обновлением *