X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Flibrary%2Fdecidable_kit%2Ffgraph.ma;h=5b28071dcff455d2cc37d02a3f603861d05842e8;hb=9e028235daa0abea353d06b4226d4c6698ede3d4;hp=cceaa386a4b9c2b3b7e89b9632338aafdb39f85e;hpb=cf8f2254c5da759546914d5f31cb8f1212ea3cd7;p=helm.git diff --git a/matita/library/decidable_kit/fgraph.ma b/matita/library/decidable_kit/fgraph.ma index cceaa386a..5b28071dc 100644 --- a/matita/library/decidable_kit/fgraph.ma +++ b/matita/library/decidable_kit/fgraph.ma @@ -35,7 +35,7 @@ apply prove_reflect; intros; [1: generalize in match H; rewrite > (b2pT ? ? (eqP (list_eqType d2) ? ?) H2); intros; clear H H2; rewrite < (pirrel ? ? ? H1 H3 (eqType_decidable nat_eqType)); reflexivity - |2: unfold Not; intros (H3); destruct H3; rewrite > Hcut in H2; + |2: unfold Not; intros (H3); destruct H3; rewrite > (cmp_refl (list_eqType d2)) in H2; destruct H2;] qed. @@ -140,16 +140,13 @@ definition mkpermr := lemma mem_multes : ∀d:finType.∀e:d.∀l:list_eqType (list_eqType d).∀s:list_eqType d. mem ? s (multes ? e l) = - match s in list with [ Nil ⇒ false | (Cons e1 tl) ⇒ andb (cmp ? e e1) (mem ? tl l)]. + match s in list with [ nil ⇒ false | (cons e1 tl) ⇒ andb (cmp ? e e1) (mem ? tl l)]. intros (d e l s); elim l (hd tl IH); [cases s;simplify;[2: rewrite > andbC] reflexivity] simplify; rewrite > IH; cases s; simplify; [reflexivity] unfold list_eqType; simplify; -generalize in match (refl_eq ? (cmp d e s1)); generalize in match (cmp d e s1) in ⊢ (? ? ? % → %); -intros 1 (b); cases b; clear b; intros (E); cases (lcmp d l1 hd); -[1,2: rewrite > (b2pT ? ? (eqP ? ? ?) E); simplify; rewrite > cmp_refl; reflexivity -|3,4: rewrite > andbC; simplify; [2: reflexivity] rewrite > orbC; - simplify; apply (p2bF ? ? (eqP ? ? ?)); unfold Not; intros (H); rewrite > H in E; - rewrite > cmp_refl in E; destruct E;] +apply (cmpP ? e s1); cases (lcmp d l1 hd); intros (E); +[1,2: rewrite > E; simplify; rewrite > cmp_refl; reflexivity +|3,4: rewrite > cmpC; rewrite > E; simplify; reflexivity;] qed. lemma mem_concat: @@ -163,18 +160,16 @@ lemma orb_refl : ∀x.orb x x = x. intros (x); cases x; reflexivity; qed. lemma mem_multss : ∀d:finType.∀s:list_eqType d.∀l:list_eqType (list_eqType d).∀x:list_eqType d. mem ? x (multss ? s l) = - match x in list with [ Nil ⇒ false | (Cons he tl) ⇒ andb (mem ? he s) (mem ? tl l)]. + match x in list with [ nil ⇒ false | (cons he tl) ⇒ andb (mem ? he s) (mem ? tl l)]. intros (d s l x); elim s; [cases x] simplify; try reflexivity; rewrite > mem_concat; rewrite > H; clear H; rewrite > mem_multes; cases x; simplify; [reflexivity] -unfold list_eqType; simplify; -generalize in match (refl_eq ? (cmp d t s1)); generalize in match (cmp d t s1) in ⊢ (? ? ? % → %); -intros 1 (b); cases b; clear b; intros (E); cases (mem d s1 l1); -[1,2: rewrite > (b2pT ? ? (eqP ? ? ?) E); rewrite > cmp_refl; simplify; +unfold list_eqType; simplify; apply (cmpP ? t s1); intros (E); +cases (mem d s1 l1); +[1,2: rewrite > E; rewrite > cmp_refl; simplify; [rewrite > orb_refl | rewrite > orbC ] reflexivity |3,4: simplify; rewrite > orbC; simplify; [reflexivity] symmetry; apply (p2bF ? ? (andbP ? ?)); unfold Not; intros (H); decompose; - rewrite > (b2pT ? ? (eqP ? ? ?) H1) in E; rewrite > cmp_refl in E; - destruct E] + rewrite > cmpC in H1; rewrite > E in H1; destruct H1;] qed. lemma mem_mkpermr_size : @@ -183,7 +178,7 @@ intros 2 (d m); elim m 0; simplify; [intros (x); cases x; reflexivity] intros (n IH x); elim x; rewrite > mem_multss; simplify; [reflexivity] rewrite > mem_finType; simplify; rewrite > IH; reflexivity; qed. - +(* axiom uniq_concat : ∀d:eqType.∀l1,l2. uniq d (l1@l1) = (andb (uniq ? l1) (andb (uniq ? l2) ())). lemma uniq_mkpermr : ∀d:finType.∀m. uniq ? (mkpermr d m) = true. @@ -261,4 +256,4 @@ Canonical Structure set_finType := FinType (can_uniq can_sval). Definition iset_of_fun (f : G -> bool_finType) : setType := locked Sett (fgraph_of_fun f). - +*)