-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcopl103.ml
31 lines (31 loc) · 2.22 KB
/
copl103.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|- let rec length = fun l -> match l with [] -> 0 | x :: y -> 1 + length y in
length ((fun x -> x) :: (fun y -> y + 3) :: []) : int by T-LetRec{
length : (int -> int) list -> int, l : (int -> int) list |- match l with [] -> 0 | x :: y -> 1 + length y : int by T-Match {
length : (int -> int) list -> int, l : (int -> int) list |- l : (int -> int) list by T-Var{};
length : (int -> int) list -> int, l : (int -> int) list |- 0 : int by T-Int{};
length : (int -> int) list -> int, l : (int -> int) list, x : int -> int, y : (int -> int) list |- 1 + length y : int by T-Plus{
length : (int -> int) list -> int, l : (int -> int) list, x : int -> int, y : (int -> int) list |- 1 : int by T-Int{};
length : (int -> int) list -> int, l : (int -> int) list, x : int -> int, y : (int -> int) list |- length y : int by T-App{
length : (int -> int) list -> int, l : (int -> int) list, x : int -> int, y : (int -> int) list |- length : (int -> int) list -> int by T-Var{};
length : (int -> int) list -> int, l : (int -> int) list, x : int -> int, y : (int -> int) list |- y : (int -> int) list by T-Var{}
}
}
};
length : (int -> int) list -> int |- length ((fun x -> x) :: (fun y -> y + 3) :: []) : int by T-App{
length : (int -> int) list -> int |- length : (int -> int) list -> int by T-Var{};
length : (int -> int) list -> int |- (fun x -> x) :: (fun y -> y + 3) :: [] : (int -> int) list by T-Cons{
length : (int -> int) list -> int |- fun x -> x : int -> int by T-Fun {
length : (int -> int) list -> int, x : int |- x : int by T-Var{}
};
length : (int -> int) list -> int |- (fun y -> y + 3) :: [] : (int -> int) list by T-Cons {
length : (int -> int) list -> int |- fun y -> y + 3 : int -> int by T-Fun {
length : (int -> int) list -> int, y : int |- y + 3 : int by T-Plus{
length : (int -> int) list -> int, y : int |- y : int by T-Var{};
length : (int -> int) list -> int, y : int |- 3 : int by T-Int{}
}
};
length : (int -> int) list -> int |- [] : (int -> int) list by T-Nil{}
}
}
}
}