diff options
| author | coq | 2003-09-23 10:47:14 +0000 |
|---|---|---|
| committer | coq | 2003-09-23 10:47:14 +0000 |
| commit | 171a0af74fde8f05ac440491feb6acb76352b9e2 (patch) | |
| tree | ae6f812429c51cce469c7be41fb12b2d1a98ad37 | |
| parent | 2e4bc1ce29c52ae6e0625bef9a6905a70c0e6e89 (diff) | |
Correction bug 328
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@4456 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | kernel/modops.ml | 17 | ||||
| -rw-r--r-- | test-suite/success/Mod_strengthen.v | 64 |
2 files changed, 75 insertions, 6 deletions
diff --git a/kernel/modops.ml b/kernel/modops.ml index c194a6c712..7459dcad8d 100644 --- a/kernel/modops.ml +++ b/kernel/modops.ml @@ -184,12 +184,17 @@ and add_module mp mb env = | MTBfunsig _ -> env -let strengthen_const env mp l cb = match cb.const_body with - | Some _ -> cb - | None -> {cb with const_body = - let const = mkConst (make_kn mp empty_dirpath l) in - Some (Declarations.from_val const) - } +let strengthen_const env mp l cb = + match cb.const_opaque, cb.const_body with + | false, Some _ -> cb + | true, Some _ + | _, None -> + let const = mkConst (make_kn mp empty_dirpath l) in + let const_subs = Some (Declarations.from_val const) in + {cb with + const_body = const_subs; + const_opaque = false + } let strengthen_mind env mp l mib = match mib.mind_equiv with | Some _ -> mib diff --git a/test-suite/success/Mod_strengthen.v b/test-suite/success/Mod_strengthen.v new file mode 100644 index 0000000000..a472e698fb --- /dev/null +++ b/test-suite/success/Mod_strengthen.v @@ -0,0 +1,64 @@ +Module Type Sub. + Axiom Refl1 : (x:nat)(x=x). + Axiom Refl2 : (x:nat)(x=x). + Axiom Refl3 : (x:nat)(x=x). + Inductive T : Set := A : T. +End Sub. + +Module Type Main. + Declare Module M:Sub. +End Main. + + +Module A <: Main. + Module M <: Sub. + Lemma Refl1 : (x:nat) x=x. + Intros;Reflexivity. + Qed. + Axiom Refl2 : (x:nat) x=x. + Lemma Refl3 : (x:nat) x=x. + Intros;Reflexivity. + Defined. + Inductive T : Set := A : T. + End M. +End A. + + + +(* first test *) + +Module F[S:Sub]. + Module M:=S. +End F. + +Module B <: Main with Module M:=A.M := F A.M. + + + +(* second test *) + +Lemma r1 : (A.M.Refl1 == B.M.Refl1). +Proof. + Reflexivity. +Qed. + +Lemma r2 : (A.M.Refl2 == B.M.Refl2). +Proof. + Reflexivity. +Qed. + +Lemma r3 : (A.M.Refl3 == B.M.Refl3). +Proof. + Reflexivity. +Qed. + +Lemma t : (A.M.T == B.M.T). +Proof. + Reflexivity. +Qed. + +Lemma a : (A.M.A == B.M.A). +Proof. + Reflexivity. +Qed. + |
