Расположение элементов в списке - PullRequest
0 голосов
/ 30 апреля 2020

Я располагаю список натуральных чисел в порядке убывания. С помощью следующих двух функций я нашел элемент максимального значения в списке.

Теперь вместо fold_ tacti c я хочу использовать свою собственную функцию, потому что обе предназначены для одной и той же цели.

Definition replace (n: nat) (l: list nat) : list nat:=
 match l with
 | nil => l
 | h::tl => if n <? h then l else n::tl
end.

Fixpoint largest (elements: nat) (l: list nat) : nat :=
match l with
| nil => 0
| cons h1 nil => h1 
| cons h l => match elements with
| O => h
| S elements' => largest elements'  (replace h l)
 end
 end.

Definition maxvalue (l : list nat) : [] <> l -> nat.
 intros.
 destruct l.
 destruct (H (@erefl (list nat) [])).
 apply : (fold_left (fun x y => if x <=? y then y else x) l n).
Defined.

Theorem sub_ordering : forall l n0 n1,
  n1 <= n0 -> 
  fold_left (fun x y : nat => if x <=? y then y else x) 
  l n1 <= fold_left (fun x y : nat => if x <=? y then y else x) l n0.

 Definition maxval (l : list nat) : [] <> l -> nat.
  intros.
  destruct l.
  destruct (H (@erefl (list nat) [])).
  apply : ( largest (length elements)(replace h l) l n).
 Defined.
...