Hi Michael,

  What I think is happening is that each quoted element is being
parsed separately.
This means that the type of the x in `x` is a type variable while the type
of `2` is :num. Since INST (I think) just fails if the two types
aren't identical,
you get the displayed behaviour. There may well be a version of INST in
Hol Light that normalizes the arguments but I don't know it.

Konrad.


On Thu, Jan 4, 2018 at 8:04 PM, Michael Beeson <profbee...@gmail.com> wrote:
> an example from the tutorial
>
> let th1 = REFL `x+1`;;
>
> val th1 : thm = |- x + 1 = x + 1
>
> # let th3 = INST [`2`,`x:num`] th1;;
>
> val th3 : thm = |- 2 + 1 = 2 + 1
>
> Fine.  But if we leave off the type information about x it doesn't work.
>
> # let th3 = INST [`2`,`x`] th1;;
>
> Warning: inventing type variables
>
> Exception: Failure "vsubst: Bad substitution list".
>
> I don't understand why this fails.   In general you might not
> know what type x has in th1  (eg.,  has prioritize_real() or
> prioritize_vector()  been done just before this?) .    Is there
> a command I can issue to ask for "the type of `x` in th1 " ?
>
> Michael Beeson
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> hol-info mailing list
> hol-info@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/hol-info

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to