Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Another beginner's question.

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Another beginner's question.


chronological Thread 
  • From: Robert Dockins <robdockins AT fastmail.fm>
  • To: coq-club AT pauillac.inria.fr
  • Subject: [Coq-Club] Another beginner's question.
  • Date: Mon, 10 Jan 2005 22:39:35 -0500
  • List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>

I've stumped myself again.  I've run into a pretty simple theorem that I
can't figure out how to prove.  I can easily get to where I have a
assumption that seems like it should lead to a contradiction, but I
can't tease it out.  The form of it is:

H: x = TermIf TermTrue x y

It seams clear that such an x cannot exist as term is defined with
Inductive, but how do I make the proof go through?  Have I made some
miskake?

Many thanks, code follows.

------------------------

Section TaPLUntypedBools.

Inductive term : Set :=
  | TermTrue : term
  | TermFalse : term
  | TermIf : term -> term -> term -> term.

Reserved Notation "A --> B"  (at level 40, left associativity).

Inductive smallStep : term -> term -> Prop :=
   | EIfTrue  : forall (x y:term),   (TermIf TermTrue x y) --> x
   | EIfFalse : forall (x y:term),   (TermIf TermFalse x y) --> y
   | EIf      : forall (a b x y:term), (a --> b) -> (TermIf a x y) -->
(TermIf b x y)
 where "A --> B" := (smallStep A B).

Lemma SmallStepAntiReflexive : forall t:term, ~(t --> t).
Proof.
intros.
red in |- *.
intro H.
induction t.
 inversion H.
 inversion H.
 inversion H.

(*???? what's next? *)

End TaPLUntypedBools.






Archive powered by MhonArc 2.6.16.

Top of Page