intros s1 s2 H_le.
case H_le; intro H_le'.
- induction H_le'.
* apply lex_order_char_lt.
assumption.
* apply lex_order_char_eq.
apply IHH_le'.
left.
assumption.
* apply lex_order_empty_string.
- rewrite <- H_le'.
apply lex_order_refl.
Qed.

(* Specifications: *)
Theorem lex_lt_trans : forall s0 s1 s2,
lex_lt s0 s1 -> lex_lt s1 s2 -> lex_lt s0 s2.
Theorem lex_lt_not_eq : forall s0 s1,
lex_lt s0 s1 -> s0 <> s1.
Lemma nat_of_ascii_injective:
forall c1 c2, nat_of_ascii c1 = nat_of_ascii c2 -> c1 = c2.