Skip to Content.
Sympa Menu

coq-club - [Coq-Club]Creating and using mutual induction schemes

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club]Creating and using mutual induction schemes


chronological Thread 
  • From: "Andrew Gacek" <andrew.gacek AT gmail.com>
  • To: Coq-Club <coq-club AT pauillac.inria.fr>
  • Subject: [Coq-Club]Creating and using mutual induction schemes
  • Date: Tue, 25 Jul 2006 15:49:59 -0500
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=JniOXEHUpX/1OkZhAHpb6GmlOnttxLdo2GUZPxuG9C0ADdqp6hLrVzqKtf8Ju0DN3QDMNMcOckgweh3wIHJLLWOxEk7gSUM63W0GEe1ZM7XH//rOUhqq50eC0qyDXmKWBPQC2+dZFF612paA+c0+FkKH2+h0mJ0V/p9oY5WmWwQ=
  • List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>

Hi all,

I have two mutually recursive datatypes and I am trying to prove a
theorem about them which requires using mutual induction. I hope I've
defined the induction schemes, correctly, but I still don't know how
to apply them during the proof.

Inductive term : Set :=
 | one : term
 | app : term -> term -> term
 | lam : term -> term
 | clos : term -> env -> term
 with env : Set :=
 | id : env
 | shift : env
 | cons : term -> env -> env
 | merge : env -> env -> env.

Scheme term_env_ind := Induction for term Sort Prop
 with env_term_ind := Induction for env Sort Prop.

Theorem Inverse : forall (t : Sigma.term) (e : Sigma.env),
 susp_to_sigma_term (sigma_to_susp_term t) = t /\
 susp_to_sigma_env (sigma_to_susp_env e) (sigma_to_susp_nl e) = e.

Have I stated the induction schemes correctly? Is the theorem in
proper form to apply those schemes? If so, how?

Thanks,
Andrew Gacek





Archive powered by MhonArc 2.6.16.

Top of Page