[MetaPRL Users] Term extraction problem
Aleksey Nogin
nogin at cs.caltech.edu
Tue Sep 5 11:19:06 PDT 2006
On 05.09.2006 11:08, Wojtek Moczydlowski wrote:
> Thanks for the answer to the previous email. Here's even simpler
> question.
> The relevant fragment of my theory file are:
>
> prim axiomVar {| elim |} 'H :
> sequent { <H>; v : 't; <J['v]> >- 't } = 'v
>
> prim lamAbs {| intro |} :
> ('m['v] : sequent { <H>; v : 't >- 't1}) -->
> sequent { <H> >- arrow{'t;'t1}} = lambda{'t; v.'m['v]}
>
> interactive i 't1 :
> sequent { >- arrow {'t1;'t1}}
>
> So I'm trying to prove t1 -> t1. Obviously I start by applying lamAbs, and
> then I want to apply axiomVar. However, no matter what number I try to use
> it with, it doesn't work:
>
> # ls ""
>
> # <*>
> ....main....
> . arrow{t1; t1}
>
> BY lamAbs
>
> 1. [#]
> ....main....
> t1 . t1
> () : unit
> # refine axiomVar 0
Remember that by default "refine" updates whatever level ("rulebox") you
are currently on. You need to either:
- use "refine lamAbs thenT axiomVar 1" to update the current rulebox to
contain the combined step, or
- use "down 1" (or click on the subgoal number "1") to navigate to the
subgoal before applying the axiomVar there.
P.S. Alternatively, just use "refine autoT" to have things happen
automatically.
P.P.S. The "{| elim |} annotation on the axiomVar rule is suboptimal as
the rule is not really an elimination one. A better annotation would be
"{| nth_hyp |}" - this annotation says "this rule is used to match the
conclusion against one of the hypotheses.
More information about the MetaPRL-Users
mailing list