(* 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_trans_app : forall (a b : A) (l1 l2 : list A), ordered (l1 ++ l2) -> In a l1 -> In b l2 -> order a b.