diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2016-03-05 21:47:12 +0100 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2016-03-05 21:47:12 +0100 |
commit | f8b624f7bec0406258eee4e08b0cec8d756da6ff (patch) | |
tree | 874c450f7d350455884d409bcfe6bafa44af7b47 /kernel/inductive.ml | |
parent | eb0feed6d22c11c44e7091c64ce5b1c9d5af987a (diff) | |
parent | 32baedf7a3aebb96f7dd2c7d90a1aef40ed93792 (diff) |
Merge branch 'v8.5'
Diffstat (limited to 'kernel/inductive.ml')
-rw-r--r-- | kernel/inductive.ml | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/inductive.ml b/kernel/inductive.ml index 229508ea3..551632962 100644 --- a/kernel/inductive.ml +++ b/kernel/inductive.ml @@ -794,7 +794,15 @@ let rec subterm_specif renv stack t = | Proj (p, c) -> let subt = subterm_specif renv stack c in (match subt with - | Subterm (s, wf) -> Subterm (Strict, wf) + | Subterm (s, wf) -> + (* We take the subterm specs of the constructor of the record *) + let wf_args = (dest_subterms wf).(0) in + (* We extract the tree of the projected argument *) + let kn = Projection.constant p in + let cb = lookup_constant kn renv.env in + let pb = Option.get cb.const_proj in + let n = pb.proj_arg in + Subterm (Strict, List.nth wf_args n) | Dead_code -> Dead_code | Not_subterm -> Not_subterm) |