summaryrefslogtreecommitdiff
path: root/test-suite/bugs/closed/4429.v
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.