(**************************************************************)
(*   Copyright Dominique Larchey-Wendling [*]                 *)
(*                                                            *)
(*                             [*] Affiliation LORIA -- CNRS  *)
(**************************************************************)
(*      This file is distributed under the terms of the       *)
(*         CeCILL v2 FREE SOFTWARE LICENSE AGREEMENT          *)
(**************************************************************)
Set Implicit Arguments.
Inductive pos : nat -> Set :=
| pos_fst : forall n, pos (S n)
| pos_nxt : forall n, pos n -> pos (S n).
Arguments pos_fst {n}.
Arguments pos_nxt {n}.
Notation pos0  := (@pos_fst _).
Notation pos1  := (pos_nxt pos0).
Notation pos2  := (pos_nxt pos1).
Notation pos3  := (pos_nxt pos2).
Notation pos4  := (pos_nxt pos3).
Notation pos5  := (pos_nxt pos4).
Notation pos6  := (pos_nxt pos5).
Notation pos7  := (pos_nxt pos6).
Notation pos8  := (pos_nxt pos7).
Notation pos9  := (pos_nxt pos8).
Notation pos10 := (pos_nxt pos9).
Notation pos11 := (pos_nxt pos10).
Notation pos12 := (pos_nxt pos11).
Notation pos13 := (pos_nxt pos12).
Notation pos14 := (pos_nxt pos13).
Notation pos15 := (pos_nxt pos14).
Notation pos16 := (pos_nxt pos15).
Notation pos17 := (pos_nxt pos16).
Notation pos18 := (pos_nxt pos17).
Notation pos19 := (pos_nxt pos18).
Notation pos20 := (pos_nxt pos19).
Definition pos_iso n m : n = m -> pos n -> pos m.
Fact pos_both_right n m p : @pos_both n m (@pos_right n m p) = inr p.
(** A bijection between pos n + pos m <-> pos (n+m) **)
Fact pos_both_lr n m p : @pos_both n m (pos_lr p) = p.
Fact pos_lr_both n m p : pos_lr (@pos_both n m p) = p.
Section pos_left_right_rect.
Variable (n m : nat) (P : pos (n+m) -> Type).
Hypothesis (HP1 : forall p, P (pos_left _ p))
(HP2 : forall p, P (pos_right _ p)).

(* Specifications: *)
Theorem pos_left_right_rect : forall p, P p.
End pos_left_right_rect.