Hi Ada,

when you enter

  first ([0,1,0,1,0],3);

this refers to the SML function first whose type is given by

first ;
val it = fn: ('a -> bool) -> 'a list -> 'a

What you want is the HOL term

``first ([0,1,0,1,0],3)``
which will also give you a type error, since your definition of first 
requires it to be used as follows

``first [(0,1,0,1,0)] 3``

To help you see what's happening,

show_types := true ;
val it = (): unit
 > ``first`` ;
<<HOL message: inventing new type variable names: 'a>>
val it =
    ``(first :α list -> num -> α list)``:

Suggest you get familiar with types in SML before spending too much time 
on HOL

Cheers,

Jeremy

On 30/11/15 18:42, Ada wrote:
> Hey guys,
>
> I am learning to use HOL4. I defined a function named "first" in HOL4.
> This function can get the first n elements in a list. As follows:
> - val first_def = Define`(first [] n = [] )
>                         /\ (first (p::pl) 0 = [] )
>                         /\ (first (p::pl) n = HD (p::pl) :: first (TL
> (p::pl)) (n-1)) `;
> <<HOL message: inventing new type variable names: 'a>>
> Equations stored under "first_def".
> Induction stored under "first_ind".
>> val first_def =
>      |- (!n. first [] n = []) /\ (!pl p. first (p::pl) 0 = []) /\
>         !v4 pl p.
>           first (p::pl) (SUC v4) =
>           HD (p::pl)::first (TL (p::pl)) (SUC v4 - 1) : thm
> In which, I saw HD and TL had been defined in listTheory. HD gets the
> first element in a list, TL gets the last.
> But , when I tried to use "first", failed. As followes:
> - first ([0,1,0,1,0],3);
> ! Toplevel input:
> ! first ([0,1,0,1,0],3);
> ! ^^^^^
> ! Type clash: expression of type
> !   ('a -> bool) -> 'a list -> 'a
> ! cannot have type
> !   'b * 'c -> 'a list -> 'a
>
> - first  [0,1,0,1,0] 3;
> ! Toplevel input:
> ! first  [0,1,0,1,0] 3;
> !         ^^^^^^^^^^
> ! Type clash: expression of type
> !   'a list
> ! cannot have type
> !   'b -> bool
> I was wondering why it failed. Could anyone find the reasion?
> Thanks! --Wish.
>
>
> ------------------------------------------------------------------------------
> Go from Idea to Many App Stores Faster with Intel(R) XDK
> Give your users amazing mobile app experiences with Intel(R) XDK.
> Use one codebase in this all-in-one HTML5 development environment.
> Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
>
>
>
> _______________________________________________
> hol-info mailing list
> hol-info@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/hol-info
>

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to