[Agda] reexport from record

Serge D. Mechveliani mechvel at botik.ru
Tue Feb 19 21:20:13 CET 2013

I have a strange behavior of a record export with `public'.
The record is like this:

record Foo c l {upMon : UpMonoid c l} :  Set _
  upMonoid = upMon
  setoid      = DecSetoid.setoid decSetoid
  Carrier : Set c
  Carrier = Setoid.Carrier setoid
  _~_     = Setoid._\~~_ setoid       -- (math symbol replaced)

  ~equiv : IsEquivalence {A = Carrier} _~_
  ~equiv = Setoid.isEquivalence setoid 

  open IsEquivalence ~equiv public renaming 
                           (sym to ~sym; refl to ~refl; trans to ~trans)
  field foo : Foo' 

I set `public' because the goal is to re-export  ~sym, ~refl, ~trans
from Foo with renaming, in order to apply things like
                                                      Foo.~sym r

Another way to reexport it is to set   ~sym = IsEquivalence.sym ~equiv 
instead of `open'.
But for my code, the checker reports of "unsolved metas" - until I 
add signature for each of   ~sym, ~refl, ~trans.
So, I have decided that  "open - public - renaming"  is shorter and 

Without `public', it is type checked, but  Б┬╪sym  is not exported.
And inserting `public' leads to the report
(in Agda-2.3.2 MAlonzo)
Not a valid let-declaration
when scope checking
let open
      IsEquivalence ~equiv
        public renaming (sym to ~sym; refl to ~refl; trans to ~trans)
in (foo : Bool) -> Set

Is it an error in the checker?
How to fix my program?

The code fragment  with math symbols  is attached here as  t.agda.zip 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: t.agda.zip
Type: application/zip
Size: 385 bytes
Desc: not available
Url : http://lists.chalmers.se/pipermail/agda/attachments/20130220/96017248/t.agda.zip

More information about the Agda mailing list