[Agda] How to validate eta-reduction in equational reasoning proofs?
David Banas
capn.freako at gmail.com
Thu Jan 14 20:46:53 CET 2021
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> 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 <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 <https://lists.chalmers.se/mailman/listinfo/agda>
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20210114/57d7e833/attachment.html>
More information about the Agda
mailing list