]> matita.cs.unibo.it Git - helm.git/commitdiff
Record projections are now defined as fixpoints in order to block
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Fri, 31 Jul 2009 09:03:22 +0000 (09:03 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Fri, 31 Jul 2009 09:03:22 +0000 (09:03 +0000)
delta-expansion when the argument is not a constructor.

helm/software/components/ng_tactics/nCicElim.ml
helm/software/matita/nlibrary/sets/setoids.ma

index 0abff3a6c694727f79cc2e07eded3fd6ce48cc82..79a22b07720fa9d5a3e7b2503324653a249becd7 100644 (file)
@@ -265,16 +265,18 @@ let mk_projection leftno tyname consname consty (projname,_,_) i =
       @ names in
      let outtype = pp rels outtype in
      let outtype= CicNotationPt.Binder (`Lambda, (arg, Some arg_ty), outtype) in
-      CicNotationPt.Binder
-       (`Lambda, (arg,Some arg_ty),
-         CicNotationPt.Case (arg,None,Some outtype,[branch]))
+      [arg, Some arg_ty], CicNotationPt.Case (arg,None,Some outtype,[branch])
    | _,NCic.Prod (name,_,t) ->
       let name = mk_id name in
-       CicNotationPt.Binder
-        (`Lambda, (name,None), aux (name::names) t (leftno - 1))
+      let params,body = aux (name::names) t (leftno - 1) in
+       (name,None)::params, body
    | _,_ -> assert false
  in
- let res = aux [] consty leftno in
+ let params,bo = aux [] consty leftno in
+ let pprojname = mk_id projname in
+ let res =
+  CicNotationPt.LetRec (`Inductive,
+   [params, (pprojname,None), bo, leftno], pprojname) in
 (* prerr_endline
    (BoxPp.render_to_string
      ~map_unicode_to_tex:false
index 0f192e5f8ee780f436fcc9553d8761852bb2ddae..1a2ff09788820c3f9b7e374472ae1b0838f3562c 100644 (file)
@@ -42,22 +42,11 @@ ndefinition function_space_setoid: setoid → setoid → setoid.
  #A; #B; napply mk_setoid;
 ##[ napply (function_space A B);
 ##| #f; #f1; napply (∀a:A. proofs (eq … (f a) (f1 a)));
-##| nwhd; #x; #a;
-    napply (f_ok … x); (* QUI!! *)
-(*    unfold carr; unfold proofs; simplify;
-    apply (refl A)
-  | simplify;
-    intros;
-    unfold carr; unfold proofs; simplify;
-    apply (sym B);
-    apply (f a)
-  | simplify;
-    intros;
-    unfold carr; unfold proofs; simplify;
-    apply (trans B ? (y a));
-    [ apply (f a)
-    | apply (f1 a)]]
-qed.
+##| nnormalize; #x; #a; napply (f_ok … x); napply refl
+  | nnormalize; #x; #y; #H; #a; napply sym; napply H
+  | nnormalize; #z; #x; #y; #H1; #H2; #a;
+    napply trans; ##[##2: napply H1 | ##skip | napply H2]##] 
+nqed.
 
 nrecord isomorphism (A,B: setoid): Type ≝
  { map1:> function_space_setoid A B;