Proof using.
intros a1 a2 l1; generalize a1 a2; elim l1; simpl in |- *; auto;
clear a1 a2 l1.
intros a; case a; simpl in |- *; auto.
intros l H a1 a2; rewrite H; simpl in |- *; auto.
intros l H a1 a2; rewrite H; simpl in |- *; auto.
Qed.

(* Adding at a free position add to the code *)
Theorem pbadd_prop2 :
forall a1 l1 l2,
pbfree l1 l2 ->
permutation (compute_pbcode (pbadd a1 l2 l1))
((a1, l1) :: compute_pbcode l2).