(* invariance du résultat de pl_produit lorsqu'on augmente la quantité d'essence *)

(* Specifications: *)
Lemma indprinciple_0 :
forall P0 P1 : prec_list -> prec_list -> Prop,
(forall p : prec_list, P0 p prec_empty) ->
(forall p : prec_list, P1 p prec_empty) ->
(forall p : prec_list, P1 prec_empty p) ->
(forall (a : ad) (la ls p : prec_list),
P0 p ls -> P1 p la -> P0 p (prec_cons a la ls)) ->
(forall (a : ad) (la ls p : prec_list),
P0 la p -> P1 ls p -> P1 (prec_cons a la ls) p) ->
forall n : nat,
(forall p p' : prec_list,
pl_prof p <= n -> pl_prof p' <= n -> P0 p p' /\ P1 p p') ->
forall p p' : prec_list,
pl_prof p <= S n -> pl_prof p' <= S n -> P0 p p' /\ P1 p p'.
Lemma indprinciple_1 :
forall P0 P1 : prec_list -> prec_list -> Prop,
(forall p : prec_list, P0 p prec_empty) ->
(forall p : prec_list, P1 p prec_empty) ->
(forall p : prec_list, P1 prec_empty p) ->
(forall (a : ad) (la ls p : prec_list),
P0 p ls -> P1 p la -> P0 p (prec_cons a la ls)) ->
(forall (a : ad) (la ls p : prec_list),
P0 la p -> P1 ls p -> P1 (prec_cons a la ls) p) ->
forall p p' : prec_list,
pl_prof p <= 0 -> pl_prof p' <= 0 -> P0 p p' /\ P1 p p'.
Lemma indprinciple_2 :
forall P0 P1 : prec_list -> prec_list -> Prop,
(forall p : prec_list, P0 p prec_empty) ->
(forall p : prec_list, P1 p prec_empty) ->
(forall p : prec_list, P1 prec_empty p) ->
(forall (a : ad) (la ls p : prec_list),
P0 p ls -> P1 p la -> P0 p (prec_cons a la ls)) ->
(forall (a : ad) (la ls p : prec_list),
P0 la p -> P1 ls p -> P1 (prec_cons a la ls) p) ->
forall (n : nat) (p p' : prec_list),
pl_prof p <= n -> pl_prof p' <= n -> P0 p p' /\ P1 p p'.
Lemma indprinciple_pl :
forall P0 P1 : prec_list -> prec_list -> Prop,
(forall p : prec_list, P0 p prec_empty) ->
(forall p : prec_list, P1 p prec_empty) ->
(forall p : prec_list, P1 prec_empty p) ->
(forall (a : ad) (la ls p : prec_list),
P0 p ls -> P1 p la -> P0 p (prec_cons a la ls)) ->
(forall (a : ad) (la ls p : prec_list),
P0 la p -> P1 ls p -> P1 (prec_cons a la ls) p) ->
forall p p' : prec_list, P0 p p' /\ P1 p p'.