coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Jason Hu <fdhzs2010 AT hotmail.com>
- To: coq-club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] Proving transitiviy of simple type system
- Date: Mon, 2 Oct 2023 21:39:47 +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=wY/nkCfvweQxjdHX8dVgvRJ17tJ2eO/IVeRBwWQd1zw=; b=gVfMrt9oNCuU+RT/PCKb7CtLjoJpG9hHpHxQEFyW4L2v3nSY9R1TwyzjcwGlG3Ey30IuDJwptortMOpWZGyoa33uqKrdqszmVyljWNEiHmOnEzC+VnoVxmhqpyFEp+A50G1izCGFjZRiBH3p+dCK4b8wjYt+1yZkZolGMLgVuSO+tnDBMp/q4Ayr7Dj7ZvGu3lM2jIpKXFIwWIx/gNj+R3iBXnA3kun9CZoc+Oyt5nUYBaqCD7NYViP/eBRvvMD1gEz/JGHMUflm1+5yGmo5f/UzQsoxbsJNFBQB9meLOUF98BmtUXmmtb7yYdyahBdShNTfu88J059HaCtyL7FcFw==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MxhMOiZ6dLXl4PtRUUkRHmTTtVZAOngNzjSg98dkk9eyLgbO321q8raQc7sMc0vuqiKyYVsS9vogErImALO1p5E+9b5TxMYSAu4V8MmOv86hZ+hSXidw52b3H16/MLJVf6M6iK//Fd38oH9eSl0ZUGXRhLRCK+jwUvd8llM7yjWT+cNZITy9cR0OYNkyhDPX+vHGwrMFsL7wfjZ+/IrrkPVIT7e6554W4J9y8+pZkEi1pBgJFajE8+KJSIUuNBcp/K9qlVlP9TEUgUxzcAGmogOeBLBGntxA+HorTsFQzkVflnVV6bjAoFstbzoCl0zL92abNv5Bsc4ubqu6ehqUJA==
- 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-BN8-obe.outbound.protection.outlook.com
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:SUt6b6xXhYbjTwedXMY7KrPx5+skLtp133Aq2lEZdPULSKGlfp GV9sjziyWetN9IYgBZpTnyAtj6fZq8z+8C3WB1B9uftWbdyQ+Vxe1ZjLcKhgeQYhEWldQtnJ uIEZIOb+EYZGIS5amV3OD7KadH/DDtytHKuQ6q9QYJcegcUdAD0+4WMGamO3wzYDMDKYsyFZ Ka6MYCjSGnY24rYsOyAWRAd/TfpvXQ/aiWKiIuNloC0k2jnDmo4Ln1H1yzxREFSQ5Cxr8k7C zsjxH53KO+qPu2oyWsnVM7rq4m1OcIh7N4dYGxY/ouW3vRYzWTFcVcsoi5zX8ISLnG0idrrD CDmWZiAy050QKqQoj8m2qR5+Cn6kdn15fvpGXo/UcLjPaJNg7SMfAx8L5xY1/c8Q4trdt82K VE0yaQsIdWFwrJmGD468LTXx9nm0KoqT56+NRj+EB3QM8bcvtcvIYf9ERaHNMJGz/78pkuFK 1rANvH7PhbfFuGZzTSv3VpwtarQnMvdy32NnTrkaSuokdrdVxCvjglLZYk7wY9HboGOul5D8 StCNUXqI1z
- Ironport-phdr: A9a23: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 APcSVUB
- Ironport-sdr: 651b38b1_m1copLcLLvMpI0CMGbS6hNxsYAnTVcmQo16Gv9IzqOnsKVz gPaBDXv7Xv0ybEURVF72HEK+tco6uGt9wbk8M9w==
- Msip_labels:
Hi Frederic,
I forgot that fixpoint structure is stricter in Coq. The conventional solution to this situation is to do induction on t2. The following proof has passed in my environment:
Hint Constructors typeSub.
Lemma trans':
forall t2 t1 t3, typeSub t1 t2 -> typeSub t2 t3 -> typeSub t1 t3.
Proof.
induction t2; intros;
inversion H; inversion H0; eauto.
Qed.
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 5:26 PM
To: coq-club <coq-club AT inria.fr>
Subject: Re: [Coq-Club] Proving transitiviy of simple type system
Sent: Monday, October 2, 2023 5:26 PM
To: coq-club <coq-club AT inria.fr>
Subject: Re: [Coq-Club] Proving transitiviy of simple type system
Thank you all for your kind input.
Indeed the simplest/most obvious solution was to simply use the previous lemmas, but as my goal was to progress from a "boring" lambda calculus to something more interesting, I was focussed on doing it the "right" way from the beginning.
But maybe that'll have to wait until I add universal quantifiers :)
As Jason suggested, I tried to generalize over t3 before performing the induction over HSubL. However, the proof gets stuck then too (or neither me, nor the automatic tactics I know find how to progress). I attached the file to this mail.
Thank you all again,
Frédéric
De: "Lasse Blaauwbroek" <lasse AT blaauwbroek.eu>
À: "coq-club" <coq-club AT inria.fr>
Envoyé: Lundi 2 Octobre 2023 21:06:13
Objet: Re: [Coq-Club] Proving transitiviy of simple type system
Hi Frédéric,
In this particular case, you don't really need an additional inductive proof for your transitivity lemma. The other lemmas you've already proven are sufficient. This is because your subtyping relation is somewhat trivial, as you prove yourself through your sub_is_eq lemma. You can prove transitivity as follows:
Lemma trans:
forall t1 t2 t3,
typeSub t1 t2 -> typeSub t2 t3 -> typeSub t1 t3.
Proof.
intros. apply sub_is_eq in H. apply sub_is_eq in H0. subst. apply refl.
Qed.This is obviously no longer possible once you define a more "interesting" subtype relation.
Lasse
On 02-10-2023 19:53, Frederic Fort wrote:
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.
- [Coq-Club] Proving transitiviy of simple type system, Frederic Fort, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Jason Hu, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Lasse Blaauwbroek, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Frederic Fort, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Jason Hu, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Frederic Fort, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Jean-Marie Madiot, 10/02/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Lasse Blaauwbroek, 10/03/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Jason Hu, 10/03/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Lasse Blaauwbroek, 10/03/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Jason Hu, 10/03/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Lasse Blaauwbroek, 10/03/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Thorsten Altenkirch, 10/03/2023
- Re: [Coq-Club] Proving transitiviy of simple type system, Xavier Leroy, 10/03/2023
Archive powered by MHonArc 2.6.19+.