Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************)
(*         *   The Coq Proof Assistant / The Coq Development Team       *)
(*  v      *   INRIA, CNRS and contributors - Copyright 1999-2018       *)
(* <O___,, *       (see CREDITS file for the list of authors)           *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)

Require Import Compare.
Require Import Rbase.
Require Import Rfunctions.
Require Import Rseries.
Require Import PartSum.
Require Import Binomial.
Require Import Omega.
Local Open Scope R_scope.
TT Ak; 0<=k<=N
Fixpoint prod_f_R0 (f:nat -> R) (N:nat) : R :=
  match N with
    | O => f O
    | S p => prod_f_R0 f p * f (S p)
  end.

Notation prod_f_SO := (fun An N => prod_f_R0 (fun n => An (S n)) N).

(**********)

forall (An : nat -> R) (n k : nat), (k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)

forall (An : nat -> R) (n k : nat), (k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
An:nat -> R
k:nat
H:(k < 0)%nat

prod_f_R0 An 0 = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (0 - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S n - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)

prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S n - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:k = n

prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S n - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat
prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S n - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:k = n

prod_f_R0 An n * An (S n) = prod_f_R0 An n * An (n + 1 + 0)%nat
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat
prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S n - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat

prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S n - k - 1)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat

prod_f_R0 An (S n) = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (S (n - k - 1))
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat

prod_f_R0 An n * An (S n) = prod_f_R0 An k * (prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1) * An (k + 1 + S (n - k - 1))%nat)
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat
S n = (k + S (n - k))%nat
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat

prod_f_R0 An n * An (S n) = prod_f_R0 An k * (prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1) * An (S n))
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat
S n = (k + 1 + S (n - k - 1))%nat
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat
S n = (k + S (n - k))%nat
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat

S n = (k + 1 + S (n - k - 1))%nat
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat
S n = (k + S (n - k))%nat
An:nat -> R
n, k:nat
H:(k < S n)%nat
Hrecn:(k < n)%nat -> prod_f_R0 An n = prod_f_R0 An k * prod_f_R0 (fun l : nat => An (k + 1 + l)%nat) (n - k - 1)
H0:k = n \/ (k < n)%nat
H1:(k < n)%nat

S n = (k + S (n - k))%nat
omega. Qed. (**********)

forall (An : nat -> R) (N : nat), (forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N

forall (An : nat -> R) (N : nat), (forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N
An:nat -> R
H:forall n : nat, (n <= 0)%nat -> 0 <= An n

0 <= prod_f_R0 An 0
An:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N
0 <= prod_f_R0 An (S N)
An:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N

0 <= prod_f_R0 An (S N)
An:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N

0 <= prod_f_R0 An N
An:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N
0 <= An (S N)
An:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n) -> 0 <= prod_f_R0 An N

0 <= An (S N)
apply H; apply le_n. Qed. (**********)

forall (An Bn : nat -> R) (N : nat), (forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

forall (An Bn : nat -> R) (N : nat), (forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
An, Bn:nat -> R
H:forall n : nat, (n <= 0)%nat -> 0 <= An n <= Bn n

prod_f_R0 An 0 <= prod_f_R0 Bn 0
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
prod_f_R0 An (S N) <= prod_f_R0 Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

prod_f_R0 An (S N) <= prod_f_R0 Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

prod_f_R0 An N * An (S N) <= prod_f_R0 An N * Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
prod_f_R0 An N * Bn (S N) <= prod_f_R0 Bn N * Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

0 <= prod_f_R0 An N
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
An (S N) <= Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
prod_f_R0 An N * Bn (S N) <= prod_f_R0 Bn N * Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

An (S N) <= Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
prod_f_R0 An N * Bn (S N) <= prod_f_R0 Bn N * Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

prod_f_R0 An N * Bn (S N) <= prod_f_R0 Bn N * Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

0 <= Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
prod_f_R0 An N <= prod_f_R0 Bn N
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
H0:0 <= An (S N)
H1:An (S N) <= Bn (S N)

0 <= Bn (S N)
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N
prod_f_R0 An N <= prod_f_R0 Bn N
An, Bn:nat -> R
N:nat
H:forall n : nat, (n <= S N)%nat -> 0 <= An n <= Bn n
HrecN:(forall n : nat, (n <= N)%nat -> 0 <= An n <= Bn n) -> prod_f_R0 An N <= prod_f_R0 Bn N

prod_f_R0 An N <= prod_f_R0 Bn N
apply HrecN; intros; elim (H n (le_trans _ _ _ H0 (le_n_Sn N))); intros; split; assumption. Qed.
Application to factorial

forall n : nat, INR (fact n) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) n

forall n : nat, INR (fact n) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) n

INR (fact 0) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) 0
n:nat
Hrecn:INR (fact n) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) n
INR (fact (S n)) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) (S n)
n:nat
Hrecn:INR (fact n) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) n

