blob: bf0e570ab8c2b396378172581a41fee7c474b97f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
Require Import Arith.Compare_dec.
Require Import Unicode.Utf8.
Fixpoint my_nat_iter (n : nat) {A} (f : A → A) (x : A) : A :=
match n with
| O => x
| S n' => f (my_nat_iter n' f x)
end.
Definition gcd_IT_F (f : nat * nat → nat) (mn : nat * nat) : nat :=
match mn with
| (0, 0) => 0
| (0, S n') => S n'
| (S m', 0) => S m'
| (S m', S n') =>
match le_gt_dec (S m') (S n') with
| left _ => f (S m', S n' - S m')
| right _ => f (S m' - S n', S n')
end
end.
Axiom max_correct_l : ∀ m n : nat, m <= max m n.
Axiom max_correct_r : ∀ m n : nat, n <= max m n.
Hint Resolve max_correct_l max_correct_r : arith.
Theorem foo : ∀ p p' p'' : nat, p'' < S (max p (max p' p'')).
Proof.
intros.
Timeout 3 eauto with arith.
Qed.
|