coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Problems with dependently typed function
- Date: Fri, 22 Mar 2019 09:27:29 +0100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.mailfrom=gaetan.gilbert AT skyskimmer.net; spf=None smtp.helo=postmaster AT relay3-d.mail.gandi.net
- Ironport-phdr: 9a23:XEZDRRD0kK+GI8/cQPWKUyQJP3N1i/DPJgcQr6AfoPdwSPvyocbcNUDSrc9gkEXOFd2Cra4d06yJ6+u5ADNIyK3CmUhKSIZLWR4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+KPjrFY7OlcS30P2594HObwlSizexfK9+IA+0oAnNucUanJZuJ6QswRbVv3VEfPhby3l1LlyJhRb84cmw/J9n8ytOvv8q6tBNX6bncakmVLJUFDspPXw7683trhnDUBCA5mAAXWUMkxpHGBbK4RfnVZrsqCT6t+592C6HPc3qSL0/RDqv47t3RBLulSwKMSMy/mPKhcxqlK9VvQyvpxJ/zYDXbo+aOvVxcaHBct0VXmdBQsVcWjZdDo+gYYYCDewMNvtYoYnnoFsOqAOzCwi2C+Tz1j9HnHn20rU73eQgFQHJxxIvH8gSsH/Jq9j1O70dXv6pzKbSyzXPdfxW2Tb56IfTbB8hu+2MUKlrccrSyUgvDADFjlSVqYzgITyVzP4Bs26F4Op8TO+ijXMspQJpojW32Msgl4vEipgXx1zY7yl13YU4KNOiREJmZdOpEINcuzyGO4ZyWM8uXW9ltDggxrEYp5K2fjIGxIkpyhPcbfGMbpKG7Qj5VOmLJDd1nHJld6y7hxa16UWg0PPzVs2u31dKoCdJi8TDumoI1xPJ68iHTuFx/ki71jaJyg/T6/tIIUYqmqrHM5Ihw7gwmYQPsUnbACP6hUf7gLWUe0k44OSk9ufqb7v8qpOBM4J5ihnyMqE0lcy+BeQ4PBIOX2+e+emk273s51P2QKlQgf0wiKXZv5HaJcAAqaGnGQ9Vzp0u6w28Dzamy9QYnngHLFdAeB2ZlYjlIVfOL+7kDfunmVSjjC9rx+zaPr3mGpjCMn/DkK74cblh705c1RE8wMtE55NUD7EBOOj8VlXwtNzeFB85Mha7z/zpCNVnhcsiXjeEBbbcO6fPu3eJ4PguKq+Cftw7ojH4ftcsZOLni0gWmFsXcLO1lc8YYX2kF/IgLESda3f2nv8aEnYRvQs7SeHwzluPTWgAND6JQ6sg62RjW8qdBoDZS9X12e3T7GKABpRTI1t+JBWJGHbseZ+DXq5SOjmRM9RikzkBWKLnTYI9h0j36F3KjoF/J++RwRU28Ir53YErtfbQhAox9DlxAt7b1WyRHTktwzE4AgQu1aU6mnRTj1eO1a8i3q5CGNha9qgMXkE/PJ/YieNzDdzzHATMYoXRRQ==
The variable x depends on t, so when you match on t if you want to use x at a type depending on the branch you have to do a commutative cut
Definition liftVal t : tyDenote t -> exp t :=
match t with
| Nat => fun x => NatLit x
| Nat' => fun x => Nat'Lit x
| Bool => fun x => BoolLit x
end.
Gaëtan Gilbert
On 22/03/2019 09:17, Christian Kjær Larsen wrote:
Hi,
I have some GADT for expressions, and I want to lift values into expressions like this
Inductive ty : Set :=
| Nat : ty
| Nat' : ty
| Bool : ty.
Definition tyDenote (t : ty) : Set :=
match t with
| Nat => nat
| Nat' => nat
| Bool => bool
end.
Inductive exp : ty -> Set :=
| NatLit : nat -> exp Nat
| Nat'Lit : nat -> exp Nat'
| BoolLit : bool -> exp Bool.
Definition liftVal t (x : tyDenote t) : exp t :=
match t in ty return exp t with
| Nat => NatLit x
| Nat' => Nat'Lit x
| Bool => BoolLit x
end.
But the last definition will not type check. Do any of you know how to write a function like this? One complication is probably that different object level types have the same denotation.
Cheers,
Christian
- [Coq-Club] Problems with dependently typed function, Christian Kjær Larsen, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Gaëtan Gilbert, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Beta Ziliani, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Jean-Francois Monin, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Stefan Monnier, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Jean-Francois Monin, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Beta Ziliani, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Sylvain Boulmé, 03/22/2019
- Re: [Coq-Club] Problems with dependently typed function, Gaëtan Gilbert, 03/22/2019
Archive powered by MHonArc 2.6.18.