Inductive BCI : Set :=
| zeroI  : BCI
| projIn : nat -> BCI
| projIs : nat -> BCI
| succI  : bool -> BCI
| predI  : BCI
| condI  : BCI
| recI   : BCI -> BCI -> BCI -> BCI
| compI  : BCI -> list BCI -> list BCI -> BCI.

(* Specifications: *)
Lemma BCI_ind2' :
forall P : BCI -> Prop,
forall Q : list BCI -> Prop,
Q nil ->
(forall e l, P e -> Q l -> Q (e :: l)) ->
P zeroI ->
(forall i, P (projIn i)) ->
(forall i, P (projIs i)) ->
(forall b, P (succI b)) ->
P predI ->
P condI ->
(forall g h0 h1, P g -> P h0 -> P h1 -> P (recI g h0 h1)) ->
(forall h rl tl, P h -> Q rl -> Q tl ->
P (compI h rl tl)) ->
forall e, P e.
Lemma BCI_ind2 :
forall P : BCI -> Prop,
P zeroI ->
(forall i, P (projIn i)) ->
(forall i, P (projIs i)) ->
(forall b, P (succI b)) ->
P predI ->
P condI ->
(forall g h0 h1, P g -> P h0 -> P h1 -> P (recI g h0 h1)) ->
(forall h rl tl, P h -> (forall r, In r rl -> P r) ->
(forall s, In s tl -> P s) ->
P (compI h rl tl)) ->
forall e, P e.