Fixpoint le_bool (n m: nat) {struct n}: bool :=
match n, m with
O, _ => true
| S n1, S m1 => le_bool n1 m1
| _, _ => false
end.

Theorem le_correct: forall n m, le_bool n m = true -> n <= m.
induction n; destruct m; simpl; auto with arith; intros; discriminate.