Andromedans/andromeda

Introduce an `abstract` command

Closed this issue · 4 comments

Introduce a command which abstracts a judgement with respect to an atom. The syntax should be

abstract x e

Thus {x : A} c should be equivalent to

let x = fresh x : A in
let e = c in
abstract x e

Do I understand correctly from the existence of this issue that there is currently no way to do this in Andromeda 2.0? Does that mean in particular that there isn't yet any way to implement a "Hole" operation that works inside arbitrary binders, as was possible in Andromeda 1.0?

Would this follow from being able to substitute for atoms? That is, could abstract x e be defined as {y} e where x = y if the latter existed?

Yes, precisely. This is about which operations should be taken as basic. Substitution e where x = e' is expressible as (abstract x e){e'}. Conversely, abstraction is expressible as you wrote.

Closed by #473