From 50af9b7f128e6b63f6a119cd4ca3ab3b7247ad07 Mon Sep 17 00:00:00 2001 From: Robert Zhang Date: Mon, 25 Dec 2023 18:58:34 -0500 Subject: [PATCH] Refactor simple program analysis --- dde.opam | 4 +- dune-project | 4 +- interpreter/src/ast.ml | 6 +- logs | 10196 +++++++++++++++++++++++ program_analysis/display/lib.ml | 9 +- program_analysis/simple/debug_utils.ml | 20 + program_analysis/simple/debugutils.ml | 20 - program_analysis/simple/dune | 4 +- program_analysis/simple/exns.ml | 3 + program_analysis/simple/grammar.ml | 173 - program_analysis/simple/lib.ml | 381 +- program_analysis/simple/simplifier.ml | 46 +- program_analysis/simple/solver.ml | 393 - program_analysis/simple/utils.ml | 351 +- program_analysis/smt/test.smt | 49 - program_analysis/src/debugutils.ml | 18 +- program_analysis/src/dune | 2 +- program_analysis/src/lib.ml | 41 +- program_analysis/src/logging.ml | 9 - program_analysis/tests/bench.ml | 1 - program_analysis/tests/pbt.ml | 22 +- program_analysis/tests/tests.ml | 278 +- program_analysis/tests/utils.ml | 61 +- 23 files changed, 10895 insertions(+), 1196 deletions(-) create mode 100644 logs create mode 100644 program_analysis/simple/debug_utils.ml delete mode 100644 program_analysis/simple/debugutils.ml create mode 100644 program_analysis/simple/exns.ml delete mode 100644 program_analysis/simple/grammar.ml delete mode 100644 program_analysis/simple/solver.ml delete mode 100644 program_analysis/smt/test.smt delete mode 100644 program_analysis/src/logging.ml diff --git a/dde.opam b/dde.opam index 5a29774..aabfc80 100644 --- a/dde.opam +++ b/dde.opam @@ -1,8 +1,8 @@ # This file is generated by dune, edit dune-project instead opam-version: "2.0" -synopsis: "Demand-Driven Execution (DDE)" +synopsis: "Pure Demand Operational Semantics" description: - "Formally verified concrete and abstract interpretation based on DDE" + "A novel minimal-state operational semantics for higher-order functional languages" maintainer: ["JHU PL Lab "] authors: ["JHU PL Lab "] homepage: "https://github.com/JHU-PL-Lab/dde" diff --git a/dune-project b/dune-project index a9672b5..a9f2dea 100644 --- a/dune-project +++ b/dune-project @@ -17,9 +17,9 @@ (package (name dde) - (synopsis "Demand-Driven Execution (DDE)") + (synopsis "Pure Demand Operational Semantics") (description - "Formally verified concrete and abstract interpretation based on DDE") + "A novel minimal-state operational semantics for higher-order functional languages") (depends (ocaml (>= 4.14.1)) diff --git a/interpreter/src/ast.ml b/interpreter/src/ast.ml index 6b1cfef..2ebd5a0 100644 --- a/interpreter/src/ast.ml +++ b/interpreter/src/ast.ml @@ -255,7 +255,7 @@ let rec trans_let x e' e = let rec transform_let e = (* TODO: more cases *) match e with - | Int _ | Bool _ -> e + | Int _ | Bool _ | Var _ -> e | Function (ident, e, l) -> let e' = transform_let e in let f = Function (ident, e', l) in @@ -296,4 +296,6 @@ let rec transform_let e = | And (e1, e2) -> And (transform_let e1, transform_let e2) | Or (e1, e2) -> Or (transform_let e1, transform_let e2) | Not e -> Not (transform_let e) - | _ -> e + | Record es -> Record (List.map es ~f:(fun (id, e) -> (id, transform_let e))) + | Projection (e, id) -> Projection (transform_let e, id) + | Inspection (id, e) -> Inspection (id, transform_let e) diff --git a/logs b/logs new file mode 100644 index 0000000..22b8791 --- /dev/null +++ b/logs @@ -0,0 +1,10196 @@ +tests.exe: [DEBUG] (fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }))) ( + fun xx -> + xx/0) +tests.exe: [DEBUG] (Appl ( + (Function ((Ident "id"), + (Appl ( + (Function ((Ident "my_map"), + (Appl ( + (Appl ((Var ((Ident "my_map"), 24)), + (Appl ((Var ((Ident "id"), 25)), + (Function ((Ident "b"), + (Plus ((Int 1), + (Var ((Ident "b"), 26)))), + 27)), + 28)), + 29)), + (Record + [((Ident "hd"), (Int 7)); + ((Ident "tl"), + (Record + [((Ident "hd"), (Int 8)); + ((Ident "tl"), + (Record + [((Ident "hd"), (Int 9)); + ((Ident "tl"), (Record [])) + ])) + ])) + ]), + 30)), + 34)), + (Function ((Ident "f"), + (Function ((Ident "l"), + (Appl ( + (Function ((Ident "lp"), + (Appl ( + (Appl ((Var ((Ident "lp"), 16)), + (Var ((Ident "lp"), 17)), 18)), + (Var ((Ident "l"), 19)), 20)), + 35)), + (Function ((Ident "self"), + (Function ((Ident "lst"), + (If ( + (Not + (Inspection ((Ident "hd"), + (Var ((Ident "lst"), 2)) + ))), + (Record []), + (Record + [((Ident "hd"), + (Appl ( + (Appl ( + (Var ((Ident "id"), + 3)), + (Var ((Ident "f"), 4 + )), + 5)), + (Projection ( + (Var ((Ident "lst"), + 6)), + (Ident "hd"))), + 7))); + ((Ident "tl"), + (Appl ( + (Appl ( + (Var ( + (Ident "self"), + 8)), + (Var ( + (Ident "self"), + 9)), + 10)), + (Projection ( + (Var ( + (Ident "lst"), + 11)), + (Ident "tl"))), + 12))) + ]), + 13)), + 14)), + 15)), + 21)), + 22)), + 23)), + 31)), + 33)), + (Function ((Ident "xx"), (Var ((Ident "xx"), 0)), 1)), + 32)) +tests.exe: [INFO] [Level 1] === App ((fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }))) ( + fun xx -> + xx/0), 32) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [] +tests.exe: [DEBUG] sigma_pruned': [32] +tests.exe: [DEBUG] Evaluating function being applied: fun id -> + (fun my_map -> + my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })) -> + fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 1] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: ( + fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })) +tests.exe: [INFO] [Level 2] === App ((fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })), 31) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] sigma_pruned': [31; 32] +tests.exe: [DEBUG] Evaluating function being applied: fun my_map -> + my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) -> + fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 2] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [INFO] [Level 3] === App (my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }), 30) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31; 32] +tests.exe: [DEBUG] sigma_pruned': [30; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 (id/25 ( + fun b -> + (1 + b/26))) +tests.exe: [INFO] [Level 4] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31; 32] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 5] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 5] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31; 32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [32] +tests.exe: [DEBUG] S len: 2 +tests.exe: [DEBUG] S: {[31; 32], [32]} +tests.exe: [DEBUG] [Level 5] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 5] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 5] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 4] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 4] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 3] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: ( + fun lp -> + lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 4] === App ((fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }), 21) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [30; 31] +tests.exe: [DEBUG] sigma_pruned': [21; 30] +tests.exe: [DEBUG] Evaluating function being applied: fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 4] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: lp/16 lp/17 l/19 +tests.exe: [INFO] [Level 5] === App (lp/16 lp/17 l/19, 20) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21; 30] +tests.exe: [DEBUG] sigma_pruned': [20; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 lp/17 +tests.exe: [INFO] [Level 6] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21; 30] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 7] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 7] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21; 30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [30] +tests.exe: [DEBUG] S len: 5 +tests.exe: [DEBUG] S: {[21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 7] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 7] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 7] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 6] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 6] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 5] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Level 6] === If === +tests.exe: [DEBUG] [Level 8] === Insp === +tests.exe: [INFO] [Level 9] === Var (lst/2) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 9] === Var Local (lst/2) ==== +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 9] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 10] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 10] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 10][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 10] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 10] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 11] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 11] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 11] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 11] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 11] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 10] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 10] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 9] *** Var Local (lst/2) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 9] *** Var (lst, 2) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/2 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 8][Insp] r0: hd in { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 8] *** Insp *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (hd in lst/2) -> true +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (not (hd in lst/2)) -> false +tests.exe: [DEBUG] [Level 6] === If false === +tests.exe: [INFO] [Level 8] === App (self/8 self/9 ((lst/11.tl)), 12) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] sigma_pruned': [12; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 self/9 +tests.exe: [INFO] [Level 9] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 10] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 10] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 10][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 11] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 12] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 11] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 11] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 10] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 10] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 11] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 11] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 11] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 12] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 7 +tests.exe: [DEBUG] S: {[18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 11] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 11] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 10] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 10] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 9] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 9] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 8] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Level 9] === If === +tests.exe: [DEBUG] [Level 11] === Insp === +tests.exe: [INFO] [Level 12] === Var (lst/2) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Local (lst/2) ==== +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 13] === Proj === +tests.exe: [INFO] [Level 14] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 15] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 16] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 16] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 16] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 15] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 15] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 14] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 14] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 13][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.tl +tests.exe: [DEBUG] [Level 13] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 12] *** Var Local (lst/2) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 12] *** Var (lst, 2) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/2 -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Level 11][Insp] r0: hd in { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Level 11] *** Insp *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (hd in lst/2) -> true +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (not (hd in lst/2)) -> false +tests.exe: [DEBUG] [Level 9] === If false === +tests.exe: [INFO] [Level 11] === App (self/8 self/9 ((lst/11.tl)), 12) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] sigma_pruned': [12; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 self/9 +tests.exe: [INFO] [Level 12] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 13] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 14] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 15] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 16] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 17] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 16] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 16] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 17] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 15] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 15] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 14] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 14] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 13] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 13] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 14] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 15] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 16] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 17] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 16] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 16] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 17] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 9 +tests.exe: [DEBUG] S: {[10; 20], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 15] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 15] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 14] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 14] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 13] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 13] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 12] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 11] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Level 12] === If === +tests.exe: [DEBUG] [Level 14] === Insp === +tests.exe: [INFO] [Level 15] === Var (lst/2) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Local (lst/2) ==== +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 16] === Proj === +tests.exe: [INFO] [Level 17] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 18] === Proj === +tests.exe: [INFO] [Level 19] === Var (lst/11) ==== +tests.exe: [DEBUG] Stubbed +tests.exe: [INFO] [Level 19] *** Var (lst/11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> stub +tests.exe: [DEBUG] [Level 18][Proj] r0: stub.tl +tests.exe: [DEBUG] [Level 18] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> (stub.tl) +tests.exe: [DEBUG] [Level 18] === Proj === +tests.exe: [INFO] [Level 19] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 20] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 21] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 21] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 21] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 20] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 20] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 19] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 19] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 18][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.tl +tests.exe: [DEBUG] [Level 18] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 17] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 17] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 16][Proj] r0: { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.tl +tests.exe: [DEBUG] [Level 16] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> {} | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 15] *** Var Local (lst/2) **** +tests.exe: [DEBUG] [Var Local] r1: {} | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 15] *** Var (lst, 2) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/2 -> {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 14][Insp] r0: hd in {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 14] *** Insp *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (hd in lst/2) -> false | true +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (not (hd in lst/2)) -> false | true +tests.exe: [DEBUG] [Level 12] === If Both === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [INFO] [Level 14] === App (self/8 self/9 ((lst/11.tl)), 12) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] sigma_pruned': [12; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 self/9 +tests.exe: [INFO] [Level 15] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 16] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [INFO] [Level 17] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 18] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 20] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 19] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 20] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] Cache hit: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 20] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 18] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 17] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 17] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 18] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [DEBUG] Cache hit: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 20] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 19] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 20] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 20] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 18] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 16] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 15] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 15] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 14] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Level 15] === If === +tests.exe: [DEBUG] [Level 17] === Insp === +tests.exe: [INFO] [Level 18] === Var (lst/2) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Local (lst/2) ==== +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] Cache hit: (lst/11.tl) -> (stub.tl) +tests.exe: [INFO] [Level 18] *** Var Local (lst/2) **** +tests.exe: [DEBUG] [Var Local] r1: (stub.tl) +tests.exe: [INFO] [Level 18] *** Var (lst, 2) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/2 -> (stub.tl) +tests.exe: [DEBUG] [Level 17][Insp] r0: hd in (stub.tl) +tests.exe: [DEBUG] [Level 17] *** Insp *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (hd in lst/2) -> (hd in (stub.tl)) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (not (hd in lst/2)) -> false | true +tests.exe: [DEBUG] [Level 15] === If Both === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [INFO] [Level 17] === App (self/8 self/9 ((lst/11.tl)), 12) ==== +tests.exe: [DEBUG] Stubbed +tests.exe: [INFO] [Level 17] *** App (self/8 self/9 ((lst/11.tl)), 12) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 ((lst/11.tl)) -> stub +tests.exe: [INFO] [Level 17] === App (id/3 f/4 ((lst/6.hd)), 7) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] sigma_pruned': [7; 12] +tests.exe: [DEBUG] Evaluating function being applied: id/3 f/4 +tests.exe: [INFO] [Level 18] === App (id/3 f/4, 5) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] sigma_pruned': [5; 12] +tests.exe: [DEBUG] Evaluating function being applied: id/3 +tests.exe: [INFO] [Level 19] === Var (id/3) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (id/3) ==== +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [INFO] [Level 20] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 21] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [DEBUG] Cache hit: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [DEBUG] Cache hit: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 21] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 21] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 22] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 23] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [DEBUG] Cache hit: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 23] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 23] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 24] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 25] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 23] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 21] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: stub +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 20] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Found: # +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 19] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 19] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 14 and evaluate +tests.exe: [INFO] [Level 20] === Var (id/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (id/14) ==== +tests.exe: [DEBUG] sigma: [10; 12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating self/8, using stitched stack + [12] +tests.exe: [INFO] [Level 21] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 22] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 23] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 22] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 22] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 22] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 23] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 24] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 25] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 24] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 23] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 23] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [DEBUG] Cache hit: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 23] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 22] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 21] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 21] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 22] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 23] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 24] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 25] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] Cache hit: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 24] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 23] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 23] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 24] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 25] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 25] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 23] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 21] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: stub +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 15 and evaluate +tests.exe: [INFO] [Level 21] === Var (id/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Non-Local (id/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 22] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 23] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 23] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 23] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 22] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 22] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 21] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 21] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 22 and evaluate +tests.exe: [INFO] [Level 22] === Var (id/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Non-Local (id/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22][Var Non-Local] Stitched! Evaluating my_map/24, using stitched stack + [31] +tests.exe: [INFO] [Level 23] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 23] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 23] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 22] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 22] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 23 and evaluate +tests.exe: [INFO] [Level 23] === Var (id/23) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (id/23) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 11 +tests.exe: [DEBUG] S: {[10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 23] *** Var Local (id/23) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 23] *** Var (id, 23) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/23 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 22] *** Var Non-Local (id/22) **** +tests.exe: [INFO] [Level 22] *** Var (id, 22) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/22 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 21] *** Var Non-Local (id/15) **** +tests.exe: [INFO] [Level 21] *** Var (id, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/15 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 20] *** Var Non-Local (id/14) **** +tests.exe: [INFO] [Level 20] *** Var (id, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/14 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 19] *** Var Non-Local (id/3) **** +tests.exe: [INFO] [Level 19] *** Var (id, 3) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 18] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 19] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [5; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 5 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] f/4 +tests.exe: [INFO] [Level 20] === Var (f/4) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (f/4) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 21] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 22] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 21] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 21] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 22] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 23] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 24] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 23] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 22] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 22] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 23] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 24] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 22] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (f/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Non-Local (f/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating self/8, using stitched stack + [20] +tests.exe: [INFO] [Level 22] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 23] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 24] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] Cache hit: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 23] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 22] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 22] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 23] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 24] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 24] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 23] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 22] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 21] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 21] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 15 and evaluate +tests.exe: [INFO] [Level 22] === Var (f/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Non-Local (f/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 23] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 24] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 24] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 24] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 23] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 23] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 22] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 22] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 22 and evaluate +tests.exe: [INFO] [Level 23] === Var (f/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (f/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 29 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] id/25 (fun b -> (1 + b/26)) +tests.exe: [INFO] [Level 24] === App (id/25 (fun b -> (1 + b/26)), 28) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [28; 31] +tests.exe: [DEBUG] Evaluating function being applied: id/25 +tests.exe: [INFO] [Level 25] === Var (id/25) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Non-Local (id/25) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25][Var Non-Local] Stitched! Evaluating fun my_map -> + my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }), using stitched stack + [32] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) -> + fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun my_map -> + my_map/24 (id/25 (fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 25] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 25] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 34 and evaluate +tests.exe: [INFO] [Level 26] === Var (id/34) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 26] === Var Local (id/34) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 12 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 26] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 26] *** Var Local (id/34) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 26] *** Var (id, 34) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/34 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 25] *** Var Non-Local (id/25) **** +tests.exe: [INFO] [Level 25] *** Var (id, 25) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 24] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 25] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [28; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 28 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 13 +tests.exe: [DEBUG] S: {[5; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun b -> (1 + b/26) -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 25] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 25] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 24] *** App (id/25 (fun b -> (1 + b/26)), 28) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 (fun b -> (1 + b/26)) -> fun b -> + (1 + b/26) +tests.exe: [INFO] [Level 23] *** Var Local (f/22) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 23] *** Var (f, 22) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/22 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 22] *** Var Non-Local (f/15) **** +tests.exe: [INFO] [Level 22] *** Var (f, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/15 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 21] *** Var Non-Local (f/14) **** +tests.exe: [INFO] [Level 21] *** Var (f, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/14 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 20] *** Var Non-Local (f/4) **** +tests.exe: [INFO] [Level 20] *** Var (f, 4) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/4 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 19] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 19] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 18] *** App (id/3 f/4, 5) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 17] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: (1 + b/26) +tests.exe: [INFO] [Level 18] === Binop ((1 + b/26)) ==== +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 1 -> 1 +tests.exe: [INFO] [Level 19] === Var (b/26) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (b/26) ==== +tests.exe: [DEBUG] sigma: [7; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 7 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/6.hd) +tests.exe: [DEBUG] [Level 20] === Proj === +tests.exe: [INFO] [Level 21] === Var (lst/6) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (lst/6) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 22] === Proj === +tests.exe: [INFO] [Level 23] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 24] === Proj === +tests.exe: [INFO] [Level 25] === Var (lst/11) ==== +tests.exe: [DEBUG] Stubbed +tests.exe: [INFO] [Level 25] *** Var (lst/11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> stub +tests.exe: [DEBUG] [Level 24][Proj] r0: stub.tl +tests.exe: [DEBUG] [Level 24] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> (stub.tl) +tests.exe: [DEBUG] [Level 24] === Proj === +tests.exe: [INFO] [Level 25] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 26] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 26] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 26][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 26] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 26] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 27] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 27] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 27] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 27] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 27] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 26] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 26] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 25] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 25] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 24][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.tl +tests.exe: [DEBUG] [Level 24] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 23] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 23] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 22][Proj] r0: { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.tl +tests.exe: [DEBUG] [Level 22] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 22] === Proj === +tests.exe: [INFO] [Level 23] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 24] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 24] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 24][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 24] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 24] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 25] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 25] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 25] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 25] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 25] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 24] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 24] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 23] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 23] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 22][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.tl +tests.exe: [DEBUG] [Level 22] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 21] *** Var Local (lst/6) **** +tests.exe: [DEBUG] [Var Local] r1: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 21] *** Var (lst, 6) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/6 -> {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 20][Proj] r0: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.hd +tests.exe: [DEBUG] [Level 20] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/6.hd) -> 8 | 9 +tests.exe: [INFO] [Level 19] *** Var Local (b/26) **** +tests.exe: [DEBUG] [Var Local] r1: 8 | 9 +tests.exe: [INFO] [Level 19] *** Var (b, 26) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: b/26 -> 8 | 9 +tests.exe: [DEBUG] [Level 18] Evaluated binop to (1 8 | 9) +tests.exe: [INFO] [Level 18] *** Binop ((1 + b/26)) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (1 + b/26) -> 9 | 10 +tests.exe: [DEBUG] [App] r2: 9 | 10 +tests.exe: [INFO] [Level 17] *** App (id/3 f/4 ((lst/6.hd)), 7) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 ((lst/6.hd)) -> 9 | 10 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> { hd = 9 | 10; tl = stub } +tests.exe: [DEBUG] [Level 15] *** If Both *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> {} | { hd = 9 | 10; tl = stub } +tests.exe: [DEBUG] [App] r2: {} | { hd = 9 | 10; tl = stub } +tests.exe: [INFO] [Level 14] *** App (self/8 self/9 ((lst/11.tl)), 12) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 ((lst/11.tl)) -> {} | { hd = 9 | 10; tl = stub } +tests.exe: [INFO] [Level 14] === App (id/3 f/4 ((lst/6.hd)), 7) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] sigma_pruned': [7; 12] +tests.exe: [DEBUG] Evaluating function being applied: id/3 f/4 +tests.exe: [INFO] [Level 15] === App (id/3 f/4, 5) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] sigma_pruned': [5; 12] +tests.exe: [DEBUG] Evaluating function being applied: id/3 +tests.exe: [INFO] [Level 16] === Var (id/3) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (id/3) ==== +tests.exe: [DEBUG] sigma: [12; 12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [INFO] [Level 17] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 18] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 20] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 19] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 20] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] Cache hit: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 20] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 18] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 17] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 14 and evaluate +tests.exe: [INFO] [Level 17] === Var (id/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Non-Local (id/14) ==== +tests.exe: [DEBUG] sigma: [10; 12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17][Var Non-Local] Stitched! Evaluating self/8, using stitched stack + [12] +tests.exe: [INFO] [Level 18] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 19] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 20] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [DEBUG] Cache hit: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 20] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 19] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 10 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] self/9 +tests.exe: [INFO] [Level 20] === Var (self/9) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Non-Local (self/9) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 21] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 22] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] Cache hit: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 20] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 20] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 21] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 22] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 22] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Non-Local (self/9) **** +tests.exe: [INFO] [Level 20] *** Var (self, 9) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/9 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 18] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: stub +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 17] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 17] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 15 and evaluate +tests.exe: [INFO] [Level 18] === Var (id/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (id/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 19] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 20] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 20] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 20] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 19] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 19] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 22 and evaluate +tests.exe: [INFO] [Level 19] === Var (id/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (id/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19][Var Non-Local] Stitched! Evaluating my_map/24, using stitched stack + [31] +tests.exe: [INFO] [Level 20] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 20] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 20] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 19] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 19] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 23 and evaluate +tests.exe: [INFO] [Level 20] === Var (id/23) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (id/23) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 20] *** Var Local (id/23) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 20] *** Var (id, 23) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/23 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 19] *** Var Non-Local (id/22) **** +tests.exe: [INFO] [Level 19] *** Var (id, 22) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/22 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 18] *** Var Non-Local (id/15) **** +tests.exe: [INFO] [Level 18] *** Var (id, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/15 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 17] *** Var Non-Local (id/14) **** +tests.exe: [INFO] [Level 17] *** Var (id, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/14 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 16] *** Var Non-Local (id/3) **** +tests.exe: [INFO] [Level 16] *** Var (id, 3) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 15] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 16] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [5; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 5 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] f/4 +tests.exe: [INFO] [Level 17] === Var (f/4) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Non-Local (f/4) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 17][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 18] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 19] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Found: stub +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 18] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 18] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Found: # +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 18] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 19] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [DEBUG] Cache hit: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 19] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 19] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 20] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 21] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 19] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 18] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 17] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 17] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 14 and evaluate +tests.exe: [INFO] [Level 18] === Var (f/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (f/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating self/8, using stitched stack + [20] +tests.exe: [INFO] [Level 19] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [DEBUG] Cache hit: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 19] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 19] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 20] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 21] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 21] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 20] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 19] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 19] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 15 and evaluate +tests.exe: [INFO] [Level 19] === Var (f/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (f/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 20] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 21] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 21] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 21] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 20] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 20] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 19] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 19] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 22 and evaluate +tests.exe: [INFO] [Level 20] === Var (f/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (f/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 29 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] id/25 (fun b -> (1 + b/26)) +tests.exe: [INFO] [Level 21] === App (id/25 (fun b -> (1 + b/26)), 28) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [28; 31] +tests.exe: [DEBUG] Evaluating function being applied: id/25 +tests.exe: [INFO] [Level 22] === Var (id/25) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Non-Local (id/25) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22][Var Non-Local] Stitched! Evaluating fun my_map -> + my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }), using stitched stack + [32] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) -> + fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun my_map -> + my_map/24 (id/25 (fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 22] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 22] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 34 and evaluate +tests.exe: [INFO] [Level 23] === Var (id/34) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 23] === Var Local (id/34) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 23] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 23] *** Var Local (id/34) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 23] *** Var (id, 34) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/34 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 22] *** Var Non-Local (id/25) **** +tests.exe: [INFO] [Level 22] *** Var (id, 25) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 21] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 22] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [28; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 28 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun b -> (1 + b/26) -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 22] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 22] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 21] *** App (id/25 (fun b -> (1 + b/26)), 28) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 (fun b -> (1 + b/26)) -> fun b -> + (1 + b/26) +tests.exe: [INFO] [Level 20] *** Var Local (f/22) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 20] *** Var (f, 22) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/22 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 19] *** Var Non-Local (f/15) **** +tests.exe: [INFO] [Level 19] *** Var (f, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/15 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 18] *** Var Non-Local (f/14) **** +tests.exe: [INFO] [Level 18] *** Var (f, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/14 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 17] *** Var Non-Local (f/4) **** +tests.exe: [INFO] [Level 17] *** Var (f, 4) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/4 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 16] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 16] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 15] *** App (id/3 f/4, 5) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 14] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: (1 + b/26) +tests.exe: [INFO] [Level 15] === Binop ((1 + b/26)) ==== +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 1 -> 1 +tests.exe: [INFO] [Level 16] === Var (b/26) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (b/26) ==== +tests.exe: [DEBUG] sigma: [7; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 7 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/6.hd) +tests.exe: [DEBUG] [Level 17] === Proj === +tests.exe: [INFO] [Level 18] === Var (lst/6) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Local (lst/6) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 18] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 19] === Proj === +tests.exe: [INFO] [Level 20] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] Cache hit: (lst/11.tl) -> {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] Cache hit: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 20] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 20] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 19][Proj] r0: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.tl +tests.exe: [DEBUG] [Level 19] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 19] === Proj === +tests.exe: [INFO] [Level 20] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 21] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 21] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 21][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 21] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 21] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 22] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 22] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 22] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 22] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 22] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 21] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 21] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 20] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 20] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 19][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.tl +tests.exe: [DEBUG] [Level 19] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 18] *** Var Local (lst/6) **** +tests.exe: [DEBUG] [Var Local] r1: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 18] *** Var (lst, 6) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/6 -> {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 17][Proj] r0: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.hd +tests.exe: [DEBUG] [Level 17] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/6.hd) -> 8 | 9 +tests.exe: [INFO] [Level 16] *** Var Local (b/26) **** +tests.exe: [DEBUG] [Var Local] r1: 8 | 9 +tests.exe: [INFO] [Level 16] *** Var (b, 26) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: b/26 -> 8 | 9 +tests.exe: [DEBUG] [Level 15] Evaluated binop to (1 8 | 9) +tests.exe: [INFO] [Level 15] *** Binop ((1 + b/26)) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (1 + b/26) -> 9 | 10 +tests.exe: [DEBUG] [App] r2: 9 | 10 +tests.exe: [INFO] [Level 14] *** App (id/3 f/4 ((lst/6.hd)), 7) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 ((lst/6.hd)) -> 9 | 10 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } +tests.exe: [DEBUG] [Level 12] *** If Both *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } +tests.exe: [DEBUG] [App] r2: {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } +tests.exe: [INFO] [Level 11] *** App (self/8 self/9 ((lst/11.tl)), 12) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 ((lst/11.tl)) -> {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } +tests.exe: [INFO] [Level 11] === App (id/3 f/4 ((lst/6.hd)), 7) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] sigma_pruned': [7; 12] +tests.exe: [DEBUG] Evaluating function being applied: id/3 f/4 +tests.exe: [INFO] [Level 12] === App (id/3 f/4, 5) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] sigma_pruned': [5; 12] +tests.exe: [DEBUG] Evaluating function being applied: id/3 +tests.exe: [INFO] [Level 13] === Var (id/3) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Non-Local (id/3) ==== +tests.exe: [DEBUG] sigma: [12; 20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 14] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 15] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 16] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 17] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 16] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 16] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 17] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 15] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 15] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 14] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 14] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 13] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 13] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 14 and evaluate +tests.exe: [INFO] [Level 14] === Var (id/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Non-Local (id/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14][Var Non-Local] Stitched! Evaluating self/8, using stitched stack + [20] +tests.exe: [INFO] [Level 15] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 16] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 17] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] Cache hit: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 16] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 16] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 17] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 15] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 15] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 14] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 14] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 15 and evaluate +tests.exe: [INFO] [Level 15] === Var (id/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (id/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 16] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 17] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 17] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 17] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 16] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 16] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 22 and evaluate +tests.exe: [INFO] [Level 16] === Var (id/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (id/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating my_map/24, using stitched stack + [31] +tests.exe: [INFO] [Level 17] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 17] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 17] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Found: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 23 and evaluate +tests.exe: [INFO] [Level 17] === Var (id/23) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (id/23) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 17] *** Var Local (id/23) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 17] *** Var (id, 23) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/23 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 16] *** Var Non-Local (id/22) **** +tests.exe: [INFO] [Level 16] *** Var (id, 22) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/22 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 15] *** Var Non-Local (id/15) **** +tests.exe: [INFO] [Level 15] *** Var (id, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/15 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 14] *** Var Non-Local (id/14) **** +tests.exe: [INFO] [Level 14] *** Var (id, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/14 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 13] *** Var Non-Local (id/3) **** +tests.exe: [INFO] [Level 13] *** Var (id, 3) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 12] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 13] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [5; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 5 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] f/4 +tests.exe: [INFO] [Level 14] === Var (f/4) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Non-Local (f/4) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [12] +tests.exe: [DEBUG] [Level 14][Var Non-Local] Stitched! Evaluating self/8 self/9, using stitched stack + [20] +tests.exe: [INFO] [Level 15] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] sigma_pruned': [10; 12] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 16] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 self/9 +tests.exe: [DEBUG] Stubbed e1 +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/8 -> stub +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 15] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] stub +tests.exe: [DEBUG] [App] r2: # +tests.exe: [INFO] [Level 15] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Found: # +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> # +tests.exe: [DEBUG] [Var Non-Local] r0: # +tests.exe: [INFO] [Level 15] === App (self/8 self/9, 10) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] sigma_pruned': [10; 20] +tests.exe: [DEBUG] Evaluating function being applied: self/8 +tests.exe: [INFO] [Level 16] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [DEBUG] Cache hit: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 17] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 18] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 16] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 15] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 15] *** App (self/8 self/9, 10) **** +tests.exe: [DEBUG] [Cache] Found: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 14] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 14] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 14 and evaluate +tests.exe: [INFO] [Level 15] === Var (f/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Non-Local (f/14) ==== +tests.exe: [DEBUG] sigma: [10; 20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] self/8 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15][Var Non-Local] Stitched! Evaluating self/8, using stitched stack + [20] +tests.exe: [INFO] [Level 16] === Var (self/8) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (self/8) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [DEBUG] Cache hit: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel self with label 14 and evaluate +tests.exe: [INFO] [Level 17] === Var (self/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (self/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 18 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [21] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] lp/17 +tests.exe: [INFO] [Level 18] === Var (lp/17) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Local (lp/17) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var Local (lp/17) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 18] *** Var (lp, 17) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: lp/17 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var Local (self/14) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 17] *** Var (self, 14) **** +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/14 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 16] *** Var Non-Local (self/8) **** +tests.exe: [INFO] [Level 16] *** Var (self, 8) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Found: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Cache] Add: self/8 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 15] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 15] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 15 and evaluate +tests.exe: [INFO] [Level 16] === Var (f/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (f/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 17] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 18] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 18] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 18] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Found: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 17] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 17] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 22 and evaluate +tests.exe: [INFO] [Level 17] === Var (f/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (f/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 29 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] id/25 (fun b -> (1 + b/26)) +tests.exe: [INFO] [Level 18] === App (id/25 (fun b -> (1 + b/26)), 28) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [28; 31] +tests.exe: [DEBUG] Evaluating function being applied: id/25 +tests.exe: [INFO] [Level 19] === Var (id/25) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Non-Local (id/25) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19][Var Non-Local] Stitched! Evaluating fun my_map -> + my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }), using stitched stack + [32] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) -> + fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun my_map -> + my_map/24 (id/25 (fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 19] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 19] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 34 and evaluate +tests.exe: [INFO] [Level 20] === Var (id/34) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 20] === Var Local (id/34) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 20] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 20] *** Var Local (id/34) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 20] *** Var (id, 34) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/34 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 19] *** Var Non-Local (id/25) **** +tests.exe: [INFO] [Level 19] *** Var (id, 25) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 18] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 19] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [28; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 28 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun b -> (1 + b/26) -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 19] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 19] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 18] *** App (id/25 (fun b -> (1 + b/26)), 28) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 (fun b -> (1 + b/26)) -> fun b -> + (1 + b/26) +tests.exe: [INFO] [Level 17] *** Var Local (f/22) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 17] *** Var (f, 22) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/22 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 16] *** Var Non-Local (f/15) **** +tests.exe: [INFO] [Level 16] *** Var (f, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/15 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 15] *** Var Non-Local (f/14) **** +tests.exe: [INFO] [Level 15] *** Var (f, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/14 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 14] *** Var Non-Local (f/4) **** +tests.exe: [INFO] [Level 14] *** Var (f, 4) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/4 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 13] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 13] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 12] *** App (id/3 f/4, 5) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 11] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: (1 + b/26) +tests.exe: [INFO] [Level 12] === Binop ((1 + b/26)) ==== +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 1 -> 1 +tests.exe: [INFO] [Level 13] === Var (b/26) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Local (b/26) ==== +tests.exe: [DEBUG] sigma: [7; 12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 7 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [12] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/6.hd) +tests.exe: [DEBUG] [Level 14] === Proj === +tests.exe: [INFO] [Level 15] === Var (lst/6) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Local (lst/6) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 15] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 16] === Proj === +tests.exe: [INFO] [Level 17] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [12] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 12 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [12]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/11.tl) +tests.exe: [DEBUG] Cache hit: (lst/11.tl) -> {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] Cache hit: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 17] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 17] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 16][Proj] r0: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.tl +tests.exe: [DEBUG] [Level 16] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> {} | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 16] === Proj === +tests.exe: [INFO] [Level 17] === Var (lst/11) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (lst/11) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 18] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 18] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 18][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 18] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 18] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 19] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 19] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 19] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 19] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 19] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 18] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 18] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 17] *** Var Local (lst/11) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 17] *** Var (lst, 11) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/11 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 16][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.tl +tests.exe: [DEBUG] [Level 16] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/11.tl) -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [INFO] [Level 15] *** Var Local (lst/6) **** +tests.exe: [DEBUG] [Var Local] r1: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [INFO] [Level 15] *** Var (lst, 6) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/6 -> {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} } +tests.exe: [DEBUG] [Level 14][Proj] r0: {} | { hd = 8; tl = { hd = 9; tl = {} } } | { hd = 9; tl = {} }.hd +tests.exe: [DEBUG] [Level 14] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/6.hd) -> 8 | 9 +tests.exe: [INFO] [Level 13] *** Var Local (b/26) **** +tests.exe: [DEBUG] [Var Local] r1: 8 | 9 +tests.exe: [INFO] [Level 13] *** Var (b, 26) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: b/26 -> 8 | 9 +tests.exe: [DEBUG] [Level 12] Evaluated binop to (1 8 | 9) +tests.exe: [INFO] [Level 12] *** Binop ((1 + b/26)) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (1 + b/26) -> 9 | 10 +tests.exe: [DEBUG] [App] r2: 9 | 10 +tests.exe: [INFO] [Level 11] *** App (id/3 f/4 ((lst/6.hd)), 7) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 ((lst/6.hd)) -> 9 | 10 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } +tests.exe: [DEBUG] [Level 9] *** If false *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } +tests.exe: [DEBUG] [App] r2: { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } +tests.exe: [INFO] [Level 8] *** App (self/8 self/9 ((lst/11.tl)), 12) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: self/8 self/9 ((lst/11.tl)) -> { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } +tests.exe: [INFO] [Level 8] === App (id/3 f/4 ((lst/6.hd)), 7) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] sigma_pruned': [7; 20] +tests.exe: [DEBUG] Evaluating function being applied: id/3 f/4 +tests.exe: [INFO] [Level 9] === App (id/3 f/4, 5) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] sigma_pruned': [5; 20] +tests.exe: [DEBUG] Evaluating function being applied: id/3 +tests.exe: [INFO] [Level 10] === Var (id/3) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 10] === Var Non-Local (id/3) ==== +tests.exe: [DEBUG] sigma: [20; 21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 10][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 11] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 12] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 11] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 11] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 10] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 10] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 14 and evaluate +tests.exe: [INFO] [Level 11] === Var (id/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 11] === Var Non-Local (id/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 11][Var Non-Local] Stitched! Evaluating lp/16, using stitched stack + [21] +tests.exe: [INFO] [Level 12] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 11] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 11] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 15 and evaluate +tests.exe: [INFO] [Level 12] === Var (id/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Non-Local (id/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 13] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 14] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 14] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 14] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 13] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 13] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 12] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 12] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 22 and evaluate +tests.exe: [INFO] [Level 13] === Var (id/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Non-Local (id/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13][Var Non-Local] Stitched! Evaluating my_map/24, using stitched stack + [31] +tests.exe: [INFO] [Level 14] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Found: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 14] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 14] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Found: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 13] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 13] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 23 and evaluate +tests.exe: [INFO] [Level 14] === Var (id/23) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (id/23) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 14 +tests.exe: [DEBUG] S: {[5; 12], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 14] *** Var Local (id/23) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 14] *** Var (id, 23) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/23 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 13] *** Var Non-Local (id/22) **** +tests.exe: [INFO] [Level 13] *** Var (id, 22) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/22 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 12] *** Var Non-Local (id/15) **** +tests.exe: [INFO] [Level 12] *** Var (id, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/15 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 11] *** Var Non-Local (id/14) **** +tests.exe: [INFO] [Level 11] *** Var (id, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/14 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 10] *** Var Non-Local (id/3) **** +tests.exe: [INFO] [Level 10] *** Var (id, 3) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 9] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 10] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 10] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [5; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 5 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 10] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] f/4 +tests.exe: [INFO] [Level 11] === Var (f/4) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 11] === Var Non-Local (f/4) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 lp/17 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 11][Var Non-Local] Stitched! Evaluating lp/16 lp/17, using stitched stack + [21] +tests.exe: [INFO] [Level 12] === App (lp/16 lp/17, 18) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] sigma_pruned': [18; 21] +tests.exe: [DEBUG] Evaluating function being applied: lp/16 +tests.exe: [INFO] [Level 13] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 13] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 13] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 12] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [App] r2: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 12] *** App (lp/16 lp/17, 18) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 -> fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 11] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 11] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 14 and evaluate +tests.exe: [INFO] [Level 12] === Var (f/14) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Non-Local (f/14) ==== +tests.exe: [DEBUG] sigma: [18; 21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] lp/16 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12][Var Non-Local] Stitched! Evaluating lp/16, using stitched stack + [21] +tests.exe: [INFO] [Level 13] === Var (lp/16) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Local (lp/16) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 21 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13] Stitched! Evaluating Appl argument, using stitched stack + [30]: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 13] *** Var Local (lp/16) **** +tests.exe: [DEBUG] [Var Local] r1: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [INFO] [Level 13] *** Var (lp, 16) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 -> fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] r0: fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 12] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 12] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 15 and evaluate +tests.exe: [INFO] [Level 13] === Var (f/15) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Non-Local (f/15) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] my_map/24 (id/25 (fun b -> (1 + b/26))) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13][Var Non-Local] Stitched! Evaluating my_map/24 (id/25 ( + fun b -> + (1 + b/26))), using stitched stack [31] +tests.exe: [INFO] [Level 14] === App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [29; 31] +tests.exe: [DEBUG] Evaluating function being applied: my_map/24 +tests.exe: [INFO] [Level 15] === Var (my_map/24) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 15] === Var Local (my_map/24) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 31 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 15] Stitched! Evaluating Appl argument, using stitched stack + [32]: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 15] *** Var Local (my_map/24) **** +tests.exe: [DEBUG] [Var Local] r1: fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 15] *** Var (my_map, 24) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 -> fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 14] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: fun l -> + ( + fun lp -> + lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [App] r2: fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [INFO] [Level 14] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))), 29) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 13] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 13] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) +tests.exe: [DEBUG] [Var Non-Local] Relabel f with label 22 and evaluate +tests.exe: [INFO] [Level 14] === Var (f/22) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (f/22) ==== +tests.exe: [DEBUG] sigma: [29; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 29 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] id/25 (fun b -> (1 + b/26)) +tests.exe: [INFO] [Level 15] === App (id/25 (fun b -> (1 + b/26)), 28) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] sigma_pruned': [28; 31] +tests.exe: [DEBUG] Evaluating function being applied: id/25 +tests.exe: [INFO] [Level 16] === Var (id/25) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Non-Local (id/25) ==== +tests.exe: [DEBUG] sigma: [31] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16][Var Non-Local] Stitched! Evaluating fun my_map -> + my_map/24 (id/25 ( + fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }), using stitched stack + [32] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) -> + fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] r0: fun my_map -> + my_map/24 (id/25 (fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 16] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 16] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) +tests.exe: [DEBUG] [Var Non-Local] Relabel id with label 34 and evaluate +tests.exe: [INFO] [Level 17] === Var (id/34) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 17] === Var Local (id/34) ==== +tests.exe: [DEBUG] sigma: [32] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 32 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 17] Stitched! Evaluating Appl argument, using stitched stack + []: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun xx -> xx/0 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 17] *** Var Local (id/34) **** +tests.exe: [DEBUG] [Var Local] r1: fun xx -> xx/0 +tests.exe: [INFO] [Level 17] *** Var (id, 34) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/34 -> fun xx -> xx/0 +tests.exe: [INFO] [Level 16] *** Var Non-Local (id/25) **** +tests.exe: [INFO] [Level 16] *** Var (id, 25) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun xx -> xx/0 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 -> fun xx -> xx/0 +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 15] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun xx -> xx/0 +tests.exe: [DEBUG] [App] Evaluating body of function being applied: xx/0 +tests.exe: [INFO] [Level 16] === Var (xx/0) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 16] === Var Local (xx/0) ==== +tests.exe: [DEBUG] sigma: [28; 31] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 28 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [31] +tests.exe: [DEBUG] S len: 15 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 16] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun b -> (1 + b/26) -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 16] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 16] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 15] *** App (id/25 (fun b -> (1 + b/26)), 28) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/25 (fun b -> (1 + b/26)) -> fun b -> + (1 + b/26) +tests.exe: [INFO] [Level 14] *** Var Local (f/22) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 14] *** Var (f, 22) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/22 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 13] *** Var Non-Local (f/15) **** +tests.exe: [INFO] [Level 13] *** Var (f, 15) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/15 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 12] *** Var Non-Local (f/14) **** +tests.exe: [INFO] [Level 12] *** Var (f, 14) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/14 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 11] *** Var Non-Local (f/4) **** +tests.exe: [INFO] [Level 11] *** Var (f, 4) **** +tests.exe: [DEBUG] [Var Non-Local] r2: fun b -> (1 + b/26) +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: f/4 -> fun b -> (1 + b/26) +tests.exe: [INFO] [Level 10] *** Var Local (xx/0) **** +tests.exe: [DEBUG] [Var Local] r1: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 10] *** Var (xx, 0) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: xx/0 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r2: fun b -> (1 + b/26) +tests.exe: [INFO] [Level 9] *** App (id/3 f/4, 5) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 -> fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] r1 length: 1 +tests.exe: [DEBUG] [Level 8] [App] Evaluating 1 possible function being applied: +tests.exe: [DEBUG] fun b -> (1 + b/26) +tests.exe: [DEBUG] [App] Evaluating body of function being applied: (1 + b/26) +tests.exe: [INFO] [Level 9] === Binop ((1 + b/26)) ==== +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 1 -> 1 +tests.exe: [INFO] [Level 10] === Var (b/26) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 10] === Var Local (b/26) ==== +tests.exe: [DEBUG] sigma: [7; 20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 7 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [20] +tests.exe: [DEBUG] S len: 16 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [7; 20], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 10] Stitched! Evaluating Appl argument, using stitched stack + [20]: +tests.exe: [DEBUG] (lst/6.hd) +tests.exe: [DEBUG] [Level 11] === Proj === +tests.exe: [INFO] [Level 12] === Var (lst/6) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 12] === Var Local (lst/6) ==== +tests.exe: [DEBUG] sigma: [20] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 20 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 16 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [7; 20], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 12] Stitched! Evaluating Appl argument, using stitched stack + [21]: +tests.exe: [DEBUG] l/19 +tests.exe: [INFO] [Level 13] === Var (l/19) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 13] === Var Non-Local (l/19) ==== +tests.exe: [DEBUG] sigma: [21] +tests.exe: [DEBUG] Reading App at front of sigma +tests.exe: [DEBUG] Function being applied at front of sigma: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] S len: 16 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [7; 20], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 13][Var Non-Local] Stitched! Evaluating fun lp -> + lp/16 lp/17 l/19, using stitched stack + [30] +tests.exe: [DEBUG] === Fun === +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: fun lp -> lp/16 lp/17 l/19 -> fun lp -> + lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] r0: fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] r1 length: 1 +tests.exe: [DEBUG] [Level 13] Found all stitched stacks and evaluated e1, begin relabeling variables +tests.exe: [DEBUG] [Level 13] Visiting 1 possible function for e1: +tests.exe: [DEBUG] fun lp -> lp/16 lp/17 l/19 +tests.exe: [DEBUG] [Var Non-Local] Relabel l with label 35 and evaluate +tests.exe: [INFO] [Level 14] === Var (l/35) ==== +tests.exe: [DEBUG] Didn't stub +tests.exe: [INFO] [Level 14] === Var Local (l/35) ==== +tests.exe: [DEBUG] sigma: [30] +tests.exe: [DEBUG] Begin stitching stacks +tests.exe: [DEBUG] Head of candidate fragments must be: 30 +tests.exe: [DEBUG] Tail of candidate fragments must start with: [] +tests.exe: [DEBUG] S len: 16 +tests.exe: [DEBUG] S: {[5; 12], [5; 20], [7; 12], [7; 20], [10; 12], [10; 20], [12; 12], [12; 20], [18; 21], [20; 21], [21; 30], [28; 31], [29; 31], [30; 31], [31; 32], [32]} +tests.exe: [DEBUG] [Level 14] Stitched! Evaluating Appl argument, using stitched stack + [31]: +tests.exe: [DEBUG] { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: {} -> {} +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 9 -> 9 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 9; tl = {} } -> { hd = 9; tl = {} } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 8 -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 8; tl = { hd = 9; tl = {} } } -> { hd = 8; tl = { hd = 9; tl = {} } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: 7 -> 7 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 14] *** Var Local (l/35) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 14] *** Var (l, 35) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/35 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 13] *** Var Non-Local (l/19) **** +tests.exe: [INFO] [Level 13] *** Var (l, 19) **** +tests.exe: [DEBUG] [Var Non-Local] r2: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: l/19 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 12] *** Var Local (lst/6) **** +tests.exe: [DEBUG] [Var Local] r1: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [INFO] [Level 12] *** Var (lst, 6) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lst/6 -> { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } } +tests.exe: [DEBUG] [Level 11][Proj] r0: { hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }.hd +tests.exe: [DEBUG] [Level 11] *** Proj *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (lst/6.hd) -> 7 +tests.exe: [INFO] [Level 10] *** Var Local (b/26) **** +tests.exe: [DEBUG] [Var Local] r1: 7 +tests.exe: [INFO] [Level 10] *** Var (b, 26) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: b/26 -> 7 +tests.exe: [DEBUG] [Level 9] Evaluated binop to (1 7) +tests.exe: [INFO] [Level 9] *** Binop ((1 + b/26)) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (1 + b/26) -> 8 +tests.exe: [DEBUG] [App] r2: 8 +tests.exe: [INFO] [Level 8] *** App (id/3 f/4 ((lst/6.hd)), 7) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: id/3 f/4 ((lst/6.hd)) -> 8 +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] [Level 6] *** If false *** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) } -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] [App] r2: { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [INFO] [Level 5] *** App (lp/16 lp/17 l/19, 20) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: lp/16 lp/17 l/19 -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] [App] r2: { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [INFO] [Level 4] *** App ((fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }), 21) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }) -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] [App] r2: { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [INFO] [Level 3] *** App (my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }), 30) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } }) -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] [App] r2: { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [INFO] [Level 2] *** App ((fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })), 31) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) })) -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] [App] r2: { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [INFO] [Level 1] *** App ((fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> + (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) ( + fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }))) ( + fun xx -> + xx/0), 32) **** +tests.exe: [DEBUG] [Cache] Not found +tests.exe: [DEBUG] [Cache] Add: (fun id -> + (fun my_map -> + my_map/24 (id/25 (fun b -> (1 + b/26))) ({ hd = 7; tl = { hd = 8; tl = { hd = 9; tl = {} } } })) ( + fun f -> + fun l -> + (fun lp -> lp/16 lp/17 l/19) (fun self -> + fun lst -> + if (not (hd in lst/2)) then + {} + else + { hd = id/3 f/4 ((lst/6.hd)); tl = self/8 self/9 ((lst/11.tl)) }))) ( + fun xx -> + xx/0) -> { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } +tests.exe: [DEBUG] Result: { hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = stub } } } } diff --git a/program_analysis/display/lib.ml b/program_analysis/display/lib.ml index d81d201..4957a97 100644 --- a/program_analysis/display/lib.ml +++ b/program_analysis/display/lib.ml @@ -7,7 +7,6 @@ open Grammar open Grammar.DAtom open Utils open Pa.Exns -open Pa.Logging let rec prune_d ?(k = 1) d = map_d d ~f:(fun (l, d) -> (l, if k = 0 then DNil else prune_d d ~k:(k - 1))) @@ -99,7 +98,7 @@ let rec analyze expr d s sfrag v level = debug (fun m -> m "Stubbed DApp"); (dres_singleton (DStubAtom stub_key), s, sfrag)) else ( - debug_plain "Didn't stub DApp"; + debug (fun m -> m "Didn't stub DApp"); debug (fun m -> m "Key (expr): %d" (get_label expr)); debug (fun m -> m "Key (D): %a" Pp.pp_d d); debug (fun m -> m "Key (S): %a" pp_s s); @@ -142,7 +141,7 @@ let rec analyze expr d s sfrag v level = m "[Level %d] Stubbed DVar (%a)" level Pp.pp_expr expr); (dres_singleton (DStubAtom stub_key), s, sfrag)) else ( - debug_plain "Didn't stub DVar"; + debug (fun m -> m "Didn't stub DVar"); debug (fun m -> m "Key (expr): %a" Pp.pp_expr expr); debug (fun m -> m "Key (D): %a" Pp.pp_d d); debug (fun m -> m "Key (S): %a" pp_s s); @@ -170,7 +169,7 @@ let rec analyze expr d s sfrag v level = (* if not (m < length_d d1) then acc else if m - 1 >= 0 then ( let l_app, d = nth_exn_d d m in - debug_plain "m - 1 case"; + debug (fun m -> m "m - 1 case"; let l_app', d' = nth_exn_d d1 (m - 1) in if l_app = l_app' then ( debug (fun m -> @@ -190,7 +189,7 @@ let rec analyze expr d s sfrag v level = | _ -> raise Unreachable) else acc) else if matches_d d d1 then ( - debug_plain "m case"; + debug (fun m -> m "m case"; debug (fun m -> m "[Level %d][DVar (%a)] Stitched!" level Pp.pp_expr expr); debug (fun m_ -> m_ "Accessing index %d of %a" m Pp.pp_d d1); diff --git a/program_analysis/simple/debug_utils.ml b/program_analysis/simple/debug_utils.ml new file mode 100644 index 0000000..99c4fe8 --- /dev/null +++ b/program_analysis/simple/debug_utils.ml @@ -0,0 +1,20 @@ +let report_runtime = ref false + +let parse s = + s |> Core.Fn.flip ( ^ ) ";;" |> Lexing.from_string + |> Interp.Parser.main Interp.Lexer.token + +let parse_analyze ?(name = "test") s = + s |> parse |> Lib.analyze |> fun (r, runtime) -> + if !report_runtime then Format.printf "%s: %f\n" name runtime; + r + +let unparse = Format.asprintf "%a" Utils.Res.pp + +let parse_analyze_unparse ?(name = "test") s = + s |> parse_analyze ~name |> unparse + +let pau = parse_analyze_unparse + +let parse_analyze_print s = + s |> parse_analyze |> Format.printf "==> %a\n" Utils.Res.pp diff --git a/program_analysis/simple/debugutils.ml b/program_analysis/simple/debugutils.ml deleted file mode 100644 index bd20f21..0000000 --- a/program_analysis/simple/debugutils.ml +++ /dev/null @@ -1,20 +0,0 @@ -open Lib -open Utils - -let is_debug_mode = ref false - -let parse s = - s ^ ";;" |> Lexing.from_string |> Interp.Parser.main Interp.Lexer.token - |> fun e -> - (* keep labeling consistent across multiple calls - to `analyze` *) - Interp.Ast.reset_label (); - e - -let unparse r = Format.asprintf "%a" pp_res (Core.Set.elements r) -let parse_analyze s = s |> parse |> analyze ~debug_mode:!is_debug_mode -let parse_analyze_unparse s = s |> parse_analyze |> unparse -let pau = parse_analyze_unparse - -let parse_analyze_print s = - s |> parse_analyze |> Core.Set.elements |> Format.printf "==> %a\n" pp_res diff --git a/program_analysis/simple/dune b/program_analysis/simple/dune index 7a7fcf9..9e01c5b 100644 --- a/program_analysis/simple/dune +++ b/program_analysis/simple/dune @@ -3,7 +3,7 @@ (public_name dde.simple_pa) (preprocess (pps ppx_deriving.show ppx_let ppx_jane landmarks-ppx --auto)) - (modules lib grammar solver simplifier utils debugutils) - (libraries hashset core z3 logs logs.fmt dde.interp dde.pa) + (modules lib utils simplifier debug_utils exns) + (libraries core logs logs.fmt dde.interp) (instrumentation (backend landmarks --auto))) diff --git a/program_analysis/simple/exns.ml b/program_analysis/simple/exns.ml new file mode 100644 index 0000000..4064812 --- /dev/null +++ b/program_analysis/simple/exns.ml @@ -0,0 +1,3 @@ +exception Unreachable +exception BadAssert +exception Runtime_error diff --git a/program_analysis/simple/grammar.ml b/program_analysis/simple/grammar.ml deleted file mode 100644 index f42775b..0000000 --- a/program_analysis/simple/grammar.ml +++ /dev/null @@ -1,173 +0,0 @@ -open Core -open Interp.Ast - -module S_key = struct - module T = struct - type t = sigma [@@deriving compare, sexp, show { with_path = false }, hash] - end - - include T - include Comparable.Make (T) -end - -module St = struct - module T = struct - type lstate = int * sigma - [@@deriving compare, sexp, hash, show { with_path = false }] - - type estate = expr * sigma - [@@deriving compare, sexp, hash, show { with_path = false }] - - type t = Lstate of lstate | Estate of estate - [@@deriving compare, sexp, hash, show { with_path = false }] - end - - include T - include Comparable.Make (T) -end - -module V_key = struct - module T = struct - type lstate = int * sigma * string [@@deriving compare, sexp, hash] - - let show_lstate (l, sigma, s) = - Format.sprintf "(%d, %s, %s)" l (S_key.show sigma) s - - let pp_lstate fmt lst = Format.fprintf fmt "%s" (show_lstate lst) - - type estate = expr * sigma * string [@@deriving compare, sexp, hash] - - let show_estate (e, sigma, s) = - Format.asprintf "(%a, %s, %s)" Interp.Ast.pp_expr e (S_key.show sigma) s - - let pp_estate fmt est = Format.fprintf fmt "%s" (show_estate est) - - type t = Lstate of lstate | Estate of estate - [@@deriving compare, sexp, hash] - - let show (k : t) = - match k with - | Lstate st -> Format.asprintf "%a" pp_lstate st - | Estate st -> Format.asprintf "%a" pp_estate st - end - - include T - include Comparable.Make (T) -end - -module Cache_key = struct - module T = struct - type t = expr * sigma * string * string [@@deriving compare, sexp, hash] - end - - include T - include Comparable.Make (T) -end - -module V = struct - module T = struct - type t = Set.M(V_key).t [@@deriving compare, sexp] - - let show (v : t) = - v |> Set.to_list |> List.map ~f:V_key.show |> String.concat ~sep:", " - |> Format.sprintf "{%s}" - end - - include T - include Comparable.Make (T) -end - -module S = struct - module T = struct - type t = Set.M(S_key).t [@@deriving compare, sexp] - - let show (s : t) = - s |> Set.to_list |> List.map ~f:S_key.show |> String.concat ~sep:", " - |> Format.sprintf "{%s}" - end - - include T - include Comparable.Make (T) -end - -module Freq_key = struct - module T = struct - type t = expr * sigma * string * string [@@deriving compare, sexp] - end - - include T - include Comparable.Make (T) -end - -open Core -open Interp.Ast - -module rec Atom : sig - type t = - | IntAnyAtom - | IntAtom of int - | BoolAtom of bool - | FunAtom of expr * int * sigma - | LStubAtom of (int * sigma) - | EStubAtom of (expr * sigma) - | RecAtom of (ident * Res.t) list - | ProjAtom of Res.t * ident - | InspAtom of ident * Res.t - | AssertAtom of ident * Res.t * res_val_fv - [@@deriving compare, sexp] -end = struct - type t = - | IntAnyAtom - | IntAtom of int - | BoolAtom of bool - | FunAtom of expr * int * sigma - | LStubAtom of (int * sigma) - | EStubAtom of (expr * sigma) - | RecAtom of (ident * Res.t) list - | ProjAtom of Res.t * ident - | InspAtom of ident * Res.t - | AssertAtom of ident * Res.t * res_val_fv - [@@deriving compare, sexp] -end - -and Res_key : sig - type t = Atom.t [@@deriving compare, sexp] - type comparator_witness - - val comparator : (t, comparator_witness) Comparator.t -end = struct - module T = struct - type t = Atom.t [@@deriving compare, sexp] - end - - include T - include Comparable.Make (T) -end - -and Res : sig - type t = Set.M(Res_key).t [@@deriving compare, sexp] -end = struct - type t = Set.M(Res_key).t [@@deriving compare, sexp] -end - -type pi = (Res.t * bool) option [@@deriving compare] - -module Z3ExprKey = struct - module T = struct - open Z3 - - type t = Expr.expr - - let compare = Expr.compare - let sexp_of_t e = e |> Expr.ast_of_expr |> AST.to_sexpr |> Sexp.of_string - let t_of_sexp s = failwith "unimplemented" - let hash e = e |> Expr.ast_of_expr |> AST.hash - end - - include T - include Comparable.Make (T) -end - -let empty_res = Set.empty (module Res_key) -let single_res = Set.singleton (module Res_key) -let unwrap_res = Set.elements diff --git a/program_analysis/simple/lib.ml b/program_analysis/simple/lib.ml index 46dd9ec..794c082 100644 --- a/program_analysis/simple/lib.ml +++ b/program_analysis/simple/lib.ml @@ -1,16 +1,10 @@ open Core open Logs open Interp.Ast -open Pa.Exns -open Pa.Logging -open Grammar +open Exns open Utils -open Solver open Simplifier -(* max recursion depth ever reached by execution *) -let max_d = ref 0 - let rec eval_assert_aux e = match e with | Int i -> IntResFv i @@ -50,7 +44,7 @@ let rec eval_assert_aux e = Format.printf "%a" Interp.Pp.pp_expr e; raise BadAssert -(** only allows the following forms: +(** only allow the following forms: - arbitrary variable-free arithmetic - - not @@ -91,175 +85,21 @@ let eval_assert e id = | _ -> eval_assert_aux e') | _ -> raise BadAssert -let log_v_set = Set.iter ~f:(fun st -> debug (fun m -> m "%s" (V_key.show st))) - -let elim_stub r label = - if not (exists_stub r label) then r - else - let bases = - Set.fold r ~init:empty_res ~f:(fun acc a -> - match a with - | RecAtom _ when not (exists_stub (single_res a) label) -> - Set.add acc a - | ProjAtom (r, Ident key) when not (exists_stub r label) -> ( - match unwrap_res r with - | [ RecAtom rs ] -> ( - match - List.find rs ~f:(fun (Ident key', _) -> String.(key = key')) - with - | Some (_, r') when Set.length r' = 1 -> - Set.add acc (r' |> unwrap_res |> List.hd_exn) - | _ -> raise Runtime_error) - | _ -> acc) - | FunAtom _ -> Set.add acc a - | _ -> acc) - in - Set.fold r ~init:empty_res ~f:(fun acc a -> - match a with - | ProjAtom (r, Ident key) -> ( - match unwrap_res r with - | [ EStubAtom st ] when St.(label = Estate st) -> - Set.fold bases ~init:acc ~f:(fun acc -> function - | RecAtom es -> ( - match - List.find es ~f:(fun (Ident key', _) -> - String.(key = key')) - with - | Some (_, r) -> Set.union acc r - | None -> acc) - | _ -> raise Runtime_error) - | _ -> Set.add acc a) - (* (fun x -> x) | stub *) - | EStubAtom st when St.(label = Estate st) -> acc - | _ -> Set.add acc a) - -module ReaderState = struct - module T = struct - type cache = Res.t Map.M(Cache_key).t - type vids = string Map.M(V).t - type sids = string Map.M(S).t - type freqs = int64 Map.M(Freq_key).t - type env = { v : V.t; vids : vids; cnt : int } - type state = { s : S.t; c : cache; freqs : freqs; sids : sids; cnt : int } - type 'a t = env -> state -> 'a * state - - let return (a : 'a) : 'a t = fun _ st -> (a, st) - - let bind (m : 'a t) ~(f : 'a -> 'b t) : 'b t = - fun env st -> - let a, st' = m env st in - f a env st' - - let map = `Define_using_bind - let ask () : env t = fun env st -> (env, st) - - let local (f : env -> env) (m : 'a t) : 'a t = - fun env st -> - let ({ v; vids; cnt } as env') = f env in - let vids', cnt' = - if Map.mem vids v then (vids, cnt) - else (Map.add_exn vids ~key:v ~data:(Format.sprintf "V%d" cnt), cnt + 1) - in - m { env' with vids = vids'; cnt = cnt' } st - - let get () : state t = fun _ st -> (st, st) - let get_vid v : string t = fun { vids; _ } st -> (Map.find_exn vids v, st) - - let get_sid s : string t = - fun _ ({ sids; _ } as st) -> (Map.find_exn sids s, st) - - let set_s s : unit t = - fun _ ({ sids; cnt; _ } as st) -> - let sids', cnt' = - if Map.mem sids s then (sids, cnt) - else (Map.add_exn sids ~key:s ~data:(Format.sprintf "S%d" cnt), cnt + 1) - in - ((), { st with s; sids = sids'; cnt = cnt' }) - - let set_cache c : unit t = fun _ st -> ((), { st with c }) - - let inc_freq freq_key : unit t = - fun _ ({ freqs; _ } as st) -> - let freqs' = - match Map.find freqs freq_key with - | None -> Map.add_exn freqs ~key:freq_key ~data:1L - | Some freq -> - Map.add_exn - (Map.remove freqs freq_key) - ~key:freq_key - ~data:Int64.(freq + 1L) - in - ((), { st with freqs = freqs' }) - end - - include T - include Monad.Make (T) -end - open ReaderState open ReaderState.Let_syntax let cache key data = let%bind { c; _ } = get () in let%bind () = set_cache (Map.add_exn (Map.remove c key) ~key ~data) in + let expr, _, _, _ = key in + (match Map.find c key with + | Some r -> debug (fun m -> m "[Cache] Found: %a" Res.pp r) + | None -> debug (fun m -> m "[Cache] Not found")); + debug (fun m -> m "[Cache] Add: %a -> %a" Interp.Pp.pp_expr expr Res.pp data); return data -let print_freqs ?(sort = true) freqs = - freqs |> Map.to_alist |> fun freqs -> - (if not sort then freqs - else - List.sort freqs ~compare:(fun (_, freq1) (_, freq2) -> - Int64.descending freq1 freq2)) - |> List.iter ~f:(fun ((e, sigma, vid, sid), freq) -> - Format.printf "(%a, %a, %s, %s) -> %Ld\n" Interp.Pp.pp_expr e pp_sigma - sigma vid sid freq) - -let print_vids ?(size = false) ?(sort = false) vids = - vids |> Map.to_alist |> fun vids -> - (if not sort then vids - else - List.sort vids ~compare:(fun (_, id1) (_, id2) -> - String.descending id1 id2)) - |> List.iter ~f:(fun (key, data) -> - if size then Format.printf "%d -> %s\n" (Set.length key) data - else Format.printf "%s -> %s\n" (V.show key) data) - -let print_sids ?(size = false) = - Map.iteri ~f:(fun ~key ~data -> - if size then Format.printf "%d -> %s\n" (Set.length key) data - else Format.printf "%s -> %s\n" (S.show key) data) - -let start_time = ref (Stdlib.Sys.time ()) -let bool_tf_res = Set.of_list (module Res_key) [ BoolAtom true; BoolAtom false ] - -let all_combs_int r1 r2 op = - let open Atom in - Set.fold r1 ~init:empty_res ~f:(fun acc a1 -> - Set.fold r2 ~init:acc ~f:(fun acc a2 -> - match (a1, a2) with - | IntAtom b1, IntAtom b2 -> Set.add acc (IntAtom (op b1 b2)) - | _ -> Set.add acc IntAnyAtom)) - -let all_combs_bool r1 r2 op = - let open Atom in - Set.fold r1 ~init:empty_res ~f:(fun acc a1 -> - Set.fold r2 ~init:acc ~f:(fun acc a2 -> - match (a1, a2) with - | BoolAtom b1, BoolAtom b2 -> Set.add acc (BoolAtom (op b1 b2)) - | _ -> Set.union acc bool_tf_res)) - -let all_combs_bool' r1 r2 op = - let open Atom in - Set.fold r1 ~init:empty_res ~f:(fun acc a1 -> - Set.fold r2 ~init:acc ~f:(fun acc a2 -> - match (a1, a2) with - | IntAtom i1, IntAtom i2 -> Set.add acc (BoolAtom (op i1 i2)) - | _ -> Set.union acc bool_tf_res)) - -(* (true | false) && true *) - -let rec analyze_aux d expr sigma pi : Res.t T.t = - let%bind { v; vids; _ } = ask () in +let rec analyze_aux d expr sigma : Res.t T.t = + let%bind { v; rerun; iter; _ } = ask () in let%bind { c; s; sids; freqs; _ } = get () in let d = d + 1 in if d > !max_d then max_d := d; @@ -271,37 +111,40 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = let%bind () = inc_freq (expr, sigma, vid, sid) in let cache_key = (expr, sigma, vid, sid) in match Map.find c cache_key with - | Some r -> - (* Logs.debug (fun m -> m "Cache hit"); *) + | Some r when (not rerun) || iter = 2 -> + debug (fun m -> m "Cache hit: %a -> %a" Interp.Pp.pp_expr expr Res.pp r); return r - | None -> + | _ -> let%bind r = match expr with | Int i -> return (single_res (IntAtom i)) | Bool b -> return (single_res (BoolAtom b)) - | Function (_, _, l) -> return (single_res (FunAtom (expr, l, sigma))) + | Function (_, _, l) -> + debug (fun m -> m "=== Fun ==="); + return (single_res (FunAtom (expr, l, sigma))) | Appl (e, _, l) -> info (fun m -> - m "[Level %d] === Appl (%a) ====" d Interp.Pp.pp_expr expr); + m "[Level %d] === App (%a, %d) ====" d Interp.Pp.pp_expr expr l); let cycle_label = (l, sigma) in let v_state = V_key.Lstate (l, sigma, sid) in if Set.mem v v_state then ( (* App Stub *) - debug_plain "Stubbed"; + debug (fun m -> m "Stubbed"); info (fun m -> - m "[Level %d] *** Appl (%a) ****" d Interp.Pp.pp_expr expr); + m "[Level %d] *** App (%a, %d) ****" d Interp.Pp.pp_expr expr + l); return (single_res (LStubAtom cycle_label))) else ( (* App *) - debug_plain "Didn't stub"; + debug (fun m -> m "Didn't stub"); debug (fun m -> m "sigma: %a" pp_sigma sigma); let sigma' = l :: sigma in let pruned_sigma' = prune_sigma sigma' in debug (fun m -> m "sigma_pruned': %a" pp_sigma pruned_sigma'); debug (fun m -> m "Evaluating function being applied: %a" Interp.Pp.pp_expr e); - let%bind r1 = analyze_aux d e sigma pi in - debug (fun m -> m "[Appl] r1 length: %d" (Set.length r1)); + let%bind r1 = analyze_aux d e sigma in + debug (fun m -> m "[App] r1 length: %d" (Set.length r1)); let%bind { s = s1; _ } = get () in let v_state_s = Set.add s1 pruned_sigma' in let%bind () = set_s v_state_s in @@ -311,15 +154,15 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = Set.fold r1 ~init:(return empty_res) ~f:(fun acc a -> debug (fun m -> m - "[Level %d] [Appl] Evaluating 1 possible function \ + "[Level %d] [App] Evaluating 1 possible function \ being applied:" d); - debug (fun m -> m "%a" pp_atom a); + debug (fun m -> m "%a" Atom.pp a); match a with | FunAtom (Function (_, e1, _), _, _) -> debug (fun m -> m - "[Appl] Evaluating body of function being \ + "[App] Evaluating body of function being \ applied: %a" Interp.Pp.pp_expr e1); let%bind acc_r = acc in @@ -327,39 +170,43 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = local (fun ({ v; _ } as env) -> { env with v = Set.add v v_new }) - (analyze_aux d e1 pruned_sigma' pi) + (analyze_aux d e1 pruned_sigma') in return (Set.union acc_r r0) | _ -> acc) in let r2 = elim_stub r2 (St.Lstate cycle_label) in - debug (fun m -> m "[Appl] r2: %a" pp_res (unwrap_res r2)); + debug (fun m -> m "[App] r2: %a" Res.pp r2); info (fun m -> - m "[Level %d] *** Appl (%a) ****" d Interp.Pp.pp_expr expr); + m "[Level %d] *** App (%a, %d) ****" d Interp.Pp.pp_expr expr + l); return r2) | Var (Ident x, l) -> - info (fun m -> m "[Level %d] === Var (%s, %d) ====" d x l); + info (fun m -> + m "[Level %d] === Var (%a) ====" d Interp.Pp.pp_expr expr); let cycle_label = (expr, sigma) in let est = V_key.Estate (expr, sigma, sid) in if Set.mem v est then ( (* Var Stub *) - debug_plain "Stubbed"; - info (fun m -> m "[Level %d] *** Var (%s, %d) ****" d x l); + debug (fun m -> m "Stubbed"); + info (fun m -> + m "[Level %d] *** Var (%a) ****" d Interp.Pp.pp_expr expr); return (single_res (EStubAtom cycle_label))) else ( - debug_plain "Didn't stub"; + debug (fun m -> m "Didn't stub"); match get_myfun l with | Some (Function (Ident x1, _, l_myfun)) -> if String.(x = x1) then ( (* Var Local *) info (fun m -> - m "[Level %d] === Var Local (%s, %d) ====" d x l); + m "[Level %d] === Var Local (%a) ====" d + Interp.Pp.pp_expr expr); debug (fun m -> m "sigma: %a" pp_sigma sigma); let s_hd, s_tl = (List.hd_exn sigma, List.tl_exn sigma) in match get_myexpr s_hd with | Appl (_, e2, l') -> let%bind r1 = - debug_plain "Begin stitching stacks"; + debug (fun m -> m "Begin stitching stacks"); debug (fun m -> m "Head of candidate fragments must be: %d" l'); debug (fun m -> @@ -391,16 +238,16 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = local (fun ({ v; _ } as env) -> { env with v = Set.add v est }) - (analyze_aux d e2 sigma_i_tl pi) + (analyze_aux d e2 sigma_i_tl) in return (Set.union acc_r r0)) else acc) in info (fun m -> - m "[Level %d] *** Var Local (%s, %d) ****" d x l); + m "[Level %d] *** Var Local (%a) ****" d + Interp.Pp.pp_expr expr); let r1 = elim_stub r1 (St.Estate cycle_label) in - debug (fun m -> - m "[Var Local] r1: %a" pp_res (unwrap_res r1)); + debug (fun m -> m "[Var Local] r1: %a" Res.pp r1); info (fun m -> m "[Level %d] *** Var (%s, %d) ****" d x l); return r1 @@ -408,28 +255,30 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = else ( (* Var Non-Local *) info (fun m -> - m "[Level %d] === Var Non-Local (%s, %d) ====" d x l); + m "[Level %d] === Var Non-Local (%a) ====" d + Interp.Pp.pp_expr expr); debug (fun m -> m "sigma: %a" pp_sigma sigma); - debug_plain "Reading Appl at front of sigma"; + debug (fun m -> m "Reading App at front of sigma"); match get_myexpr (List.hd_exn sigma) with | Appl (e1, _, l2) -> - debug_plain "Function being applied at front of sigma:"; + debug (fun m -> + m "Function being applied at front of sigma:"); debug (fun m -> m "%a" Interp.Pp.pp_expr e1); - debug (fun m -> m "%a" Interp.Ast.pp_expr e1); - if Set.mem v (V_key.Estate (e1, sigma, sid)) then ( - debug_plain "Stubbed e1"; + let e1st = V_key.Estate (e1, sigma, sid) in + if Set.mem v e1st (* && rerun = 2 *) then ( + debug (fun m -> m "Stubbed e1"); return (single_res (EStubAtom (e1, sigma)))) else let sigma_tl = List.tl_exn sigma in - debug_plain "Begin stitching stacks"; + debug (fun m -> m "Begin stitching stacks"); (* enumerate all matching stacks in the set *) debug (fun m -> m "S len: %d" (Set.length s)); debug (fun m -> m "S: %s" (S.show s)); let%bind r1 = Set.fold s ~init:(return empty_res) ~f:(fun acc sigma_i -> - debug (fun m -> - m "sigma_i: %s" (S_key.show sigma_i)); + (* debug (fun m -> + m "sigma_i: %s" (S_key.show sigma_i)); *) let sigma_i_hd, sigma_i_tl = (List.hd_exn sigma_i, List.tl_exn sigma_i) in @@ -440,21 +289,28 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = then ( debug (fun m -> m - "[Level %d] Stitched! Evaluating \ - function being applied at front of \ - sigma, using stitched stack %a" - d pp_sigma sigma_i_tl); + " [Level %d][Var Non-Local] Stitched! \ + Evaluating %a, using stitched stack \ + %a" + d Interp.Pp.pp_expr e1 pp_sigma + sigma_i_tl); let%bind acc_r = acc in let%bind r0 = local - (fun ({ v; _ } as env) -> - { env with v = Set.add v est }) - (analyze_aux d e1 sigma_i_tl pi) + (fun ({ v; rerun; iter; _ } as env) -> + { + env with + v = Set.add v e1st; + rerun = true; + iter = iter + 1; + }) + (analyze_aux d e1 sigma_i_tl) in + debug (fun m -> + m "[Var Non-Local] r0: %a" Res.pp r0); return (Set.union acc_r r0)) else acc) in - (* TODO: Eval(r1) *) debug (fun m -> m "r1 length: %d" (Set.length r1)); debug (fun m -> m @@ -469,7 +325,7 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = "[Level %d] Visiting 1 possible function \ for e1:" d); - debug (fun m -> m "%a" pp_atom a); + debug (fun m -> m "%a" Atom.pp a); match a with | FunAtom (Function (Ident x1', _, l1), _, sigma1) -> @@ -486,42 +342,40 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = { env with v = Set.add v est }) (analyze_aux d (Var (Ident x, l1)) - sigma1 pi) + sigma1) in return (Set.union acc_r r0')) else acc | _ -> acc) in info (fun m -> - m "[Level %d] *** Var Non-Local (%s, %d) ****" d x - l); + m "[Level %d] *** Var Non-Local (%a) ****" d + Interp.Pp.pp_expr expr); info (fun m -> m "[Level %d] *** Var (%s, %d) ****" d x l); let r2 = elim_stub r2 (St.Estate cycle_label) in - debug (fun m -> - m "[Var Non-Local] r2: %a" pp_res (unwrap_res r2)); + debug (fun m -> m "[Var Non-Local] r2: %a" Res.pp r2); return r2 | _ -> raise Unreachable [@coverage off]) | _ -> raise Unreachable [@coverage off]) | If (e, e_true, e_false, l) -> ( debug (fun m -> m "[Level %d] === If ===" d); - let%bind r_cond = analyze_aux d e sigma None in - match unwrap_res r_cond with + let%bind r_cond = analyze_aux d e sigma in + match Set.elements r_cond with | [ BoolAtom b ] -> debug (fun m -> m "[Level %d] === If %b ===" d b); if b then ( - let%bind r_true = analyze_aux d e_true sigma None in + let%bind r_true = analyze_aux d e_true sigma in debug (fun m -> m "[Level %d] *** If %b ***" d b); return r_true) else - let%bind r_false = analyze_aux d e_false sigma None in + let%bind r_false = analyze_aux d e_false sigma in debug (fun m -> m "[Level %d] *** If %b ***" d b); return r_false | _ -> debug (fun m -> m "[Level %d] === If Both ===" d); - (* Format.printf "r_cond: %a\n" pp_res r_cond; *) - let%bind r_true = analyze_aux d e_true sigma None in - let%bind r_false = analyze_aux d e_false sigma None in + let%bind r_true = analyze_aux d e_true sigma in + let%bind r_false = analyze_aux d e_false sigma in debug (fun m -> m "[Level %d] *** If Both ***" d); return (Set.union r_true r_false)) | Plus (e1, e2) @@ -536,11 +390,11 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = | Lt (e1, e2) -> info (fun m -> m "[Level %d] === Binop (%a) ====" d Interp.Pp.pp_expr expr); - let%bind r1 = analyze_aux d e1 sigma pi in - let%bind r2 = analyze_aux d e2 sigma pi in + let%bind r1 = analyze_aux d e1 sigma in + let%bind r2 = analyze_aux d e2 sigma in debug (fun m -> - m "[Level %d] Evaluated binop to (%a %a)" d Utils.pp_res - (unwrap_res r1) Utils.pp_res (unwrap_res r2)); + m "[Level %d] Evaluated binop to (%a %a)" d Res.pp r1 + Res.pp r2); info (fun m -> m "[Level %d] *** Binop (%a) ****" d Interp.Pp.pp_expr expr); return @@ -557,90 +411,77 @@ let rec analyze_aux d expr sigma pi : Res.t T.t = | Lt _ -> all_combs_bool' r1 r2 ( < ) | _ -> raise Unreachable [@coverage off]) | Not e -> - let%bind r = analyze_aux d e sigma pi in + let%bind r = analyze_aux d e sigma in return - (match unwrap_res r with + (match Set.elements r with | [] -> empty_res | [ BoolAtom b ] -> single_res (BoolAtom (not b)) | _ -> bool_tf_res) | Record es -> - (* if List.is_empty es then return (single_res (RecAtom [])) - else *) es |> List.fold_right ~init:(return []) ~f:(fun (id, ei) acc -> let%bind rs = acc in - let%bind r = analyze_aux d ei sigma pi in + let%bind r = analyze_aux d ei sigma in return ((id, r) :: rs)) |> fun rs -> let%bind rs = rs in return (single_res (RecAtom rs)) | Projection (e, (Ident x as id)) -> debug (fun m -> m "[Level %d] === Proj ===" d); - let%bind r0 = analyze_aux d e sigma pi in - debug (fun m -> - m "[Level %d][Proj] r0: %a.%s" d pp_res (unwrap_res r0) x); + let%bind r0 = analyze_aux d e sigma in + debug (fun m -> m "[Level %d][Proj] r0: %a.%s" d Res.pp r0 x); debug (fun m -> m "[Level %d] *** Proj ***" d); return (single_res (ProjAtom (r0, id))) | Inspection ((Ident x as id), e) -> debug (fun m -> m "[Level %d] === Insp ===" d); - let%bind r0 = analyze_aux d e sigma pi in - debug (fun m -> - m "[Level %d][Insp] r0: %s in %a" d x pp_res (unwrap_res r0)); + let%bind r0 = analyze_aux d e sigma in + debug (fun m -> m "[Level %d][Insp] r0: %s in %a" d x Res.pp r0); debug (fun m -> m "[Level %d] *** Insp ***" d); return (single_res (InspAtom (id, r0))) | LetAssert (id, e1, e2) -> - let%bind r1 = analyze_aux d e1 sigma pi in + let%bind r1 = analyze_aux d e1 sigma in let r2 = eval_assert e2 id in return (single_res (AssertAtom (id, r1, r2))) | Let _ -> raise Unreachable [@coverage off] in cache cache_key (simplify r) -let analyze ?(debug_mode = false) ?(verify = true) ?(test_num = 0) - ?(should_cache = true) e = - is_debug_mode := debug_mode; - +let analyze e = let e = transform_let e in build_myfun e None; debug (fun m -> m "%a" Interp.Pp.pp_expr e); debug (fun m -> m "%a" pp_expr e); - (* Format.printf "%a\n" pp_expr e; *) - start_time := Stdlib.Sys.time (); let empty_v = Set.empty (module V_key) in let empty_s = Set.empty (module S_key) in + + let start_time = Stdlib.Sys.time () in let r, { sids; freqs; _ } = - analyze_aux 0 e [] None - { v = empty_v; vids = Map.singleton (module V) empty_v "V0"; cnt = 1 } + analyze_aux 0 e [] + { + v = empty_v; + vids = Map.singleton (module V) empty_v "V0"; + cnt = 1; + rerun = false; + iter = 0; + } { - s = Set.empty (module S_key); c = Map.empty (module Cache_key); + s = empty_s; sids = Map.singleton (module S) empty_s "S0"; cnt = 1; freqs = Map.empty (module Freq_key); } in + let end_time = Stdlib.Sys.time () in + let runtime = end_time -. start_time in - (* print_freqs freqs; *) - - (* Format.printf "sids:\n"; - print_sids sids ~size:false; *) - - (* Format.printf "vids:\n"; - print_vids vids ~size:false; *) - - (* let r = simplify r in *) - (* dot_of_result test_num r; *) - debug (fun m -> m "Result: %a" Utils.pp_res (unwrap_res r)); - (* debug (fun m -> m "Result: %a" Grammar.pp_res r); *) - (if !is_debug_mode then ( - Format.printf "\n%s\n\n" (show_expr e); - Format.printf "****** Label Table ******\n"; - Interp.Lib.print_myexpr myexpr; - Format.printf "****** Label Table ******\n\n")) - [@coverage off]; + debug (fun m -> m "Result: %a" Res.pp r); + (* debug (fun m -> m "freqs:"); + log_freqs freqs; + debug (fun m -> m "sids:"); + log_sids sids ~size:false; *) clean_up (); - (* if verify then verify_result r; *) - r + (r, runtime) diff --git a/program_analysis/simple/simplifier.ml b/program_analysis/simple/simplifier.ml index 03621be..8feb9b9 100644 --- a/program_analysis/simple/simplifier.ml +++ b/program_analysis/simple/simplifier.ml @@ -1,8 +1,8 @@ open Core open Interp.Ast -open Pa.Exns -open Grammar -open Grammar.Atom +open Exns +open Utils +open Utils.Atom let rec exists_stub r label = Set.exists r ~f:(function @@ -14,6 +14,46 @@ let rec exists_stub r label = | ProjAtom (r, _) | InspAtom (_, r) | AssertAtom (_, r, _) -> exists_stub r label) +let elim_stub r label = + if not (exists_stub r label) then r + else + let bases = + Set.fold r ~init:empty_res ~f:(fun acc a -> + match a with + | RecAtom _ when not (exists_stub (single_res a) label) -> + Set.add acc a + | ProjAtom (r, Ident key) when not (exists_stub r label) -> ( + match Set.elements r with + | [ RecAtom rs ] -> ( + match + List.find rs ~f:(fun (Ident key', _) -> String.(key = key')) + with + | Some (_, r') when Set.length r' = 1 -> + Set.add acc (r' |> Set.elements |> List.hd_exn) + | _ -> raise Runtime_error) + | _ -> acc) + | FunAtom _ -> Set.add acc a + | _ -> acc) + in + Set.fold r ~init:empty_res ~f:(fun acc a -> + match a with + | ProjAtom (r, Ident key) -> ( + match Set.elements r with + | [ EStubAtom st ] when St.(label = Estate st) -> + Set.fold bases ~init:acc ~f:(fun acc -> function + | RecAtom es -> ( + match + List.find es ~f:(fun (Ident key', _) -> + String.(key = key')) + with + | Some (_, r) -> Set.union acc r + | None -> acc) + | _ -> raise Runtime_error) + | _ -> Set.add acc a) + (* (fun x -> x) | stub *) + | EStubAtom st when St.(label = Estate st) -> acc + | _ -> Set.add acc a) + let rec simplify ?(pa = None) r = let r' = Set.fold r ~init:empty_res ~f:(fun acc a -> diff --git a/program_analysis/simple/solver.ml b/program_analysis/simple/solver.ml deleted file mode 100644 index 0f15ceb..0000000 --- a/program_analysis/simple/solver.ml +++ /dev/null @@ -1,393 +0,0 @@ -(* open Core - open Z3 - open Grammar - open Utils - - exception Unreachable - exception BadAssert - - let res_to_id = Hashtbl.create (module ResKey) - let atom_to_id = Hashtbl.create (module AtomKey) - let fresh_id = ref (-1) - - let idr r = - Format.sprintf "P%d" - (Hashtbl.find_or_add res_to_id r ~default:(fun () -> - incr fresh_id; - !fresh_id)) - - let ida a = - let data = - (* any well-formed pairs of labeled result and stub is - such that the latter must have already been visited - by the time we get to the former *) - match a with - | LabelResAtom (_, st) -> ( - match Hashtbl.find atom_to_id (LabelStubAtom st) with - | Some id -> Some id - (* so if a stub is not found, then `a` is not involved - in any cycles *) - | None -> Hashtbl.find atom_to_id a) - | ExprResAtom (_, st) -> ( - match Hashtbl.find atom_to_id (ExprStubAtom st) with - | Some id -> Some id - | None -> Hashtbl.find atom_to_id a) - | _ -> Hashtbl.find atom_to_id a - in - let id = - match data with - | Some id -> - (* still add an entry; won't change the table if - key already exists *) - ignore (Hashtbl.add atom_to_id ~key:a ~data:id); - id - | None -> - incr fresh_id; - Hashtbl.add_exn atom_to_id ~key:a ~data:!fresh_id; - !fresh_id - in - Format.sprintf "P%d" id - - let id_to_decl = Hashtbl.create (module String) - let ctx = mk_context [] - let isort = Arithmetic.Integer.mk_sort ctx - let bsort = Boolean.mk_sort ctx - let zint i = Arithmetic.Integer.mk_numeral_i ctx i - let zbool b = Boolean.mk_val ctx b - let ztrue = zbool true - let zfalse = zbool false - let znot e = Boolean.mk_not ctx e - let zconst s sort = Expr.mk_const_s ctx s sort - let zdecl s dom ran = FuncDecl.mk_func_decl_s ctx s dom ran - let ( --> ) hyp concl = Boolean.mk_implies ctx hyp concl - let ( <-- ) f args = Expr.mk_app ctx f args - let ( === ) e1 e2 = Boolean.mk_eq ctx e1 e2 - let ( &&& ) e1 e2 = Boolean.mk_and ctx [ e1; e2 ] - let ( ||| ) e1 e2 = Boolean.mk_or ctx [ e1; e2 ] - let ( +++ ) e1 e2 = Arithmetic.mk_add ctx [ e1; e2 ] - let ( --- ) e1 e2 = Arithmetic.mk_sub ctx [ e1; e2 ] - let ( *** ) e1 e2 = Arithmetic.mk_mul ctx [ e1; e2 ] - let ( >== ) e1 e2 = Arithmetic.mk_ge ctx e1 e2 - let ( >>> ) e1 e2 = Arithmetic.mk_gt ctx e1 e2 - let ( <== ) e1 e2 = Arithmetic.mk_le ctx e1 e2 - let ( <<< ) e1 e2 = Arithmetic.mk_lt ctx e1 e2 - - let ( |. ) vars body = - Quantifier.expr_of_quantifier - (Quantifier.mk_forall_const ctx vars body None [] [] None None) - - let solver = Solver.mk_solver_s ctx "HORN" - let chcs = Hash_set.create (module Z3ExprKey) - let list_of_chcs () = Hash_set.to_list chcs - let entry_decl = ref None - - let find_or_add aid sort = - match Hashtbl.find id_to_decl aid with - (* TODO: does the same leaf atom needs to be assigned different predicates? *) - | Some pa -> pa - | None -> - let pa = zdecl aid [ sort ] bsort in - Hashtbl.add_exn id_to_decl ~key:aid ~data:pa; - pa - - let reset () = - Hashtbl.clear res_to_id; - Hashtbl.clear atom_to_id; - Hashtbl.clear id_to_decl; - Hash_set.clear chcs; - Solver.reset solver; - entry_decl := None; - fresh_id := -1 - - (** can assume good form due to call to `eval_assert` *) - let chcs_of_assert r1 (r2 : Interpreter.Ast.result_value_fv) = - let p = Hashtbl.find_exn id_to_decl (idr r1) in - let ri = zconst "r" isort in - let rb = zconst "r" bsort in - match r2 with - | BoolResultFv b -> Hash_set.add chcs ([ ri ] |. (p <-- [ ri ]) --> zbool b) - | VarResultFv id' -> - Hash_set.add chcs ([ rb ] |. (p <-- [ rb ]) --> rb === ztrue) - | OpResultFv op -> ( - match op with - | EqOpFv (v1, IntResultFv i) - | GeOpFv (v1, IntResultFv i) - | GtOpFv (v1, IntResultFv i) - | LeOpFv (v1, IntResultFv i) - | LtOpFv (v1, IntResultFv i) -> ( - let op = - match op with - | EqOpFv _ -> ( === ) - | GeOpFv _ -> ( >== ) - | GtOpFv _ -> ( >>> ) - | LeOpFv _ -> ( <== ) - | LtOpFv _ -> ( <<< ) - | _ -> raise Unreachable - in - (* LHS of assertion *) - match v1 with - | VarResultFv _ -> - Hash_set.add chcs ([ ri ] |. (p <-- [ ri ]) --> op ri (zint i)) - | ProjectionResultFv (VarResultFv _, Ident x) -> - let p = - let r1_hd = List.hd_exn r1 in - match r1_hd with - | RecordAtom _ -> - Hashtbl.find_exn id_to_decl (ida r1_hd ^ "_" ^ x) - | LabelResAtom ([ a ], _) -> - Hashtbl.find_exn id_to_decl (ida a ^ "_" ^ x) - | _ -> - (* Format.printf "%a\n" Grammar.pp_atom r1_hd; *) - raise Unreachable - in - Hash_set.add chcs ([ ri ] |. (p <-- [ ri ]) --> op ri (zint i)) - | _ -> raise Unreachable) - | NotOpFv _ -> - Hash_set.add chcs ([ rb ] |. (p <-- [ rb ]) --> (rb === zfalse)) - | _ -> raise Unreachable) - | _ -> raise BadAssert - - let rec cond pis = - if List.is_empty pis then ([], ztrue) - else - let conjs = - List.foldi pis - ~f:(fun i conjs (r, b) -> - let c = zconst (Format.sprintf "c%d" i) bsort in - let pr = zdecl (idr r) [ bsort ] bsort in - pr <-- [ c ] &&& (c === zbool b) &&& conjs) - ~init:ztrue - in - (List.mapi pis ~f:(fun i _ -> zconst (Format.sprintf "c%d" i) bsort), conjs) - - and chcs_of_atom ?(pis = []) ?(stub_sort = isort) a v = - match a with - | IntAtom i -> - let cond_quants, cond_body = cond pis in - let pa = find_or_add (ida a) isort in - let body = pa <-- [ zint i ] in - Hash_set.add chcs - (if List.is_empty cond_quants then body - else cond_quants |. cond_body --> body) - | BoolAtom b -> - let cond_quants, cond_body = cond pis in - let pa = find_or_add (ida a) bsort in - let body = pa <-- [ zbool b ] in - Hash_set.add chcs - (if List.is_empty cond_quants then body - else cond_quants |. cond_body --> body) - | OpAtom op -> ( - match op with - | PlusOp (r1, r2) - | MinusOp (r1, r2) - | MultOp (r1, r2) - | EqualOp (r1, r2) - | AndOp (r1, r2) - | OrOp (r1, r2) - | GeOp (r1, r2) - | GtOp (r1, r2) - | LeOp (r1, r2) - | LtOp (r1, r2) -> - let aid, rid1, rid2 = (ida a, idr r1, idr r2) in - let is_int_arith = - match op with PlusOp _ | MinusOp _ | MultOp _ -> true | _ -> false - in - let zop = - match op with - | PlusOp _ -> ( +++ ) - | MinusOp _ -> ( --- ) - | MultOp _ -> ( *** ) - | EqualOp _ -> ( === ) - | AndOp _ -> ( &&& ) - | OrOp _ -> ( ||| ) - | GeOp _ -> ( >== ) - | GtOp _ -> ( >>> ) - | LeOp _ -> ( <== ) - | LtOp _ -> ( <<< ) - | _ -> raise Unreachable - in - let pa = - zdecl aid [ (if is_int_arith then isort else bsort) ] bsort - in - let param_sort = - match op with - | PlusOp _ | MinusOp _ | MultOp _ | EqualOp _ | GeOp _ | GtOp _ - | LeOp _ | LtOp _ -> - isort - | _ -> bsort - in - let pr1, pr2 = - (zdecl rid1 [ param_sort ] bsort, zdecl rid2 [ param_sort ] bsort) - in - let r1_, r2_ = (zconst "r1" param_sort, zconst "r2" param_sort) in - (* don't use `add_exn` as we allow duplicates *) - ignore - ( Hashtbl.add id_to_decl ~key:aid ~data:pa, - Hashtbl.add id_to_decl ~key:rid1 ~data:pr1, - Hashtbl.add id_to_decl ~key:rid2 ~data:pr2 ); - let cond_quants, cond_body = cond pis in - chcs_of_res r1 v ~pis ~stub_sort:param_sort; - chcs_of_res r2 v ~pis ~stub_sort:param_sort; - Hash_set.add chcs - (r1_ :: r2_ :: cond_quants - |. (pr1 <-- [ r1_ ] &&& (pr2 <-- [ r2_ ]) &&& cond_body) - --> (pa <-- [ zop r1_ r2_ ])) - | NotOp r -> - let aid, rid = (ida a, idr r) in - let pa = zdecl aid [ bsort ] bsort in - let pr = zdecl rid [ bsort ] bsort in - let r_ = zconst "r" bsort in - ignore - ( Hashtbl.add id_to_decl ~key:aid ~data:pa, - Hashtbl.add id_to_decl ~key:rid ~data:pr ); - let cond_quants, cond_body = cond pis in - chcs_of_res r v ~pis ~stub_sort:bsort; - Hash_set.add chcs - ((r_ :: cond_quants |. (pr <-- [ r_ ]) &&& cond_body) - --> (pa <-- [ znot r_ ]))) - | LabelResAtom (r, _) | ExprResAtom (r, _) -> - (* derive Z3 sort for labeled result/stub pair from the sort of - the concrete disjuncts, which is sound on any proper, - terminating programs. *) - let sort = - List.fold r ~init:None ~f:(fun t a -> - (* this may assign an ID for stub to be later inherited by - its enclosing res atom but will trigger a lookup failure - (caught) at stub's (non-existent) Z3 decl *) - chcs_of_atom a v ~pis ~stub_sort; - match Hashtbl.find id_to_decl (ida a) with - | Some pa -> - (* TODO: assert that all disjuncts are of the same type *) - Some (pa |> FuncDecl.get_domain |> List.hd_exn) - | None -> t (* should hit this case at least once *)) - |> function - | Some t -> t - | None -> - Format.printf "%a\n" Grammar.pp_res r; - raise Unreachable - in - let aid = ida a in - let pa = zdecl aid [ sort ] bsort in - ignore (Hashtbl.add id_to_decl ~key:aid ~data:pa); - let rid = idr r in - let pr = zdecl rid [ sort ] bsort in - ignore (Hashtbl.add id_to_decl ~key:rid ~data:pr); - (* most of this is repetitive work, but necessary *) - chcs_of_res r v ~pis ~stub_sort; - let r_ = zconst "r" sort in - Hash_set.add chcs ([ r_ ] |. (pr <-- [ r_ ]) --> (pa <-- [ r_ ])) - | PathCondAtom (((r, _) as pi), r0) -> ( - (* generate CHCs for current path condition using - the previous path conditions *) - chcs_of_res r v ~pis ~stub_sort; - chcs_of_res r0 v ~pis:(pi :: pis) ~stub_sort; - (* point self at the same decl *) - match Hashtbl.find id_to_decl (idr r0) with - | Some decl -> ignore (Hashtbl.add id_to_decl ~key:(ida a) ~data:decl) - | None -> ()) - | FunAtom _ -> () - | LabelStubAtom (l, s) -> - if - Option.is_none - (Core.Set.find v ~f:(function - | NewSt.Lstate (l', s', _) -> Stdlib.(l = l' && s = s') - | _ -> false)) - then ( - let aid = ida a in - let pa = zdecl aid [ stub_sort ] bsort in - let r_ = zconst "r" stub_sort in - ignore (Hashtbl.add id_to_decl ~key:aid ~data:pa); - Hash_set.add chcs ([ r_ ] |. (pa <-- [ r_ ]))) - | ExprStubAtom (e, s) -> - if - Option.is_none - (Core.Set.find v ~f:(function - | NewSt.Estate (e', s', _) -> Stdlib.(e = e' && s = s') - | _ -> false)) - then ( - let aid = ida a in - let pa = zdecl aid [ stub_sort ] bsort in - let r_ = zconst "r" stub_sort in - ignore (Hashtbl.add id_to_decl ~key:aid ~data:pa); - Hash_set.add chcs ([ r_ ] |. (pa <-- [ r_ ]))) - (* records are good for: subsumes shape analysis *) - | RecordAtom _ -> () - | ProjectionAtom _ | InspectionAtom _ -> - Format.printf "%a\n" pp_atom a; - raise Unreachable - | AssertAtom (id, r1, r2) -> - chcs_of_res r1 v ~pis ~stub_sort; - chcs_of_assert r1 r2 - (* | _ -> failwith "unimplemented" *) - - and chcs_of_res ?(pis = []) ?(stub_sort = isort) r v = - let rid = idr r in - List.iter r ~f:(fun a -> - chcs_of_atom a v ~pis ~stub_sort; - let aid = ida a in - let cond_quants, cond_body = cond pis in - match Hashtbl.find id_to_decl aid with - | Some pa -> - let dom = FuncDecl.get_domain pa in - let pr = zdecl rid dom bsort in - (* the root assertion is always P0 *) - if String.(rid = "P0") then entry_decl := Some pr; - ignore (Hashtbl.add id_to_decl ~key:rid ~data:pr); - let r = zconst "r" (List.hd_exn dom) in - (* TODO: add flag to leave all path conditions out *) - Hash_set.add chcs - (r :: cond_quants |. (pa <-- [ r ] &&& cond_body) --> (pr <-- [ r ])) - | None -> () - (* match a with - | LabelStubAtom _ | ExprStubAtom _ | AssertAtom _ - | PathCondAtom (_, [ LabelStubAtom _ ]) -> - () - | _ -> failwith "resatom non-labeled")*)) - - (* let test = - [ - LabelResAtom - ([ OpAtom (PlusOp ([ IntAtom 1 ], [ LabelStubAtom (0, []) ])) ], (0, [])); - ] - - let chcs_of_test _ = - chcs_of_res test; - let chcs = Hash_set.to_list chcs in - Format.printf "CHCs:\n"; - List.iter ~f:(fun chc -> Format.printf "%s\n" (Z3.Expr.to_string chc)) chcs; - Format.printf "\nres_to_id:\n"; - Core.Hashtbl.iteri - ~f:(fun ~key ~data -> - Format.printf "key: %a\ndata: %d\n" Grammar.pp_res key data) - res_to_id; - Format.printf "\natom_to_id:\n"; - Core.Hashtbl.iteri - ~f:(fun ~key ~data -> - Format.printf "key: %a\ndata: %d\n" Grammar.pp_atom key data) - atom_to_id; - reset () *) - - let verify_result ?(v = Core.Set.empty (module NewSt)) r = - (* let solver = Z3.Solver.mk_solver_s ctx "HORN" in *) - chcs_of_res r v; - let chcs = list_of_chcs () in - Z3.Solver.add solver chcs; - - (* let start = Stdlib.Sys.time () in *) - let status = Z3.Solver.check solver [] in - - (* Format.printf "verification time: %f\n" (Stdlib.Sys.time () -. start); *) - (* List.iter chcs ~f:(fun chc -> Format.printf "%s\n" (Z3.Expr.to_string chc)); *) - match status with - | SATISFIABLE -> - (* Format.printf "sat" *) - (* let model = solver |> Z3.Solver.get_model |> Core.Option.value_exn in - model |> Z3.Model.to_string |> pf "Model:\n%s\n\n"; *) - (* solver |> Z3.Solver.to_string |> Format.printf "Solver:\n%s"; *) - reset () - | UNSATISFIABLE -> - reset (); - failwith "unsat" - | UNKNOWN -> - reset (); - failwith "unknown" *) diff --git a/program_analysis/simple/utils.ml b/program_analysis/simple/utils.ml index fb15911..984d022 100644 --- a/program_analysis/simple/utils.ml +++ b/program_analysis/simple/utils.ml @@ -1,12 +1,9 @@ open Core +open Logs open Interp.Ast -open Grammar -open Grammar.Atom -let pf = Format.printf -let pfl = pf "%s\n" +let ff = Format.fprintf let prune_sigma ?(k = 2) s = List.filteri s ~f:(fun i _ -> i < k) -let take_sigma ?(k = 2) = Fn.flip List.take (k - 1) let rec starts_with sigma_parent sigma_child = match (sigma_parent, sigma_child) with @@ -15,41 +12,311 @@ let rec starts_with sigma_parent sigma_child = | l_parent :: ls_parent, l_child :: ls_child -> l_parent = l_child && starts_with ls_parent ls_child -let pp_pair fmt (l, s) = Format.fprintf fmt "(%d, %s)" l @@ show_sigma s -let pp_pair_list fmt ls = Format.pp_print_list pp_pair fmt ls -let is_debug_mode = ref false -let ff = Format.fprintf +module S_key = struct + module T = struct + type t = sigma [@@deriving compare, sexp, show { with_path = false }, hash] + end + + include T + include Comparable.Make (T) +end + +module St = struct + module T = struct + type lstate = int * sigma + [@@deriving compare, sexp, hash, show { with_path = false }] + + type estate = expr * sigma + [@@deriving compare, sexp, hash, show { with_path = false }] + + type t = Lstate of lstate | Estate of estate + [@@deriving compare, sexp, hash, show { with_path = false }] + end + + include T + include Comparable.Make (T) +end + +module V_key = struct + module T = struct + type lstate = int * sigma * string [@@deriving compare, sexp, hash] + + let show_lstate (l, sigma, s) = + Format.sprintf "(%d, %s, %s)" l (S_key.show sigma) s + + let pp_lstate fmt lst = Format.fprintf fmt "%s" (show_lstate lst) + + type estate = expr * sigma * string [@@deriving compare, sexp, hash] + + let show_estate (e, sigma, s) = + Format.asprintf "(%a, %s, %s)" Interp.Ast.pp_expr e (S_key.show sigma) s + + let pp_estate fmt est = Format.fprintf fmt "%s" (show_estate est) + + type t = Lstate of lstate | Estate of estate + [@@deriving compare, sexp, hash] + + let show (k : t) = + match k with + | Lstate st -> Format.asprintf "%a" pp_lstate st + | Estate st -> Format.asprintf "%a" pp_estate st + end + + include T + include Comparable.Make (T) +end + +module Cache_key = struct + module T = struct + type t = expr * sigma * string * string [@@deriving compare, sexp, hash] + end + + include T + include Comparable.Make (T) +end + +module V = struct + module T = struct + type t = Set.M(V_key).t [@@deriving compare, sexp] + + let show (v : t) = + v |> Set.to_list |> List.map ~f:V_key.show |> String.concat ~sep:", " + |> Format.sprintf "{%s}" + end + + include T + include Comparable.Make (T) +end + +module S = struct + module T = struct + type t = Set.M(S_key).t [@@deriving compare, sexp] + + let show (s : t) = + s |> Set.to_list |> List.map ~f:S_key.show |> String.concat ~sep:", " + |> Format.sprintf "{%s}" + end + + include T + include Comparable.Make (T) +end + +module Freq_key = struct + module T = struct + type t = expr * sigma * string * string [@@deriving compare, sexp] + end + + include T + include Comparable.Make (T) +end + +open Core +open Interp.Ast + +module rec Atom : sig + type t = + | IntAnyAtom + | IntAtom of int + | BoolAtom of bool + | FunAtom of expr * int * sigma + | LStubAtom of (int * sigma) + | EStubAtom of (expr * sigma) + | RecAtom of (ident * Res.t) list + | ProjAtom of Res.t * ident + | InspAtom of ident * Res.t + | AssertAtom of ident * Res.t * res_val_fv + [@@deriving compare, sexp] + + val pp : Format.formatter -> Atom.t -> unit +end = struct + type t = + | IntAnyAtom + | IntAtom of int + | BoolAtom of bool + | FunAtom of expr * int * sigma + | LStubAtom of (int * sigma) + | EStubAtom of (expr * sigma) + | RecAtom of (ident * Res.t) list + | ProjAtom of Res.t * ident + | InspAtom of ident * Res.t + | AssertAtom of ident * Res.t * res_val_fv + [@@deriving compare, sexp] + + let rec pp_record fmt = function + | [] -> () + | [ (Ident x, v) ] -> Format.fprintf fmt "%s = %a" x Res.pp v + | (Ident x, r) :: rest -> + Format.fprintf fmt "%s = %a; %a" x Res.pp r pp_record rest + + and pp fmt = function + | IntAnyAtom -> ff fmt "Int" + | IntAtom i -> ff fmt "%d" i + | BoolAtom b -> ff fmt "%b" b + | FunAtom (f, _, _) -> Interp.Pp.pp_expr fmt f + | LStubAtom (l, sigma) -> + (* ff fmt "stub@(%d,%a)" l pp_sigma sigma *) + ff fmt "stub" + | EStubAtom (e, sigma) -> + (* ff fmt "stub@(%a,%a)" Interp.Pp.pp_expr e pp_sigma sigma *) + ff fmt "stub" + | RecAtom entries -> + ff fmt + (if List.length entries = 0 then "{%a}" else "{ %a }") + pp_record entries + | ProjAtom (r, Ident s) -> ff fmt "(%a.%s)" Res.pp r s + | InspAtom (Ident s, r) -> ff fmt "(%s in %a)" s Res.pp r + | AssertAtom (_, r, _) -> ff fmt "%a" Res.pp r +end + +and Res_key : sig + type t = Atom.t [@@deriving compare, sexp] + type comparator_witness + + val comparator : (t, comparator_witness) Comparator.t +end = struct + module T = struct + type t = Atom.t [@@deriving compare, sexp] + end + + include T + include Comparable.Make (T) +end + +and Res : sig + type t = Set.M(Res_key).t [@@deriving compare, sexp] + + val pp : Format.formatter -> Res.t -> unit +end = struct + type t = Set.M(Res_key).t [@@deriving compare, sexp] + + let rec pp_aux fmt = function + | [] -> () + | [ a ] -> ff fmt "%a" Atom.pp a + | a :: _as -> ff fmt "%a | %a" Atom.pp a pp_aux _as + + and pp fmt r = + if Set.is_empty r then ff fmt "#" else ff fmt "%a" pp_aux (Set.elements r) +end + +type pi = (Res.t * bool) option [@@deriving compare] + +let empty_res = Set.empty (module Res_key) +let single_res = Set.singleton (module Res_key) + +(** Reader-State monad threaded through the analysis *) +module ReaderState = struct + module T = struct + type cache = Res.t Map.M(Cache_key).t + type vids = string Map.M(V).t + type sids = string Map.M(S).t + type freqs = int64 Map.M(Freq_key).t + type env = { v : V.t; vids : vids; cnt : int; rerun : bool; iter : int } + type state = { s : S.t; c : cache; freqs : freqs; sids : sids; cnt : int } + type 'a t = env -> state -> 'a * state + + let return (a : 'a) : 'a t = fun _ st -> (a, st) + + let bind (m : 'a t) ~(f : 'a -> 'b t) : 'b t = + fun env st -> + let a, st' = m env st in + f a env st' + + let map = `Define_using_bind + let ask () : env t = fun env st -> (env, st) + + let local (f : env -> env) (m : 'a t) : 'a t = + fun env st -> + let ({ v; vids; cnt; _ } as env') = f env in + let vids', cnt' = + if Map.mem vids v then (vids, cnt) + else (Map.add_exn vids ~key:v ~data:(Format.sprintf "V%d" cnt), cnt + 1) + in + m { env' with vids = vids'; cnt = cnt' } st + + let get () : state t = fun _ st -> (st, st) + let get_vid v : string t = fun { vids; _ } st -> (Map.find_exn vids v, st) + + let get_sid s : string t = + fun _ ({ sids; _ } as st) -> (Map.find_exn sids s, st) + + let set_s s : unit t = + fun _ ({ sids; cnt; _ } as st) -> + let sids', cnt' = + if Map.mem sids s then (sids, cnt) + else (Map.add_exn sids ~key:s ~data:(Format.sprintf "S%d" cnt), cnt + 1) + in + ((), { st with s; sids = sids'; cnt = cnt' }) + + let set_cache c : unit t = fun _ st -> ((), { st with c }) + + let inc_freq freq_key : unit t = + fun _ ({ freqs; _ } as st) -> + let freqs' = + match Map.find freqs freq_key with + | None -> Map.add_exn freqs ~key:freq_key ~data:1L + | Some freq -> + Map.add_exn + (Map.remove freqs freq_key) + ~key:freq_key + ~data:Int64.(freq + 1L) + in + ((), { st with freqs = freqs' }) + end + + include T + include Monad.Make (T) +end + +(** max recursion depth ever reached by execution *) +let max_d = ref 0 + +let log_freqs ?(sort = true) freqs = + freqs |> Map.to_alist |> fun freqs -> + (if not sort then freqs + else + List.sort freqs ~compare:(fun (_, freq1) (_, freq2) -> + Int64.descending freq1 freq2)) + |> List.iter ~f:(fun ((e, sigma, vid, sid), freq) -> + debug (fun m -> + m "(%a, %a, %s, %s) -> %Ld\n" Interp.Pp.pp_expr e pp_sigma sigma + vid sid freq)) + +let log_vids ?(size = false) ?(sort = false) vids = + vids |> Map.to_alist |> fun vids -> + (if not sort then vids + else + List.sort vids ~compare:(fun (_, id1) (_, id2) -> + String.descending id1 id2)) + |> List.iter ~f:(fun (key, data) -> + if size then debug (fun m -> m "%d -> %s\n" (Set.length key) data) + else debug (fun m -> m "%s -> %s\n" (V.show key) data)) + +let log_sids ?(size = false) = + Map.iteri ~f:(fun ~key ~data -> + if size then debug (fun m -> m "%d -> %s\n" (Set.length key) data) + else debug (fun m -> m "%s -> %s\n" (S.show key) data)) + +let bool_tf_res = Set.of_list (module Res_key) [ BoolAtom true; BoolAtom false ] + +let all_combs_int r1 r2 op = + Set.fold r1 ~init:empty_res ~f:(fun acc a1 -> + Set.fold r2 ~init:acc ~f:(fun acc a2 -> + match (a1, a2) with + | Atom.IntAtom b1, Atom.IntAtom b2 -> Set.add acc (IntAtom (op b1 b2)) + | _ -> Set.add acc IntAnyAtom)) + +let all_combs_bool r1 r2 op = + Set.fold r1 ~init:empty_res ~f:(fun acc a1 -> + Set.fold r2 ~init:acc ~f:(fun acc a2 -> + match (a1, a2) with + | Atom.BoolAtom b1, Atom.BoolAtom b2 -> + Set.add acc (BoolAtom (op b1 b2)) + | _ -> Set.union acc bool_tf_res)) -let rec pp_atom fmt = function - | IntAnyAtom -> ff fmt "Int" - | IntAtom i -> ff fmt "%d" i - | BoolAtom b -> ff fmt "%b" b - | FunAtom (f, _, _) -> Interp.Pp.pp_expr fmt f - | LStubAtom (l, sigma) -> - (* ff fmt "stub@(%d,%a)" l pp_sigma sigma *) - ff fmt "stub" - | EStubAtom (e, sigma) -> - (* ff fmt "stub@(%a,%a)" Interp.Pp.pp_expr e pp_sigma sigma *) - ff fmt "stub" - | RecAtom entries -> - ff fmt - (if List.length entries = 0 then "{%a}" else "{ %a }") - pp_record_atom entries - | ProjAtom (r, Ident s) -> ff fmt "(%a.%s)" pp_res (Set.elements r) s - | InspAtom (Ident s, r) -> ff fmt "(%s in %a)" s pp_res (Set.elements r) - | AssertAtom (_, r, _) -> ff fmt "%a" pp_res (Set.elements r) - -and pp_record_atom fmt = function - | [] -> () - | [ (Ident x, v) ] -> Format.fprintf fmt "%s = %a" x pp_res (Set.elements v) - | (Ident x, r) :: rest -> - Format.fprintf fmt "%s = %a; %a" x pp_res (Set.elements r) pp_record_atom - rest - -and pp_res fmt r = - if List.is_empty r then ff fmt "#" else ff fmt "%a" pp_res_aux r - -and pp_res_aux fmt = function - | [] -> () - | [ a ] -> ff fmt "%a" pp_atom a - | a :: _as -> ff fmt "%a | %a" pp_atom a pp_res _as +let all_combs_bool' r1 r2 op = + Set.fold r1 ~init:empty_res ~f:(fun acc a1 -> + Set.fold r2 ~init:acc ~f:(fun acc a2 -> + match (a1, a2) with + | Atom.IntAtom i1, Atom.IntAtom i2 -> + Set.add acc (BoolAtom (op i1 i2)) + | _ -> Set.union acc bool_tf_res)) diff --git a/program_analysis/smt/test.smt b/program_analysis/smt/test.smt deleted file mode 100644 index 10c494e..0000000 --- a/program_analysis/smt/test.smt +++ /dev/null @@ -1,49 +0,0 @@ -(set-logic HORN) -(set-option :fp.xform.inline_linear false) -(set-option :fp.xform.inline_eager false) -(declare-fun P0 (Bool) Bool) -(declare-fun P1 (Int) Bool) -(declare-fun P2 (Int) Bool) -(declare-fun P3 (Bool) Bool) -(declare-fun P4 (Int) Bool) -(declare-fun P5 (Int) Bool) -(declare-fun P6 (Int) Bool) -(declare-fun P7 (Int) Bool) -(declare-fun P8 (Int) Bool) -(declare-fun P9 (Int) Bool) -(declare-fun P10 (Int) Bool) -(declare-fun P11 (Int) Bool) -(declare-fun P12 (Int) Bool) -(declare-fun P13 (Int) Bool) -(declare-fun P14 (Int) Bool) -(declare-fun P15 (Int) Bool) -(declare-fun P16 (Int) Bool) -(declare-fun P17 (Int) Bool) -(declare-fun P18 (Int) Bool) -(declare-fun P19 (Int) Bool) -; (((((((-1)^n - 1) | ((stub@n) - 1)))^n - 1))^n = 0) -(assert (forall ((r Bool)) (=> (P0 r) (= r true)))) -(assert (forall ((r Int)) (=> (and (P17 r) true) (P2 r)))) -(assert (forall ((r Int)) (=> (and (P8 r) true) (P16 r)))) -(assert (forall ((r Int)) (=> (P11 r) (P10 r)))) -(assert (P12 1)) -(assert (forall ((r Int)) (=> (and (P15 r) true) (P5 r)))) -(assert (P19 0)) -(assert (forall ((r Int)) (=> (P16 r) (P15 r)))) -(assert (forall ((r1 Int) (r2 Int)) (=> (and (P13 r1) (P4 r2) true) (P14 (- r1 r2))))) -(assert (forall ((r Int)) (=> (and (P12 r) true) (P4 r)))) -(assert (forall ((r Int)) (=> (P18 r) (P17 r)))) -(assert (forall ((r Int)) (=> (and (P14 r) true) (P16 r)))) -(assert (forall ((r1 Int) (r2 Int)) (=> (and (P5 r1) (P4 r2) true) (P6 (- r1 r2))))) -(assert (forall ((r Int)) (=> (and (P10 r) true) (P7 r)))) -(assert (forall ((r Int)) (P15 r))) -(assert (forall ((r Int)) (=> (and (P15 r) true) (P13 r)))) -(assert (forall ((r Int)) (=> (and (P6 r) true) (P18 r)))) -(assert (forall ((r Int)) (=> (and (P19 r) true) (P1 r)))) -(assert (P9 (- 1))) -(assert (forall ((r Bool)) (=> (and (P3 r) true) (P0 r)))) -(assert (forall ((r1 Int) (r2 Int)) (=> (and (P2 r1) (P1 r2) true) (P3 (= r1 r2))))) -(assert (forall ((r1 Int) (r2 Int)) (=> (and (P7 r1) (P4 r2) true) (P8 (- r1 r2))))) -(assert (forall ((r Int)) (=> (and (P9 r) true) (P11 r)))) -(check-sat) -(get-model) \ No newline at end of file diff --git a/program_analysis/src/debugutils.ml b/program_analysis/src/debugutils.ml index e485ba9..0d154e8 100644 --- a/program_analysis/src/debugutils.ml +++ b/program_analysis/src/debugutils.ml @@ -1,21 +1,21 @@ [@@@coverage off] -open Lib open Utils let is_debug_mode = ref false let parse s = - s ^ ";;" |> Lexing.from_string |> Interp.Parser.main Interp.Lexer.token - |> fun e -> - (* keep labeling consistent across multiple calls - to `analyze` *) - Interp.Ast.reset_label (); - e + s |> Core.Fn.flip ( ^ ) ";;" |> Lexing.from_string + |> Interp.Parser.main Interp.Lexer.token + +let parse_analyze ?(verify = true) ?(name = "test") s = + s |> parse |> Lib.analyze ~debug_mode:!is_debug_mode ~verify let unparse = Format.asprintf "%a" pp_res -let parse_analyze s = s |> parse |> analyze ~debug_mode:!is_debug_mode -let parse_analyze_unparse s = s |> parse_analyze |> unparse + +let parse_analyze_unparse ?(verify = true) ?(name = "test") s = + s |> parse_analyze ~verify ~name |> unparse + let pau = parse_analyze_unparse let parse_analyze_print s = diff --git a/program_analysis/src/dune b/program_analysis/src/dune index 6f06a2c..d1a0a1c 100644 --- a/program_analysis/src/dune +++ b/program_analysis/src/dune @@ -7,7 +7,7 @@ (backend bisect_ppx --bisect-file _build/bisect)) (instrumentation (backend landmarks --auto)) - (modules lib grammar solver simplifier utils debugutils exns logging) + (modules lib grammar solver simplifier utils debugutils exns) (libraries dde.interp hashset core z3 logs logs.fmt)) (executable diff --git a/program_analysis/src/lib.ml b/program_analysis/src/lib.ml index f573357..47c9bb8 100644 --- a/program_analysis/src/lib.ml +++ b/program_analysis/src/lib.ml @@ -7,7 +7,6 @@ open Utils open Solver open Simplifier open Exns -open Logging (* max recursion depth ever reached by execution *) let max_d = ref 0 @@ -225,7 +224,7 @@ let rec analyze_aux_step d expr sigma pi s v = if Option.is_some found then debug (fun m -> m "[Level %d] Cache hit but lone stub" d); if d > !max_d then max_d := d; - debug_plain "Began recursive call to execution"; + debug (fun m -> m "Began recursive call to execution"); debug (fun m -> m "Max depth so far is: %d" !max_d); debug (fun m -> m "expr: %a" Interp.Pp.pp_expr expr); debug (fun m -> m "sigma: %s" (show_sigma sigma)); @@ -247,19 +246,19 @@ let rec analyze_aux_step d expr sigma pi s v = (* let st = (l, pruned_sigma', s) in *) let lst = NewSt.Lstate st in debug (fun m -> m "State: %s" (NewSt.show lst)); - debug_plain "v_set:"; + debug (fun m -> m "v_set:"); log_v_set v; let stub_key = (l, sigma) in (* TODO: try two-pass mechanism again *) if Set.mem v lst then ( - debug_plain "Stubbed"; + debug (fun m -> m "Stubbed"); info (fun m -> m "[Level %d] ****** Appl (%a) *******" d Interp.Pp.pp_expr expr); ([ LStubAtom stub_key ], s)) else ( (* Application *) - debug_plain "Didn't stub"; + debug (fun m -> m "Didn't stub"); debug (fun m -> m "Evaluating function being applied: %a" Interp.Pp.pp_expr e); debug (fun m -> @@ -294,7 +293,7 @@ let rec analyze_aux_step d expr sigma pi s v = let st = (expr, sigma, s) in let est = NewSt.Estate st in debug (fun m -> m "State: %s" (Grammar.NewSt.show est)); - debug_plain "v_set:"; + debug (fun m -> m "v_set:"); log_v_set v; let stub_key = (expr, sigma) in if Set.mem v est then ( @@ -303,7 +302,7 @@ let rec analyze_aux_step d expr sigma pi s v = info (fun m -> m "[Level %d] ****** Var (%s, %d) *******" d x l); ([ EStubAtom stub_key ], s)) else ( - debug_plain "Didn't stub"; + debug (fun m -> m "Didn't stub"); match get_myfun l with | Some (Function (Ident x1, _, l_myfun)) -> if String.(x = x1) then ( @@ -315,8 +314,8 @@ let rec analyze_aux_step d expr sigma pi s v = match get_myexpr s_hd with | Appl (_, e2, l') -> let r1, s1 = - debug_plain "Begin stitching stacks"; - debug_plain "S set:"; + debug (fun m -> m "Begin stitching stacks"); + debug (fun m -> m "S set:"); debug (fun m -> m "%s" (show_set s)); debug (fun m -> m "Head of candidate fragments must be: %d" l'); @@ -367,16 +366,17 @@ let rec analyze_aux_step d expr sigma pi s v = m "[Level %d] ====== Var Non-Local (%s, %d) ======" d x l); debug (fun m -> m "sigma: %s" (show_sigma sigma)); - debug_plain "Reading Appl at front of sigma"; + debug (fun m -> m "Reading Appl at front of sigma"); match get_myexpr (List.hd_exn sigma) with | Appl (e1, _, l2) -> - debug_plain "[Var Non-Local] Didn't stub e1"; - debug_plain "Function being applied at front of sigma:"; + debug (fun m -> m "[Var Non-Local] Didn't stub e1"); + debug (fun m -> + m "Function being applied at front of sigma:"); debug (fun m -> m "%a" Interp.Pp.pp_expr e1); debug (fun m -> m "%a" Interp.Ast.pp_expr e1); let s_tl = List.tl_exn sigma in - debug_plain "Begin stitching stacks"; - debug_plain "S set:"; + debug (fun m -> m "Begin stitching stacks"); + debug (fun m -> m "S set:"); debug (fun m -> m "%s" (show_set s)); debug (fun m -> m "Head of candidate fragments must be: %d" l2); @@ -409,9 +409,10 @@ let rec analyze_aux_step d expr sigma pi s v = let new_v = Set.add v (NewSt.Estate (expr, sigma, s1)) in - debug_plain - "Found all stitched stacks and evaluated e1, begin \ - relabeling variables"; + debug (fun m -> + m + "Found all stitched stacks and evaluated e1, \ + begin relabeling variables"); let r2, s2 = fold_res_var ~init:(choice_empty, s1) expr sigma d r1 ~f:(fun (acc_r, acc_s) x1' l1 sigma1 -> @@ -450,7 +451,7 @@ let rec analyze_aux_step d expr sigma pi s v = let r_cond, s0 = analyze_aux_step d e sigma pi s v in debug (fun m -> m "r_cond: %a" Utils.pp_res r_cond); debug (fun m -> m "r_cond: %a" Grammar.pp_res r_cond); - debug_plain "v_set:"; + debug (fun m -> m "v_set:"); log_v_set v; let true_sat = solve_cond r_cond true in let pc_true = (r_cond, true) in @@ -568,7 +569,7 @@ and analyze_aux n e_glob d expr sigma pi s v = let r, s' = analyze_aux_step d expr sigma pi s v in debug (fun m -> m "[Level %d] After analyze_aux_step" d); if Set.compare_direct s s' = 0 then ( - debug_plain "S didn't change, finishing..."; + debug (fun m -> m "S didn't change, finishing..."); (r, s')) else ( debug (fun m -> m "[Level %d] [n = %d] Restarting afresh" d n); @@ -587,7 +588,7 @@ let analyze ?(debug_mode = false) ?(verify = true) ?(test_num = 0) e = let e = trans_let None None e in build_myfun e None; - debug_plain "Program after subst"; + debug (fun m -> m "Program after subst"); (* let r, s = analyze_aux 0 e 0 e [] None diff --git a/program_analysis/src/logging.ml b/program_analysis/src/logging.ml deleted file mode 100644 index a6c127b..0000000 --- a/program_analysis/src/logging.ml +++ /dev/null @@ -1,9 +0,0 @@ -open Logs - -(* controls whether to generate logs: - "logs" in _build/default/program_analysis/tests *) -let gen_logs = ref false -let debug_plain msg = if !gen_logs then debug (fun m -> m msg) -let debug msg = if !gen_logs then debug msg -let info_plain msg = if !gen_logs then info msg -let info msg = if !gen_logs then info msg diff --git a/program_analysis/tests/bench.ml b/program_analysis/tests/bench.ml index b2db62d..05920d4 100644 --- a/program_analysis/tests/bench.ml +++ b/program_analysis/tests/bench.ml @@ -1,6 +1,5 @@ open Core open Core_bench -open Utils let run tests = Command_unix.run ~argv:[ "" ] diff --git a/program_analysis/tests/pbt.ml b/program_analysis/tests/pbt.ml index 669eb09..0f934a4 100644 --- a/program_analysis/tests/pbt.ml +++ b/program_analysis/tests/pbt.ml @@ -1,8 +1,26 @@ -open Program_analysis.Lib +open Pa.Lib open Utils -open Interpreter +open Interp module QC = Core.Quickcheck +module IdentSet = Set.Make (struct + type t = Ast.ident + + let compare ident1 ident2 = + match (ident1, ident2) with + | Ast.Ident id1, Ast.Ident id2 -> compare id1 id2 +end) + +let label = ref (-1) + +let fresh_label () = + label := !label + 1; + !label + +let reset_label () = label := -1 +let ( |>> ) v f = Option.map f v +let ( |>-> ) v f = Option.bind v f + let filter_simple (e : Ast.expr) = match e with Function _ | Int _ | Bool _ | Var _ -> None | _ -> Some e diff --git a/program_analysis/tests/tests.ml b/program_analysis/tests/tests.ml index 6fee0b2..2a17f3c 100644 --- a/program_analysis/tests/tests.ml +++ b/program_analysis/tests/tests.ml @@ -1,35 +1,30 @@ open OUnit2 open Core -open Utils open Test_cases - -let gen_test ls = - List.iter ls ~f:(fun f -> - let expected, actual = f () in - assert_equal ~printer:Fn.id expected actual) +open Utils let basic_thunked = [ - (fun _ -> ("1", pau ~test_num:0 basic.(0))); - (fun _ -> ("1", pau ~test_num:1 basic.(1))); - (fun _ -> ("(1 + 2)", pau ~test_num:2 basic.(2))); + (fun _ -> ("1", pau basic.(0))); + (fun _ -> ("1", pau basic.(1))); + (fun _ -> ("(1 + 2)", pau basic.(2))); ] let test_basic _ = gen_test basic_thunked let nonlocal_lookup_thunked = [ - (fun _ -> ("(1 + 2)", pau ~test_num:3 nonlocal_lookup.(0))); - (fun _ -> ("(1 + 2)", pau ~test_num:4 nonlocal_lookup.(1))); - (fun _ -> ("((3 + 1) + 2)", pau ~test_num:5 nonlocal_lookup.(2))); + (fun _ -> ("(1 + 2)", pau nonlocal_lookup.(0))); + (fun _ -> ("(1 + 2)", pau nonlocal_lookup.(1))); + (fun _ -> ("((3 + 1) + 2)", pau nonlocal_lookup.(2))); ] let test_nonlocal_lookup _ = gen_test nonlocal_lookup_thunked let local_stitching_thunked = [ - (fun _ -> ("((1 + 1) + (1 + 1))", pau ~test_num:6 local_stitching.(0))); - (fun _ -> ("((0 + 1) + 2)", pau ~test_num:7 local_stitching.(1))); + (fun _ -> ("((1 + 1) + (1 + 1))", pau local_stitching.(0))); + (fun _ -> ("((0 + 1) + 2)", pau local_stitching.(1))); ] (* stack stitching is also needed at Var Local *) @@ -37,24 +32,24 @@ let test_local_stitching _ = gen_test local_stitching_thunked let conditional_thunked = [ - (fun _ -> ("(1 + (10 - 1))", pau ~test_num:8 conditional.(0))); - (* (fun _ -> ("1", pau ~test_num:9 conditional.(1))); *) - (* (fun _ -> ("1", pau ~test_num:10 conditional.(2))); *) - (* (fun _ -> ("1", pau ~test_num:11 conditional.(3))); *) - (* (fun _ -> ("false", pau ~test_num:12 conditional.(4))); *) + (fun _ -> ("(1 + (10 - 1))", pau conditional.(0))); + (* (fun _ -> ("1", pau conditional.(1))); *) + (* (fun _ -> ("1", pau conditional.(2))); *) + (* (fun _ -> ("1", pau conditional.(3))); *) + (* (fun _ -> ("false", pau conditional.(4))); *) ] let test_conditional _ = gen_test conditional_thunked let currying_thunked = [ - (* (fun _ -> ("(2 + 1)", pau ~test_num:13 currying.(0))); - (fun _ -> ("(2 + 1)", pau ~test_num:14 currying.(1))); - (fun _ -> ("(1 + 2)", pau ~test_num:15 currying.(2))); - (fun _ -> ("((2 + 1) + (1 + 2))", pau ~test_num:16 currying.(3))); *) + (* (fun _ -> ("(2 + 1)", pau currying.(0))); + (fun _ -> ("(2 + 1)", pau currying.(1))); + (fun _ -> ("(1 + 2)", pau currying.(2))); + (fun _ -> ("((2 + 1) + (1 + 2))", pau currying.(3))); *) (fun _ -> ( "(((((1 + 1) + (1 + 2)) + (1 + 3)) + (1 + 4)) + (1 + 5))", - pau ~test_num:17 ~verify:false currying.(4) )); + pau ~verify:false currying.(4) )); ] let test_currying _ = gen_test currying_thunked @@ -66,29 +61,27 @@ let test_currying _ = gen_test currying_thunked (* TODO: Racket/Van Horn examples *) let recursion_thunked = [ - (fun _ -> - ( "(1 + (1 + ((1 + ((1 + stub) | 0)) | 0)))", - pau' ~test_num:18 ~verify:true recursion.(0) )); + (fun _ -> ("(1 + (1 + ((1 + ((1 + stub) | 0)) | 0)))", pau' recursion.(0))); (* (fun _ -> ( "(false or (false or ((false or ((false or stub) | true)) | true)))", - pau ~test_num:19 ~verify:false recursion.(1) )); *) + pau ~verify:false recursion.(1) )); *) (* TODO: shouldn't have base case *) (* (fun _ -> ( "(1 + (1 + ((1 + ((1 + stub) | 0)) | 0)))", - pau ~test_num:20 ~verify:false recursion.(2) )); *) + pau ~verify:false recursion.(2) )); *) (* (fun _ -> ( "(1 + (1 + (0 | (1 + (0 | (1 + stub))))))", - pau ~test_num:21 ~verify:false recursion.(3) )); - (fun _ -> ("0", pau ~test_num:22 ~verify:false recursion.(4))); - (fun _ -> ("true", pau ~test_num:23 ~verify:false recursion.(5))); + pau ~verify:false recursion.(3) )); + (fun _ -> ("0", pau ~verify:false recursion.(4))); + (fun _ -> ("true", pau ~verify:false recursion.(5))); (* TODO *) - (* (fun _ -> ("false", pau ~test_num:18 ~verify:false recursion.(6))); *) - (fun _ -> ("true", pau ~test_num:24 ~verify:false recursion.(7))); - (* (fun _ -> ("(false | true)", pau ~test_num:25 ~verify:false recursion.(8))); *) - (fun _ -> ("(0 | 1)", pau ~test_num:26 ~verify:false recursion.(9))); - (fun _ -> ("1", pau ~test_num:27 ~verify:false recursion.(10))); + (* (fun _ -> ("false", pau ~verify:false recursion.(6))); *) + (fun _ -> ("true", pau ~verify:false recursion.(7))); + (* (fun _ -> ("(false | true)", pau ~verify:false recursion.(8))); *) + (fun _ -> ("(0 | 1)", pau ~verify:false recursion.(9))); + (fun _ -> ("1", pau ~verify:false recursion.(10))); (fun _ -> - ("(0 | (1 | (0 - 1)))", pau ~test_num:28 ~verify:false recursion.(11))); *) + ("(0 | (1 | (0 - 1)))", pau ~verify:false recursion.(11))); *) (* (fun _ -> ( "((((stub + ((3 | ((3 | (stub - 1)) - 1)) - 2)) | ((3 | (stub - 1)) - \ 1)) + ((3 | ((3 | (stub - 1)) - 1)) - 2)) + (((2 | ((3 | (((3 | \ @@ -96,42 +89,42 @@ let recursion_thunked = (((3 | (((2 | ((stub - 2) | (stub - 2))) - 1) | ((3 | (((2 | ((stub - \ 2) | (stub - 2))) - 1) | (stub - 1))) - 1))) - 2) | (stub - 2))) - \ 2)))", - pau ~verify:false ~test_num:29 recursion.(12) )); *) + pau ~verify:false recursion.(12) )); *) (* (fun _ -> ( "(1 + (1 + ((1 + stub) | 0)))", - pau ~test_num:30 ~verify:false recursion.(13) )); *) + pau ~verify:false recursion.(13) )); *) ] let test_recursion _ = gen_test recursion_thunked let church_basic_thunked = [ - (fun _ -> ("(0 + 1)", pau ~test_num:41 church_basic.(0))); - (fun _ -> ("((0 + 1) + 1)", pau ~test_num:42 church_basic.(1))); - (fun _ -> ("(((0 + 1) + 1) + 1)", pau ~test_num:43 church_basic.(2))); - (fun _ -> ("((((0 + 1) + 1) + 1) + 1)", pau ~test_num:44 church_basic.(3))); + (fun _ -> ("(0 + 1)", pau church_basic.(0))); + (fun _ -> ("((0 + 1) + 1)", pau church_basic.(1))); + (fun _ -> ("(((0 + 1) + 1) + 1)", pau church_basic.(2))); + (fun _ -> ("((((0 + 1) + 1) + 1) + 1)", pau church_basic.(3))); ] let test_church_basic _ = gen_test church_basic_thunked let church_binop_thunked = [ - (* (fun _ -> ("(0 + 1)", pau ~test_num:45 church_binop.(0))); *) - (* (fun _ -> ("", pau' ~test_num:45 church_binop.(1))); *) - (fun _ -> ("", pau ~test_num:45 ~verify:false church_binop.(2))); - (* (fun _ -> ("", pau ~test_num:45 ~verify:false church_binop.(3))); *) + (* (fun _ -> ("(0 + 1)", pau church_binop.(0))); *) + (* (fun _ -> ("", pau' church_binop.(1))); *) + (fun _ -> ("", pau ~verify:false church_binop.(2))); + (* (fun _ -> ("", pau ~verify:false church_binop.(3))); *) ] let test_church_binop _ = gen_test church_binop_thunked let lists_thunked = [ - (* (fun _ -> ("1", pau' ~test_num:46 lists.(0))); *) - (* (fun _ -> ("2", pau' ~test_num:47 lists.(1))); *) - (* (fun _ -> ("2", pau ~test_num:48 ~verify:false lists.(2))); *) - (fun _ -> ("", pau ~test_num:48 ~verify:false lists.(3))); - (* (fun _ -> ("", pau' ~test_num:50 ~verify:false lists.(4))); *) - (* (fun _ -> ("", pau' ~test_num:50 ~verify:false lists.(5))); *) + (* (fun _ -> ("1", pau' lists.(0))); *) + (* (fun _ -> ("2", pau' lists.(1))); *) + (* (fun _ -> ("2", pau ~verify:false lists.(2))); *) + (fun _ -> ("", pau ~verify:false lists.(3))); + (* (fun _ -> ("", pau' ~verify:false lists.(4))); *) + (* (fun _ -> ("", pau' ~verify:false lists.(5))); *) ] let test_lists _ = gen_test lists_thunked @@ -198,31 +191,31 @@ let poly_thunked = (* (fun _ -> ( "(90 * ((((9 | (stub - 1)) - 1) * ((((9 | (stub - 1)) - 1) * stub) | \ 1)) | 1))", - pau ~verify:false ~test_name:"fact 10" + pau ~verify:false ~name:"fact 10" "let fact = fun self -> fun n -> if n = 0 then 1 else n * self self \ (n - 1) in fact fact 10" )); *) (* (fun _ -> ( "(380 * ((((19 | (stub - 1)) - 1) * ((((19 | (stub - 1)) - 1) * stub) \ | 1)) | 1))", - pau ~verify:false ~test_name:"fact 20" + pau ~verify:false ~name:"fact 20" "let fact = fun self -> fun n -> if n = 0 then 1 else n * self self \ (n - 1) in fact fact 20" )); *) (* (fun _ -> ( "(1560 * ((((39 | (stub - 1)) - 1) * ((((39 | (stub - 1)) - 1) * stub) \ | 1)) | 1))", - pau ~verify:false ~test_name:"fact 40" + pau ~verify:false ~name:"fact 40" "let fact = fun self -> fun n -> if n = 0 then 1 else n * self self \ (n - 1) in fact fact 40" )); *) (* (fun _ -> ( "(3540 * ((((59 | (stub - 1)) - 1) * ((((59 | (stub - 1)) - 1) * stub) \ | 1)) | 1))", - pau ~verify:false ~test_name:"fact 60" + pau ~verify:false ~name:"fact 60" "let fact = fun self -> fun n -> if n = 0 then 1 else n * self self \ (n - 1) in fact fact 60" )); *) (fun _ -> ( "(9900 * ((((99 | (stub - 1)) - 1) * ((((99 | (stub - 1)) - 1) * stub) \ | 1)) | 1))", - pau ~verify:false ~test_name:"fact 100" + pau ~verify:false ~name:"fact 100" "let fact = fun self -> fun n -> if n = 0 then 1 else n * self self \ (n - 1) in fact fact 100" )); ] @@ -232,52 +225,51 @@ let test_poly _ = gen_test poly_thunked let ddpa_thunked = [ (* (fun _ -> - ("true", pau ~verify:false ~test_name:"blur" (read_input "blur.ml"))); *) + ("true", pau ~verify:false ~name:"blur" (read_input "blur.ml"))); *) (* (fun _ -> - ("false", pau ~verify:false ~test_name:"eta" (read_input "eta.ml"))); + ("false", pau ~verify:false ~name:"eta" (read_input "eta.ml"))); (fun _ -> ( "((6 * 1) + (12 * ((((3 | (stub - 1)) - 1) * ((((3 | (stub - 1)) - 1) \ * stub) | 1)) | 1)))", - pau ~verify:false ~test_name:"facehugger" (read_input "facehugger.ml") + pau ~verify:false ~name:"facehugger" (read_input "facehugger.ml") )); (fun _ -> ( "(90 * ((((9 | (stub - 1)) - 1) * ((((9 | (stub - 1)) - 1) * stub) | \ 1)) | 1))", - pau ~verify:false ~test_name:"fact" (read_input "fact.ml") )); + pau ~verify:false ~name:"fact" (read_input "fact.ml") )); (fun _ -> - ("false", pau ~verify:false ~test_name:"kcfa2" (read_input "kcfa2.ml"))); + ("false", pau ~verify:false ~name:"kcfa2" (read_input "kcfa2.ml"))); (fun _ -> - ("false", pau ~verify:false ~test_name:"kcfa3" (read_input "kcfa3.ml"))); + ("false", pau ~verify:false ~name:"kcfa3" (read_input "kcfa3.ml"))); (fun _ -> ( read_output "loop2-1.txt", - pau ~verify:false ~test_name:"loop2-1" (read_input "loop2-1.ml") )); + pau ~verify:false ~name:"loop2-1" (read_input "loop2-1.ml") )); (* (fun _ -> ( "((stub | ((stub | stub) | stub)) | ((stub | stub) | stub))", - pau ~verify:false ~test_name:"loop2'" (read_input "loop2'.ml") )); *) - (fun _ -> ("2", pau ~verify:false ~test_name:"mj09" (read_input "mj09.ml"))); *) + pau ~verify:false ~name:"loop2'" (read_input "loop2'.ml") )); *) + (fun _ -> ("2", pau ~verify:false ~name:"mj09" (read_input "mj09.ml"))); *) (* (fun _ -> ( "{ hd = 8; tl = { hd = 9; tl = ({} | { hd = (9 | 10); tl = ({} | { hd \ = (9 | 10); tl = stub }) }) } }", - pau ~verify:false ~test_name:"map" (read_input "map.ml") )); *) + pau ~verify:false ~name:"map" (read_input "map.ml") )); *) (* (fun _ -> - ("15", pau ~verify:false ~test_name:"primtest" (read_input "primtest.ml"))); *) + ("15", pau ~verify:false ~name:"primtest" (read_input "primtest.ml"))); *) (fun _ -> - ( "(false | true)", - pau ~verify:false ~test_name:"sat-1" (read_input "sat-1.ml") )); + ("(false | true)", pau ~verify:false ~name:"sat-1" (read_input "sat-1.ml"))); (* (fun _ -> ( "(false | true)", - pau ~verify:false ~test_name:"sat-2" (read_input "sat-2.ml") )); *) + pau ~verify:false ~name:"sat-2" (read_input "sat-2.ml") )); *) (* (fun _ -> ( "(false | true)", - pau ~verify:false ~test_name:"sat-3" (read_input "sat-3.ml") )); *) + pau ~verify:false ~name:"sat-3" (read_input "sat-3.ml") )); *) (* (fun _ -> - ("false", pau ~verify:false ~test_name:"rsa" (read_input "rsa.ml"))); *) - (* (fun _ -> ("Int", pau ~verify:false ~test_name:"ack" (read_input "ack.ml"))); - (fun _ -> ("Int", pau ~verify:false ~test_name:"tak" (read_input "tak.ml"))); + ("false", pau ~verify:false ~name:"rsa" (read_input "rsa.ml"))); *) + (* (fun _ -> ("Int", pau ~verify:false ~name:"ack" (read_input "ack.ml"))); + (fun _ -> ("Int", pau ~verify:false ~name:"tak" (read_input "tak.ml"))); (fun _ -> - ("", pau ~verify:false ~test_name:"church" (read_input "church.ml"))); + ("", pau ~verify:false ~name:"church" (read_input "church.ml"))); (fun _ -> - ("", pau ~verify:false ~test_name:"cpstak" (read_input "cpstak.ml"))); *) + ("", pau ~verify:false ~name:"cpstak" (read_input "cpstak.ml"))); *) ] let test_ddpa _ = gen_test ddpa_thunked @@ -285,69 +277,66 @@ let test_ddpa _ = gen_test ddpa_thunked let ddpa_simple_thunked = [ (* (fun _ -> - ("true", pau' ~verify:false ~test_name:"blur" (read_input "blur.ml"))); *) + ("true", pau' ~name:"blur" (read_input "blur.ml"))); *) (* (fun _ -> - ("false", pau' ~verify:false ~test_name:"eta" (read_input "eta.ml"))); *) + ("false", pau' ~name:"eta" (read_input "eta.ml"))); *) (* (fun _ -> ( "Int", - pau' ~verify:false ~test_name:"facehugger" (read_input "facehugger.ml") + pau' ~name:"facehugger" (read_input "facehugger.ml") )); *) (* (fun _ -> - ("false", pau' ~verify:false ~test_name:"kcfa2" (read_input "kcfa2.ml"))); *) + ("false", pau' ~name:"kcfa2" (read_input "kcfa2.ml"))); *) (* (fun _ -> - ("false", pau' ~verify:false ~test_name:"kcfa3" (read_input "kcfa3.ml"))); *) + ("false", pau' ~name:"kcfa3" (read_input "kcfa3.ml"))); *) (* (fun _ -> - ("Int", pau' ~verify:false ~test_name:"loop2-1" (read_input "loop2-1.ml"))); *) + ("Int", pau' ~name:"loop2-1" (read_input "loop2-1.ml"))); *) (* (fun _ -> - ("Int", pau' ~verify:false ~test_name:"mj09" (read_input "mj09.ml"))); *) + ("Int", pau' ~name:"mj09" (read_input "mj09.ml"))); *) + (fun _ -> + ( "{ hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd \ + = 9 | 10; tl = stub } } } }", + pau' ~name:"map" (read_input "map.ml") )); (* (fun _ -> - ( "{ hd = 8; tl = { hd = 9 | 10; tl = {} | { hd = 9 | 10; tl = {} | { hd \ - = 9 | 10; tl = stub) } } } }", - pau' ~verify:false ~test_name:"map" (read_input "map.ml") )); *) + ("15", pau' ~name:"primtest" (read_input "primtest.ml"))); *) (* (fun _ -> - ( "stub", - pau' ~verify:false ~test_name:"primtest" (read_input "primtest.ml") )); *) + ("false", pau' ~name:"rsa" (read_input "rsa.ml"))); *) + (* (fun _ -> ("", pau' ~name:"id" recursion.(0))); *) (* (fun _ -> - ( "(false | true)", - pau' ~verify:false ~test_name:"rsa" (read_input "rsa.ml") )); *) - (* (fun _ -> ("", pau' ~verify:false ~test_name:"id" recursion.(0))); *) - (fun _ -> - ( "false | true", - pau' ~verify:false ~test_name:"sat-1" (read_input "sat-1.ml") )); - (fun _ -> - ( "false | true", - pau' ~verify:false ~test_name:"sat-2" (read_input "sat-2.ml") )); - (fun _ -> - ( "false | true", - pau' ~verify:false ~test_name:"sat-3" (read_input "sat-3.ml") )); - (fun _ -> - ( "false | true", - pau' ~verify:false ~test_name:"sat-4" (read_input "sat-4.ml") )); - (fun _ -> - ("true", pau' ~verify:false ~test_name:"sat-5" (read_input "sat-5.ml"))); - (fun _ -> - ( "Int | 0 | 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | stub", - pau' ~verify:false ~test_name:"ack" (read_input "ack.ml") )); - (fun _ -> - ( "stub | stub | stub", - pau' ~verify:false ~test_name:"mack" (read_input "mack.ml") )); - (fun _ -> - ( "Int | -44 | -43 | -42 | -41 | -40 | -39 | -38 | -37 | -36 | -35 | -34 \ - | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | \ - -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 \ - | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 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 | 32 | \ - stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ - stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ - stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ - stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ - stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ - stub | stub | stub | stub | stub | stub", - pau' ~verify:false ~test_name:"tak" (read_input "tak.ml") )); - (fun _ -> - ( "15 | 18 | 31 | 32 | stub | stub | stub", - pau' ~verify:false ~test_name:"cpstak" (read_input "cpstak.ml") )); + ( "false | true", + pau' ~name:"sat-1" (read_input "sat-1.ml") )); + (fun _ -> + ( "false | true", + pau' ~name:"sat-2" (read_input "sat-2.ml") )); + (fun _ -> + ( "false | true", + pau' ~name:"sat-3" (read_input "sat-3.ml") )); + (fun _ -> + ( "false | true", + pau' ~name:"sat-4" (read_input "sat-4.ml") )); + (fun _ -> + ("true", pau' ~name:"sat-5" (read_input "sat-5.ml"))); *) + (* (fun _ -> + ( "Int | 2 | 3 | 4 | 5 | 6 | 13 | 14 | stub", + pau' ~name:"ack" (read_input "ack.ml") )); *) + (* (fun _ -> + ( "stub | stub | stub | stub", + pau' ~name:"mack" (read_input "mack.ml") )); *) + (* (fun _ -> + ( "Int | -44 | -43 | -42 | -41 | -40 | -39 | -38 | -37 | -36 | -35 | -34 \ + | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | \ + -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 \ + | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 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 | 32 | \ + stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ + stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ + stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ + stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ + stub | stub | stub | stub | stub | stub | stub | stub | stub | stub | \ + stub | stub | stub | stub | stub | stub", + pau' ~name:"tak" (read_input "tak.ml") )); *) + (* (fun _ -> + ("stub", pau' ~name:"cpstak" (read_input "cpstak.ml"))); *) ] let test_ddpa_simple _ = gen_test ddpa_simple_thunked @@ -375,15 +364,26 @@ let test_pa = let tests = "Program analysis tests" >::: test_pa +let enable_logging log_file = + let dst = log_file |> Out_channel.create |> Format.formatter_of_out_channel in + Logs.set_reporter (Logs_fmt.reporter ~dst ()); + Logs.set_level (Some Logs.Debug) + let _ = - (* Pbt.run _; *) - let out_file = Out_channel.create "logs" in - Logs.set_reporter - (Logs_fmt.reporter ~dst:(Format.formatter_of_out_channel out_file) ()); - Logs.set_level (Some Logs.Debug); - let bench = ref false in - Arg.parse [ ("--bench", Arg.Set bench, "run benchmarks") ] (fun _ -> ()) ""; - if !bench then Bench.run tests_thunked; + Arg.parse + [ + ("--bench", Arg.Unit (fun _ -> Bench.run tests_thunked), "Run benchmarks"); + ("--log", Arg.Unit (fun _ -> enable_logging "logs"), "Log to default file"); + ("-log", Arg.String enable_logging, "Log to custom file"); + ( "--runtime", + Arg.Unit (fun _ -> Simple_pa.Debug_utils.report_runtime := true), + "Report accurate runtime" ); + (* ("--pbt", Arg.Unit (fun _ -> Pbt.run ()), "Run property-based tests"); *) + ] + (fun _ -> ()) + ""; + + (* Format.printf "report_runtime: %b\n" !Utils.report_runtime; *) run_test_tt_main tests (* TODO: more tests, more projections than available *) diff --git a/program_analysis/tests/utils.ml b/program_analysis/tests/utils.ml index 65f7f76..d5c227c 100644 --- a/program_analysis/tests/utils.ml +++ b/program_analysis/tests/utils.ml @@ -1,54 +1,11 @@ -open Interp -open Pa -open Solver -open Test_cases - -exception Unreachable - -(** PBT *) - -module IdentSet = Set.Make (struct - type t = Ast.ident - - let compare ident1 ident2 = - match (ident1, ident2) with - | Ast.Ident id1, Ast.Ident id2 -> compare id1 id2 -end) - -let label = ref (-1) - -let fresh_label () = - label := !label + 1; - !label - -let reset_label () = label := -1 -let ( |>> ) v f = Option.map f v -let ( |>-> ) v f = Option.bind v f - -(** General *) - -let pau ?(verify = true) ?(test_num = 0) - ?(test_name = Format.sprintf "Test %d" test_num) ?(time = true) s = - s |> Core.Fn.flip ( ^ ) ";;" |> Lexing.from_string |> Parser.main Lexer.token - |> fun e -> - let before = Sys.time () in - let r = Lib.analyze e ~verify ~test_num in - let after = Sys.time () in - if time then ( - Format.printf "%s: %f\n" test_name (after -. before); - flush_all ()); - r |> Format.asprintf "%a" Utils.pp_res - -let pau' ?(verify = true) ?(test_num = 0) - ?(test_name = Format.sprintf "Test %d" test_num) ?(time = true) s = - s |> Core.Fn.flip ( ^ ) ";;" |> Lexing.from_string |> Parser.main Lexer.token - |> fun e -> - let before = Sys.time () in - let r = Simple_pa.Lib.analyze e ~verify ~test_num in - let after = Sys.time () in - if time then ( - Format.printf "%s: %f\n" test_name (after -. before); - flush_all ()); - r |> Core.Set.elements |> Format.asprintf "%a" Simple_pa.Utils.pp_res +open Core +open OUnit2 +let pau = Pa.Debugutils.pau +let pau' = Simple_pa.Debug_utils.pau let pau'' = Display_pa.Debugutils.pau + +let gen_test ls = + List.iter ls ~f:(fun f -> + let expected, actual = f () in + assert_equal ~printer:Fn.id expected actual)