(* Ordered list with respect to an order *)
Inductive ordered : list A -> Prop :=
  | ordered_nil : ordered nil
  | ordered_one : forall a : A, ordered (a :: nil)
  | ordered_cons :
      forall (a b : A) (l : list A),
      order a b -> ordered (b :: l) -> ordered (a :: b :: l).(* Ordered list with respect to an order *)
Inductive ordered : list A -> Prop :=
  | ordered_nil : ordered nil
  | ordered_one : forall a : A, ordered (a :: nil)
  | ordered_cons :
      forall (a b : A) (l : list A),
      order a b -> ordered (b :: l) -> ordered (a :: b :: l).(* Ordered list with respect to an order *)
Inductive ordered : list A -> Prop :=
  | ordered_nil : ordered nil
  | ordered_one : forall a : A, ordered (a :: nil)
  | ordered_cons :
      forall (a b : A) (l : list A),
      order a b -> ordered (b :: l) -> ordered (a :: b :: l).(* Ordered list with respect to an order *)
Inductive ordered : list A -> Prop :=
  | ordered_nil : ordered nil
  | ordered_one : forall a : A, ordered (a :: nil)
  | ordered_cons :
      forall (a b : A) (l : list A),
      order a b -> ordered (b :: l) -> ordered (a :: b :: l).

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.