[Agda] Reflection and Application terms

Nicolas Pouillard np at nicolaspouillard.fr
Sat Jun 20 22:07:56 CEST 2015


Can't you fake it by producing applications a definition such as ($)?

app : (t u : Term) → Term
app t u = def (quote _$_) (arg (arg-info visible relevant) t ∷
arg (arg-info visible relevant) u ∷ [])

Of course this is not full proof and will depend on your choice of type for _$_,
the dependent version in the stdlib will then take 4 implicit arguments...

On 06/15/2015 09:05 PM, Pepijn Kokke wrote:
> You want the ability to reduce Agda Terms, then? You could just see if
> you could manage to expose the internal Agda normalisation procedure as
> a function from Term to Term? I guess that would be a welcome addition?
>
> Pepijn
>
> On 15 June 2015 at 20:36, Philipp Hausmann <philipp.hausmann at 314.ch
> <mailto:philipp.hausmann at 314.ch>> wrote:
>
>     Beta redexes are exactly what I want to use.... :-(
>
>     Back to the drawing board then...
>
>     Philipp
>
>
>     On 06/15/2015 08:15 PM, Ulf Norell wrote:
> >     Could be there is...
> >
> >     https://github.com/UlfNorell/agda-prelude/blob/master/src/Tactic/Reflection/Substitute.agda#L60-74
> >
> >     The syntax doesn't admit beta redexes, and reducing a beta redex
> >     isn't guaranteed to terminate, so
> >     you need to prove that the function term is 'safe' (i.e. is not a
> >     lambda).
> >
> >     / Ulf
> >
> >     On Mon, Jun 15, 2015 at 7:06 PM, Pepijn Kokke
> >     <pepijn.kokke at gmail.com <mailto:pepijn.kokke at gmail.com>> wrote:
> >
> >         Hey Philipp,
> >
> >         You should be able to check whether you're dealing with a
> >         defined name or a constructor using Reflection.definition.
> >         That should set you well on your way to defining the "app"
> >         function you're looking for.
> >
> >         In addition, I would check Ulf's prelude, if I were you.
> >         There's a chance there's something in there that already does
> >         this.
> >
> >         Regards,
> >         Pepijn
> >
> >         On 15 June 2015 at 18:50, Philipp Hausmann
> >         <philipp.hausmann at 314.ch <mailto:philipp.hausmann at 314.ch>> wrote:
> >
> >             Hi all,
> >
> >             I'm currently trying to use Agda's Reflection to produce
> >             code fragments
> >             at compile time, but the limited syntax
> >             of Agda's Reflection makes this rather difficult. Most
> >             importantly,
> >             there is no generalized application "app Term [Args]".
> >
> >             There is "def Name [Args]" for applying something to named
> >             definitions
> >             and "var Index [Args]" for applying to de-bruijn indexed
> >             variables,
> >             but applying to a Term in general ("app Term [Args]") is
> >             not possible
> >             right now.
> >
> >             There is a clever trick which helps in some cases ("quote
> >             ((unquote t1)
> >             (unquote t2))"), but that only works if t1 and t2 are
> >             closed terms.
> >
> >             Does anybody know a way to "fake" general application in
> >             Agda's
> >             Reflection mechanism?
> >
> >             I also have looked into adding an additional general "app
> >             Term [Args]"
> >             construct to Agda's Reflection mechanism, which seems to be
> >             straightforward. But I'm not really sure if this is a good
> >             idea or not...
> >             Agda changes:
> >             https://github.com/phile314/agda/commit/80aa35b74eeee794b2f0b8b9dde5d6d32d4c9562
> >             Example using this:
> >             https://gist.github.com/phile314/0a7711a9848b9a81f6f2
> >
> >             Does anybody know any tricks or solution for this?
> >
> >             All the best,
> >             Philipp
> >
> >             _______________________________________________
> >             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
>

-- 
Best regards,
-- NP



More information about the Agda mailing list