(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* (S O) |(S n) => (mult (S n) (fact n)) end. Arguments Scope fact [ nat_scope ]. Lemma lt_O_fact : (n:nat)(lt O (fact n)). Proof. Induction n; Unfold lt; Simpl; Auto with arith. Qed. Lemma fact_neq_0:(n:nat)~(fact n)=O. Proof. Intro. Apply sym_not_eq. Apply lt_O_neq. Apply lt_O_fact. Qed. Lemma fact_growing : (n,m:nat) (le n m) -> (le (fact n) (fact m)). Proof. NewInduction 1. Apply le_n. Assert (le (mult (S O) (fact n)) (mult (S m) (fact m))). Apply le_mult_mult. Apply lt_le_S; Apply lt_O_Sn. Assumption. Simpl (mult (S O) (fact n)) in H0. Rewrite <- plus_n_O in H0. Assumption. Qed.