(* Submitted by Dachuan Yu (BZ#220) *) Fixpoint T (n : nat) : Type := match n with
| O => nat -> Prop
| S n' => T n' end. Inductive R : forall n : nat, T n -> nat -> Prop :=
| RO : forall (Psi : T 0) (l : nat), Psi l -> R 0 Psi l
| RS : forall (n : nat) (Psi : T (S n)) (l : nat), R n Psi l -> R (S n) Psi l. Definition Psi00 (n : nat) : Prop := False. Definition Psi0 : T 0 := Psi00. Lemma Inversion_RO : forall l : nat, R 0 Psi0 l -> Psi00 l. inversion1. Abort.
(* Submitted by Pierre Casteran (BZ#540) *)
SetImplicitArguments. Unset Strict Implicit. Parameter rule : Set -> Type.
Inductive extension (I : Set) : Type :=
| NL : extension I
| add_rule : rule I -> extension I -> extension I.
Inductive in_extension (I : Set) (r : rule I) : extension I -> Type :=
| in_first : forall e, in_extension r (add_rule r e)
| in_rest : forall e r', in_extension r e -> in_extension r (add_rule r' e).
Arguments NL {I}.
Inductive super_extension (I : Set) (e : extension I) :
extension I -> Type :=
| super_NL : super_extension e NL
| super_add : forall r (e' : extension I),
in_extension r e ->
super_extension e e' -> super_extension e (add_rule r e').
(* Example from Norbert Schirmer on Coq-Club, Sep 2000 *)
Set Strict Implicit. UnsetImplicitArguments. Definition Q (n m : nat) (prf : n <= m) := True. Goalforall (n m : nat) (H : S n <= m), Q (S n) m H = True. intros.
dependent inversion_clear H. elim magic. elim magic. Qed.
(* Submitted by Boris Yakobowski (BZ#529) *) (* Check that Inversion does not fail due to unnormalized evars *)
Inductive I : nat -> Set :=
| C1 : I 1
| C2 : forall k i : nat, Vector.t (I i) k -> I i.
Inductive SI : forall k : nat, I k -> Vector.t nat k -> nat -> Prop :=
SC2 : forall (k i vf : nat) (v : Vector.t (I i) k) (xi : Vector.t nat i),
SI (C2 v) xi vf.
Theorem SUnique : forall (k : nat) (f : I k) (c : Vector.t nat k) v v',
SI f c v -> SI f c v' -> v = v'. Proof. induction1. intros H; inversion H. Admitted.
(* Used to failed at some time *)
Set Strict Implicit. UnsetImplicitArguments. Parameter bar : forall p q : nat, p = q -> Prop. Inductive foo : nat -> nat -> Prop :=
C : forall (a b : nat) (Heq : a = b), bar a b Heq -> foo a b. Lemma depinv : forall a b, foo a b -> True. intros a b H. inversion H. Abort.
(* Check non-regression of BZ#1968 *)
Inductive foo2 : option nat -> Prop := Foo : forall t, foo2 (Some t). Goalforall o, foo2 o -> 0 = 1. intros.
eapply trans_eq. inversion H. Abort.
(* Check that the part of "injection" that is called by "inversion" doesthesamenumberofintrosasthenumberofequations introduced,eveninpresenceofdependentequalitiesthat
"injection" renounces to split *)
Fixpoint prodn (n : nat) := match n with
| O => unit
| (S m) => prod (prodn m) nat end.
Inductive U : forall n : nat, prodn n -> bool -> Prop :=
| U_intro : U 0 tt true.
Lemma foo3 : forall n (t : prodn n), U n t true -> False. Proof. (* used to fail because dEqThen thought there were 2 new equations but inject_at_positionsactuallyintroducedonlyone;leadingthento
an inconsistent state that disturbed "inversion" *) intros. inversion H. Abort.
(* BZ#2314 (simplified): check that errors do not show as anomalies *)
Goal True -> True. intro.
Fail inversion H using False.
Fail inversion foo using True_ind. Abort.
(* Was failing at some time between 7 and 10 September 2014 *) (* even though, it is not clear that the resulting context is interesting *)
Parameter P:nat*nat->Prop. Inductive IND : nat * nat -> { x : nat * nat | P x } * nat -> Prop :=
CONSTR a b (H:P (a,b)) c : IND (a,b) (exist _ (a,b) H, c).
Goalforall x y z t u (H':P (z,t)), IND (x,y) (exist _ (z,t) H', u) -> x = z. intros * Hyp. inversion Hyp. (* By the way, why is "H" removed even in non-clear mode ? *) reflexivity. Qed.
Goalforall x y z t u (H':P (z,t)), IND (x,y) (exist _ (z,t) H', u) -> x = z. intros * Hyp. inversion Hyp as (a,b,H,c,(H1_1,H1_2),(H2_1,H2_2,H2_3)). reflexivity. Qed.
(* Up to September 2014, Mapp below was called MApp0 because of a bug inintro_replacing(shortversionofBZ#2164.v)
(example taken from CoLoR) *)
Parameter Term : Type. Parameter isApp : Term -> Prop. Parameter appBodyL : forall M, isApp M -> Prop. Parameter lower : forall M Mapp, appBodyL M Mapp -> Term.
Inductive BetaStep : Term -> Term -> Prop :=
Beta M Mapp Mabs : BetaStep M (lower M Mapp Mabs).
Goalforall M N, BetaStep M N -> True. intros M N H. inversion H as (P,Mapp,Mabs,H0,H1).
clear Mapp Mabs H0 H1. exact Logic.I. Qed.
(* Up to September 2014, H0 below was renamed called H1 because of a collision withtheautomaticallygeneratednamesforequations.
(example taken from CoLoR) *)
Inductive term := Var | Fun : term -> term -> term. Inductive lt : term -> term -> Prop :=
mpo f g ss ts : lt Var (Fun f ts) -> lt (Fun f ss) (Fun g ts).
Goalforall f g ss ts, lt (Fun f ss) (Fun g ts) -> lt Var (Fun f ts). intros. inversion H as (f',g',ss',ts',H0). exact H0. Qed.
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.