Subject: Ssreflect Users Discussion List
List archive
- From: Christian Doczkal <>
- To:
- Subject: Re: [ssreflect] eqType for records ?
- Date: Tue, 19 Jun 2018 11:17:02 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Neutral ; spf=None
- Ironport-phdr: 9a23:KhxPxRZ6ieGqLeBf5fHMrtH/LSx+4OfEezUN459isYplN5qZoMW4bnLW6fgltlLVR4KTs6sC17KL9fi4EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCa9bL9oMBm6sRjau9ULj4dlNqs/0AbCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUjmk8qxlSgLniD0fOjAk7m/XhMx+gqFVrh2vqBNwwZLbbo6OOfpifK7QZ88WSXZPU8tTUSFKH4Oyb5EID+oEJetVsYn9p0EPrRulGQmsBfngyjlVjXH42q01z+UgEQLc0wwkAtkDt2jbrNXvNKcTSuC10KjIwi/Fb/9MxDj975THcxEiof6WWbJ9atTeyU80Fw/cilWRqYvlPzWP2uQDqWiW9uxtXv+shW4/swx9vzeiyts2hoTLhI8Z0E3I+CR7zYovO9G0VlB3bcanHZdOrS2WKYt7Tt44T212pSo3yacKtYOlcCUJzpks2gTRZOadc4eS5xLuTOaRLil8hHJiYL+/gwy9/lO7xeLiTMW7zlBKrjFcntnItnEN0BrT5tKJSvtn5kuh2DCP2B7P6uxcPEw5mrbXJ4Qjz7MyjJYfrEXOEy3slEnokqOaaF0o+u2y5OTmZrXmqIWcN4hxigzmLqsumta/AeUjMggSXmiU4+K82Kf+8k3+XLpLj/42nbPdsJ3BO8sboLW5DxZR0ocj7Ba/CS2q0NoCnXUfNlJKZAqHj5T1O1HJOP34Fuy/g06ynzdlw/DJIKHuAonWI3jYkLbheK595FRGxAoyy9Bf/ZNUBasbLPL9QE+i/ODfWwQiKQG6x+vsFP14zZlbWGSVA6bfMaXIsFbO6Ph8DfOLYdo+uCz8MOQk7vimoXgyi1wUeeH91psNaWukH/1gZUmeamjvi9MpHGER+w4vS+qshkfUAm0bXGq7Q69pvmJzM4mhF4qWHtn80ozE5z+yG9htXk4DD1mNFXnycIDdAKUBbjnXJt5mlHoKT+r7EtNz5VSVrAb/joFfAK/M4CRB7sDu0sMw4/zUk1c8724sVpnP4yS2V2hx21gwaXo20aR4+B0vzl6J26U+jvpDUNhC4PUPXB1obZM=
Hi,
On 06/18/2018 05:37 PM, Bas Spitters wrote:
> I'd imagine first proving that eqTypes are closed under Sigma-types
> and then converting records to Sigma-types, as e.g. is done in the
> HoTT library:
Closure of eqTypes (and also finTypes) under Sigma-Types is already in the
library (see tag_eqType)
From that it is not to hard to get an eqType instance also for dependent
record types (see below). Not sure though how to best generalize this over
the constructors of a concrete record type or how to best iterate this.
Best,
Christian
--------------------8<---------------------------------
From mathcomp Require Import all_ssreflect.
Section Rec2EQ.
Variables (A : eqType) (B : A -> eqType).
Record T := mkT { fst : A ; snd : B fst}.
Definition rec2_eq (x y : T) :=
let: (mkT x1 x2,mkT y1 y2) := (x,y) in Tagged B x2 == Tagged B y2.
Lemma rec2_eqP : Equality.axiom rec2_eq.
Proof.
move => [x1 x2] [y1 y2]. apply: (iffP idP); rewrite /rec2_eq.
- rewrite -tag_eqE /tag_eq /= => /andP [/eqP ?]. subst x1.
by rewrite tagged_asE => /eqP->.
- case => ? H ; subst y1. by rewrite /Tagged H.
Qed.
Canonical T_eqType := EqType T (EqMixin rec2_eqP).
End Rec2EQ.
- [ssreflect] eqType for records ?, Bas Spitters, 06/18/2018
- Re: [ssreflect] eqType for records ?, Emilio Jesús Gallego Arias, 06/18/2018
- Re: [ssreflect] eqType for records ?, Christian Doczkal, 06/19/2018
- Re: [ssreflect] eqType for records ?, Emilio Jesús Gallego Arias, 06/19/2018
- Re: [ssreflect] eqType for records ?, Emilio Jesús Gallego Arias, 06/19/2018
- Re: [ssreflect] eqType for records ?, Cyril, 06/19/2018
- Re: [ssreflect] eqType for records ?, Emilio Jesús Gallego Arias, 06/20/2018
- Re: [ssreflect] eqType for records ?, Cyril, 06/19/2018
Archive powered by MHonArc 2.6.18.