diff options
| author | Matthieu Sozeau | 2016-03-10 19:02:16 +0100 |
|---|---|---|
| committer | Matthieu Sozeau | 2016-03-10 19:39:25 +0100 |
| commit | 4341f37cf3c51ed82c23f05846c8e6e8823d3cd6 (patch) | |
| tree | 668c44dae870e87d21c0abf3b0aac5e8980a784a /pretyping | |
| parent | f1a8b27ffe0df4f207b0cfaac067c8201d07ae16 (diff) | |
Primitive projections: protect kernel from erroneous definitions.
E.g., Inductive foo := mkFoo { bla : foo } allowed to define recursive
records with eta for which conversion is incomplete.
- Eta-conversion only applies to BiFinite inductives
- Finiteness information is now checked by the kernel (the constructor types
must be strictly non recursive for BiFinite declarations).
Diffstat (limited to 'pretyping')
| -rw-r--r-- | pretyping/evarconv.ml | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/pretyping/evarconv.ml b/pretyping/evarconv.ml index 637a9e50e0..690b974be5 100644 --- a/pretyping/evarconv.ml +++ b/pretyping/evarconv.ml @@ -854,7 +854,7 @@ and conv_record trs env evd (ctx,(h,h2),c,bs,(params,params1),(us,us2),(sk1,sk2) and eta_constructor ts env evd sk1 ((ind, i), u) sk2 term2 = let mib = lookup_mind (fst ind) env in match mib.Declarations.mind_record with - | Some (Some (id, projs, pbs)) when mib.Declarations.mind_finite <> Decl_kinds.CoFinite -> + | Some (Some (id, projs, pbs)) when mib.Declarations.mind_finite == Decl_kinds.BiFinite -> let pars = mib.Declarations.mind_nparams in (try let l1' = Stack.tail pars sk1 in |
