Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Proving transitiviy of simple type system

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Proving transitiviy of simple type system


Chronological Thread 
  • From: Jason Hu <fdhzs2010 AT hotmail.com>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Proving transitiviy of simple type system
  • Date: Mon, 2 Oct 2023 18:44:52 +0000
  • Accept-language: en-US, en-CA
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7qx+5DmEUAEQNBN96NIOpAw023IkAy0B3YxCDjGFeFU=; b=Yo2+PUDwaS27CjWQXJoHuR0z/+wVLlk/cgYFdrxwKp9XZoj5/boVLd7fRfxKcUjdH+jUhYmowv0KIupCT50DW2av/G4flA8BAqLZSetltPZ4dd6cN0M2LcHOJQVrPmwsnz+1nOopEAbGy4TzgGLvjhwTuMHHC9a+ofJ/HxQnwD0Fg8IaCF3NSpTVEaFCLA7PFgQ5Hnlg7pXgdapQ4eyaPERHZ9SD8xCzlkZVHd+YhCd2z2iOiIgyTR3ZfV7a4BCzIvT95cktbtNVFN3tKUG0U9QoGKFWlVnb/eBBNsZH/dViofLz/lzSDnqd/WhtMMQaLYMd8WdwmG6G/Fd+gcaP/w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dzl1yuld7bK2SsTU2QJs6l5aJhouu6n5KJtI1qdZewJ3aLXLpUzFZ7kJuYqMMDAgFE0wS58joXOrQdfZh3rRqxr1Z+was9WD49tUn7DM1Uxif0CpRYB6k0MwH4bJEVhnVXtFGs1Y45k75g63Z/c/pKgvyAj+lgbZJbMJP5Zb7GK8Yiof6RKb7cHjLACqKiFKmDPBm9hb/gHyyi1/bkJtEEhoarWUaczZ6yiosI9o9aHrYr/otg9pdikeAiR7FMU4Alke2X+y+jwc4OcsxrCZ2mAFFcxzny8oGGaXCNFDQTJ7Ht8KZHcvRly8Xx65TdOf9IHWgVcdSffXsxhKKl3KiA==
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=fdhzs2010 AT hotmail.com; spf=Pass smtp.mailfrom=fdhzs2010 AT hotmail.com; spf=Pass smtp.helo=postmaster AT NAM11-DM6-obe.outbound.protection.outlook.com
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:oS6Dx6lNhVN4Q/vyNSlul9RSchHpDfPnimdD5ihNYBxZY6Wkfp +V8cjzhCWftN9OYhodcIi7SdG9qADnhOVICOgqTMGftWzd1FdAQ7sSibcKrweAJ8S6zJ8l6U 4CSdk2NDSTNykcsS+S2mDRfLgdKZu8gcaVbIzlvhRQpHRRGsRdBnBCe2Sm+yNNJDVuNN4cLt 6x98BHrz2vdTA8dcKgHEQIWODFupniiI/mSQRuPW9t1CC+yReTrJLqGRmR2RkTFxlVx605zG TDmwvloo2+rvCAzAPG3WO71eUdpDKh8KoOOCTA4vJlZwkEuDzYKriJaIfy/Qzdldvfp2rDyL H30lcd1opImjDslyqO0GHQMkHboUsTAjnZuBelaXePm72EeNsWMbsyuWtiSGqt12Mw+NVnlK 5b1WOQsJRaSRvGgSTm/tDNExVnjFC9r3YumfMayyU3a/poVJZB6YgEuE9FGpYJGyz3rIghDe l1FcnZoPJba0mTYXzVtnRmhNasQnMwFBGbRVVqgL3g79B89EoJsHfw6PZv7UvorqhNOqWsz9 60QpiBtNl1P7ErUZ4=
  • Ironport-phdr: A9a23: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 Q2JFW9lwko=
  • Ironport-sdr: 651b0fb1_UIBPfcc5tbET1rj3dyu6Hd17alB3+UNGIRtSdU+zwaCQ2aV D0KkcfUYtzLX/2oO8HrDbR6+FInUPJdzt6EvJeA==
  • Msip_labels:

I have tried all kinds of (dependent) induction approaches, but I am generally stuck either because Coq requires me to prove that the unit type is a subtype of a function type or because the induction hypothesis doesn't take into account that subtyping of function input types is in the "opposite direction".

This shouldn't occur. That means you did your case analysis incorrectly. If you do an induction on typeSub t1 t2, and then an inversion on typeSub t2 t3, you should have only two cases left. Then IH should just work. If you IH doesn't discharge the goal, it means it's not general enough. Based on how you write your lemma, I think that you should generalize t3 before doing induction on typeSub t1 t2​. Then IH should be general enough.


From: coq-club-request AT inria.fr <coq-club-request AT inria.fr> on behalf of Frederic Fort <frederic.fort AT inria.fr>
Sent: Monday, October 2, 2023 1:53 PM
To: coq-club AT inria.fr <coq-club AT inria.fr>
Subject: [Coq-Club] Proving transitiviy of simple type system
 
Hello,

I am trying to prove the some facts about the type system of a simple Lambda calculus. However, I struggle to prove the transitivity of the subtype relation.
I have seen in papers that certain people simply "axiomatize" properties like transitivity and reflexivity by defining specific rules for these properties.
However, I find this inelegant as this makes proofs in other places more "cluttered" due to the additional constructors.
I have a few proofs that work fine. For transitivity however, I am stuck.
I have tried all kinds of (dependent) induction approaches, but I am generally stuck either because Coq requires me to prove that the unit type is a subtype of a function type or because the induction hypothesis doesn't take into account that subtyping of function input types is in the "opposite direction".

I suppose that there is some "Coq trick" that I am unfamiliar with (maybe I have to define a custom induction scheme ?).
Or maybe it is actually impossible to prove transitivity like that.

If somebody could show me what I am missing, I'd be grateful.

Yours sincerely,
Frédéric Fort

Here are my definitions:
Inductive expr :=
| Unt
| Var (n : nat)
| Lam (v : nat) (e : expr)
| App (f : expr) (arg : expr)
.

Inductive type :=
| TUnit
| TFun (tin tout : type)
.

Inductive typeSub : type -> type -> Prop :=
| SubTUnit : typeSub TUnit TUnit
| SubTFun : forall ti1 to1 ti2 to2, typeSub ti2 ti1 -> typeSub to1 to2 -> typeSub (TFun ti1 to1) (TFun ti2 to2)
.

Lemma refl:
forall t, typeSub t t.
Proof.
intros.
induction t; constructor; auto.
Qed.

Lemma sub_is_eq:
forall t1 t2, typeSub t1 t2 -> t1 = t2.
Proof.
intros.
induction H.
- reflexivity.
- rewrite IHtypeSub1. rewrite IHtypeSub2. reflexivity.
Qed.

Lemma trans:
forall t1 t2 t3,
typeSub t1 t2 -> typeSub t2 t3 -> typeSub t1 t3.
Proof.
intros t1 t2 t3 HSubL HSubR.
Admitted.



Archive powered by MHonArc 2.6.19+.

Top of Page