X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Ftests%2Finjection.ma;h=7d9586fd1badd4482f9dc88667cb01e755f42b89;hb=7a0b77fca976aedae747b64989ffc89d75fe0991;hp=149a39e81f986a20652f4f16ca40fc34169ac403;hpb=3a0c3a4275ba88babc9d5717a019fe277d947fa6;p=helm.git diff --git a/helm/software/matita/tests/injection.ma b/helm/software/matita/tests/injection.ma index 149a39e81..7d9586fd1 100644 --- a/helm/software/matita/tests/injection.ma +++ b/helm/software/matita/tests/injection.ma @@ -54,6 +54,13 @@ inductive ttree : Type → Type := tempty: ttree nat | tnode : ∀A. ttree A → ttree A → ttree A. +(* CSC: there is an undecidable unification problem here: + consider a constructor k : \forall x. f x -> i (g x) + The head of the outtype of the injection MutCase should be (f ?1) + such that (f ?1) unifies with (g d) [ where d is the Rel that binds + the corresponding right parameter in the outtype ] + Coq dodges the problem by generating an equality between sigma-types + (that state the existence of a ?1 such that ...) theorem injection_test3: ∀t,t'. tnode nat t tempty = tnode nat t' tempty → t = t'. intros; @@ -67,13 +74,11 @@ theorem injection_test3: t = t'. intros; injection H; - +*) theorem injection_test4: - ∀n,n',m,m'. k1 bool (S n) (S m) = k1 bool (S n') (S (S m')) → m = S m'. + ∀n,n',m,m'. k1 bool (S n) (S (S m)) = k1 bool (S n') (S (S (S m'))) → m = S m'. intros; injection H; assumption. -qed. - - +qed. \ No newline at end of file