diff options
| author | herbelin | 2000-06-01 20:51:48 +0000 |
|---|---|---|
| committer | herbelin | 2000-06-01 20:51:48 +0000 |
| commit | 08e2c28ee98c6a5d235cc9b84bc5690dd9a22666 (patch) | |
| tree | ad7198fd4aa7a08e220fe911e577d6da725aaaff | |
| parent | 5139432d6087f49ef549d8375a1a61db56f86dd1 (diff) | |
Mise en place d'un choix constr/typed_type en remplacement de certains Cast
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@485 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | .depend | 119 | ||||
| -rw-r--r-- | library/impargs.ml | 2 | ||||
| -rw-r--r-- | library/indrec.ml | 63 | ||||
| -rw-r--r-- | library/indrec.mli | 17 | ||||
| -rw-r--r-- | parsing/printer.mli | 3 | ||||
| -rw-r--r-- | proofs/tacinterp.ml | 2 | ||||
| -rw-r--r-- | toplevel/discharge.ml | 26 | ||||
| -rw-r--r-- | toplevel/himsg.ml | 15 |
8 files changed, 80 insertions, 167 deletions
@@ -11,8 +11,8 @@ kernel/generic.cmi: kernel/names.cmi lib/util.cmi kernel/indtypes.cmi: kernel/declarations.cmi kernel/environ.cmi \ kernel/names.cmi kernel/term.cmi kernel/univ.cmi kernel/inductive.cmi: kernel/declarations.cmi kernel/environ.cmi \ - kernel/evd.cmi kernel/generic.cmi kernel/names.cmi kernel/sign.cmi \ - kernel/term.cmi kernel/univ.cmi + kernel/evd.cmi kernel/names.cmi kernel/sign.cmi kernel/term.cmi \ + kernel/univ.cmi kernel/instantiate.cmi: kernel/environ.cmi kernel/evd.cmi kernel/names.cmi \ kernel/term.cmi kernel/names.cmi: lib/pp.cmi @@ -66,8 +66,9 @@ parsing/pcoq.cmi: parsing/coqast.cmi parsing/pretty.cmi: kernel/declarations.cmi kernel/environ.cmi \ kernel/inductive.cmi library/lib.cmi kernel/names.cmi lib/pp.cmi \ kernel/reduction.cmi kernel/sign.cmi kernel/term.cmi -parsing/printer.cmi: parsing/coqast.cmi kernel/names.cmi proofs/pattern.cmi \ - lib/pp.cmi pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi +parsing/printer.cmi: parsing/coqast.cmi kernel/environ.cmi kernel/names.cmi \ + proofs/pattern.cmi lib/pp.cmi pretyping/rawterm.cmi kernel/sign.cmi \ + kernel/term.cmi parsing/termast.cmi: parsing/coqast.cmi kernel/names.cmi proofs/pattern.cmi \ pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi pretyping/cases.cmi: kernel/environ.cmi pretyping/evarutil.cmi kernel/evd.cmi \ @@ -79,7 +80,7 @@ pretyping/classops.cmi: library/declare.cmi kernel/environ.cmi kernel/evd.cmi \ library/libobject.cmi kernel/names.cmi lib/pp.cmi pretyping/rawterm.cmi \ kernel/term.cmi pretyping/coercion.cmi: kernel/environ.cmi pretyping/evarutil.cmi \ - kernel/evd.cmi kernel/sign.cmi kernel/term.cmi + kernel/evd.cmi pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi pretyping/detyping.cmi: kernel/names.cmi pretyping/rawterm.cmi \ kernel/sign.cmi kernel/term.cmi pretyping/evarconv.cmi: kernel/environ.cmi pretyping/evarutil.cmi \ @@ -116,9 +117,9 @@ proofs/macros.cmi: parsing/ast.cmi parsing/coqast.cmi kernel/names.cmi \ proofs/proof_type.cmi proofs/tacmach.cmi proofs/pattern.cmi: kernel/environ.cmi kernel/evd.cmi kernel/names.cmi \ pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi -proofs/pfedit.cmi: parsing/coqast.cmi library/declare.cmi kernel/environ.cmi \ - kernel/names.cmi lib/pp.cmi proofs/proof_type.cmi kernel/sign.cmi \ - proofs/tacmach.cmi kernel/term.cmi +proofs/pfedit.cmi: parsing/coqast.cmi kernel/declarations.cmi \ + library/declare.cmi kernel/environ.cmi kernel/names.cmi lib/pp.cmi \ + proofs/proof_type.cmi kernel/sign.cmi proofs/tacmach.cmi kernel/term.cmi proofs/proof_trees.cmi: parsing/coqast.cmi kernel/environ.cmi kernel/evd.cmi \ kernel/names.cmi lib/pp.cmi proofs/proof_type.cmi kernel/sign.cmi \ lib/stamps.cmi kernel/term.cmi lib/util.cmi @@ -196,14 +197,14 @@ dev/top_printers.cmo: parsing/ast.cmi parsing/astterm.cmi proofs/clenv.cmi \ toplevel/command.cmi kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \ kernel/names.cmi lib/pp.cmi parsing/printer.cmi proofs/proof_trees.cmi \ proofs/refiner.cmi kernel/sign.cmi lib/system.cmi proofs/tacmach.cmi \ - kernel/term.cmi kernel/univ.cmi toplevel/vernacentries.cmi \ - toplevel/vernacinterp.cmi + kernel/term.cmi parsing/termast.cmi kernel/univ.cmi \ + toplevel/vernacentries.cmi toplevel/vernacinterp.cmi dev/top_printers.cmx: parsing/ast.cmx parsing/astterm.cmx proofs/clenv.cmx \ toplevel/command.cmx kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx \ kernel/names.cmx lib/pp.cmx parsing/printer.cmx proofs/proof_trees.cmx \ proofs/refiner.cmx kernel/sign.cmx lib/system.cmx proofs/tacmach.cmx \ - kernel/term.cmx kernel/univ.cmx toplevel/vernacentries.cmx \ - toplevel/vernacinterp.cmx + kernel/term.cmx parsing/termast.cmx kernel/univ.cmx \ + toplevel/vernacentries.cmx toplevel/vernacinterp.cmx kernel/abstraction.cmo: kernel/generic.cmi kernel/names.cmi kernel/sosub.cmi \ kernel/term.cmi lib/util.cmi kernel/abstraction.cmi kernel/abstraction.cmx: kernel/generic.cmx kernel/names.cmx kernel/sosub.cmx \ @@ -484,42 +485,40 @@ parsing/pretty.cmx: pretyping/classops.cmx kernel/declarations.cmx \ parsing/pretty.cmi parsing/printer.cmo: parsing/ast.cmi parsing/coqast.cmi library/declare.cmi \ kernel/environ.cmi parsing/esyntax.cmi parsing/extend.cmi \ - library/global.cmi kernel/names.cmi lib/options.cmi proofs/pattern.cmi \ - lib/pp.cmi kernel/sign.cmi kernel/term.cmi parsing/termast.cmi \ - lib/util.cmi parsing/printer.cmi + library/global.cmi kernel/names.cmi library/nametab.cmi lib/options.cmi \ + proofs/pattern.cmi lib/pp.cmi kernel/sign.cmi kernel/term.cmi \ + parsing/termast.cmi lib/util.cmi parsing/printer.cmi parsing/printer.cmx: parsing/ast.cmx parsing/coqast.cmx library/declare.cmx \ kernel/environ.cmx parsing/esyntax.cmx parsing/extend.cmx \ - library/global.cmx kernel/names.cmx lib/options.cmx proofs/pattern.cmx \ - lib/pp.cmx kernel/sign.cmx kernel/term.cmx parsing/termast.cmx \ - lib/util.cmx parsing/printer.cmi + library/global.cmx kernel/names.cmx library/nametab.cmx lib/options.cmx \ + proofs/pattern.cmx lib/pp.cmx kernel/sign.cmx kernel/term.cmx \ + parsing/termast.cmx lib/util.cmx parsing/printer.cmi parsing/termast.cmo: parsing/ast.cmi pretyping/classops.cmi \ parsing/coqast.cmi library/declare.cmi pretyping/detyping.cmi \ - kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi library/global.cmi \ - library/impargs.cmi kernel/inductive.cmi kernel/names.cmi \ - library/nametab.cmi proofs/pattern.cmi lib/pp.cmi pretyping/rawterm.cmi \ - kernel/reduction.cmi kernel/sign.cmi kernel/term.cmi kernel/univ.cmi \ - lib/util.cmi parsing/termast.cmi + kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi library/impargs.cmi \ + kernel/inductive.cmi kernel/names.cmi proofs/pattern.cmi lib/pp.cmi \ + pretyping/rawterm.cmi kernel/reduction.cmi kernel/sign.cmi \ + kernel/term.cmi kernel/univ.cmi lib/util.cmi parsing/termast.cmi parsing/termast.cmx: parsing/ast.cmx pretyping/classops.cmx \ parsing/coqast.cmx library/declare.cmx pretyping/detyping.cmx \ - kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx library/global.cmx \ - library/impargs.cmx kernel/inductive.cmx kernel/names.cmx \ - library/nametab.cmx proofs/pattern.cmx lib/pp.cmx pretyping/rawterm.cmx \ - kernel/reduction.cmx kernel/sign.cmx kernel/term.cmx kernel/univ.cmx \ - lib/util.cmx parsing/termast.cmi + kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx library/impargs.cmx \ + kernel/inductive.cmx kernel/names.cmx proofs/pattern.cmx lib/pp.cmx \ + pretyping/rawterm.cmx kernel/reduction.cmx kernel/sign.cmx \ + kernel/term.cmx kernel/univ.cmx lib/util.cmx parsing/termast.cmi pretyping/cases.cmo: pretyping/coercion.cmi kernel/declarations.cmi \ kernel/environ.cmi pretyping/evarconv.cmi pretyping/evarutil.cmi \ kernel/evd.cmi kernel/generic.cmi library/global.cmi kernel/inductive.cmi \ kernel/names.cmi lib/pp.cmi pretyping/pretype_errors.cmi \ pretyping/rawterm.cmi kernel/reduction.cmi pretyping/retyping.cmi \ kernel/sign.cmi kernel/term.cmi kernel/type_errors.cmi kernel/typeops.cmi \ - lib/util.cmi pretyping/cases.cmi + kernel/univ.cmi lib/util.cmi pretyping/cases.cmi pretyping/cases.cmx: pretyping/coercion.cmx kernel/declarations.cmx \ kernel/environ.cmx pretyping/evarconv.cmx pretyping/evarutil.cmx \ kernel/evd.cmx kernel/generic.cmx library/global.cmx kernel/inductive.cmx \ kernel/names.cmx lib/pp.cmx pretyping/pretype_errors.cmx \ pretyping/rawterm.cmx kernel/reduction.cmx pretyping/retyping.cmx \ kernel/sign.cmx kernel/term.cmx kernel/type_errors.cmx kernel/typeops.cmx \ - lib/util.cmx pretyping/cases.cmi + kernel/univ.cmx lib/util.cmx pretyping/cases.cmi pretyping/class.cmo: pretyping/classops.cmi kernel/declarations.cmi \ library/declare.cmi kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \ library/global.cmi kernel/inductive.cmi kernel/instantiate.cmi \ @@ -540,13 +539,13 @@ pretyping/classops.cmx: library/declare.cmx kernel/environ.cmx \ pretyping/tacred.cmx kernel/term.cmx lib/util.cmx pretyping/classops.cmi pretyping/coercion.cmo: pretyping/classops.cmi kernel/environ.cmi \ pretyping/evarconv.cmi kernel/evd.cmi kernel/generic.cmi kernel/names.cmi \ - pretyping/recordops.cmi kernel/reduction.cmi pretyping/retyping.cmi \ - kernel/term.cmi kernel/type_errors.cmi kernel/typeops.cmi lib/util.cmi \ + pretyping/pretype_errors.cmi pretyping/recordops.cmi kernel/reduction.cmi \ + pretyping/retyping.cmi kernel/term.cmi kernel/typeops.cmi lib/util.cmi \ pretyping/coercion.cmi pretyping/coercion.cmx: pretyping/classops.cmx kernel/environ.cmx \ pretyping/evarconv.cmx kernel/evd.cmx kernel/generic.cmx kernel/names.cmx \ - pretyping/recordops.cmx kernel/reduction.cmx pretyping/retyping.cmx \ - kernel/term.cmx kernel/type_errors.cmx kernel/typeops.cmx lib/util.cmx \ + pretyping/pretype_errors.cmx pretyping/recordops.cmx kernel/reduction.cmx \ + pretyping/retyping.cmx kernel/term.cmx kernel/typeops.cmx lib/util.cmx \ pretyping/coercion.cmi pretyping/detyping.cmo: kernel/declarations.cmi library/declare.cmi \ kernel/generic.cmi library/global.cmi library/goptions.cmi \ @@ -569,13 +568,13 @@ pretyping/evarconv.cmx: pretyping/classops.cmx kernel/environ.cmx \ pretyping/evarutil.cmo: kernel/environ.cmi kernel/evd.cmi kernel/generic.cmi \ library/indrec.cmi kernel/instantiate.cmi kernel/names.cmi lib/pp.cmi \ pretyping/pretype_errors.cmi kernel/reduction.cmi pretyping/retyping.cmi \ - kernel/sign.cmi kernel/term.cmi kernel/univ.cmi lib/util.cmi \ - pretyping/evarutil.cmi + kernel/sign.cmi kernel/term.cmi kernel/typeops.cmi kernel/univ.cmi \ + lib/util.cmi pretyping/evarutil.cmi pretyping/evarutil.cmx: kernel/environ.cmx kernel/evd.cmx kernel/generic.cmx \ library/indrec.cmx kernel/instantiate.cmx kernel/names.cmx lib/pp.cmx \ pretyping/pretype_errors.cmx kernel/reduction.cmx pretyping/retyping.cmx \ - kernel/sign.cmx kernel/term.cmx kernel/univ.cmx lib/util.cmx \ - pretyping/evarutil.cmi + kernel/sign.cmx kernel/term.cmx kernel/typeops.cmx kernel/univ.cmx \ + lib/util.cmx pretyping/evarutil.cmi pretyping/pretype_errors.cmo: kernel/environ.cmi library/global.cmi \ kernel/names.cmi pretyping/rawterm.cmi kernel/sign.cmi \ kernel/type_errors.cmi pretyping/pretype_errors.cmi @@ -589,7 +588,7 @@ pretyping/pretyping.cmo: pretyping/cases.cmi pretyping/classops.cmi \ kernel/names.cmi lib/pp.cmi pretyping/pretype_errors.cmi \ pretyping/rawterm.cmi pretyping/recordops.cmi kernel/reduction.cmi \ pretyping/retyping.cmi kernel/sign.cmi kernel/term.cmi \ - kernel/type_errors.cmi kernel/typeops.cmi lib/util.cmi \ + kernel/type_errors.cmi kernel/typeops.cmi kernel/univ.cmi lib/util.cmi \ pretyping/pretyping.cmi pretyping/pretyping.cmx: pretyping/cases.cmx pretyping/classops.cmx \ pretyping/coercion.cmx kernel/environ.cmx pretyping/evarconv.cmx \ @@ -598,7 +597,7 @@ pretyping/pretyping.cmx: pretyping/cases.cmx pretyping/classops.cmx \ kernel/names.cmx lib/pp.cmx pretyping/pretype_errors.cmx \ pretyping/rawterm.cmx pretyping/recordops.cmx kernel/reduction.cmx \ pretyping/retyping.cmx kernel/sign.cmx kernel/term.cmx \ - kernel/type_errors.cmx kernel/typeops.cmx lib/util.cmx \ + kernel/type_errors.cmx kernel/typeops.cmx kernel/univ.cmx lib/util.cmx \ pretyping/pretyping.cmi pretyping/rawterm.cmo: kernel/names.cmi kernel/sign.cmi kernel/term.cmi \ lib/util.cmi pretyping/rawterm.cmi @@ -688,14 +687,14 @@ proofs/pattern.cmx: kernel/generic.cmx kernel/names.cmx pretyping/rawterm.cmx \ kernel/reduction.cmx kernel/term.cmx lib/util.cmx proofs/pattern.cmi proofs/pfedit.cmo: parsing/astterm.cmi kernel/declarations.cmi \ library/declare.cmi lib/edit.cmi kernel/environ.cmi kernel/evd.cmi \ - kernel/generic.cmi library/lib.cmi kernel/names.cmi lib/options.cmi \ - lib/pp.cmi proofs/proof_trees.cmi proofs/proof_type.cmi kernel/sign.cmi \ + kernel/generic.cmi library/lib.cmi kernel/names.cmi lib/pp.cmi \ + proofs/proof_trees.cmi proofs/proof_type.cmi kernel/sign.cmi \ proofs/tacmach.cmi kernel/term.cmi pretyping/typing.cmi lib/util.cmi \ proofs/pfedit.cmi proofs/pfedit.cmx: parsing/astterm.cmx kernel/declarations.cmx \ library/declare.cmx lib/edit.cmx kernel/environ.cmx kernel/evd.cmx \ - kernel/generic.cmx library/lib.cmx kernel/names.cmx lib/options.cmx \ - lib/pp.cmx proofs/proof_trees.cmx proofs/proof_type.cmx kernel/sign.cmx \ + kernel/generic.cmx library/lib.cmx kernel/names.cmx lib/pp.cmx \ + proofs/proof_trees.cmx proofs/proof_type.cmx kernel/sign.cmx \ proofs/tacmach.cmx kernel/term.cmx pretyping/typing.cmx lib/util.cmx \ proofs/pfedit.cmi proofs/proof_trees.cmo: parsing/ast.cmi pretyping/detyping.cmi \ @@ -1021,17 +1020,17 @@ toplevel/fhimsg.cmx: kernel/environ.cmx kernel/generic.cmx kernel/names.cmx \ lib/pp.cmx kernel/reduction.cmx kernel/sign.cmx kernel/term.cmx \ kernel/type_errors.cmx lib/util.cmx toplevel/fhimsg.cmi toplevel/himsg.cmo: parsing/ast.cmi kernel/environ.cmi kernel/generic.cmi \ - kernel/indtypes.cmi kernel/inductive.cmi proofs/logic.cmi \ - kernel/names.cmi lib/options.cmi lib/pp.cmi parsing/pretty.cmi \ - parsing/printer.cmi kernel/reduction.cmi kernel/sign.cmi \ - proofs/tacmach.cmi kernel/term.cmi kernel/type_errors.cmi lib/util.cmi \ - toplevel/himsg.cmi + library/global.cmi kernel/indtypes.cmi kernel/inductive.cmi \ + proofs/logic.cmi kernel/names.cmi lib/options.cmi lib/pp.cmi \ + parsing/pretty.cmi parsing/printer.cmi kernel/reduction.cmi \ + kernel/sign.cmi proofs/tacmach.cmi kernel/term.cmi kernel/type_errors.cmi \ + lib/util.cmi toplevel/himsg.cmi toplevel/himsg.cmx: parsing/ast.cmx kernel/environ.cmx kernel/generic.cmx \ - kernel/indtypes.cmx kernel/inductive.cmx proofs/logic.cmx \ - kernel/names.cmx lib/options.cmx lib/pp.cmx parsing/pretty.cmx \ - parsing/printer.cmx kernel/reduction.cmx kernel/sign.cmx \ - proofs/tacmach.cmx kernel/term.cmx kernel/type_errors.cmx lib/util.cmx \ - toplevel/himsg.cmi + library/global.cmx kernel/indtypes.cmx kernel/inductive.cmx \ + proofs/logic.cmx kernel/names.cmx lib/options.cmx lib/pp.cmx \ + parsing/pretty.cmx parsing/printer.cmx kernel/reduction.cmx \ + kernel/sign.cmx proofs/tacmach.cmx kernel/term.cmx kernel/type_errors.cmx \ + lib/util.cmx toplevel/himsg.cmi toplevel/metasyntax.cmo: parsing/ast.cmi parsing/coqast.cmi \ parsing/egrammar.cmi parsing/esyntax.cmi parsing/extend.cmi \ library/lib.cmi library/libobject.cmi library/library.cmi \ @@ -1067,13 +1066,13 @@ toplevel/record.cmx: parsing/ast.cmx parsing/astterm.cmx pretyping/class.cmx \ library/global.cmx kernel/inductive.cmx kernel/names.cmx lib/pp.cmx \ pretyping/recordops.cmx kernel/term.cmx lib/util.cmx toplevel/record.cmi toplevel/toplevel.cmo: parsing/ast.cmi toplevel/errors.cmi toplevel/mltop.cmi \ - lib/options.cmi parsing/pcoq.cmi proofs/pfedit.cmi lib/pp.cmi \ - toplevel/protectedtoplevel.cmi lib/util.cmi toplevel/vernac.cmi \ - toplevel/vernacinterp.cmi toplevel/toplevel.cmi + kernel/names.cmi lib/options.cmi parsing/pcoq.cmi proofs/pfedit.cmi \ + lib/pp.cmi toplevel/protectedtoplevel.cmi lib/util.cmi \ + toplevel/vernac.cmi toplevel/vernacinterp.cmi toplevel/toplevel.cmi toplevel/toplevel.cmx: parsing/ast.cmx toplevel/errors.cmx toplevel/mltop.cmi \ - lib/options.cmx parsing/pcoq.cmx proofs/pfedit.cmx lib/pp.cmx \ - toplevel/protectedtoplevel.cmx lib/util.cmx toplevel/vernac.cmx \ - toplevel/vernacinterp.cmx toplevel/toplevel.cmi + kernel/names.cmx lib/options.cmx parsing/pcoq.cmx proofs/pfedit.cmx \ + lib/pp.cmx toplevel/protectedtoplevel.cmx lib/util.cmx \ + toplevel/vernac.cmx toplevel/vernacinterp.cmx toplevel/toplevel.cmi toplevel/usage.cmo: toplevel/usage.cmi toplevel/usage.cmx: toplevel/usage.cmi toplevel/vernacentries.cmo: parsing/ast.cmi parsing/astterm.cmi \ diff --git a/library/impargs.ml b/library/impargs.ml index b334092b92..5b52f19760 100644 --- a/library/impargs.ml +++ b/library/impargs.ml @@ -68,7 +68,7 @@ let declare_inductive_implicits sp = let mib = Global.lookup_mind sp in let imps_one_inductive mip = (auto_implicits (body_of_type mip.mind_arity), - Array.map auto_implicits mip.mind_lc) + Array.map (fun c -> auto_implicits (body_of_type c)) mip.mind_lc) in let imps = Array.map imps_one_inductive mib.mind_packets in inductives_table := Spmap.add sp imps !inductives_table diff --git a/library/indrec.ml b/library/indrec.ml index f83138b3d0..da5aeec345 100644 --- a/library/indrec.ml +++ b/library/indrec.ml @@ -398,66 +398,3 @@ let type_rec_branches recursive env sigma ind pt p c = else type_case_branches env sigma ind pt p c -(***************************************************) -(* Building ML like case expressions without types *) - -let concl_n env sigma = - let rec decrec m c = if m = 0 then c else - match whd_betadeltaiota env sigma c with - | DOP2(Prod,_,DLAM(n,c_0)) -> decrec (m-1) c_0 - | _ -> failwith "Typing.concl_n" - in - decrec - -let count_rec_arg j = - let rec crec i = function - | [] -> i - | (Mrec k::l) -> crec (if k=j then (i+1) else i) l - | (_::l) -> crec i l - in - crec 0 - -(* if arity of mispec is (p_bar:P_bar)(a_bar:A_bar)s where p_bar are the - * K parameters. Then then build_notdep builds the predicate - * [a_bar:A'_bar](lift k pred) - * where A'_bar = A_bar[p_bar <- globargs] *) - -let build_notdep_pred env sigma indf pred = - let arsign,_ = get_arity env sigma indf in - let nar = List.length arsign in - it_lambda_name env (lift nar pred) arsign - - -let pred_case_ml_fail env sigma isrec (IndType (indf,realargs)) (i,ft) = - let pred = - let mispec,_ = dest_ind_family indf in - let recargs = mis_recarg mispec in - assert (Array.length recargs <> 0); - let recargi = recargs.(i-1) in - let j = mis_index mispec in - let nbrec = if isrec then count_rec_arg j recargi else 0 in - let nb_arg = List.length (recargs.(i-1)) + nbrec in - let pred = concl_n env sigma nb_arg ft in - if noccur_between 1 nb_arg pred then - lift (-nb_arg) pred - else - failwith "Dependent" - in - if realargs = [] then - pred - else (* we try with [_:T1]..[_:Tn](lift n pred) *) - build_notdep_pred env sigma indf pred - -let pred_case_ml env sigma isrec indt lf (i,ft) = - pred_case_ml_fail env sigma isrec indt (i,ft) - -(* similar to pred_case_ml but does not expect the list lf of braches *) -let pred_case_ml_onebranch env sigma isrec indt (i,f,ft) = - pred_case_ml_fail env sigma isrec indt (i,ft) - -(* Used in Program only *) -let make_case_ml isrec pred c ci lf = - if isrec then - DOPN(XTRA("REC"),Array.append [|pred;c|] lf) - else - mkMutCaseA ci pred c lf diff --git a/library/indrec.mli b/library/indrec.mli index bfb22f4c99..728b3c5dc2 100644 --- a/library/indrec.mli +++ b/library/indrec.mli @@ -37,20 +37,3 @@ val make_rec_branch_arg : env -> 'a evar_map -> int * ('b * constr) option array * int -> constr -> constructor_summary -> recarg list -> constr - -val pred_case_ml_onebranch : env -> 'c evar_map -> bool -> - inductive_type -> int * constr * constr -> constr - -(*i Info pour JCF : déplacé dans pretyping, sert à Program -val transform_rec : env -> 'c evar_map -> (constr array) - -> (constr * constr) -> constr -i*) - -(*i Utilisés dans Program -val pred_case_ml : env -> 'c evar_map -> bool -> - constr * (inductive * constr list * constr list) - -> constr array -> int * constr ->constr -val make_case_ml : - bool -> constr -> constr -> case_info -> constr array -> constr -i*) - diff --git a/parsing/printer.mli b/parsing/printer.mli index 75ac36c081..ff3179c7d3 100644 --- a/parsing/printer.mli +++ b/parsing/printer.mli @@ -18,6 +18,9 @@ val prterm_env_at_top : 'a assumptions -> constr -> std_ppcmds val prterm : constr -> std_ppcmds val prtype_env : 'a assumptions -> typed_type -> std_ppcmds val prtype : typed_type -> std_ppcmds +val prjudge_env : + 'a assumptions -> Environ.unsafe_judgment -> std_ppcmds * std_ppcmds +val prjudge : Environ.unsafe_judgment -> std_ppcmds * std_ppcmds val pr_rawterm : Rawterm.rawconstr -> std_ppcmds val pr_cases_pattern : Rawterm.cases_pattern -> std_ppcmds diff --git a/proofs/tacinterp.ml b/proofs/tacinterp.ml index bd7ff32a76..6d999b9c5d 100644 --- a/proofs/tacinterp.ml +++ b/proofs/tacinterp.ml @@ -588,7 +588,7 @@ and cvt_pattern (evc,env,lfun,lmatch,goalopt)=function in let jdt=Typing.unsafe_machine env evc csr in - (occs, jdt.Environ.uj_val, jdt.Environ.uj_type) + (occs, jdt.Environ.uj_val, body_of_type jdt.Environ.uj_type) |arg -> invalid_arg_loc (Ast.loc arg,"cvt_pattern") and cvt_unfold (evc,env,lfun,lmatch,goalopt)=function Node(_,"UNFOLD", com::nums) -> diff --git a/toplevel/discharge.ml b/toplevel/discharge.ml index 67ecd9139b..820100f6fc 100644 --- a/toplevel/discharge.ml +++ b/toplevel/discharge.ml @@ -27,15 +27,7 @@ let recalc_sp sp = let whd_all c = whd_betadeltaiota (Global.env()) Evd.empty c let generalize_type id var c = - let c' = mkProd (Name id) (body_of_type var) (subst_var id (body_of_type c)) in - let c'ty = sort_of_product_without_univ (level_of_type var) (level_of_type c) in - make_typed c' c'ty - -let casted_generalize id var c = - let c' = mkProd (Name id) (body_of_type var) (subst_var id (cast_term c)) in - let s = destSort (whd_all (cast_type c)) in - let c'ty = sort_of_product_without_univ (level_of_type var) s in - mkCast c' (DOP0 (Sort c'ty)) + typed_product_without_universes (Name id) var (typed_app (subst_var id) c) type modification_action = ABSTRACT | ERASE @@ -116,7 +108,9 @@ let abstract_inductive ids_to_abs hyps inds = (function (tname,arity,cnames,lc) -> let arity' = generalize_type id ty arity in let lc' = - List.map (fun b-> casted_generalize id ty (substl new_refs b)) lc + List.map + (fun b -> generalize_type id ty (typed_app (substl new_refs) b)) + lc in (tname,arity',cnames,lc')) inds @@ -132,7 +126,10 @@ let abstract_inductive ids_to_abs hyps inds = in let (_,inds',revmodl) = List.fold_left abstract_once (hyps,inds,[]) ids_to_abs in - let inds'' = List.map (fun (a,b,c,d) -> (a,body_of_type b,c,d)) inds' in + let inds'' = + List.map + (fun (a,b,c,d) -> (a,body_of_type b,c,List.map body_of_type d)) + inds' in (inds'', List.rev revmodl) let abstract_constant ids_to_abs hyps (body,typ) = @@ -151,10 +148,7 @@ let abstract_constant ids_to_abs hyps (body,typ) = Some (ref (Recipe (fun () -> mkLambda name cvar (subst_var id (f()))))) in - let typ' = make_typed - (mkProd name cvar (subst_var id (body_of_type typ))) - (sort_of_product_without_univ (level_of_type var) (level_of_type typ)) - in + let typ' = generalize_type id var typ in (tl_sign hyps,body',typ',ABSTRACT::modl) in let (_,body',typ',revmodl) = @@ -213,7 +207,7 @@ let process_inductive osecsp nsecsp oldenv (ids_to_discard,modlist) mib = (mip.mind_typename, expmod_type oldenv modlist mip.mind_arity, Array.to_list mip.mind_consnames, - array_map_to_list (expmod_constr oldenv modlist) mip.mind_lc)) + array_map_to_list (expmod_type oldenv modlist) mip.mind_lc)) mib.mind_packets in let (inds',modl) = abstract_inductive ids_to_discard mib.mind_hyps inds in diff --git a/toplevel/himsg.ml b/toplevel/himsg.ml index b824c20abf..28df858fdf 100644 --- a/toplevel/himsg.ml +++ b/toplevel/himsg.ml @@ -97,7 +97,7 @@ let explain_ill_formed_branch k ctx c i actty expty = let explain_generalization k ctx (name,var) c = let ctx = make_all_name_different ctx in let pe = pr_ne_env [< 'sTR"in environment" >] k ctx in - let pv = prterm_env ctx (body_of_type var) in + let pv = prtype_env ctx var in let pc = prterm_env (add_rel (name,var) ctx) c in [< 'sTR"Illegal generalization: "; pe; 'fNL; 'sTR"Cannot generalize"; 'bRK(1,1); pv; 'sPC; @@ -118,14 +118,12 @@ let explain_actual_type k ctx c ct pt = let explain_cant_apply_bad_type k ctx (n,exptyp,actualtyp) rator randl = let ctx = make_all_name_different ctx in let pe = pr_ne_env [< 'sTR"in environment" >] k ctx in - let pr = prterm_env ctx rator.uj_val in - let prt = prterm_env ctx rator.uj_type in + let pr,prt = prjudge_env ctx rator in let term_string = if List.length randl > 1 then "terms" else "term" in let many = match n mod 10 with 1 -> "st" | 2 -> "nd" | _ -> "th" in let appl = prlist_with_sep pr_fnl (fun c -> - let pc = prterm_env ctx c.uj_val in - let pct = prterm_env ctx c.uj_type in + let pc,pct = prjudge_env ctx c in hOV 2 [< pc; 'sPC; 'sTR": " ; pct >]) randl in [< 'sTR"Illegal application (Type Error): "; pe; 'fNL; @@ -141,12 +139,12 @@ let explain_cant_apply_not_functional k ctx rator randl = let ctx = make_all_name_different ctx in let pe = pr_ne_env [< 'sTR"in environment" >] k ctx in let pr = prterm_env ctx rator.uj_val in - let prt = prterm_env ctx rator.uj_type in + let prt = prterm_env ctx (body_of_type rator.uj_type) in let term_string = if List.length randl > 1 then "terms" else "term" in let appl = prlist_with_sep pr_fnl (fun c -> let pc = prterm_env ctx c.uj_val in - let pct = prterm_env ctx c.uj_type in + let pct = prterm_env ctx (body_of_type c.uj_type) in hOV 2 [< pc; 'sPC; 'sTR": " ; pct >]) randl in [< 'sTR"Illegal application (Non-functional construction): "; pe; 'fNL; @@ -167,8 +165,7 @@ let explain_ill_formed_rec_body k ctx str lna i vdefs = 'sTR "is not well-formed" >] let explain_ill_typed_rec_body k ctx i lna vdefj vargs = - let pvd = prterm_env ctx (vdefj.(i)).uj_val in - let pvdt = prterm_env ctx (vdefj.(i)).uj_type in + let pvd,pvdt = prjudge_env ctx (vdefj.(i)) in let pv = prterm_env ctx (body_of_type vargs.(i)) in [< 'sTR"The " ; if Array.length vdefj = 1 then [<>] else [<'iNT (i+1); 'sTR "-th">]; |
