%%% Simply Typed Lambda Calculus w/ small-step, allocation semantics
%%% Author: Matthew Fluet (June 2005)
%%% nat-lemmas.thm

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Nat Less-than Lemmas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%theorem
nat!N_lt_sN_thm : 
          forall {N:nat} 
          exists {DNatLt: nat_lt N (s_nat N)}
          true.
%prove 2 N (nat!N_lt_sN_thm N _).

%theorem
nat!lt_trans_thm :
          forall* {N1:nat} {N2:nat} {N3:nat}
          forall {DNatLt12: nat_lt N1 N2}
                 {DNatLt23: nat_lt N2 N3}
          exists {DNatLt13: nat_lt N1 N3}
          true.
%prove 2 DNatLt12 (nat!lt_trans_thm DNatLt12 _ _).

%theorem
nat!lt_contradict_thm :
          forall* {N:nat}
          forall {DNatLt: nat_lt N N}
          exists {Absurd: absurd}
          true.
%prove 2 DNatLt (nat!lt_contradict_thm DNatLt _).
