X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=ocaml%2Fproblems.ml;h=cd57451a70230816031c6264b75c7c16ab9f3dfe;hb=f7ba4d1225ca4fb09750f3d23b197b8372f1350b;hp=48b20ad258e32259b4c81c5e9a91e4e2089a0e67;hpb=87e0182247e9176ec3612eaf3c7f90b81f43b6f5;p=fireball-separation.git diff --git a/ocaml/problems.ml b/ocaml/problems.ml index 48b20ad..cd57451 100644 --- a/ocaml/problems.ml +++ b/ocaml/problems.ml @@ -1,107 +1,37 @@ open Lambda4;; -let solve_many = List.iter solve;; +open Util;; -(* p-series problems *) -let f x = problem_of None [] x in -solve_many (List.map f [ - (* 2 *) [ "x y"; "x z" ; "x (y z)"]; - (* 4 *) [ "x y"; "x (a. a x)" ; "y (y z)" ]; - (* 5 *) ["a (x. x a) b"; "b (x. x b) a"]; - (* 6 *) ["a (x. x a) b"; "b (x. x b) (c a)"]; - (* 7 *) ["a (x. (x a) (a x x a) (x x) )"]; - (* 8 *) ["x x (x x)"]; - (* 9 *) ["x x (x x x) (x x (x x)) (x x (x x x)) x x"]; - (* 10 *) ["x (y (x a b c))"]; - (* 11 *) ["x x"; "x (y.y)"]; - (* 12 *) ["x x (x x)"; "x x (x (y.y))"]; - (* 13 *) ["x x (x x (x x x x x (x x)))"]; - (* 14 *) ["a (a a (a (a a)) (a (a a)))"]; - (* 15 *) ["a (a (a a)) (a a (a a) (a (a (a a))) (a (a a)) (a a (a a) (a (a (a a))) (a (a a)))) (a a (a a) (a (a (a a))) (a (a a)))"]; - (* 16 *) ["a (a a) (a a (a (a a)) (a (a a)) (a a (a (a a)) a))"]; - (* 17 *) ["b a"; "b (c.a)"]; - (* 18 *) ["a (a a) (a a a (a (a (a a) a)) (a a a (a (a (a a) a))))" ; "a a" ; "a (a a)"]; - (* 19 *) ["a (a a) (a a a (a (a (a a) a)) a)"]; - (* 20 *) ["a (a b) (b (a b) (a (a b))) (a (a b) (a (a b)) (a (a b)) c) (a (a b) (a (a b)) (b (a b)) c (a a (a (a b) (a (a b)) b)) (a (a b) (a (a b)) (b (a b)) (a a) (a c (b (a b)))))"]; - (* 21 *) - ["(((y z) (y z)) ((z (y z)) ((y z) (z z))))"; - "(((z z) x) (y z))"; - "((z (y z)) ((y z) (z z)))"]; - (* 22 *) - ["((z y) ((((y (z y)) x) (y (z y))) ((y (z y)) (z z))))"; - "((z y) (((((y (z y)) x) (y (z y))) ((y (z y)) (z z))) (((((y (z y)) x) (y (z y))) ((y (z y)) (z z))) ((x y) (z z)))))"; - "(y ((((y (z y)) x) (y (z y))) ((y (z y)) (z z))))"]; - (* 23 *) (* diverging tests *) (* test p23 leads to test p24 *) - ["z z z"; "z (z z) (x. x)"]; - (* 24 *) - (* because of the last term, the magic number is 1 and we diverge; - but setting the magic number to 0 allows to solve the problem; - thus our strategy is incomplete *) - ["b b"; "b f"; "f b"; "a (x.x)"]; - (* 25 *) - (* because of the last term, the magic number is 1 and we diverge; - but setting the magic number to 0 allows to solve the problem; - thus our strategy is incomplete *) - ["b b"; "b f"; "f b"; "f (x.x)"]; - (* 26 *) - (* BUG: - 0 (n (d (o.n) ...))) - After instantiating n, the magic number (for d) should be 2, not 1! *) - ["(((x y) (z. (y. (y. z)))) (z. y))"; - "(((x y) x) (y y))"]; - (* 27 *) - ["(((((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y)) (((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y))) ((((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y)) (((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y))))"; - "((((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y)) (((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y)))"; - "(((((z y) (z (z y))) (z (z y))) ((z y) (((z y) (z (z y))) ((z y) x)))) (((((z y) (z (z y))) (z (z y))) x) y))"]; - (* 28 *) - ["((((z (x. (z. (x. x)))) (z x)) x) (z (x. (z. (x. x)))))"; - "(((z (x. (z. (x. x)))) (z x)) ((z x) (x. (z. (x. x)))))" ]; - (* 29 *) - ["((((((x x) (x x)) (z. (y x))) (z. ((x x) y))) y) ((x x) y))"; - "(((((x x) (x x)) (z. (y x))) (z. ((x x) y))) y)"]; - (* 30 *) - ["((b c) (b. (z a)))"; - "((v (a. (z v))) ((y (b c)) ((z a) (v y))))"; - "((v (v. c)) z)"; - "((v y) (v (a. (z v))))"; - "((y (b c)) ((z a) (v y)))"]; - (* 31 *) - [" (((((((v (((a v) w) (((a v) w) v))) (w. c)) (b (a v))) c) (z. a)) (x. (w. (w. c)))) (((a (y c)) ((y c) ((a v) (w (z. a))))) (w. c)))"; - "((((((v (((a v) w) (((a v) w) v))) (w. c)) (b (a v))) c) (z. a)) (x. (w. (w. c))))"; - "(((((b (a v)) (a. (y c))) z) (w. w)) ((a c) c))"; - "(((((v (((a v) w) (((a v) w) v))) (w. c)) (b (a v))) c) (z. a))"; - "((((a (y c)) ((y c) ((a v) (w (z. a))))) (w. c)) (x. w))"]; - (* 32 *) - ["(((((a y) v) (z a)) (z (((z a) (z a)) (w. v)))) (y. (a y)))"; - "(((((a y) v) (z a)) (z (((z a) (z a)) (w. v)))) a)"; - "(((((z a) (z a)) b) (v. (v. (z a)))) (v. ((a y) v)))"; - "((((a y) v) (z a)) (z (((z a) (z a)) (w. v))))"; - "((((w (a. (z. ((z a) (z a))))) (v. ((a y) v))) (((z a) (z a)) b)) (w. (((z a) (z a)) (c. (c ((z a) (z a)))))))" - ]; - (* 33 *) - (* Shows an error when the strategy that minimizes special_k is NOT used *) - [ "((((((v (y. v)) (w. (c. y))) ((((a (c. y)) (v w)) ((b (z (a (c. y)))) (b (z (a (c. y)))))) ((a (c. y)) b))) (((y (y (v w))) z) ((((a (c. y)) (v w)) ((b (z (a (c. y)))) (b (z (a (c. y)))))) ((a (c. y)) b)))) (b c)) (((v w) (z (a (c. y)))) ((y b) (b (z (a (c. y)))))))"; - "((((((a (c. y)) (v w)) ((b (z (a (c. y)))) (b (z (a (c. y)))))) ((a (c. y)) b)) (c. y)) (c. y))"; - "(((((a (c. y)) (v w)) ((b (z (a (c. y)))) (b (z (a (c. y)))))) ((a (c. y)) b)) (c. y))"; - "(((((a (c. y)) (v w)) ((b (z (a (c. y)))) (b (z (a (c. y)))))) (b (z (a (c. y))))) ((c b) (b. (b w))))"; - (* "(((((a (c. y)) b) v) (z (a (c. y)))) (a. (b (z (a (c. y))))))" *) ]; - (* 34 *) - [ "b c (b c) (c (d (j. e))) (b c (b c) (j.c f)) (b f (j. k. d)) (b (j. k. l. b c (b c)) (b g)) a"; - "d (j. e) e (j. c f) (j. c j) b a"; - "d (j. e) e (j. c f) b (b c (b c) (j. c f)) a"; - "d (j. e) e (j. c f) b (b c (b c) (j. c f) (g b)) a"; - "d (j. e) e (j. c f) b (j. k. j (l. e) e (l. k f) b) a";]; - (* 35 *) - [ "(((((((((b z) v) (a ((v (y y)) (v (y y))))) (y (v (y y)))) ((w ((a b) z)) (a ((v (y y)) (v (y y)))))) (z ((y (v (y y))) b))) (((y (v (y y))) ((y (v (y y))) x)) ((((c (a b)) (y y)) ((y (v (y y))) b)) (((c (a b)) (y y)) ((y (v (y y))) b))))) (z (z b))) ((y y) (((b z) v) (a ((v (y y)) (v (y y)))))))"; - "((((((((a b) z) w) (((b z) v) (a ((v (y y)) (v (y y)))))) ((y y) ((y (v (y y))) b))) ((((((c (a b)) (y y)) ((y (v (y y))) b)) (((c (a b)) (y y)) ((y (v (y y))) b))) (((((c (a b)) (y y)) (y (v (y y)))) (z w)) ((w (((v (y y)) (v (y y))) a)) (w (z ((y (v (y y))) b)))))) (z w))) (((((((b z) v) (a ((v (y y)) (v (y y))))) (y (v (y y)))) ((w ((a b) z)) (a ((v (y y)) (v (y y)))))) (z ((y (v (y y))) b))) (c (a b)))) (((((b z) (c b)) (c ((v (y y)) (v (y y))))) (((((c (a b)) (y y)) ((y (v (y y))) b)) (((c (a b)) (y y)) ((y (v (y y))) b))) ((c b) (z (z b))))) (((((((b z) v) (a ((v (y y)) (v (y y))))) (y (v (y y)))) (b (((v (y y)) (v (y y))) ((y y) (z (z b)))))) (((((w ((a b) z)) (a ((v (y y)) (v (y y))))) (((v (y y)) (v (y y))) a)) (((((b z) v) (a ((v (y y)) (v (y y))))) (y (v (y y)))) (b (((v (y y)) (v (y y))) ((y y) (z (z b))))))) (b z))) ((x ((c b) (c b))) (((((b z) v) (a ((v (y y)) (v (y y))))) (y (v (y y)))) ((w ((a b) z)) (a ((v (y y)) (v (y y))))))))))"; - "((((((((b z) v) (a ((v (y y)) (v (y y))))) (y (v (y y)))) ((w ((a b) z)) (a ((v (y y)) (v (y y)))))) (z ((y (v (y y))) b))) (((y (v (y y))) ((y (v (y y))) x)) ((((c (a b)) (y y)) ((y (v (y y))) b)) (((c (a b)) (y y)) ((y (v (y y))) b))))) (v (y y)))"]; - (* 36 *) - [ "(((((((y a) (((z v) (y a)) (b a))) ((b a) (b a))) (((y c) (x a)) (v (((y a) (((z v) (y a)) (b a))) z)))) ((b a) (b a))) ((a c) (b (((y a) (((z v) (y a)) (b a))) (z a))))) ((((((b (((y a) (((z v) (y a)) (b a))) z)) (c ((y (x a)) ((z v) (y a))))) (v (((y a) (((z v) (y a)) (b a))) z))) (((((y a) (((z v) (y a)) (b a))) z) (((z v) (y a)) (c y))) ((x a) (((y a) (((z v) (y a)) (b a))) z)))) ((c ((y (x a)) ((z v) (y a)))) (b (((y a) (((z v) (y a)) (b a))) z)))) ((((b (z a)) (y a)) (y c)) (a (((((y a) (((z v) (y a)) (b a))) ((b a) (b a))) (x a)) ((((y a) (((z v) (y a)) (b a))) z) (((z v) (y a)) (c y))))))))"; - "(((((((z v) (y a)) (b a)) w) b) (((b a) ((((z v) (y a)) (b a)) w)) ((((z v) (y a)) (b a)) w))) (((b a) ((((y a) (((z v) (y a)) (b a))) ((((y a) (((z v) (y a)) (b a))) ((b a) (b a))) (x a))) w)) (((c y) a) v)))"; - "(((((((z v) (y a)) (b a)) w) b) (a (((((y a) (((z v) (y a)) (b a))) ((b a) (b a))) (x a)) ((((y a) (((z v) (y a)) (b a))) z) (((z v) (y a)) (c y)))))) ((((y a) (((z v) (y a)) (b a))) ((((y a) (((z v) (y a)) (b a))) ((b a) (b a))) (x a))) x))"]; - (* 37 *) (* issue with eta-equality of terms in ps *) - ["x (a y) z"; "x (a z. y z) w"; "a c"]; +let assert_separable x = + match solve x with + | `Separable _ -> () + | `Unseparable s -> + failwith ("assert_separable: unseparable because: " ^ s ^ ".") +;; + +let assert_unseparable x = + match solve x with + | `Unseparable _ -> () + | `Separable _ -> + failwith ("assert_unseparable: separable.") +;; + +let assert_depends x = + let c = String.sub (Lambda4.label_of_problem x) 0 1 in + if c = "!" then assert_separable x + else if c = "?" then assert_unseparable x + else (solve x; ()) +;; -]);; +let main () = +((*
*) + +let solve_many = List.iter assert_separable in + +(* TODO *) +(* div under a lambda in conv *) +(* assert_unseparable (problem_of (Some"`y y") ["x (_. y y)"] []);; *) + +List.iter (assert_separable ++ Lambda4.tmp) (Parser.from_file "problems/p"); (* q-series problems *) @@ -109,37 +39,31 @@ let q1 () = problem_of None ["a d e"] ["a b"; "a c"] - ;; + in let q2 () = problem_of None ["a d e"] ["a b" ] - ;; - -let q3 () = problem_of - (Some "x") - ["a d e f"] - ["a b" ] - ;; + in let q4 () = problem_of None ["f (x.a b c d)"] ["a b" ] - ;; + in let q5 () = problem_of - (Some"x") - ["(y. x)"] + (Some"x x") ["x"] - ;; + ["x"] + in let q6 () = problem_of - (Some"x") + (Some"x x") ["(y. x z)"] ["y"] - ;; + in let q7 () = problem_of (Some "(b (c d (e f f k.(g e))) f)") @@ -149,23 +73,23 @@ let q7 () = problem_of ["(f d (e f) k.e k.l.(c d) (b (g e) k.h) (i b k.l.m.e b) a)"; "(f d (e f) k.e k.l.(c d) (b (g e) k.h) (d k.e) (f d (e f) k.e) a)"; "(g (e f) (g e h) (f d (e f) k.e) k.(c d l.(c d)) (g e h) (g f (e f f (e f f k.(g e))) (g (e f)) (b (c d (e f f k.(g e))) (b (g (e f)) (e f)) (b (g (e f)) k.l.e))) a)"] - ;; + in (**********************) let q8 () = problem_of (Some"x a") ["y (x b c)"] ["j"] -;; +in let q9 () = problem_of (Some"x a") ["y x"] ["a (y a b b b)"] -;; +in let q11 () = problem_of (Some "x y") - ["a (x z)"] [] ;; + ["a (x z)"] [] in let q10 () = problem_of (Some "b (k. c) d (e (f g) (k. g)) (k. l. c) (k. l. b (m. c)) (k. l. c) (b (k. c) (k. l. b (m. c)) (k. c f) @@ -182,17 +106,17 @@ let q10 () = problem_of "b (k. c) d (e (f g) (k. g)) (k. l. c) (k. l. b (m. c)) (k. l. m. n. o. p. o) (e (f g) (k. g) (c f) (k. i) f)"; "b (k. c) d (e (f g) (k. g)) (k. l. c) (k. l. b (m. c)) (k. l. c) (k. b)"; "e (f g) (k. g) (c f) (k. e) (k. b (l. c)) (c f (k. b (l. c)) (k. l. b (m. k))) (k. b (l. k)) (e (f g) (k. g) (c f) (c f (k. b (l. c)) (k. e)))"; -] ;; +] in let m1 () = problem_of None [] ["y z"; "x z"; "x (a k) u"; "x (a r)"; "x (a k) v"] -;; +in let m2 () = problem_of None [] ["y z"; "x z"; "x (a k) u"; "x (a r)"; "x (a k) v"] -;; +in let n1 () = problem_of (Some"b (c b) (k. l. c b d) (c e) (k. l. m. f) (g (k. c e) (b (c b) (k. l. c b d) (c e) b)) (f c (h (k. c c g))) (g (k. c e) (k. i) f e (g (k. c e) (k. i) (c b) (c (c e)) (k. l. c b d)) (k. e c (k (l. f))) (g (k. c e) (k. i) e)) (g (k. c e) (k. i) (c b) (f c) b)") @@ -208,7 +132,7 @@ let n1 () = problem_of (Some"b (c b) (k. l. c b d) (c e) (k. l. m. f) (g (k. c e "d h (b (c b) (k. l. c b d) (c e)) (k. g (l. c e) (l. i) (c b) (k c) b) d b (b (c b) (k. l. c b d) (c e) b (g (k. c e) (k. i) (c b)) (k. c)) a"; "g (k. c e) (k. d d) (k. k k) (e c (d d (d c)) i) (k. g (l. k e) (l. d d)) (g i (b (c b) (k. l. c b d) (e c (d d (d c)) (k. c e (f c)) (k. k (c k) (l. m. c k d) (c e) k (g (l. c e) (l. i) (c k)) (l. c))))) (c b) a"; "g (k. c e) (k. i) f e (g (k. c e) (k. i) (c b) (c (c e)) (k. l. c b d)) (k. e c (k (l. f))) (g (k. c e) (k. i) e) a" -] ;; +] in let n2 () = problem_of (Some"b b (c d) (k. d e) (k. k) (k. l. b)") @@ -225,7 +149,7 @@ let n2 () = problem_of "f (g (k. e)) (k. b b) (c d (k. k d) (k. l. l) c) (k. c d) (k. c) (k. l. m. b b) a"; "f (g (k. e)) (k. b b) (c d (k. k d) (k. l. l) c) (k. c d) (b (b b) (d (g(d e) (g (k. e)) h) (b b (c d) (k. l. b)) (b (k. h))) (e (b b (c d))) (d (g (d e) (g (k. e)) h) (b b (c d) (k. l. b)) (g (k. e) (k. k)))) (k. d e (l. d e) f) a"; ] -;; +in let n3 () = problem_of (Some"b (k. c (c d e f)) (k. l. f (m. f) (m. f) (m. n. n))") @@ -241,9 +165,49 @@ let n3 () = problem_of "e e (k. k d e (l. l)) (g e) (c d e b (e e (c (c d e f)))) (d (e e (k. k d e (l. l))) (k. k i)) (k. i (l. c (c d e f))) (k. h) a"; "f (k. f) (k. f) (f h) (f h (c d e (f i))) (k. b) (f i (c d e)) (k. h) a"; "g e f (f (k. f) (f (k. f) (k. l. f)) (c d e b)) (f (k. f) (k. f) (k. l. l) b) (f (k. h)) (c d e (f i) (e e) (g e) (k. l. e)) (f (k. f) f) (f (k. f) (k. f) (k. l. l) (c (k. i (l. c (c d e f))))) a"; -] ;; - -(* main ([p34]);; *) +] in + +solve_many [ + problem_of + (* DISPLAY PROBLEM (main) - measure=965 + Discriminating sets (deltas): + 0 <> 1 <> 2 <> 3 <> 4 + *)(* DIVERGENT *) + (Some"b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (k. b c d (l. c (l k)) (b c (l. e e) (b c d (l. e l) (e e (b (l. m. b)) d (l. d))) (l. c)))") + (* CONVERGENT *) [ + (* _ *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (e e (b (k. l. b)) (k. e k)) (k. e e) (k. g (l. g (m. b c)) (l. i (f g)))"; + (* _ *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (d b (k. b)) (k. d k (k (l. m. k)) (c (e h))) (b c (k. c (e h)))"; + (* _ *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (e e (b (k. l. b)) (k. e k)) (k. e e)"; + (* _ *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (d b (k. b)) (k. d k (k (l. m. k)) (c (e h)))"; + (* _ *) "b (k. l. b) (e f) (b c d) (e e (b (k. l. b)) d) (e (k. l. b c) (k. l. b k) (b c)) d (e e (e e) (d (k. f)) (b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))))) (e e (b (k. l. b)) (b (k. l. b) (e f) (b c + d)) (e e (b (k. l. b)) d (k. d) (b (k. l. b))) (k. b c k (l. e l) (e e (b (l. m. b)) k (l. k)) (f g (c (e h))) (k b (l. b) (f g (e f))) (c (e h))) (k. i (f g) (l. l)))"; + ] (* NUMERIC *) [ + (* 0 *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (d b (k. b)) (k. l. c (l k)) a"; + (* 1 *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (e e (b (k. l. b)) (k. e k)) a"; + (* 2 *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (e e (b (k. l. b)) (k. e k)) (k. l. c (k h)) a"; + (* 3 *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (e e (b (k. l. b)) (k. e k)) (k. l. c (k h)) (d b (b c d (k. c (k h))) (b c d (k. e k) (b c))) a"; + (* 4 *) "b c d (k. e k) (e e (b (k. l. b)) d (k. d)) (f g (c (e h))) (d b (k. b) (f g (e f))) (c (e h)) (e e (b (k. l. b)) (k. e k)) (k. b k d (l. e l) (e e (b (l. m. b)) d (l. d)) (f g (k (e h)))) a"; + ]; + problem_of + (* DISPLAY PROBLEM (main) - measure=561 + Discriminating sets (deltas): + 0 <> 1 <> 2 <> 3 <> 4 + *)(* DIVERGENT *) + (Some"b (c b) (k. d) (e f (k. e) (k. b) (f d)) (e f (k. g k) d) (k. c k (c k g))") + (* CONVERGENT *) [ + (* _ *) "c (k. l. l b k) (k. l. d) (e f (k. k) (g e)) (k. l. m. n. n b m) (k. b (b (k e))) (k. g) (e f (k. k (g e) h) b (e (k. g) (h c (g c) f)))"; + (* _ *) "e f (k. k) (k. l. c b) (k. l. l (k b) g) (k. e f (l. l)) (h c (c (k. l. l b k) (k. l. d) (e f (k. k) (g e))) (k. g e (g e))) (k. g (l. e f g) (l. h c) (g (l. e f g) (l. h c)))"; + (* _ *) "e f (k. k (g e) h) (g (k. e f g) (c (c b g) (k. l. l b g))) (k. k (g e) h) (k. h) (b (b (g e)) (k. c (l. m. m b l))) (k. l. g l (g l) (m. c b))"; + (* _ *) "c (k. l. l b k) (k. l. d) (e f (k. k) (g e)) (k. l. m. n. n b m) (k. b (b (k e))) (k. g)"; + (* _ *) "e f (k. k) (g e) (e f (k. e)) (e f (k. e)) (h c (b (g e) h (k. c (l. m. m k l))))"; + ] (* NUMERIC *) [ + (* 0 *) "c (k. l. l b k) (k. l. d) (e f (k. k) (g e)) (k. l. m. n. n b m) (k. b (b (k e))) (k. i) a"; + (* 1 *) "e f (k. k (g e) h) (g (k. e f g) (c (c b g) (k. l. l b g))) (k. k (g e) h) (k. h) (b (b (g e)) (k. c (l. m. m b l))) (h (c b) g i) a"; + (* 2 *) "e f (k. k) (g e) (e f (k. e)) (h (k. g e (g e)) (h (k. g e (g e)))) (k. d) a"; + (* 3 *) "e f (k. k) (g e) (e f (k. e)) (h (k. g e (g e)) (h (k. g e (g e)))) (k. d) (k. l. m. c k) a"; + (* 4 *) "g (k. e f g) (k. h c) (b (g e) h (k. c (l. m. m k l))) (k. c b g) (k. e f (l. l) (g e) (e f (l. e))) f a"; + ] +]; solve_many (List.map ((|>) ()) ([ q1 ; q2; (*q3;*) q4 ; q5 ; q6 ; @@ -258,4 +222,13 @@ solve_many (List.map ((|>) ()) ([ n1 ; n2 ; n3 -]));; +])); + +(*
*));; + +if Array.length Sys.argv = 1 + then main () +else Array.iteri (fun i filename -> if i > 0 then + List.iter (assert_depends ++ Lambda4.tmp) (Parser.from_file filename) + ) Sys.argv +;;