Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Eliminating equalities over dependent function types

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Eliminating equalities over dependent function types


Chronological Thread 
  • From: "Grant Jurgensen" <mailing-lists.coq AT grant.jurgensen.dev>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Eliminating equalities over dependent function types
  • Date: Wed, 03 Nov 2021 12:10:00 -0500
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mailing-lists.coq AT grant.jurgensen.dev; spf=None smtp.mailfrom=mailing-lists.coq AT grant.jurgensen.dev; spf=Pass smtp.helo=postmaster AT out4-smtp.messagingengine.com
  • Ironport-data: A9a23:zC73wK/Yf5/QbnZmUto9DrUDmX+TJUtcMsCJ2f8bfWQNrUok12YPnzBLUTrTaavbamqkL9Fzadu+/UwCuMfTy4I2THM5pCpnJ55ogZqcVI7Bdi8cHAvLc5adFBo/hykmh2ipwPkcFhcwnT/wdOi+xZVA/fvQHOOlUbafYnsZqTJMEU/Ntzozw4bVvaYz2bBVMyvV0T/Di5W31G2Ng1aYAUpIg063ky6Didyp0N8uUvPSUtgQ1LPWvyF94JvyvshdJVOgKmVfNrbSq+ouUNiEEm3lExcFUrtJk578b1FWB6XXIRDIj3dNQKGtgx5Nqyo906A2cvEbbC+7iR3XwZYokYwL6drqGW/FPYWU8AgZexxREiV/O6ID/L7cPWP5usuK50Lcen3whfdzFk47O5YV/KB7DH8mGfkwcWBTN0nS3Ipax5rgELU025R5RCXxB6sUvWglxjXEB949UJXbSuPL48VZ1XE+nKhz8Vz2c5JMMnwyeE2VO1sXLg1CUNRkwbn2kiKqK3sFvA3AjLQRyG314AxV8bHLDMDzRN2vUZwNyx/c/3auE3/RBQwGaJmEzCadtHehnfTGkiL9V48UG7y++7hhh1j7+4DaMzVOPXPTnBVzohfWtxNjx00oFu4GqrUuqAmwS8XlGRi1u2WNsR8aVNdWHOw85UeGza+8D8OxGD0fVjAYADA5nJZeeNDo/gbhcxDV6fhHv6ecT27b9KqOoj60IiUTa2MPe0foiCNtD8bL+OkOY9GmcjqnOKGvh9vpXzPt2T+HqjMzgfMfgNBjO2CTlbzYq2rEm6UlhTLZKukasqxJI++5iEOYi1SU1GXm
  • Ironport-hdrordr: A9a23:2FTLrKuZkhJSBILsGlzkVOqD7skDr9V00zEX/kB9WHVpm62j5r2TdZEgviMc5wxxZJheo6HnBEDtex/hHN1OkPAs1M6ZLXLbUTKTXftfBOjZskHd8k/FltK1vJ0IG8JD4bvLYmSS5vyW3ODXKbgdKKTuytHRuQ4L9QYOcekXA5sQiDuRcjzrcXGeszM2YabRvaDsg/Z6mw==
  • Ironport-phdr: A9a23:O7/sgxBTVVfKyJgGPFvOUyQUKEQY04WdBeb1wqQuh78GSKm/5ZOqZBWZua80ygeQFtyBsboE07OQ7/q4HzRYoN6oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpTEdFQ/iOgVrO+/7BpDdj9it1+C15pbffxhEiCCybL9sMRm6txndutQZjYd/NKo91AbCrn9Ud+hL329lKkyfkwrm6sus4JJv9jlbtu48+cJHTaj0ZbkzQ6ZCDDQhPWA15cnrugfGQACS+HYSUXgYnwRRDQTd4x70Qpn+si3htupgwyaaJtH5Tao1WTu58ahmTgLjhTodOD449GHXjdFwjL5erRm8qRFz35LYbYeIP/d4Y6jTf84VRXBZU8hWWSNODYCyYIkBD+QPPehWsZTzqEcVoBSkGQWhHvnixyVSi3Pq26AxzuQvERvB3AwlB98CvnXarM/vO6cUTeC+0a3GzSjZb/NZxzj97pPIfQ4nof2CQLl9ds/RxlMuFwPBj1WQr4PlMyqR1uQMqGib8/FgWfizhG4gsgF8uTevxt02hYnPmoIZ0FLE9ThjwIY6O9K4TlV7bsCiEJdKqi6VKZV2T9okTmp1tyk01qcItoSnfCgW1psn3RjfZuSIfYSU/B7uWvidLDR4iX9hfL+yhha//Ey+x+D4S8S51FhHojdYn9TDsn0AyQDe5taHRPVy8Uqv2TiC2gDX5+xKJ00/iKnVK4Y5z7Mxl5cfq1nPEjLrlEnsg6KabFso9+uu5u/6fLjmooKcN5Roig7gKKQgh82/AOUmPQUWQ2SW//m32qf58k3jWrpKi+U7kqnHv5DeIsQWvqm5AxJJ0oss8hq/FDKm0MgAnXUdKVJKZgmHj5PzNFHBIfD4C/i/jEqqkDdkxvDGOKPuDo/RIXjElbftZbd960hCxwov1d1S5pNZBqscLP7uR0P9rtPVAgUnPwG32+rnDc9y1oIaWWKBGK+ZN6bSvEeN5u01IumMYI4VuDDyK/Q84/7ujGQ5mUMGfaWzwZQXb2m4E+9pI0WDe3XshMsBHX0IvgojVuzqh0ONUThIZ3msWaIw/Cw0B5y4DYvbXICinKSB3DunHp1Rfm1JFleMEW7xe4qYX/cMdTmdL9R6kj0EULihU5Uu2QuvtA/80bpnL/Db9jcWtZL5h5BJ4LjYkgh3/jhpBeyc1XuMRid6hDAmXTgziepQu0V71h+hzLJ3jvpDGNoZr6dMWwY+NJjTiuh7EMzpHAnGZ/+GUl+gXpOkHCs+Q9QqztlIb0tjTYbxxivf1janVudG34eAA4Y5p/q0N5nZINthlzPd0bU5yVwrWdBGOmygiaN5+AnVCsjClEDLzs5CmowTxifL6CGB0HCBsUdDXQg2XajbDyh3jq7+os7w4F+ETaK0BrkhKQZHj8KPNPkSAuA=

