Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Inside a branch of a match block, how do I use the assertion that the matched expression is equal to the branch's data constructor expression?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Inside a branch of a match block, how do I use the assertion that the matched expression is equal to the branch's data constructor expression?


Chronological Thread 
  • From: Adam Chlipala <adamc AT csail.mit.edu>
  • To: abc.deaf.xyz AT gmail.com
  • Cc: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Inside a branch of a match block, how do I use the assertion that the matched expression is equal to the branch's data constructor expression?
  • Date: Sat, 29 Dec 2012 14:51:14 -0500

On 12/29/2012 02:37 PM,
abc.deaf.xyz AT gmail.com
wrote:
I want to write it as follows:

Theorem nope n (p : n = O) (q : n<> O) : False.
contradict q.
exact p.
Qed.

Definition pred2 n (q : n<> O) :=
match n with
| S n => n
| O =>
let p := _ in
match nope n p q with end
end.

My problem is... what do I fill in the hole in the let clause?

I actually treat the example of dependently typed predecessor at length in Chapter 6 of CPDT <http://adam.chlipala.net/cpdt/>. The version you're looking for is one among several that the chapter works its way through.



Archive powered by MHonArc 2.6.18.

Top of Page