INR (fact (S n)) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) (S n)
n:nat
Hrecn:INR (fact n) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) n

INR (fact n + n * fact n) = INR (fact n) * match n with | 0%nat => 1 | S _ => INR n + 1 end
n:nat
Hrecn:INR (fact n) = prod_f_R0 (fun k : nat => if Nat.eq_dec k 0 then 1 else INR k) n

forall n0 : nat, INR (fact (S n0) + S n0 * fact (S n0)) = INR (fact (S n0)) * (INR (S n0) + 1)
intros; repeat rewrite plus_INR;rewrite mult_INR;ring. Qed.

forall n : nat, (n <= 2 * n)%nat

forall n : nat, (n <= 2 * n)%nat
n:nat

(0 <= 2 * 0)%nat
n:nat
forall n0 : nat, (n0 <= 2 * n0)%nat -> (S n0 <= 2 * S n0)%nat
n:nat

forall n0 : nat, (n0 <= 2 * n0)%nat -> (S n0 <= 2 * S n0)%nat
n, n0:nat
H:(n0 <= 2 * n0)%nat

(S n0 <= S (S (2 * n0)))%nat
n, n0:nat
H:(n0 <= 2 * n0)%nat
S (S (2 * n0)) = (2 * S n0)%nat
n, n0:nat
H:(n0 <= 2 * n0)%nat

S (S (2 * n0)) = (2 * S n0)%nat
n, n0:nat
H:(n0 <= 2 * n0)%nat

(2 * n0 + 2)%nat = (2 * S n0)%nat
n, n0:nat
H:(n0 <= 2 * n0)%nat

(2 * n0 + 2)%nat = (2 * (n0 + 1))%nat
ring. Qed.
We prove that (N!)^2<=(2N-k)!*k! forall k in |O;2N|

forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)

forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)

forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)

forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)

forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
n:nat

n = 0%nat -> (0 < n)%nat -> 1 = INR n
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n

