Tab_valeur.v


Require Export Tab_in.
(* lecture d'un element du tableau *)

Definition nieme:
  (l:(list
assignement)) (n:nat) (lt n (length l)) ->assignement.
Induction l.
Simpl; Intros n H; Absurd (lt n O); Auto.
Intros t q; Simpl; Intros HR n H.
Generalize (refl_equal nat n); Pattern 2 n; Case n; Intros.
Exact t.
Cut (lt n0 (length q)).
Intros N; Exact (HR n0 N).
Apply lt_S_n; Rewrite <- H0; Auto.
Defined.

Definition valeur: (a:tableau) (i:int) (in_tab i a) ->assignement.
Intros a i; Case a; Intros.
Cut (lt (position i) (length l)).
Intros N; Exact (if_neg_opp i (nieme l (position i) N)).
Inversion H; Auto.
Defined.
(* lemmes pour nieme et val *)

Lemma nieme_dans_liste:
  (l:(list
assignement)) (n:nat) (h:(lt n (length l)))(In (nieme l n h) l).
Induction l.
Simpl; Intros; Absurd (lt n O); Auto.
Intros t q Hyp n.
Case n.
Simpl; Intros; Auto.
Intros.
Cut (lt n0 (length q)); Auto.
Intros; Simpl; Auto.
Qed.
Hint nieme_dans_liste.

Lemma nieme_unicite:
  (l, l':(list
assignement))
  (n, n':nat) (h:(lt n (length l))) (h':(lt n' (length l'))) l=l' -> n=n' ->
  (nieme l n h)=(nieme l' n' h').
Induction l; Induction l'.
Simpl; Intros; Absurd (lt n O); Auto.
Simpl; Intros; Absurd (lt n O); Auto.
Simpl; Intros; Absurd (lt n' O); Auto.
Intros t q HR n n'; Case n; Case n'; Simpl; Intros; Auto; Inversion H1; Auto.
Inversion H0; Auto.
Apply H; Auto.
Inversion H0; Auto.
Qed.
Hint nieme_unicite.

Lemma valeur_unicite:
  (a, a':
tableau) (i, j:int) (h:(in_tab i a)) (h':(in_tab j a')) a=a' -> i=j ->
  (valeur a i h)=(valeur a' j h').
Intros a a' i j; Case a; Case a'; Intros.
Cut (lt (position i) (length l0)); Auto.
Cut (lt (position j) (length l)); Auto.
Intros.
Simpl.
LApply (f_equal int assignement ->assignement if_neg_opp i j); Auto.
Intros A; Rewrite A.
Apply (f_equal assignement assignement (if_neg_opp j)); Auto.
Apply nieme_unicite; Auto.
Inversion H; Auto.
Rewrite H0; Auto.
Qed.
Hint valeur_unicite.

Lemma valeur_moins:
  (a:
tableau) (i:int) (h:(in_tab i a)) (h':(in_tab (moins i) a))
  (valeur a (moins i) h')=(opp (valeur a i h)).
Intros a; Case a; Intros b l i; Intros.
Simpl.
Apply if_neg_opp_moins.
Apply nieme_unicite; Auto.
Qed.
Hint valeur_moins.

14/09/98, 09:21