Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Question on 8.5 primitive projections

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Question on 8.5 primitive projections


Chronological Thread 
  • From: "Soegtrop, Michael" <michael.soegtrop AT intel.com>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Subject: [Coq-Club] Question on 8.5 primitive projections
  • Date: Fri, 30 Jan 2015 11:02:25 +0000
  • Accept-language: de-DE, en-US

Dear Coq users,

I really like the primitive projections feature, because the let terms to
which projections expand sometimes make proof contexts with large records
hard to understand. Just it doesn't work as I expected.

In the below sample:

Set Primitive Projections.

Record Test :=
{
a : unit;
b : bool;
c : nat
}.

Print a.

I get

a = fun t : Test => let (a, _, _) := t in a : Test -> unit

I expected that the let term would go away and be replaced by the new
primitive projection term. Also if I try

Definition test := Build_Test tt false 0.
Definition testa := test.(a).
Eval cbv delta beta in testa.

I get

= let (a, _, _) := {| a := tt; b := false; c := 0 |} in a
: unit

I used the 8.5beta1 windows version.

Best regards,

Michael




Archive powered by MHonArc 2.6.18.

Top of Page