[Agda] binding variables in rewrite pragma

Andreas Abel andreas.abel at ifi.lmu.de
Sat Sep 21 10:14:07 CEST 2019


This could be a bug, I started to investigate; I'll get back to you on 
this.  --Andreas

On 2019-09-21 00:22, Michael Shulman wrote:
> I've been playing around with the REWRITE pragma, and I'm getting an
> error message that I don't understand:
> 
> {-# OPTIONS --rewriting #-}
> 
> infix 10 _⟼_
> postulate
>    _⟼_ : {A : Set} → A → A → Set
> {-# BUILTIN REWRITE _⟼_ #-}
> 
> data _×_ (A B : Set) : Set where
>    _,_ : A → B → A × B
> fst : (A B : Set) (s : A × B) → A
> fst A B (x , y) = x
> 
> postulate
>    foo : {A : Set} (B : A → Set) → Set
>    foo0 : {A : Set} (B C : A → Set) → foo B
>    bar : {A : Set} (B : A → Set) (f : (x : A) → B x) → foo B
>    bar-fst : (A : Set) (B C : A → Set) (u : (x : A) → B x × C x)
>      → bar B (λ (x : A) → fst (B x) (C x) (u x)) ⟼  foo0 B C
> {-# REWRITE bar-fst #-}
> 
> This produces the error
> 
> "bar-fst  is not a legal rewrite rule, since the following variables
> are not bound by the left hand side:  C
> when checking the pragma REWRITE bar-fst"
> 
> I don't understand why C is not bound by the LHS.  Can anyone explain?
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
> 


More information about the Agda mailing list