Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Why subtyping rule is not contravariant in input types for Pi

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Why subtyping rule is not contravariant in input types for Pi


Chronological Thread 
  • From: Meven Lennon-Bertrand <mgapb2 AT cam.ac.uk>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Why subtyping rule is not contravariant in input types for Pi
  • Date: Fri, 21 Jun 2024 17:26:59 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cam.ac.uk; dmarc=pass action=none header.from=cam.ac.uk; dkim=pass header.d=cam.ac.uk; 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=OoD3ovqdeHZfUVoCRtXRXh9xdarpI60d4dgGIxWuDmw=; b=X/BISIERvx7KkUrGxELb3XNTuUswOYUj4uMOFtXdG/HWX8IAzu2O6CBXpQkkPExNC5qmlDG5+X3NVv13VmPtYRGoDZHcNAE6MXvd4LpnIKX521ZGDBd4MhTgqZcE/pv7RuBZKjzrdacZvMAKat3r0W8fneU6Z+sYJTqcmZC1dXgSkb1hWU0YOc2z+vvJGOzO3IeNKQaj/jw8JnK4pEdge8kPclb4Ci+QlO1ZILGe8X5HsqvBEjg08jWLrpypGOf3ixra/LlUCvpCfN3h556ryYxz/wzHLMk9vt6ExTsOzaOkEp7atFFF+OTYsiCPpayHYcUMRCuAywg+9ssrOO5LIQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajvEz0bApUKuKN3v70YkmiUww0+dTx26DY5TEPFCasUde2J67K7nzXSbmHCPAZ5OaAtGr4vU8pkBQ0C3x4OhzC0Cm++izv+fcFjzhIEYuFjEN4+lCIHfPaXfbXYGcMFZR6wFujUlLh4L73nklLLpfFjFl/eIKX+EceFJPiaaxfCD1dUUMtXC0a4ykuaUJOl8zBek4wG9DlgCZT8xZuOeSs+fFcBOQdbg0nj0URwFgX73N72x5NOBdnkIfepWx1WsufTrYsyj4JwYPlWfUVDwdySFw5y1o+Boosh8tvNE9WHDuChslTmkwo7B1gBqGde+TdtO34RkDnkEUPrZU0chTg==
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mgapb2 AT cam.ac.uk; spf=Pass smtp.mailfrom=mgapb2 AT cam.ac.uk; spf=Pass smtp.helo=postmaster AT GBR01-LO4-obe.outbound.protection.outlook.com
  • Ironport-data: A9a23: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 Zus
  • Ironport-hdrordr: A9a23:0+grya/0TT05zsOjMnVuk+Eodb1zdoMgy1knxilNoENuH/Bwxv rFoB1E73TJYVYqN03I6urwQZVoIEm9yXcR2+Us1NiZLWvbUQeTXflfBM7Zskbd8k7Fh5JgPM VbAstD4bTLZDAV7PoSojPIderIqOP3jZxA7t2uq0uFIzsaDJ2Ioz0JbzpyRSZNNXN77NcCZe 6hz/sCgwDlVWUcb8y9CHVAd+/fp+fTnJajRRIdHRYo5CSHkDvtsdfBYm6l9yZbdwkK7aYp8G DDnQC8zqK/s8ujwhuZ82PI9ZxZlPbo19MGLs2Rjco+LCnql2+TFfNccozHmApwjPCk6V4snt WJixA8P/5r43eURW2xqQuF4XiS7B8er1vZjXOIi3rqpsL0ABggDdBauI5fehzFr2I9odBVys twriiknqsSKSmFsDX25tDOWR0vvFGzu2AenekaiGEaeZcCaYVWsZcU8CpuYdw99RrBmcwa+d RVfY7hDK48SyLVU5mZhBgm/DWUZAV/Iv/cKXJy+/B80FBt7QBEJgUjtYwid0w7heMAoql/lp v525tT5c9zp+8tHNBA7bQ6ML6K4yr2MFvxDF4=
  • Ironport-phdr: A9a23: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 kE0YOw=
  • Ironport-sdr: 6675a9df_7QNBzFW4a89smXsqPMhj8rtvlKSbKzyN9T5v3wDEpER2RXx OnJtCvPLyC3bc7JF8JrGXXroew6khKrxXbtJWgw==

Hi Jason,

As far as I understand, the main reason comes from the set-theoretic semantics. In that setting, subtyping is interpreted as set inclusion. This makes it relatively easy to interpret implicit subtyping like Coq's, because the same term can be used as the subtype and supertype. But this also heavily restricts what is a valid subtyping rule.

In particular, for function types (which are sets of pairs in set theory), (covariant) inclusion of the codomains leads to inclusion of the sets of functions, but (contravariant) inclusion of domains does not. This is because one has to remove some pairs (corresponding to the elements of the larger domain that do not exist in the smaller domain).

Thus, if one wants to model contravariant subtyping in set-theory, we would need something smarter than this model, which has not really been investigated (yet?). But I do not see any reason why such a subtyping would not be sensible. In particular, Coq does a "poor man's" version of it, by η-expanding function during elaboration to basically emulate the contravariant rule (because if A <: A' and f : A' -> B, even though f : A -> B does not hold, λ x : A. f x : A -> B does). I believe this could be promoted to a sensible version of contravariant subtyping.

We have a paper going in that direction at this year's ESOP by the way, although it's not quite ripe to apply to Coq's type system yet I hope we can build on it to get there at some point, and properly justify contravariance for function types :)

Best,
Meven LENNON-BERTRAND
Postdoc – Computer Lab, University of Cambridge
www.meven.ac
On 20/06/2024 16:11, Jason Hu wrote:
PH0PR14MB5382BC042261BC72FDC449C1AFC82 AT PH0PR14MB5382.namprd14.prod.outlook.com">
Hi all,

I am reading the subtyping rules for Coq: https://coq.inria.fr/doc/V8.18.0/refman/language/cic.html#subtyping-rules

Rule 5 says that Coq only checks equivalence for the input types while only the output types are subject to subtyping. How is the subtyping rule is not contravariant in the input types?

I understand that in System F, this rule is problematic and causes undecidability but I don't think it applies here. In particular, if for the sake of discussion we let U <: T and compare x : U |- T' <: U', this extra information of x : U should affect the result of comparing T' <: U' at all. How is the rule designed in this way? What consideration am I missing here?

Thanks,
Jason Hu




Archive powered by MHonArc 2.6.19+.

Top of Page