List.thy
changeset 212 2740293cc458
parent 203 d465d3be2744
equal deleted inserted replaced
211:9b403e123c1b 212:2740293cc458
    21   map       :: "('a=>'b) => ('a list => 'b list)"
    21   map       :: "('a=>'b) => ('a list => 'b list)"
    22   "@"	    :: "['a list, 'a list] => 'a list"		(infixr 65)
    22   "@"	    :: "['a list, 'a list] => 'a list"		(infixr 65)
    23   filter    :: "['a => bool, 'a list] => 'a list"
    23   filter    :: "['a => bool, 'a list] => 'a list"
    24   foldl     :: "[['b,'a] => 'b, 'b, 'a list] => 'b"
    24   foldl     :: "[['b,'a] => 'b, 'b, 'a list] => 'b"
    25   length    :: "'a list => nat"
    25   length    :: "'a list => nat"
       
    26   flat      :: "'a list list => 'a list"
    26   nth       :: "[nat, 'a list] => 'a"
    27   nth       :: "[nat, 'a list] => 'a"
    27 
    28 
    28 syntax
    29 syntax
    29   (* list Enumeration *)
    30   (* list Enumeration *)
    30   "@list"   :: "args => 'a list"                        ("[(_)]")
    31   "@list"   :: "args => 'a list"                        ("[(_)]")
    72   foldl_Nil  "foldl(f,a,[]) = a"
    73   foldl_Nil  "foldl(f,a,[]) = a"
    73   foldl_Cons "foldl(f,a,x#xs) = foldl(f, f(a,x), xs)"
    74   foldl_Cons "foldl(f,a,x#xs) = foldl(f, f(a,x), xs)"
    74 primrec length list
    75 primrec length list
    75   length_Nil  "length([]) = 0"
    76   length_Nil  "length([]) = 0"
    76   length_Cons "length(x#xs) = Suc(length(xs))"
    77   length_Cons "length(x#xs) = Suc(length(xs))"
       
    78 primrec flat list
       
    79   flat_Nil  "flat([]) = []"
       
    80   flat_Cons "flat(x#xs) = x @ flat(xs)"
    77 defs
    81 defs
    78   nth_def "nth(n) == nat_rec(n, hd, %m r xs. r(tl(xs)))"
    82   nth_def "nth(n) == nat_rec(n, hd, %m r xs. r(tl(xs)))"
    79 end
    83 end