Proof using A order order_trans.
intros a b l1 l2; generalize a b; elim l1; simpl in |- *; clear l1 a b.
intros a b H H1; case H1.
intros c l H a b H0 [H1| H1] H2.
rewrite <- H1; apply ordered_trans with (1 := H0); auto with datatypes.
apply H; auto.
apply ordered_inv with (1 := H0); auto.
Qed.

(* If the order is antisymmetric, there is only one ordered list *)
Theorem ordered_perm_antisym_eq :
(forall a b : A, order a b -> order b a -> a = b) ->
forall l1 l2 : list A,
permutation l1 l2 -> ordered l1 -> ordered l2 -> l1 = l2.