Fabian,

You are absolutely right. If there exists some `x` such that `~ P x` and `~ Q x`, then the assumption holds, but the conclusion certainly doesn't follow.

I imagine we could then disprove the theorem by reflecting this observation to Types. Still, there seems something "almost" true about the theorem. I wonder if it would hold if we added an assumption that the forall-types are inhabited (which should eliminate this particular counterexample).

Thanks,
Grant

On Wed, Nov 3, 2021, at 11:46 AM, Fabian Kunze wrote:
Dear Grant Jurgensen,

I'm sceptical the theorem holds. At least if one looks at Prop instead 
of Type, and looks at it through the eyes of classical logic, the 
theorem looks like
forall (P Q : X -> Prop),
  ((forall x, P x) <-> (forall x, Q x))
   -> forall x, P x <-> Q x

Which does not hold: For example take P and Q that hold for different x 
and are false for at least one x.

Best,
Fabian


On 03/11/2021 16:38, Grant Jurgensen wrote:
> Hi all,

> I was wondering if the following property is provable (or disprovable) 
> in Coq:

> Theorem forall_eq_elim: forall (A: Type) (B C: A -> Type),
>    (forall a, B a) = (forall a, C a) ->
>    (forall a, B a = C a).

> This is the converse of `forall_extensionality`, found in the standard 
> module `Coq.Logic.FunctionalExtensionality`. Assuming functional 
> extensionality, this `forall_eq_elim` property essentially states the 
> injectivity of the forall binder.

> The property appears very intuitive to me, but I don't see any proof 
> path, even assuming functional extensionality. I'm guessing it would be 
> sound to axiomatize it, but it also seems specific enough that there 
> should be a more palatable/generalized alternative to axiomatize.

> For what its worth, the reason I first considered this property above is 
> because it appeared necessary in order to prove the following fact 
> concerning heterogeneous equalities:

> Theorem JMeq_f :
>    forall A (B: A -> Type) (C: A -> Type) (f: forall a, B a) (g: forall 
> a, C a),
>      JMeq f g ->
>      forall x, JMeq (f x) (g x).

> Thanks,
> Grant Jurgensen





Archive powered by MHonArc 2.6.19+.

Top of Page