forall N k : nat, (k <= 2 * N)%nat -> (INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat

k = N \/ (k < N)%nat \/ (N < k)%nat -> prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H2:k = N \/ (k < N)%nat \/ (N < k)%nat
H3:k = N

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H2:k = N \/ (k < N)%nat \/ (N < k)%nat
H3:(k < N)%nat \/ (N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H2:k = N \/ (k < N)%nat \/ (N < k)%nat
H3:(k < N)%nat \/ (N < k)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec l 0 then 1 else INR l) N * prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (2 * N - k - N - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

0 <= prod_f_R0 (fun l : nat => if Nat.eq_dec l 0 then 1 else INR l) N
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (2 * N - k - N - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (2 * N - k - N - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (N - k - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

prod_f_R0 (fun l : nat => if Nat.eq_dec l 0 then 1 else INR l) k * prod_f_R0 (fun l : nat => if Nat.eq_dec (k + 1 + l) 0 then 1 else INR (k + 1 + l)) (N - k - 1) <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k * prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (N - k - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

0 <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
prod_f_R0 (fun l : nat => if Nat.eq_dec (k + 1 + l) 0 then 1 else INR (k + 1 + l)) (N - k - 1) <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (N - k - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

prod_f_R0 (fun l : nat => if Nat.eq_dec (k + 1 + l) 0 then 1 else INR (k + 1 + l)) (N - k - 1) <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (N - k - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat

(if Nat.eq_dec (k + 1 + n) 0 then 1 else INR (k + 1 + n)) <= (if Nat.eq_dec (N + 1 + n) 0 then 1 else INR (N + 1 + n))
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat

INR (k + 1 + n) <= (if Nat.eq_dec (N + 1 + n) 0 then 1 else INR (N + 1 + n))
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat
(0 < k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat

INR (k + 1 + n) <= INR (N + 1 + n)
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat
(0 < N + 1 + n)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat
(0 < k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat

(0 < N + 1 + n)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat
(0 < k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
n:nat
H2:(n <= N - k - 1)%nat

(0 < k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

(k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

(N - k - 1)%nat = (2 * N - k - N - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat
(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(k < N)%nat

(N < 2 * N - k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) k
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec l 0 then 1 else INR l) N * prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

0 <= prod_f_R0 (fun l : nat => if Nat.eq_dec l 0 then 1 else INR l) N
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) N <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1) * prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

prod_f_R0 (fun l : nat => if Nat.eq_dec l 0 then 1 else INR l) (2 * N - k) * prod_f_R0 (fun l : nat => if Nat.eq_dec (2 * N - k + 1 + l) 0 then 1 else INR (2 * N - k + 1 + l)) (N - (2 * N - k) - 1) <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k) * prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

0 <= prod_f_R0 (fun k0 : nat => if Nat.eq_dec k0 0 then 1 else INR k0) (2 * N - k)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
prod_f_R0 (fun l : nat => if Nat.eq_dec (2 * N - k + 1 + l) 0 then 1 else INR (2 * N - k + 1 + l)) (N - (2 * N - k) - 1) <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

prod_f_R0 (fun l : nat => if Nat.eq_dec (2 * N - k + 1 + l) 0 then 1 else INR (2 * N - k + 1 + l)) (N - (2 * N - k) - 1) <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

prod_f_R0 (fun l : nat => if Nat.eq_dec (2 * N - k + 1 + l) 0 then 1 else INR (2 * N - k + 1 + l)) (k - N - 1) <= prod_f_R0 (fun l : nat => if Nat.eq_dec (N + 1 + l) 0 then 1 else INR (N + 1 + l)) (k - N - 1)
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat

(if Nat.eq_dec (2 * N - k + 1 + n) 0 then 1 else INR (2 * N - k + 1 + n)) <= (if Nat.eq_dec (N + 1 + n) 0 then 1 else INR (N + 1 + n))
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat

INR (2 * N - k + 1 + n) <= (if Nat.eq_dec (N + 1 + n) 0 then 1 else INR (N + 1 + n))
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat
(0 < 2 * N - k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat

INR (2 * N - k + 1 + n) <= INR (N + 1 + n)
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat
(0 < N + 1 + n)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat
(0 < 2 * N - k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat

(0 < N + 1 + n)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat
(0 < 2 * N - k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n0 : nat, 0 <= (if Nat.eq_dec n0 0 then 1 else INR n0)
H0:forall n0 : nat, (0 < n0)%nat -> (if Nat.eq_dec n0 0 then 1 else INR n0) = INR n0
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
n:nat
H2:(n <= k - N - 1)%nat

(0 < 2 * N - k + 1 + n)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

(k - N - 1)%nat = (N - (2 * N - k) - 1)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

(2 * N - k < N)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat
(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
H4:(N < k)%nat

(N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat
k = N \/ (k < N)%nat \/ (N < k)%nat
H:forall n : nat, 0 <= (if Nat.eq_dec n 0 then 1 else INR n)
H0:forall n : nat, (0 < n)%nat -> (if Nat.eq_dec n 0 then 1 else INR n) = INR n
N, k:nat
H1:(k <= 2 * N)%nat

k = N \/ (k < N)%nat \/ (N < k)%nat
omega. Qed. (**********)

forall n : nat, 0 < INR (fact n)

forall n : nat, 0 < INR (fact n)
intro; apply lt_INR_0; apply neq_O_lt; red; intro; elim (fact_neq_0 n); symmetry ; assumption. Qed.
We have the following inequality : (C 2N k) <= (C 2N N) forall k in |O;2N|

forall N k : nat, (k <= 2 * N)%nat -> C (2 * N) k <= C (2 * N) N

forall N k : nat, (k <= 2 * N)%nat -> C (2 * N) k <= C (2 * N) N
N, k:nat
H:(k <= 2 * N)%nat

0 <= INR (fact (2 * N))
N, k:nat
H:(k <= 2 * N)%nat
/ (INR (fact k) * INR (fact (2 * N - k))) <= / (INR (fact N) * INR (fact (2 * N - N)))
N, k:nat
H:(k <= 2 * N)%nat

/ (INR (fact k) * INR (fact (2 * N - k))) <= / (INR (fact N) * INR (fact (2 * N - N)))
N, k:nat
H:(k <= 2 * N)%nat

/ (INR (fact k) * INR (fact (2 * N - k))) <= / (INR (fact N) * INR (fact N))
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

0 < INR (fact N) * INR (fact N)
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) * / (INR (fact k) * INR (fact (2 * N - k))) <= INR (fact N) * INR (fact N) * / (INR (fact N) * INR (fact N))
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

INR (fact N) * INR (fact N) * / (INR (fact k) * INR (fact (2 * N - k))) <= INR (fact N) * INR (fact N) * / (INR (fact N) * INR (fact N))
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

INR (fact N) * INR (fact N) * / (INR (fact k) * INR (fact (2 * N - k))) <= 1
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

0 < INR (fact k) * INR (fact (2 * N - k))
N, k:nat
H:(k <= 2 * N)%nat
INR (fact k) * INR (fact (2 * N - k)) * (/ (INR (fact k) * INR (fact (2 * N - k))) * (INR (fact N) * INR (fact N))) <= INR (fact k) * INR (fact (2 * N - k)) * 1
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

INR (fact k) * INR (fact (2 * N - k)) * (/ (INR (fact k) * INR (fact (2 * N - k))) * (INR (fact N) * INR (fact N))) <= INR (fact k) * INR (fact (2 * N - k)) * 1
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

1 * (INR (fact N) * INR (fact N)) <= INR (fact k * fact (2 * N - k))
N, k:nat
H:(k <= 2 * N)%nat
INR (fact k * fact (2 * N - k)) <> 0
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

(INR (fact N))² <= INR (fact (2 * N - k)) * INR (fact k)
N, k:nat
H:(k <= 2 * N)%nat
(INR (fact N))² = INR (fact N) * INR (fact N)
N, k:nat
H:(k <= 2 * N)%nat
INR (fact k * fact (2 * N - k)) <> 0
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

(k <= 2 * N)%nat
N, k:nat
H:(k <= 2 * N)%nat
(INR (fact N))² = INR (fact N) * INR (fact N)
N, k:nat
H:(k <= 2 * N)%nat
INR (fact k * fact (2 * N - k)) <> 0
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

(INR (fact N))² = INR (fact N) * INR (fact N)
N, k:nat
H:(k <= 2 * N)%nat
INR (fact k * fact (2 * N - k)) <> 0
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

INR (fact k * fact (2 * N - k)) <> 0
N, k:nat
H:(k <= 2 * N)%nat
INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

INR (fact N) * INR (fact N) <> 0
N, k:nat
H:(k <= 2 * N)%nat
N = (2 * N - N)%nat
N, k:nat
H:(k <= 2 * N)%nat

N = (2 * N - N)%nat
omega. Qed.