[Agda] How to validate eta-reduction in equational reasoning proofs?
Oleg Grenrus
oleg.grenrus at iki.fi
Thu Jan 14 21:08:16 CET 2021
You need to define the type as a record.
See
https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#eta-expansion
- Oleg
On 14.1.2021 21.46, David Banas wrote:
> Thanks, Ulf!
> After changing my product type definition to match yours, I am unstuck. :)
>
> Originally, I’d written:
>
> data _×_ (A : Set) (B : Set) : Set where
> _,_ : A → B → (A × B)
>
>
> I guess there was something more I needed to do, in order to have this
> type play nicely with the rest of the system?
>
> Now (using your product type), I’m able to complete the proof in a
> single step and without invoking extensionality:
>
> 117 begin
> 118 (λ { C→A⇒D (C , A) → C→A⇒D C · A })
> 119 (λ C₁ → ƛ (λ A₁ → C×A→D (C₁ , A₁)))
> 120 ≡⟨⟩
> 121 C×A→D
> 122 ∎
>
>
> However, I’m getting the following warning, related to the highlighted
> code above (line 118):
> (Note that /column/ numbers below are inaccurate.)
>
> Sort _78 [ at ###.agda:118,31-64 ]
> _79 : _78 [ at ###.agda:118,31-64 ]
> _81 : _79 [ at ###.agda:118,31-64 ]
>
>
> Do you know why?
>
> Thanks,
> -db
>
>
>> On Jan 14, 2021, at 6:02 AM, Ulf Norell <ulf.norell at gmail.com
>> <mailto:ulf.norell at gmail.com>> wrote:
>>
>> FWIW this works:
>>
>> open import Agda.Builtin.Sigma
>> open import Agda.Builtin.Equality
>>
>> _×_ : Set → Set → Set
>> A × B = Σ A λ _ → B
>>
>> postulate
>> A B C : Set
>> f : A × B → C
>> ext : ∀ {A B : Set} {f g : A → B} → (∀ x → f x ≡ g x) → f ≡ g
>>
>> prf : (λ { (x , y) → f (x , y) }) ≡ (λ { p → f p })
>> prf = ext λ _ → refl
>>
>> Have you made sure that the pair type you are using has eta equality?
>>
>> / Ulf
>>
>> On Thu, Jan 14, 2021 at 2:09 PM James Wood
>> <james.wood.100 at strath.ac.uk <mailto:james.wood.100 at strath.ac.uk>> wrote:
>>
>> It might not hold definitionally as written because extended λs are
>> generative. The first thing I'd try, assuming sufficiently new
>> Agda, is
>> to remove all the curly braces.
>>
>> James
>>
>> On 14/01/2021 01:22, Jason -Zhong Sheng- Hu wrote:
>> > CAUTION: This email originated outside the University. Check
>> before
>> > clicking links or attachments.
>> >
>> > That’s very strange. I would expect this equality to hold
>> > definitionally. You shouldn’t even need extensionality.
>> >
>> > Does agda complain anything if you remove the first two lines
>> entirely?
>> >
>> > Thanks,
>> >
>> > Jason Hu
>> >
>> > *From: *David Banas <mailto:capn.freako at gmail.com
>> <mailto:capn.freako at gmail.com>>
>> > *Sent: *Wednesday, January 13, 2021 8:20 PM
>> > *To: *Agda mailing list <mailto:agda at lists.chalmers.se
>> <mailto:agda at lists.chalmers.se>>
>> > *Subject: *[Agda] How to validate eta-reduction in equational
>> reasoning
>> > proofs?
>> >
>> > Hi all,
>> >
>> > Does anyone know how I can get this to work?
>> >
>> > (λ { (C , A) → (C×A→D (C , A)) })
>> > ≡⟨extensionality (λ C×A → refl) ⟩
>> > (λ { x → (C×A→D x) })
>> >
>> > Agda is telling me:
>> >
>> > (λ { (C , A) → C×A→D (C , A) }) C×A != C×A→D C×A of type D
>> >
>> > when checking that the expression refl has type
>> >
>> > (λ { (C , A) → C×A→D (C , A) }) C×A ≡ C×A→D C×A
>> >
>> > Thanks,
>> >
>> > -db
>> >
>> >
>> > _______________________________________________
>> > Agda mailing list
>> > Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>> > https://lists.chalmers.se/mailman/listinfo/agda
>> >
>>
>> _______________________________________________
>> Agda mailing list
>> Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>> https://lists.chalmers.se/mailman/listinfo/agda
>>
>> _______________________________________________
>> Agda mailing list
>> Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>> https://lists.chalmers.se/mailman/listinfo/agda
>
>
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
More information about the Agda
mailing list