X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcomponents%2Fng_tactics%2FnTactics.ml;h=577edf9d903a889fd536aca8e127bbee60f717f4;hb=751af6075f28fb2abe052de73630ce114e761dee;hp=09427a315d6ca3f99b3c57c5091410e09df6c21c;hpb=8a660ee06d72cfee52c707bb1d8d8be3bab0d682;p=helm.git diff --git a/matita/components/ng_tactics/nTactics.ml b/matita/components/ng_tactics/nTactics.ml index 09427a315..577edf9d9 100644 --- a/matita/components/ng_tactics/nTactics.ml +++ b/matita/components/ng_tactics/nTactics.ml @@ -205,10 +205,10 @@ let compare_statuses ~past ~present = let exec tac (low_status : #lowtac_status) g = let stack = [ [0,Open g], [], [], `NoTag ] in let status = - (new NTacStatus.status low_status#obj stack)#set_estatus low_status + (new NTacStatus.status low_status#obj stack)#set_pstatus low_status in let status = tac status in - (low_status#set_estatus status)#set_obj status#obj + (low_status#set_pstatus status)#set_obj status#obj ;; let distribute_tac tac (status : #tac_status) = @@ -236,7 +236,7 @@ let distribute_tac tac (status : #tac_status) = in aux s go gc loc_tl in - let s0 = (new NTacStatus.status status#obj ())#set_estatus status in + let s0 = (new NTacStatus.status status#obj ())#set_pstatus status in let s0, go0, gc0 = s0, [], [] in let sn, gon, gcn = aux s0 go0 gc0 g in debug_print (lazy ("opened: " @@ -246,10 +246,10 @@ let distribute_tac tac (status : #tac_status) = let stack = (zero_pos gon, t @~- gcn, k @~- gcn, tag) :: deep_close gcn s in - ((status#set_stack stack)#set_obj(sn:>lowtac_status)#obj)#set_estatus sn + ((status#set_stack stack)#set_obj(sn:>lowtac_status)#obj)#set_pstatus sn ;; -let atomic_tac htac : #tac_status as 'a -> 'a = distribute_tac (exec htac) ;; +let atomic_tac htac: #tac_status as 'a -> 'a = distribute_tac (exec htac) ;; let repeat_tac t s = let rec repeat t (status : #tac_status as 'a) : 'a = @@ -371,7 +371,7 @@ let select0_tac ~where:(wanted,hyps,where) ~job = let status, instance = mk_meta status newgoalctx (`Decl newgoalty) `IsTerm in - instantiate status goal instance) + instantiate ~refine:false status goal instance) ;; let select_tac ~where ~job move_down_hyps = @@ -476,6 +476,7 @@ type indtyinfo = { lefts: NCic.term list; rights: NCic.term list; reference: NReference.reference; + term: NCic.term } ;; @@ -489,9 +490,10 @@ let analyze_indty_tac ~what indtyref = let status, (r,consno,lefts,rights) = analyse_indty status ty_what in let leftno = List.length lefts in let rightno = List.length rights in + let status,what = term_of_cic_term status what (ctx_of goalty) in indtyref := Some { rightno = rightno; leftno = leftno; consno = consno; - lefts = lefts; rights = rights; reference = r; + lefts = lefts; rights = rights; reference = r; term = what }; exec id_tac status goal) ;; @@ -523,8 +525,8 @@ let elim_tac ~what:(txt,len,what) ~where = (match !sort with NCic.Sort x -> x | _ -> assert false)) in let eliminator = - let _,_,w = what in - Ast.Appl [ Ast.Ident (name,None) ; Ast.Implicit `Vector ; w ] + let what = (HExtlib.unopt !indtyinfo).term in + Ast.Appl [ Ast.Ident (name,None) ; Ast.Implicit `Vector ; Ast.NCic what ] in exact_tac ("",0,eliminator) status) ]) ;; @@ -540,6 +542,7 @@ let rewrite_tac ~dir ~what:(_,_,what) ~where status = `LeftToRight -> "eq" ^ suffix ^ "_r" | `RightToLeft -> "eq" ^ suffix in + let what = Ast.Appl [what; Ast.Implicit `Vector] in block_tac [ select_tac ~where ~job:(`Substexpand 2) true; exact_tac @@ -594,9 +597,13 @@ let cases_tac ~what:(txt,len,what) ~where = atomic_tac (block_tac [ analyze_indty_tac ~what indtyinfo; - (fun s -> select_tac - ~where ~job:(`Substexpand ((HExtlib.unopt !indtyinfo).rightno+1))true s); - distribute_tac (cases ~what) ]) + (fun s -> + select_tac + ~where ~job:(`Substexpand ((HExtlib.unopt !indtyinfo).rightno+1))true + s); + (fun s -> + distribute_tac + (cases ~what:("",0,Ast.NCic (HExtlib.unopt !indtyinfo).term)) s); ]) ;; let case1_tac name = @@ -689,8 +696,8 @@ let inversion_tac ~what:(txt,len,what) ~where = (match !sort with NCic.Sort x -> x | _ -> assert false)) in let eliminator = - let _,_,w = what in - Ast.Appl [ Ast.Ident (name,None) ; Ast.Implicit `Vector ; w ] + let what = (HExtlib.unopt !indtyinfo).term in + Ast.Appl [ Ast.Ident (name,None) ; Ast.Implicit `Vector ; Ast.NCic what ] in exact_tac ("",0,eliminator) status) ]) ;;