Int_signe.v
Require Export Int_def.
(* moins *)
Lemma
moins_moins: (i:int)(moins (moins i))=i.
Intros; Case i; Simpl; Auto.
Qed.
Hint moins_moins.
Lemma
moins_inj: (i, j:int) (moins i)=(moins j) ->i=j.
Intros i j.
Case i; Case j; Simpl; Intros; Inversion H; Auto.
Qed.
Lemma
nat_of_int_moins: (i:int)(nat_of_int (moins i))=(nat_of_int i).
Induction i; Intros; Simpl; Auto.
Qed.
Hint nat_of_int_moins.
Lemma
eval_int_moins:
(f:nat ->bool) (i:int)(eval_int f (moins i))=(negb (eval_int f i)).
Induction i; Intros; Simpl; Auto.
Rewrite negb_elim; Auto.
Qed.
Hint eval_int_moins.
Lemma
position_moins: (i:int)(position (moins i))=(position i).
Induction i; Intros; Simpl; Auto.
Qed.
Hint position_moins.
Lemma
abs_moins: (i:int)(abs (moins i))=(abs i).
Intros; Case i; Simpl; Auto.
Qed.
Hint abs_moins.
(* abs *)
Lemma
position_abs_inj: (i, j:int) (position i)=(position j) ->(abs i)=(abs j).
Intros i j; Case i; Case j; Unfold position; Simpl; Intros; Inversion H; Auto.
Qed.
Hint position_abs_inj.
Lemma
abs_position_inj: (i, j:int) (abs i)=(abs j) ->(position i)=(position j).
Intros i j; Case i; Case j; Unfold position; Simpl; Intros; Inversion H; Auto.
Qed.
Hint abs_position_inj.
Lemma
abs_inj: (i, j:int) (abs i)=(abs j) ->{i=j}+{i=(moins j)}.
Intros i j; Case i; Case j; Simpl; Intros; Inversion H; Auto.
Qed.
Hint abs_inj.
Lemma
non_abs1: (i, j:int) ~ (abs i)=(abs j) ->~ i=j.
Intros; Red; Intros A; Rewrite A in H; Auto.
Qed.
Hint non_abs1.
Lemma
non_abs2: (i, j:int) ~ (abs i)=(abs j) ->~ i=(moins j).
Intros; Red; Intros A; Rewrite A in H; Auto.
Qed.
Hint non_abs2.
(* positif *)
Lemma
pos_abs: (i:int) (positif i)=true ->(abs i)=i.
Induction i; Simpl; Auto; Intros; Absurd false=true; Auto.
Qed.
Hint pos_abs.
Lemma
neg_moins_abs: (i:int) (positif i)=false ->(abs i)=(moins i).
Induction i; Simpl; Auto; Intros; Absurd false=true; Auto.
Qed.
Hint neg_moins_abs.
Lemma
positif_moins: (x:int)(positif (moins x))=(negb (positif x)).
Induction x; Simpl; Auto.
Qed.
Hint positif_moins.
14/09/98, 09:21