Commit 8dfc863f authored by Kim Nguyễn's avatar Kim Nguyễn

Multiple application test.

parent 9c70e7b8
......@@ -17,3 +17,4 @@ true: -traverse
<tests/libtest/*Test.*>: pp(camlp4orf.opt), package(netstring), package(pcre), package(oUnit), package(ulex), package(num), package(camlp4.lib)
<tests/eval/src/main.*>: pp(camlp4orf.opt), package(netstring), package(pcre), package(oUnit), package(ulex), package(num), package(camlp4.lib)
<kim*.native>: pp(camlp4orf.opt), package(netstring), package(pcre), package(oUnit), package(ulex), package(num), package(camlp4.lib)
open TypesOUnit;;
open Types;;
let and_size1 = ref ~-1
let arrow_size1 = ref ~-1
let and_size2 = ref ~-1
let arrow_size2 = ref ~-1
let init_counters () =
and_size1 := ~-1;
and_size2 := ~-1;
arrow_size1 := ~-1;
arrow_size2 := ~-1
let parse_typ s =
let and_size, arrow_size =
if !and_size2 = ~-1 then
and_size2,arrow_size2
else
and_size1,arrow_size1
in
and_size := 0; arrow_size := 0;
for i = 0 to String.length s - 2 do
match s.[i], s.[i+1] with
'&',_ -> incr and_size
| '-', '>' -> incr arrow_size
| _ -> ()
done;
let st = Stream.of_string s in
let astpat = Parser.pat st in
let nodepat = Typer.typ Builtin.env astpat in
Types.descr nodepat
;;
let funs =
(* List of pairs f, args where f is a function types expecting n arguments and
args is a list of n types *)
List.map (fun (f,a) ->
(parse_typ f, List.map parse_typ a))
["`$A01 -> Int", [
"`$B01";
];
"`$A11 -> `$A12 -> Int", [
"`$B11";
"`$B12";
];
"`$A21 -> `$A22 -> `$A23 -> Int", [
"`$B21";
"`$B22";
"`$B23";
];
"`$A31 -> `$A32 -> `$A33 -> `$A34 -> Int", [
"`$B31";
"`$B32";
"`$B33";
"`$B34";
];
"`$A41 -> `$A42 -> `$A43 -> `$A44 -> `$A45 -> Int", [
"`$B41";
"`$B42";
"`$B43";
"`$B44";
"`$B45";
];
"`$A51 -> `$A52 -> `$A53 -> `$A54 -> `$A55 -> `$A56 -> Int", [
"`$B51";
"`$B52";
"`$B53";
"`$B54";
"`$B55";
"`$B56";
];
"`$A61 -> `$A62 -> `$A63 -> `$A64 -> `$A65 -> `$A66 -> `$A67 -> Int", [
"`$B61";
"`$B62";
"`$B63";
"`$B64";
"`$B65";
"`$B66";
"`$B67";
];
"`$A71 -> `$A72 -> `$A73 -> `$A74 -> `$A75 -> `$A76 -> `$A77 -> `$A78 -> Int", [
"`$B71";
"`$B72";
"`$B73";
"`$B74";
"`$B75";
"`$B76";
"`$B77";
"`$B78";
];
"`$A81 -> `$A82 -> `$A83 -> `$A84 -> `$A85 -> `$A86 -> `$A87 -> `$A88 -> `$A89 -> Int", [
"`$B81";
"`$B82";
"`$B83";
"`$B84";
"`$B85";
"`$B86";
"`$B87";
"`$B88";
"`$B89";
];
"`$A91 -> `$A92 -> `$A93 -> `$A94 -> `$A95 -> `$A96 -> `$A97 -> `$A98 -> `$A99 -> `$A910 -> Int", [
"`$B91";
"`$B92";
"`$B93";
"`$B94";
"`$B95";
"`$B96";
"`$B97";
"`$B98";
"`$B99";
"`$B910";
];
"`$A101 -> `$A102 -> `$A103 -> `$A104 -> `$A105 -> `$A106 -> `$A107 -> `$A108 -> `$A109 -> `$A1010 -> `$A1011 -> Int", [
"`$B101";
"`$B102";
"`$B103";
"`$B104";
"`$B105";
"`$B106";
"`$B107";
"`$B108";
"`$B109";
"`$B1010";
"`$B1011";
];
"`$A111 -> `$A112 -> `$A113 -> `$A114 -> `$A115 -> `$A116 -> `$A117 -> `$A118 -> `$A119 -> `$A1110 -> `$A1111 -> `$A1112 -> Int", [
"`$B111";
"`$B112";
"`$B113";
"`$B114";
"`$B115";
"`$B116";
"`$B117";
"`$B118";
"`$B119";
"`$B1110";
"`$B1111";
"`$B1112";
];
"`$A121 -> `$A122 -> `$A123 -> `$A124 -> `$A125 -> `$A126 -> `$A127 -> `$A128 -> `$A129 -> `$A1210 -> `$A1211 -> `$A1212 -> `$A1213 -> Int", [
"`$B121";
"`$B122";
"`$B123";
"`$B124";
"`$B125";
"`$B126";
"`$B127";
"`$B128";
"`$B129";
"`$B1210";
"`$B1211";
"`$B1212";
"`$B1213";
];
"`$A131 -> `$A132 -> `$A133 -> `$A134 -> `$A135 -> `$A136 -> `$A137 -> `$A138 -> `$A139 -> `$A1310 -> `$A1311 -> `$A1312 -> `$A1313 -> `$A1314 -> Int", [
"`$B131";
"`$B132";
"`$B133";
"`$B134";
"`$B135";
"`$B136";
"`$B137";
"`$B138";
"`$B139";
"`$B1310";
"`$B1311";
"`$B1312";
"`$B1313";
"`$B1314";
];
"`$A141 -> `$A142 -> `$A143 -> `$A144 -> `$A145 -> `$A146 -> `$A147 -> `$A148 -> `$A149 -> `$A1410 -> `$A1411 -> `$A1412 -> `$A1413 -> `$A1414 -> `$A1415 -> Int", [
"`$B141";
"`$B142";
"`$B143";
"`$B144";
"`$B145";
"`$B146";
"`$B147";
"`$B148";
"`$B149";
"`$B1410";
"`$B1411";
"`$B1412";
"`$B1413";
"`$B1414";
"`$B1415";
];
"`$A151 -> `$A152 -> `$A153 -> `$A154 -> `$A155 -> `$A156 -> `$A157 -> `$A158 -> `$A159 -> `$A1510 -> `$A1511 -> `$A1512 -> `$A1513 -> `$A1514 -> `$A1515 -> `$A1516 -> Int", [
"`$B151";
"`$B152";
"`$B153";
"`$B154";
"`$B155";
"`$B156";
"`$B157";
"`$B158";
"`$B159";
"`$B1510";
"`$B1511";
"`$B1512";
"`$B1513";
"`$B1514";
"`$B1515";
"`$B1516";
];
"`$A161 -> `$A162 -> `$A163 -> `$A164 -> `$A165 -> `$A166 -> `$A167 -> `$A168 -> `$A169 -> `$A1610 -> `$A1611 -> `$A1612 -> `$A1613 -> `$A1614 -> `$A1615 -> `$A1616 -> `$A1617 -> Int", [
"`$B161";
"`$B162";
"`$B163";
"`$B164";
"`$B165";
"`$B166";
"`$B167";
"`$B168";
"`$B169";
"`$B1610";
"`$B1611";
"`$B1612";
"`$B1613";
"`$B1614";
"`$B1615";
"`$B1616";
"`$B1617";
];
"`$A171 -> `$A172 -> `$A173 -> `$A174 -> `$A175 -> `$A176 -> `$A177 -> `$A178 -> `$A179 -> `$A1710 -> `$A1711 -> `$A1712 -> `$A1713 -> `$A1714 -> `$A1715 -> `$A1716 -> `$A1717 -> `$A1718 -> Int", [
"`$B171";
"`$B172";
"`$B173";
"`$B174";
"`$B175";
"`$B176";
"`$B177";
"`$B178";
"`$B179";
"`$B1710";
"`$B1711";
"`$B1712";
"`$B1713";
"`$B1714";
"`$B1715";
"`$B1716";
"`$B1717";
"`$B1718";
];
"`$A181 -> `$A182 -> `$A183 -> `$A184 -> `$A185 -> `$A186 -> `$A187 -> `$A188 -> `$A189 -> `$A1810 -> `$A1811 -> `$A1812 -> `$A1813 -> `$A1814 -> `$A1815 -> `$A1816 -> `$A1817 -> `$A1818 -> `$A1819 -> Int", [
"`$B181";
"`$B182";
"`$B183";
"`$B184";
"`$B185";
"`$B186";
"`$B187";
"`$B188";
"`$B189";
"`$B1810";
"`$B1811";
"`$B1812";
"`$B1813";
"`$B1814";
"`$B1815";
"`$B1816";
"`$B1817";
"`$B1818";
"`$B1819";
];
"`$A191 -> `$A192 -> `$A193 -> `$A194 -> `$A195 -> `$A196 -> `$A197 -> `$A198 -> `$A199 -> `$A1910 -> `$A1911 -> `$A1912 -> `$A1913 -> `$A1914 -> `$A1915 -> `$A1916 -> `$A1917 -> `$A1918 -> `$A1919 -> `$A1920 -> Int", [
"`$B191";
"`$B192";
"`$B193";
"`$B194";
"`$B195";
"`$B196";
"`$B197";
"`$B198";
"`$B199";
"`$B1910";
"`$B1911";
"`$B1912";
"`$B1913";
"`$B1914";
"`$B1915";
"`$B1916";
"`$B1917";
"`$B1918";
"`$B1919";
"`$B1920";
];
];;
(* (* HERE Examples with higher order *)
["( `$A01 -> `$B01 ) -> `$A01 -> (`$B01)", [
" (`$C01 -> `$D01 ) ";
" (`$C01 )";
];
"( `$A11 -> `$B11 ) -> ( `$A12 -> `$B12 ) -> `$A11 -> `$A12 -> (`$B11, `$B12)", [
" (`$C11 -> `$D11 ) ";
" (`$C12 -> `$D12 ) ";
" (`$C11 )";
" (`$C12 )";
];
"( `$A21 -> `$B21 ) -> ( `$A22 -> `$B22 ) -> ( `$A23 -> `$B23 ) -> `$A21 -> `$A22 -> `$A23 -> (`$B21, `$B22, `$B23)", [
" (`$C21 -> `$D21 ) ";
" (`$C22 -> `$D22 ) ";
" (`$C23 -> `$D23 ) ";
" (`$C21 )";
" (`$C22 )";
" (`$C23 )";
];
"( `$A31 -> `$B31 ) -> ( `$A32 -> `$B32 ) -> ( `$A33 -> `$B33 ) -> ( `$A34 -> `$B34 ) -> `$A31 -> `$A32 -> `$A33 -> `$A34 -> (`$B31, `$B32, `$B33, `$B34)", [
" (`$C31 -> `$D31 ) ";
" (`$C32 -> `$D32 ) ";
" (`$C33 -> `$D33 ) ";
" (`$C34 -> `$D34 ) ";
" (`$C31 )";
" (`$C32 )";
" (`$C33 )";
" (`$C34 )";
];
"( `$A41 -> `$B41 ) -> ( `$A42 -> `$B42 ) -> ( `$A43 -> `$B43 ) -> ( `$A44 -> `$B44 ) -> ( `$A45 -> `$B45 ) -> `$A41 -> `$A42 -> `$A43 -> `$A44 -> `$A45 -> (`$B41, `$B42, `$B43, `$B44, `$B45)", [
" (`$C41 -> `$D41 ) ";
" (`$C42 -> `$D42 ) ";
" (`$C43 -> `$D43 ) ";
" (`$C44 -> `$D44 ) ";
" (`$C45 -> `$D45 ) ";
" (`$C41 )";
" (`$C42 )";
" (`$C43 )";
" (`$C44 )";
" (`$C45 )";
];
"( `$A51 -> `$B51 ) -> ( `$A52 -> `$B52 ) -> ( `$A53 -> `$B53 ) -> ( `$A54 -> `$B54 ) -> ( `$A55 -> `$B55 ) -> ( `$A56 -> `$B56 ) -> `$A51 -> `$A52 -> `$A53 -> `$A54 -> `$A55 -> `$A56 -> (`$B51, `$B52, `$B53, `$B54, `$B55, `$B56)", [
" (`$C51 -> `$D51 ) ";
" (`$C52 -> `$D52 ) ";
" (`$C53 -> `$D53 ) ";
" (`$C54 -> `$D54 ) ";
" (`$C55 -> `$D55 ) ";
" (`$C56 -> `$D56 ) ";
" (`$C51 )";
" (`$C52 )";
" (`$C53 )";
" (`$C54 )";
" (`$C55 )";
" (`$C56 )";
];
"( `$A61 -> `$B61 ) -> ( `$A62 -> `$B62 ) -> ( `$A63 -> `$B63 ) -> ( `$A64 -> `$B64 ) -> ( `$A65 -> `$B65 ) -> ( `$A66 -> `$B66 ) -> ( `$A67 -> `$B67 ) -> `$A61 -> `$A62 -> `$A63 -> `$A64 -> `$A65 -> `$A66 -> `$A67 -> (`$B61, `$B62, `$B63, `$B64, `$B65, `$B66, `$B67)", [
" (`$C61 -> `$D61 ) ";
" (`$C62 -> `$D62 ) ";
" (`$C63 -> `$D63 ) ";
" (`$C64 -> `$D64 ) ";
" (`$C65 -> `$D65 ) ";
" (`$C66 -> `$D66 ) ";
" (`$C67 -> `$D67 ) ";
" (`$C61 )";
" (`$C62 )";
" (`$C63 )";
" (`$C64 )";
" (`$C65 )";
" (`$C66 )";
" (`$C67 )";
];
"( `$A71 -> `$B71 ) -> ( `$A72 -> `$B72 ) -> ( `$A73 -> `$B73 ) -> ( `$A74 -> `$B74 ) -> ( `$A75 -> `$B75 ) -> ( `$A76 -> `$B76 ) -> ( `$A77 -> `$B77 ) -> ( `$A78 -> `$B78 ) -> `$A71 -> `$A72 -> `$A73 -> `$A74 -> `$A75 -> `$A76 -> `$A77 -> `$A78 -> (`$B71, `$B72, `$B73, `$B74, `$B75, `$B76, `$B77, `$B78)", [
" (`$C71 -> `$D71 ) ";
" (`$C72 -> `$D72 ) ";
" (`$C73 -> `$D73 ) ";
" (`$C74 -> `$D74 ) ";
" (`$C75 -> `$D75 ) ";
" (`$C76 -> `$D76 ) ";
" (`$C77 -> `$D77 ) ";
" (`$C78 -> `$D78 ) ";
" (`$C71 )";
" (`$C72 )";
" (`$C73 )";
" (`$C74 )";
" (`$C75 )";
" (`$C76 )";
" (`$C77 )";
" (`$C78 )";
];
"( `$A81 -> `$B81 ) -> ( `$A82 -> `$B82 ) -> ( `$A83 -> `$B83 ) -> ( `$A84 -> `$B84 ) -> ( `$A85 -> `$B85 ) -> ( `$A86 -> `$B86 ) -> ( `$A87 -> `$B87 ) -> ( `$A88 -> `$B88 ) -> ( `$A89 -> `$B89 ) -> `$A81 -> `$A82 -> `$A83 -> `$A84 -> `$A85 -> `$A86 -> `$A87 -> `$A88 -> `$A89 -> (`$B81, `$B82, `$B83, `$B84, `$B85, `$B86, `$B87, `$B88, `$B89)", [
" (`$C81 -> `$D81 ) ";
" (`$C82 -> `$D82 ) ";
" (`$C83 -> `$D83 ) ";
" (`$C84 -> `$D84 ) ";
" (`$C85 -> `$D85 ) ";
" (`$C86 -> `$D86 ) ";
" (`$C87 -> `$D87 ) ";
" (`$C88 -> `$D88 ) ";
" (`$C89 -> `$D89 ) ";
" (`$C81 )";
" (`$C82 )";
" (`$C83 )";
" (`$C84 )";
" (`$C85 )";
" (`$C86 )";
" (`$C87 )";
" (`$C88 )";
" (`$C89 )";
];
"( `$A91 -> `$B91 ) -> ( `$A92 -> `$B92 ) -> ( `$A93 -> `$B93 ) -> ( `$A94 -> `$B94 ) -> ( `$A95 -> `$B95 ) -> ( `$A96 -> `$B96 ) -> ( `$A97 -> `$B97 ) -> ( `$A98 -> `$B98 ) -> ( `$A99 -> `$B99 ) -> ( `$A910 -> `$B910 ) -> `$A91 -> `$A92 -> `$A93 -> `$A94 -> `$A95 -> `$A96 -> `$A97 -> `$A98 -> `$A99 -> `$A910 -> (`$B91, `$B92, `$B93, `$B94, `$B95, `$B96, `$B97, `$B98, `$B99, `$B910)", [
" (`$C91 -> `$D91 ) ";
" (`$C92 -> `$D92 ) ";
" (`$C93 -> `$D93 ) ";
" (`$C94 -> `$D94 ) ";
" (`$C95 -> `$D95 ) ";
" (`$C96 -> `$D96 ) ";
" (`$C97 -> `$D97 ) ";
" (`$C98 -> `$D98 ) ";
" (`$C99 -> `$D99 ) ";
" (`$C910 -> `$D910 ) ";
" (`$C91 )";
" (`$C92 )";
" (`$C93 )";
" (`$C94 )";
" (`$C95 )";
" (`$C96 )";
" (`$C97 )";
" (`$C98 )";
" (`$C99 )";
" (`$C910 )";
];
"( `$A101 -> `$B101 ) -> ( `$A102 -> `$B102 ) -> ( `$A103 -> `$B103 ) -> ( `$A104 -> `$B104 ) -> ( `$A105 -> `$B105 ) -> ( `$A106 -> `$B106 ) -> ( `$A107 -> `$B107 ) -> ( `$A108 -> `$B108 ) -> ( `$A109 -> `$B109 ) -> ( `$A1010 -> `$B1010 ) -> ( `$A1011 -> `$B1011 ) -> `$A101 -> `$A102 -> `$A103 -> `$A104 -> `$A105 -> `$A106 -> `$A107 -> `$A108 -> `$A109 -> `$A1010 -> `$A1011 -> (`$B101, `$B102, `$B103, `$B104, `$B105, `$B106, `$B107, `$B108, `$B109, `$B1010, `$B1011)", [
" (`$C101 -> `$D101 ) ";
" (`$C102 -> `$D102 ) ";
" (`$C103 -> `$D103 ) ";
" (`$C104 -> `$D104 ) ";
" (`$C105 -> `$D105 ) ";
" (`$C106 -> `$D106 ) ";
" (`$C107 -> `$D107 ) ";
" (`$C108 -> `$D108 ) ";
" (`$C109 -> `$D109 ) ";
" (`$C1010 -> `$D1010 ) ";
" (`$C1011 -> `$D1011 ) ";
" (`$C101 )";
" (`$C102 )";
" (`$C103 )";
" (`$C104 )";
" (`$C105 )";
" (`$C106 )";
" (`$C107 )";
" (`$C108 )";
" (`$C109 )";
" (`$C1010 )";
" (`$C1011 )";
];
"( `$A111 -> `$B111 ) -> ( `$A112 -> `$B112 ) -> ( `$A113 -> `$B113 ) -> ( `$A114 -> `$B114 ) -> ( `$A115 -> `$B115 ) -> ( `$A116 -> `$B116 ) -> ( `$A117 -> `$B117 ) -> ( `$A118 -> `$B118 ) -> ( `$A119 -> `$B119 ) -> ( `$A1110 -> `$B1110 ) -> ( `$A1111 -> `$B1111 ) -> ( `$A1112 -> `$B1112 ) -> `$A111 -> `$A112 -> `$A113 -> `$A114 -> `$A115 -> `$A116 -> `$A117 -> `$A118 -> `$A119 -> `$A1110 -> `$A1111 -> `$A1112 -> (`$B111, `$B112, `$B113, `$B114, `$B115, `$B116, `$B117, `$B118, `$B119, `$B1110, `$B1111, `$B1112)", [
" (`$C111 -> `$D111 ) ";
" (`$C112 -> `$D112 ) ";
" (`$C113 -> `$D113 ) ";
" (`$C114 -> `$D114 ) ";
" (`$C115 -> `$D115 ) ";
" (`$C116 -> `$D116 ) ";
" (`$C117 -> `$D117 ) ";
" (`$C118 -> `$D118 ) ";
" (`$C119 -> `$D119 ) ";
" (`$C1110 -> `$D1110 ) ";
" (`$C1111 -> `$D1111 ) ";
" (`$C1112 -> `$D1112 ) ";
" (`$C111 )";
" (`$C112 )";
" (`$C113 )";
" (`$C114 )";
" (`$C115 )";
" (`$C116 )";
" (`$C117 )";
" (`$C118 )";
" (`$C119 )";
" (`$C1110 )";
" (`$C1111 )";
" (`$C1112 )";
];
"( `$A121 -> `$B121 ) -> ( `$A122 -> `$B122 ) -> ( `$A123 -> `$B123 ) -> ( `$A124 -> `$B124 ) -> ( `$A125 -> `$B125 ) -> ( `$A126 -> `$B126 ) -> ( `$A127 -> `$B127 ) -> ( `$A128 -> `$B128 ) -> ( `$A129 -> `$B129 ) -> ( `$A1210 -> `$B1210 ) -> ( `$A1211 -> `$B1211 ) -> ( `$A1212 -> `$B1212 ) -> ( `$A1213 -> `$B1213 ) -> `$A121 -> `$A122 -> `$A123 -> `$A124 -> `$A125 -> `$A126 -> `$A127 -> `$A128 -> `$A129 -> `$A1210 -> `$A1211 -> `$A1212 -> `$A1213 -> (`$B121, `$B122, `$B123, `$B124, `$B125, `$B126, `$B127, `$B128, `$B129, `$B1210, `$B1211, `$B1212, `$B1213)", [
" (`$C121 -> `$D121 ) ";
" (`$C122 -> `$D122 ) ";
" (`$C123 -> `$D123 ) ";
" (`$C124 -> `$D124 ) ";
" (`$C125 -> `$D125 ) ";
" (`$C126 -> `$D126 ) ";
" (`$C127 -> `$D127 ) ";
" (`$C128 -> `$D128 ) ";
" (`$C129 -> `$D129 ) ";
" (`$C1210 -> `$D1210 ) ";
" (`$C1211 -> `$D1211 ) ";
" (`$C1212 -> `$D1212 ) ";
" (`$C1213 -> `$D1213 ) ";
" (`$C121 )";
" (`$C122 )";
" (`$C123 )";
" (`$C124 )";
" (`$C125 )";
" (`$C126 )";
" (`$C127 )";
" (`$C128 )";
" (`$C129 )";
" (`$C1210 )";
" (`$C1211 )";
" (`$C1212 )";
" (`$C1213 )";
];
"( `$A131 -> `$B131 ) -> ( `$A132 -> `$B132 ) -> ( `$A133 -> `$B133 ) -> ( `$A134 -> `$B134 ) -> ( `$A135 -> `$B135 ) -> ( `$A136 -> `$B136 ) -> ( `$A137 -> `$B137 ) -> ( `$A138 -> `$B138 ) -> ( `$A139 -> `$B139 ) -> ( `$A1310 -> `$B1310 ) -> ( `$A1311 -> `$B1311 ) -> ( `$A1312 -> `$B1312 ) -> ( `$A1313 -> `$B1313 ) -> ( `$A1314 -> `$B1314 ) -> `$A131 -> `$A132 -> `$A133 -> `$A134 -> `$A135 -> `$A136 -> `$A137 -> `$A138 -> `$A139 -> `$A1310 -> `$A1311 -> `$A1312 -> `$A1313 -> `$A1314 -> (`$B131, `$B132, `$B133, `$B134, `$B135, `$B136, `$B137, `$B138, `$B139, `$B1310, `$B1311, `$B1312, `$B1313, `$B1314)", [
" (`$C131 -> `$D131 ) ";
" (`$C132 -> `$D132 ) ";
" (`$C133 -> `$D133 ) ";
" (`$C134 -> `$D134 ) ";
" (`$C135 -> `$D135 ) ";
" (`$C136 -> `$D136 ) ";
" (`$C137 -> `$D137 ) ";
" (`$C138 -> `$D138 ) ";
" (`$C139 -> `$D139 ) ";
" (`$C1310 -> `$D1310 ) ";
" (`$C1311 -> `$D1311 ) ";
" (`$C1312 -> `$D1312 ) ";
" (`$C1313 -> `$D1313 ) ";
" (`$C1314 -> `$D1314 ) ";
" (`$C131 )";
" (`$C132 )";
" (`$C133 )";
" (`$C134 )";
" (`$C135 )";
" (`$C136 )";
" (`$C137 )";
" (`$C138 )";
" (`$C139 )";
" (`$C1310 )";
" (`$C1311 )";
" (`$C1312 )";
" (`$C1313 )";
" (`$C1314 )";
];
"( `$A141 -> `$B141 ) -> ( `$A142 -> `$B142 ) -> ( `$A143 -> `$B143 ) -> ( `$A144 -> `$B144 ) -> ( `$A145 -> `$B145 ) -> ( `$A146 -> `$B146 ) -> ( `$A147 -> `$B147 ) -> ( `$A148 -> `$B148 ) -> ( `$A149 -> `$B149 ) -> ( `$A1410 -> `$B1410 ) -> ( `$A1411 -> `$B1411 ) -> ( `$A1412 -> `$B1412 ) -> ( `$A1413 -> `$B1413 ) -> ( `$A1414 -> `$B1414 ) -> ( `$A1415 -> `$B1415 ) -> `$A141 -> `$A142 -> `$A143 -> `$A144 -> `$A145 -> `$A146 -> `$A147 -> `$A148 -> `$A149 -> `$A1410 -> `$A1411 -> `$A1412 -> `$A1413 -> `$A1414 -> `$A1415 -> (`$B141, `$B142, `$B143, `$B144, `$B145, `$B146, `$B147, `$B148, `$B149, `$B1410, `$B1411, `$B1412, `$B1413, `$B1414, `$B1415)", [
" (`$C141 -> `$D141 ) ";
" (`$C142 -> `$D142 ) ";
" (`$C143 -> `$D143 ) ";
" (`$C144 -> `$D144 ) ";
" (`$C145 -> `$D145 ) ";
" (`$C146 -> `$D146 ) ";
" (`$C147 -> `$D147 ) ";
" (`$C148 -> `$D148 ) ";
" (`$C149 -> `$D149 ) ";
" (`$C1410 -> `$D1410 ) ";
" (`$C1411 -> `$D1411 ) ";
" (`$C1412 -> `$D1412 ) ";
" (`$C1413 -> `$D1413 ) ";
" (`$C1414 -> `$D1414 ) ";
" (`$C1415 -> `$D1415 ) ";
" (`$C141 )";
" (`$C142 )";
" (`$C143 )";
" (`$C144 )";
" (`$C145 )";
" (`$C146 )";
" (`$C147 )";
" (`$C148 )";
" (`$C149 )";
" (`$C1410 )";
" (`$C1411 )";
" (`$C1412 )";
" (`$C1413 )";
" (`$C1414 )";
" (`$C1415 )";
];
]
;;
*)
(* (* HERE easy examples with Integers *)
[
"`$A01 -> Int", [
"Int";
];
"`$A11 -> `$A12 -> Int", [
"Int";
"Int";
];
"`$A21 -> `$A22 -> `$A23 -> Int", [
"Int";
"Int";
"Int";
];
"`$A31 -> `$A32 -> `$A33 -> `$A34 -> Int", [
"Int";
"Int";
"Int";
"Int";
];
"`$A41 -> `$A42 -> `$A43 -> `$A44 -> `$A45 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A51 -> `$A52 -> `$A53 -> `$A54 -> `$A55 -> `$A56 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A61 -> `$A62 -> `$A63 -> `$A64 -> `$A65 -> `$A66 -> `$A67 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A71 -> `$A72 -> `$A73 -> `$A74 -> `$A75 -> `$A76 -> `$A77 -> `$A78 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A81 -> `$A82 -> `$A83 -> `$A84 -> `$A85 -> `$A86 -> `$A87 -> `$A88 -> `$A89 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A91 -> `$A92 -> `$A93 -> `$A94 -> `$A95 -> `$A96 -> `$A97 -> `$A98 -> `$A99 -> `$A910 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A101 -> `$A102 -> `$A103 -> `$A104 -> `$A105 -> `$A106 -> `$A107 -> `$A108 -> `$A109 -> `$A1010 -> `$A1011 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A111 -> `$A112 -> `$A113 -> `$A114 -> `$A115 -> `$A116 -> `$A117 -> `$A118 -> `$A119 -> `$A1110 -> `$A1111 -> `$A1112 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";
];
"`$A121 -> `$A122 -> `$A123 -> `$A124 -> `$A125 -> `$A126 -> `$A127 -> `$A128 -> `$A129 -> `$A1210 -> `$A1211 -> `$A1212 -> `$A1213 -> Int", [
"Int";
"Int";
"Int";
"Int";
"Int";
"Int";