From 0d49f11722bf524c907f684023ac3969a5dbc76d Mon Sep 17 00:00:00 2001 From: gtrepta <50716988+gtrepta@users.noreply.github.com> Date: Tue, 16 Jan 2024 11:42:08 -0600 Subject: [PATCH] Pl tutorial refactoring (#3901) fixes: #3892 --------- Co-authored-by: rv-jenkins --- .github/workflows/test-pr.yml | 7 + k-distribution/INSTALL.md | 17 +- k-distribution/Makefile | 2 +- k-distribution/k-tutorial/README.md | 2 +- .../pl-tutorial/1_k/1_lambda/Makefile | 4 - .../pl-tutorial/1_k/1_lambda/README.md | 23 - .../1_k/1_lambda/lesson_1/Makefile | 10 - .../1_k/1_lambda/lesson_1/NOTES.md | 9 - .../1_k/1_lambda/lesson_1/README.md | 115 --- .../1_k/1_lambda/lesson_1/lambda.k | 15 - .../1_k/1_lambda/lesson_1/media.properties | 2 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/free-variable-capture.lambda.out | 3 - .../1_k/1_lambda/lesson_1/tests/omega.lambda | 1 - .../1_lambda/lesson_1/tests/omega.lambda.out | 3 - .../1_k/1_lambda/lesson_2.5/Makefile | 1 - .../1_k/1_lambda/lesson_2.5/NOTES.md | 8 - .../1_k/1_lambda/lesson_2.5/lambda.k | 21 - .../1_k/1_lambda/lesson_2.5/media.properties | 0 .../tests/closed-variable-capture.lambda.out | 3 - .../lesson_2.5/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_2/Makefile | 1 - .../1_k/1_lambda/lesson_2/NOTES.md | 16 - .../1_k/1_lambda/lesson_2/README.md | 87 --- .../1_k/1_lambda/lesson_2/lambda.k | 21 - .../1_k/1_lambda/lesson_2/media.properties | 2 - .../tests/closed-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_2/tests/identity.lambda | 1 - .../lesson_2/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_3/Makefile | 1 - .../1_k/1_lambda/lesson_3/NOTES.md | 6 - .../1_k/1_lambda/lesson_3/README.md | 44 -- .../1_k/1_lambda/lesson_3/lambda.k | 23 - .../1_k/1_lambda/lesson_3/media.properties | 2 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_3/tests/identity.lambda | 1 - .../lesson_3/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_4/Makefile | 1 - .../1_k/1_lambda/lesson_4/NOTES.md | 5 - .../1_k/1_lambda/lesson_4/README.md | 39 - .../1_k/1_lambda/lesson_4/lambda.k | 23 - .../1_k/1_lambda/lesson_4/media.properties | 2 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_4/tests/identity.lambda | 1 - .../lesson_4/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_5/Makefile | 1 - .../1_k/1_lambda/lesson_5/NOTES.md | 12 - .../1_k/1_lambda/lesson_5/README.md | 96 --- .../1_k/1_lambda/lesson_5/lambda.k | 38 - .../1_k/1_lambda/lesson_5/media.properties | 2 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_5/tests/identity.lambda | 1 - .../lesson_5/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_6/Makefile | 1 - .../1_k/1_lambda/lesson_6/README.md | 51 -- .../1_k/1_lambda/lesson_6/lambda.k | 42 -- .../1_k/1_lambda/lesson_6/media.properties | 2 - .../lesson_6/tests/arithmetic.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_6/tests/identity.lambda | 1 - .../lesson_6/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_7/Makefile | 1 - .../1_k/1_lambda/lesson_7/NOTES.md | 8 - .../1_k/1_lambda/lesson_7/README.md | 96 --- .../1_k/1_lambda/lesson_7/lambda.k | 53 -- .../1_k/1_lambda/lesson_7/media.properties | 2 - .../lesson_7/tests/arithmetic-div-zero.lambda | 1 - .../1_lambda/lesson_7/tests/arithmetic.lambda | 1 - .../lesson_7/tests/arithmetic.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_7/tests/identity.lambda | 1 - .../lesson_7/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_7/tests/if.lambda.out | 3 - .../1_k/1_lambda/lesson_8/Makefile | 2 - .../1_k/1_lambda/lesson_8/README.md | 65 -- .../exercises/SK-combinators/Makefile | 2 - .../exercises/SK-combinators/README.md | 50 -- .../exercises/SK-combinators/tests/add.lambda | 1 - .../SK-combinators/tests/add.lambda.out | 3 - .../tests/arithmetic-div-zero.lambda | 1 - .../tests/arithmetic-div-zero.lambda.out | 1 - .../SK-combinators/tests/arithmetic.lambda | 1 - .../tests/arithmetic.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../SK-combinators/tests/cond.lambda | 1 - .../SK-combinators/tests/cond.lambda.out | 3 - .../exercises/SK-combinators/tests/div.lambda | 1 - .../SK-combinators/tests/div.lambda.out | 3 - .../SK-combinators/tests/ex-01.lambda | 6 - .../SK-combinators/tests/ex-01.lambda.out | 3 - .../tests/factorial-let-fix.lambda.out | 3 - .../tests/factorial-let.lambda.out | 3 - .../tests/factorial-letrec.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../SK-combinators/tests/identity.lambda | 1 - .../SK-combinators/tests/identity.lambda.out | 3 - .../exercises/SK-combinators/tests/if.lambda | 1 - .../SK-combinators/tests/if.lambda.out | 3 - .../SK-combinators/tests/lambda-1.lambda | 1 - .../SK-combinators/tests/lambda-1.lambda.out | 3 - .../SK-combinators/tests/lambda-2.lambda | 1 - .../SK-combinators/tests/lambda-2.lambda.out | 3 - .../SK-combinators/tests/lambda-3.lambda | 1 - .../SK-combinators/tests/lambda-3.lambda.out | 3 - .../SK-combinators/tests/lambda-4.lambda | 1 - .../SK-combinators/tests/lambda-4.lambda.out | 3 - .../SK-combinators/tests/lambda-5.lambda | 1 - .../SK-combinators/tests/lambda-5.lambda.out | 3 - .../SK-combinators/tests/lambda-6.lambda | 1 - .../SK-combinators/tests/lambda-6.lambda.out | 3 - .../exercises/SK-combinators/tests/leq.lambda | 1 - .../SK-combinators/tests/leq.lambda.out | 3 - .../SK-combinators/tests/lets.lambda.out | 3 - .../exercises/SK-combinators/tests/mul.lambda | 1 - .../SK-combinators/tests/mul.lambda.out | 3 - .../lesson_8/exercises/mu-derived/Makefile | 2 - .../lesson_8/exercises/mu-derived/README.md | 9 - .../tests/arithmetic-div-zero.lambda | 1 - .../mu-derived/tests/arithmetic.lambda | 1 - .../mu-derived/tests/arithmetic.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../exercises/mu-derived/tests/ex-01.lambda | 6 - .../mu-derived/tests/ex-01.lambda.out | 3 - .../mu-derived/tests/factorial-let-fix.lambda | 7 - .../tests/factorial-let-fix.lambda.out | 3 - .../mu-derived/tests/factorial-let.lambda | 6 - .../mu-derived/tests/factorial-let.lambda.out | 3 - .../mu-derived/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 3 - .../mu-derived/tests/fibbo.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../mu-derived/tests/identity.lambda | 1 - .../mu-derived/tests/identity.lambda.out | 3 - .../exercises/mu-derived/tests/if.lambda | 1 - .../exercises/mu-derived/tests/if.lambda.out | 3 - .../exercises/mu-derived/tests/lets.lambda | 5 - .../mu-derived/tests/lets.lambda.out | 3 - .../1_k/1_lambda/lesson_8/media.properties | 2 - .../lesson_8/tests/arithmetic-div-zero.lambda | 1 - .../1_lambda/lesson_8/tests/arithmetic.lambda | 1 - .../lesson_8/tests/arithmetic.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../lesson_8/tests/factorial-let-fix.lambda | 7 - .../tests/factorial-let-fix.lambda.out | 3 - .../lesson_8/tests/factorial-let.lambda | 6 - .../lesson_8/tests/factorial-let.lambda.out | 3 - .../lesson_8/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 3 - .../1_k/1_lambda/lesson_8/tests/fibbo.lambda | 1 - .../1_lambda/lesson_8/tests/fibbo.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_8/tests/identity.lambda | 1 - .../lesson_8/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_8/tests/if.lambda | 1 - .../1_k/1_lambda/lesson_8/tests/if.lambda.out | 3 - .../1_k/1_lambda/lesson_8/tests/lets.lambda | 5 - .../1_lambda/lesson_8/tests/lets.lambda.out | 3 - .../1_k/1_lambda/lesson_9/Makefile | 1 - .../1_k/1_lambda/lesson_9/README.md | 57 -- .../1_k/1_lambda/lesson_9/lambda.md | 172 ----- .../1_k/1_lambda/lesson_9/media.properties | 2 - .../lesson_9/tests/arithmetic-div-zero.lambda | 1 - .../1_lambda/lesson_9/tests/arithmetic.lambda | 1 - .../lesson_9/tests/arithmetic.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../lesson_9/tests/factorial-let-fix.lambda | 7 - .../tests/factorial-let-fix.lambda.out | 3 - .../lesson_9/tests/factorial-let.lambda | 6 - .../lesson_9/tests/factorial-let.lambda.out | 3 - .../lesson_9/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 3 - .../lesson_9/tests/fibbo-church.lambda | 1 - .../lesson_9/tests/fibbo-church.lambda.out | 3 - .../1_k/1_lambda/lesson_9/tests/fibbo.lambda | 1 - .../1_lambda/lesson_9/tests/fibbo.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../1_lambda/lesson_9/tests/identity.lambda | 1 - .../lesson_9/tests/identity.lambda.out | 3 - .../1_k/1_lambda/lesson_9/tests/if.lambda | 1 - .../1_k/1_lambda/lesson_9/tests/if.lambda.out | 3 - .../1_k/1_lambda/lesson_9/tests/lets.lambda | 5 - .../1_lambda/lesson_9/tests/lets.lambda.out | 3 - k-distribution/pl-tutorial/1_k/2_imp/Makefile | 4 - k-distribution/pl-tutorial/1_k/2_imp/NOTES.md | 6 - .../pl-tutorial/1_k/2_imp/README.md | 22 - .../pl-tutorial/1_k/2_imp/lesson_1/Makefile | 7 - .../pl-tutorial/1_k/2_imp/lesson_1/README.md | 186 ----- .../pl-tutorial/1_k/2_imp/lesson_1/imp.k | 32 - .../1_k/2_imp/lesson_1/media.properties | 2 - .../1_k/2_imp/lesson_1/tests/collatz.imp.out | 3 - .../1_k/2_imp/lesson_1/tests/primes.imp.out | 3 - .../1_k/2_imp/lesson_1/tests/sum.imp.out | 3 - .../pl-tutorial/1_k/2_imp/lesson_2/Makefile | 1 - .../pl-tutorial/1_k/2_imp/lesson_2/README.md | 87 --- .../pl-tutorial/1_k/2_imp/lesson_2/imp.k | 37 - .../1_k/2_imp/lesson_2/media.properties | 2 - .../1_k/2_imp/lesson_2/tests/collatz.imp.out | 8 - .../1_k/2_imp/lesson_2/tests/primes.imp.out | 8 - .../1_k/2_imp/lesson_2/tests/sum.imp.out | 8 - .../pl-tutorial/1_k/2_imp/lesson_3/Makefile | 1 - .../pl-tutorial/1_k/2_imp/lesson_3/README.md | 207 ------ .../pl-tutorial/1_k/2_imp/lesson_3/imp.k | 40 -- .../1_k/2_imp/lesson_3/media.properties | 2 - .../1_k/2_imp/lesson_3/tests/collatz.imp | 19 - .../1_k/2_imp/lesson_3/tests/collatz.imp.out | 8 - .../1_k/2_imp/lesson_3/tests/primes.imp | 26 - .../1_k/2_imp/lesson_3/tests/primes.imp.out | 8 - .../1_k/2_imp/lesson_3/tests/sum.imp.out | 8 - .../pl-tutorial/1_k/2_imp/lesson_4/Makefile | 2 - .../pl-tutorial/1_k/2_imp/lesson_4/README.md | 120 ---- .../exercises/purely-syntactic/Makefile | 2 - .../exercises/purely-syntactic/README.md | 12 - .../purely-syntactic/tests/collatz.imp | 19 - .../purely-syntactic/tests/collatz.imp.out | 12 - .../purely-syntactic/tests/primes.imp | 26 - .../purely-syntactic/tests/primes.imp.out | 17 - .../exercises/purely-syntactic/tests/sum.imp | 12 - .../purely-syntactic/tests/sum.imp.out | 9 - .../uninitialized-variables/Makefile | 2 - .../uninitialized-variables/README.md | 10 - .../tests/collatz-initialized.imp | 20 - .../tests/collatz-initialized.imp.out | 12 - .../uninitialized-variables/tests/collatz.imp | 19 - .../tests/collatz.imp.out | 12 - .../tests/primes-initialized.imp | 26 - .../tests/primes-initialized.imp.out | 17 - .../uninitialized-variables/tests/primes.imp | 26 - .../tests/primes.imp.out | 17 - .../uninitialized-variables/tests/sum.imp | 12 - .../1_k/2_imp/lesson_4/media.properties | 2 - .../1_k/2_imp/lesson_4/tests/collatz.imp | 19 - .../1_k/2_imp/lesson_4/tests/primes.imp | 26 - .../1_k/2_imp/lesson_4/tests/sum.imp | 12 - .../pl-tutorial/1_k/2_imp/lesson_5/Makefile | 2 - .../pl-tutorial/1_k/2_imp/lesson_5/README.md | 23 - .../pl-tutorial/1_k/2_imp/lesson_5/imp.md | 213 ------ .../1_k/2_imp/lesson_5/media.properties | 2 - .../1_k/2_imp/lesson_5/tests/collatz.imp | 19 - .../1_k/2_imp/lesson_5/tests/collatz.imp.out | 12 - .../1_k/2_imp/lesson_5/tests/primes.imp | 26 - .../1_k/2_imp/lesson_5/tests/primes.imp.out | 17 - .../1_k/2_imp/lesson_5/tests/sum.imp | 12 - .../1_k/2_imp/lesson_5/tests/sum.imp.out | 9 - .../pl-tutorial/1_k/3_lambda++/Makefile | 4 - .../pl-tutorial/1_k/3_lambda++/README.md | 17 - .../1_k/3_lambda++/lesson_1/Makefile | 3 - .../1_k/3_lambda++/lesson_1/README.md | 123 ---- .../3_lambda++/lesson_1/exercises/NOTES.md | 7 - .../lesson_1/exercises/callCC/Makefile | 2 - .../lesson_1/exercises/callCC/README.md | 7 - .../callCC/tests/arithmetic-div-zero.lambda | 1 - .../exercises/callCC/tests/arithmetic.lambda | 1 - .../callCC/tests/arithmetic.lambda.out | 3 - .../exercises/callCC/tests/callCC-jump.lambda | 1 - .../callCC/tests/callCC-jump.lambda.out | 3 - .../callCC/tests/callCC-not-jump.lambda | 1 - .../callCC/tests/callCC-not-jump.lambda.out | 3 - .../callCC/tests/callCC-return.lambda | 7 - .../callCC/tests/callCC-return.lambda.out | 3 - .../callCC/tests/callCC-with-let.lambda | 5 - .../callCC/tests/callCC-with-let.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../callCC/tests/factorial-let-fix.lambda | 7 - .../callCC/tests/factorial-let-fix.lambda.out | 3 - .../callCC/tests/factorial-let.lambda | 6 - .../callCC/tests/factorial-let.lambda.out | 3 - .../callCC/tests/factorial-letrec.lambda | 2 - .../callCC/tests/factorial-letrec.lambda.out | 3 - .../exercises/callCC/tests/fibbo.lambda | 1 - .../exercises/callCC/tests/fibbo.lambda.out | 3 - .../callCC/tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../exercises/callCC/tests/identity.lambda | 1 - .../callCC/tests/identity.lambda.out | 3 - .../lesson_1/exercises/callCC/tests/if.lambda | 1 - .../exercises/callCC/tests/if.lambda.out | 3 - .../exercises/callCC/tests/lets.lambda | 5 - .../exercises/callCC/tests/lets.lambda.out | 3 - .../exercises/from-call-CC-to-callcc/Makefile | 3 - .../from-call-CC-to-callcc/README.md | 6 - .../tests/arithmetic-div-zero.lambda | 1 - .../tests/arithmetic.lambda | 1 - .../tests/arithmetic.lambda.out | 3 - .../tests/callcc-jump.lambda | 1 - .../tests/callcc-jump.lambda.out | 3 - .../tests/callcc-not-jump.lambda | 1 - .../tests/callcc-not-jump.lambda.out | 3 - .../tests/callcc-return.lambda | 11 - .../tests/callcc-return.lambda.out | 3 - .../tests/callcc-with-let.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/factorial-let-fix.lambda | 7 - .../tests/factorial-let-fix.lambda.out | 3 - .../tests/factorial-let.lambda | 6 - .../tests/factorial-let.lambda.out | 3 - .../tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 3 - .../from-call-CC-to-callcc/tests/fibbo.lambda | 1 - .../tests/fibbo.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../tests/identity.lambda | 1 - .../tests/identity.lambda.out | 3 - .../from-call-CC-to-callcc/tests/if.lambda | 1 - .../tests/if.lambda.out | 3 - .../from-call-CC-to-callcc/tests/lets.lambda | 5 - .../tests/lets.lambda.out | 3 - .../exercises/from-callcc-to-call-CC/Makefile | 3 - .../from-callcc-to-call-CC/README.md | 11 - .../tests/arithmetic-div-zero.lambda | 1 - .../tests/arithmetic.lambda | 1 - .../tests/arithmetic.lambda.out | 3 - .../tests/callCC-jump.lambda | 1 - .../tests/callCC-jump.lambda.out | 3 - .../tests/callCC-not-jump.lambda | 1 - .../tests/callCC-not-jump.lambda.out | 3 - .../tests/callCC-return.lambda | 7 - .../tests/callCC-return.lambda.out | 3 - .../tests/callCC-with-let.lambda | 5 - .../tests/callCC-with-let.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../tests/factorial-let-fix.lambda | 7 - .../tests/factorial-let-fix.lambda.out | 3 - .../tests/factorial-let.lambda | 6 - .../tests/factorial-let.lambda.out | 3 - .../tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 3 - .../from-callcc-to-call-CC/tests/fibbo.lambda | 1 - .../tests/fibbo.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../tests/identity.lambda | 1 - .../tests/identity.lambda.out | 3 - .../from-callcc-to-call-CC/tests/if.lambda | 1 - .../tests/if.lambda.out | 3 - .../from-callcc-to-call-CC/tests/lets.lambda | 5 - .../tests/lets.lambda.out | 3 - .../1_k/3_lambda++/lesson_1/lambda.k | 57 -- .../1_k/3_lambda++/lesson_1/media.properties | 2 - .../lesson_1/tests/arithmetic-div-zero.lambda | 1 - .../lesson_1/tests/arithmetic.lambda | 1 - .../lesson_1/tests/arithmetic.lambda.out | 3 - .../lesson_1/tests/callcc-jump.lambda | 1 - .../lesson_1/tests/callcc-jump.lambda.out | 3 - .../lesson_1/tests/callcc-not-jump.lambda | 1 - .../lesson_1/tests/callcc-not-jump.lambda.out | 3 - .../lesson_1/tests/callcc-return.lambda | 11 - .../lesson_1/tests/callcc-return.lambda.out | 3 - .../lesson_1/tests/callcc-with-let.lambda | 5 - .../lesson_1/tests/callcc-with-let.lambda.out | 3 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 3 - .../lesson_1/tests/factorial-let-fix.lambda | 7 - .../tests/factorial-let-fix.lambda.out | 3 - .../lesson_1/tests/factorial-let.lambda | 6 - .../lesson_1/tests/factorial-let.lambda.out | 3 - .../lesson_1/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 3 - .../3_lambda++/lesson_1/tests/fibbo.lambda | 1 - .../lesson_1/tests/fibbo.lambda.out | 3 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 3 - .../3_lambda++/lesson_1/tests/identity.lambda | 1 - .../lesson_1/tests/identity.lambda.out | 3 - .../1_k/3_lambda++/lesson_1/tests/if.lambda | 1 - .../3_lambda++/lesson_1/tests/if.lambda.out | 3 - .../1_k/3_lambda++/lesson_1/tests/lets.lambda | 5 - .../3_lambda++/lesson_1/tests/lets.lambda.out | 3 - .../1_k/3_lambda++/lesson_2/Makefile | 8 - .../1_k/3_lambda++/lesson_2/README.md | 178 ----- .../1_k/3_lambda++/lesson_2/lambda.k | 31 - .../1_k/3_lambda++/lesson_2/media.properties | 2 - .../tests/closed-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda | 1 - .../3_lambda++/lesson_2/tests/identity.lambda | 1 - .../1_k/3_lambda++/lesson_3/Makefile | 1 - .../1_k/3_lambda++/lesson_3/NOTES.md | 21 - .../1_k/3_lambda++/lesson_3/README.md | 32 - .../1_k/3_lambda++/lesson_3/lambda.k | 54 -- .../1_k/3_lambda++/lesson_3/media.properties | 2 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 5 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 23 - .../3_lambda++/lesson_3/tests/identity.lambda | 1 - .../lesson_3/tests/identity.lambda.out | 5 - .../1_k/3_lambda++/lesson_4/Makefile | 1 - .../1_k/3_lambda++/lesson_4/NOTES.md | 30 - .../1_k/3_lambda++/lesson_4/README.md | 101 --- .../1_k/3_lambda++/lesson_4/lambda.k | 59 -- .../1_k/3_lambda++/lesson_4/media.properties | 2 - .../lesson_4/tests/callcc-env1.lambda.out | 11 - .../lesson_4/tests/callcc-env2.lambda.out | 11 - .../lesson_4/tests/callcc-with-let.lambda | 5 - .../lesson_4/tests/callcc-with-let.lambda.out | 11 - .../tests/closed-variable-capture.lambda | 1 - .../tests/closed-variable-capture.lambda.out | 5 - .../tests/free-variable-capture.lambda | 1 - .../tests/free-variable-capture.lambda.out | 23 - .../3_lambda++/lesson_4/tests/identity.lambda | 1 - .../lesson_4/tests/identity.lambda.out | 5 - .../1_k/3_lambda++/lesson_5/Makefile.det | 11 - .../1_k/3_lambda++/lesson_5/Makefile.nondet | 7 - .../1_k/3_lambda++/lesson_5/README.md | 77 -- .../1_k/3_lambda++/lesson_5/media.properties | 2 - .../deterministic/factorial-let-fix.lambda | 7 - .../tests/deterministic/factorial-let.lambda | 6 - .../deterministic/factorial-letrec.lambda | 2 - .../lesson_5/tests/deterministic/fibbo.lambda | 1 - .../arithmetic-div-zero.lambda | 1 - .../tests/nondeterministic/arithmetic.lambda | 1 - .../tests/nondeterministic/callcc-env1.lambda | 2 - .../tests/nondeterministic/callcc-env2.lambda | 4 - .../nondeterministic/callcc-with-let.lambda | 5 - .../closed-variable-capture.lambda | 1 - .../closed-variable-capture.lambda.out | 5 - .../free-variable-capture.lambda | 1 - .../free-variable-capture.lambda.out | 23 - .../tests/nondeterministic/identity.lambda | 1 - .../nondeterministic/identity.lambda.out | 5 - .../lesson_5/tests/nondeterministic/if.lambda | 1 - .../tests/nondeterministic/lets.lambda | 5 - .../1_k/3_lambda++/lesson_6/Makefile | 2 - .../1_k/3_lambda++/lesson_6/README.md | 16 - .../3_lambda++/lesson_6/exercises/NOTES.md | 7 - .../lesson_6/exercises/callCC/Makefile | 2 - .../lesson_6/exercises/callCC/README.md | 9 - .../deterministic/factorial-let-fix.lambda | 7 - .../factorial-let-fix.lambda.out | 5 - .../tests/deterministic/factorial-let.lambda | 6 - .../deterministic/factorial-let.lambda.out | 5 - .../deterministic/factorial-letrec.lambda | 2 - .../deterministic/factorial-letrec.lambda.out | 5 - .../callCC/tests/deterministic/fibbo.lambda | 1 - .../tests/deterministic/fibbo.lambda.out | 5 - .../arithmetic-div-zero.lambda | 1 - .../arithmetic-div-zero.lambda.out | 1 - .../tests/nondeterministic/arithmetic.lambda | 1 - .../nondeterministic/arithmetic.lambda.out | 5 - .../tests/nondeterministic/callCC-jump.lambda | 1 - .../nondeterministic/callCC-jump.lambda.out | 5 - .../nondeterministic/callCC-not-jump.lambda | 1 - .../callCC-not-jump.lambda.out | 5 - .../nondeterministic/callCC-return.lambda | 7 - .../nondeterministic/callCC-return.lambda.out | 5 - .../nondeterministic/callCC-with-let.lambda | 5 - .../callCC-with-let.lambda.out | 5 - .../closed-variable-capture.lambda | 1 - .../closed-variable-capture.lambda.out | 5 - .../free-variable-capture.lambda | 1 - .../free-variable-capture.lambda.out | 23 - .../tests/nondeterministic/identity.lambda | 1 - .../nondeterministic/identity.lambda.out | 5 - .../callCC/tests/nondeterministic/if.lambda | 1 - .../tests/nondeterministic/if.lambda.out | 5 - .../callCC/tests/nondeterministic/lets.lambda | 5 - .../tests/nondeterministic/lets.lambda.out | 5 - .../exercises/from-call-CC-to-callcc/Makefile | 3 - .../from-call-CC-to-callcc/README.md | 6 - .../deterministic/factorial-let-fix.lambda | 7 - .../factorial-let-fix.lambda.out | 5 - .../tests/deterministic/factorial-let.lambda | 6 - .../deterministic/factorial-let.lambda.out | 5 - .../deterministic/factorial-letrec.lambda | 2 - .../deterministic/factorial-letrec.lambda.out | 5 - .../tests/deterministic/fibbo.lambda | 1 - .../tests/deterministic/fibbo.lambda.out | 5 - .../arithmetic-div-zero.lambda | 1 - .../arithmetic-div-zero.lambda.out | 1 - .../tests/nondeterministic/arithmetic.lambda | 1 - .../nondeterministic/arithmetic.lambda.out | 5 - .../tests/nondeterministic/callcc-env1.lambda | 2 - .../nondeterministic/callcc-env1.lambda.out | 5 - .../tests/nondeterministic/callcc-env2.lambda | 4 - .../nondeterministic/callcc-env2.lambda.out | 5 - .../callcc-with-let.lambda.out | 9 - .../closed-variable-capture.lambda | 1 - .../closed-variable-capture.lambda.out | 5 - .../free-variable-capture.lambda | 1 - .../free-variable-capture.lambda.out | 23 - .../tests/nondeterministic/identity.lambda | 1 - .../nondeterministic/identity.lambda.out | 5 - .../tests/nondeterministic/if.lambda | 1 - .../tests/nondeterministic/if.lambda.out | 5 - .../tests/nondeterministic/lets.lambda | 5 - .../tests/nondeterministic/lets.lambda.out | 5 - .../exercises/from-callcc-to-call-CC/Makefile | 3 - .../from-callcc-to-call-CC/README.md | 7 - .../deterministic/factorial-let-fix.lambda | 7 - .../factorial-let-fix.lambda.out | 5 - .../tests/deterministic/factorial-let.lambda | 6 - .../deterministic/factorial-let.lambda.out | 5 - .../deterministic/factorial-letrec.lambda | 2 - .../deterministic/factorial-letrec.lambda.out | 5 - .../tests/deterministic/fibbo.lambda | 1 - .../tests/deterministic/fibbo.lambda.out | 5 - .../arithmetic-div-zero.lambda | 1 - .../arithmetic-div-zero.lambda.out | 1 - .../tests/nondeterministic/arithmetic.lambda | 1 - .../nondeterministic/arithmetic.lambda.out | 5 - .../tests/nondeterministic/callCC-jump.lambda | 1 - .../nondeterministic/callCC-jump.lambda.out | 5 - .../nondeterministic/callCC-not-jump.lambda | 1 - .../callCC-not-jump.lambda.out | 5 - .../nondeterministic/callCC-return.lambda | 7 - .../nondeterministic/callCC-return.lambda.out | 5 - .../nondeterministic/callCC-with-let.lambda | 5 - .../callCC-with-let.lambda.out | 5 - .../closed-variable-capture.lambda | 1 - .../closed-variable-capture.lambda.out | 6 - .../free-variable-capture.lambda | 1 - .../free-variable-capture.lambda.out | 23 - .../tests/nondeterministic/identity.lambda | 1 - .../nondeterministic/identity.lambda.out | 5 - .../tests/nondeterministic/if.lambda | 1 - .../tests/nondeterministic/if.lambda.out | 5 - .../tests/nondeterministic/lets.lambda | 5 - .../tests/nondeterministic/lets.lambda.out | 5 - .../1_k/3_lambda++/lesson_6/lambda.md | 199 ------ .../1_k/3_lambda++/lesson_6/media.properties | 2 - .../deterministic/factorial-let-fix.lambda | 7 - .../factorial-let-fix.lambda.out | 5 - .../tests/deterministic/factorial-let.lambda | 6 - .../deterministic/factorial-let.lambda.out | 5 - .../deterministic/factorial-letrec.lambda | 2 - .../deterministic/factorial-letrec.lambda.out | 5 - .../lesson_6/tests/deterministic/fibbo.lambda | 1 - .../tests/deterministic/fibbo.lambda.out | 5 - .../arithmetic-div-zero.lambda | 1 - .../arithmetic-div-zero.lambda.out | 1 - .../tests/nondeterministic/arithmetic.lambda | 1 - .../nondeterministic/arithmetic.lambda.out | 5 - .../tests/nondeterministic/callcc-env1.lambda | 2 - .../nondeterministic/callcc-env1.lambda.out | 5 - .../tests/nondeterministic/callcc-env2.lambda | 4 - .../nondeterministic/callcc-env2.lambda.out | 5 - .../nondeterministic/callcc-with-let.lambda | 5 - .../callcc-with-let.lambda.out | 5 - .../closed-variable-capture.lambda | 1 - .../closed-variable-capture.lambda.out | 5 - .../free-variable-capture.lambda | 1 - .../free-variable-capture.lambda.out | 23 - .../tests/nondeterministic/identity.lambda | 1 - .../nondeterministic/identity.lambda.out | 5 - .../lesson_6/tests/nondeterministic/if.lambda | 1 - .../tests/nondeterministic/if.lambda.out | 5 - .../tests/nondeterministic/lets.lambda | 5 - .../tests/nondeterministic/lets.lambda.out | 5 - .../pl-tutorial/1_k/4_imp++/Makefile | 4 - .../pl-tutorial/1_k/4_imp++/README.md | 27 - .../pl-tutorial/1_k/4_imp++/lesson_1/Makefile | 6 - .../pl-tutorial/1_k/4_imp++/lesson_1/NOTES.md | 10 - .../1_k/4_imp++/lesson_1/README.md | 100 --- .../1_k/4_imp++/lesson_1/media.properties | 2 - .../1_k/4_imp++/lesson_1/tests/collatz.imp | 19 - .../4_imp++/lesson_1/tests/collatz.imp.out | 12 - .../1_k/4_imp++/lesson_1/tests/div.imp.out | 41 -- .../1_k/4_imp++/lesson_1/tests/io.imp.out | 8 - .../1_k/4_imp++/lesson_1/tests/locals.imp.out | 8 - .../1_k/4_imp++/lesson_1/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_1/tests/primes.imp.out | 17 - .../1_k/4_imp++/lesson_1/tests/spawn.imp | 6 - .../1_k/4_imp++/lesson_1/tests/spawn.imp.out | 8 - .../1_k/4_imp++/lesson_1/tests/sum-io.imp.out | 9 - .../1_k/4_imp++/lesson_1/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_1/tests/sum.imp.out | 9 - .../pl-tutorial/1_k/4_imp++/lesson_2/Makefile | 1 - .../pl-tutorial/1_k/4_imp++/lesson_2/NOTES.md | 5 - .../1_k/4_imp++/lesson_2/README.md | 79 --- .../pl-tutorial/1_k/4_imp++/lesson_2/imp.k | 75 -- .../1_k/4_imp++/lesson_2/media.properties | 2 - .../1_k/4_imp++/lesson_2/tests/collatz.imp | 19 - .../4_imp++/lesson_2/tests/collatz.imp.out | 19 - .../1_k/4_imp++/lesson_2/tests/div.imp | 3 - .../1_k/4_imp++/lesson_2/tests/div.imp.out | 53 -- .../1_k/4_imp++/lesson_2/tests/io.imp | 5 - .../1_k/4_imp++/lesson_2/tests/io.imp.out | 11 - .../1_k/4_imp++/lesson_2/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_2/tests/locals.imp.out | 11 - .../1_k/4_imp++/lesson_2/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_2/tests/primes.imp.out | 29 - .../1_k/4_imp++/lesson_2/tests/spawn.imp | 6 - .../1_k/4_imp++/lesson_2/tests/spawn.imp.out | 11 - .../1_k/4_imp++/lesson_2/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_2/tests/sum-io.imp.out | 13 - .../1_k/4_imp++/lesson_2/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_2/tests/sum.imp.out | 13 - .../pl-tutorial/1_k/4_imp++/lesson_3/Makefile | 1 - .../pl-tutorial/1_k/4_imp++/lesson_3/NOTES.md | 6 - .../1_k/4_imp++/lesson_3/README.md | 132 ---- .../pl-tutorial/1_k/4_imp++/lesson_3/imp.k | 78 -- .../1_k/4_imp++/lesson_3/media.properties | 2 - .../1_k/4_imp++/lesson_3/tests/collatz.imp | 19 - .../4_imp++/lesson_3/tests/collatz.imp.out | 19 - .../1_k/4_imp++/lesson_3/tests/div.imp | 3 - .../1_k/4_imp++/lesson_3/tests/div.imp.out | 53 -- .../1_k/4_imp++/lesson_3/tests/io.imp | 5 - .../1_k/4_imp++/lesson_3/tests/io.imp.out | 11 - .../1_k/4_imp++/lesson_3/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_3/tests/locals.imp.out | 11 - .../1_k/4_imp++/lesson_3/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_3/tests/primes.imp.out | 29 - .../1_k/4_imp++/lesson_3/tests/spawn.imp | 6 - .../1_k/4_imp++/lesson_3/tests/spawn.imp.out | 11 - .../1_k/4_imp++/lesson_3/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_3/tests/sum-io.imp.out | 13 - .../1_k/4_imp++/lesson_3/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_3/tests/sum.imp.out | 13 - .../pl-tutorial/1_k/4_imp++/lesson_4/Makefile | 3 - .../pl-tutorial/1_k/4_imp++/lesson_4/NOTES.md | 12 - .../1_k/4_imp++/lesson_4/README.md | 120 ---- .../pl-tutorial/1_k/4_imp++/lesson_4/imp.k | 92 --- .../1_k/4_imp++/lesson_4/media.properties | 2 - .../1_k/4_imp++/lesson_4/tests/collatz.imp | 19 - .../1_k/4_imp++/lesson_4/tests/div.imp | 3 - .../1_k/4_imp++/lesson_4/tests/div.imp.out | 83 --- .../1_k/4_imp++/lesson_4/tests/io.imp | 5 - .../1_k/4_imp++/lesson_4/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_4/tests/locals.imp.out | 5 - .../1_k/4_imp++/lesson_4/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_4/tests/spawn.imp | 6 - .../1_k/4_imp++/lesson_4/tests/spawn.imp.out | 1 - .../1_k/4_imp++/lesson_4/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_4/tests/sum.imp | 12 - .../pl-tutorial/1_k/4_imp++/lesson_5/Makefile | 2 - .../1_k/4_imp++/lesson_5/README.md | 63 -- .../no-duplicate-declarations/Makefile | 2 - .../no-duplicate-declarations/README | 29 - .../tests/collatz.imp | 19 - .../tests/collatz.imp.out | 0 .../no-duplicate-declarations/tests/div.imp | 3 - .../tests/div.imp.out | 95 --- .../no-duplicate-declarations/tests/io.imp | 5 - .../no-duplicate-declarations/tests/io.imp.in | 1 - .../tests/io.imp.out | 1 - .../tests/locals.imp | 15 - .../tests/nodups-0.imp | 15 - .../tests/nodups-0.imp.out | 5 - .../tests/nodups-1.imp | 2 - .../tests/nodups-1.imp.out | 1 - .../tests/nodups-2.imp | 3 - .../tests/nodups-2.imp.out | 1 - .../tests/nodups-3.imp | 12 - .../tests/nodups-3.imp.out | 1 - .../tests/nodups-4.imp | 16 - .../tests/nodups-4.imp.out | 5 - .../tests/primes.imp | 26 - .../tests/primes.imp.out | 0 .../no-duplicate-declarations/tests/spawn.imp | 6 - .../tests/spawn.imp.in | 1 - .../tests/spawn.imp.out | 1 - .../tests/sum-io.imp | 14 - .../tests/sum-io.imp.in | 1 - .../tests/sum-io.imp.out | 2 - .../no-duplicate-declarations/tests/sum.imp | 12 - .../tests/sum.imp.out | 0 .../pl-tutorial/1_k/4_imp++/lesson_5/imp.k | 94 --- .../1_k/4_imp++/lesson_5/media.properties | 2 - .../1_k/4_imp++/lesson_5/tests/collatz.imp | 19 - .../4_imp++/lesson_5/tests/collatz.imp.out | 0 .../1_k/4_imp++/lesson_5/tests/div.imp | 3 - .../1_k/4_imp++/lesson_5/tests/div.imp.out | 83 --- .../1_k/4_imp++/lesson_5/tests/io.imp | 5 - .../1_k/4_imp++/lesson_5/tests/io.imp.in | 1 - .../1_k/4_imp++/lesson_5/tests/io.imp.out | 1 - .../1_k/4_imp++/lesson_5/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_5/tests/locals.imp.out | 5 - .../1_k/4_imp++/lesson_5/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_5/tests/primes.imp.out | 0 .../1_k/4_imp++/lesson_5/tests/spawn.imp | 6 - .../1_k/4_imp++/lesson_5/tests/spawn.imp.in | 1 - .../1_k/4_imp++/lesson_5/tests/spawn.imp.out | 1 - .../1_k/4_imp++/lesson_5/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_5/tests/sum-io.imp.in | 1 - .../1_k/4_imp++/lesson_5/tests/sum-io.imp.out | 2 - .../1_k/4_imp++/lesson_5/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_5/tests/sum.imp.out | 0 .../pl-tutorial/1_k/4_imp++/lesson_6/Makefile | 14 - .../1_k/4_imp++/lesson_6/README.md | 216 ------ .../pl-tutorial/1_k/4_imp++/lesson_6/imp.k | 105 --- .../1_k/4_imp++/lesson_6/media.properties | 2 - .../1_k/4_imp++/lesson_6/tests/collatz.imp | 19 - .../4_imp++/lesson_6/tests/collatz.imp.out | 0 .../1_k/4_imp++/lesson_6/tests/div.imp | 3 - .../1_k/4_imp++/lesson_6/tests/div.imp.out | 71 -- .../1_k/4_imp++/lesson_6/tests/io.imp | 5 - .../1_k/4_imp++/lesson_6/tests/io.imp.in | 1 - .../1_k/4_imp++/lesson_6/tests/io.imp.out | 1 - .../1_k/4_imp++/lesson_6/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_6/tests/locals.imp.out | 5 - .../1_k/4_imp++/lesson_6/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_6/tests/primes.imp.out | 0 .../1_k/4_imp++/lesson_6/tests/spawn.imp | 6 - .../1_k/4_imp++/lesson_6/tests/spawn.imp.in | 1 - .../1_k/4_imp++/lesson_6/tests/spawn.imp.out | 143 ---- .../1_k/4_imp++/lesson_6/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_6/tests/sum-io.imp.in | 1 - .../1_k/4_imp++/lesson_6/tests/sum-io.imp.out | 2 - .../1_k/4_imp++/lesson_6/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_6/tests/sum.imp.out | 0 .../1_k/4_imp++/lesson_7/Makefile.proof | 11 - .../1_k/4_imp++/lesson_7/README.md | 93 --- .../4_imp++/lesson_7/exercises/abort/Makefile | 3 - .../4_imp++/lesson_7/exercises/abort/README | 2 - .../exercises/abort/tests/abort-01.imp | 5 - .../exercises/abort/tests/abort-01.imp.out | 5 - .../exercises/abort/tests/abort-02.imp | 5 - .../exercises/abort/tests/abort-02.imp.out | 5 - .../exercises/abort/tests/abort-03.imp | 5 - .../exercises/abort/tests/abort-03.imp.out | 5 - .../exercises/abort/tests/abort-04.imp | 10 - .../exercises/abort/tests/abort-04.imp.out | 41 -- .../exercises/abort/tests/abort-05.imp | 10 - .../exercises/abort/tests/abort-05.imp.out | 23 - .../exercises/abort/tests/abort-06.imp | 8 - .../exercises/abort/tests/abort-06.imp.out | 35 - .../exercises/abort/tests/abort-07.imp | 8 - .../exercises/abort/tests/abort-07.imp.out | 35 - .../exercises/abort/tests/abort-08.imp | 4 - .../exercises/abort/tests/abort-08.imp.out | 5 - .../exercises/abort/tests/abort-09.imp | 4 - .../exercises/abort/tests/abort-09.imp.out | 11 - .../exercises/abort/tests/abort-10.imp | 4 - .../exercises/abort/tests/abort-10.imp.out | 5 - .../exercises/abort/tests/abort-11.imp | 4 - .../exercises/abort/tests/abort-11.imp.out | 5 - .../exercises/abort/tests/collatz.imp | 19 - .../exercises/abort/tests/collatz.imp.out | 5 - .../lesson_7/exercises/abort/tests/div.imp | 3 - .../lesson_7/exercises/abort/tests/io.imp | 5 - .../lesson_7/exercises/abort/tests/io.imp.in | 1 - .../lesson_7/exercises/abort/tests/io.imp.out | 5 - .../lesson_7/exercises/abort/tests/locals.imp | 15 - .../exercises/abort/tests/locals.imp.out | 5 - .../lesson_7/exercises/abort/tests/primes.imp | 26 - .../exercises/abort/tests/primes.imp.out | 5 - .../exercises/abort/tests/spawn.imp.in | 1 - .../lesson_7/exercises/abort/tests/sum-io.imp | 14 - .../exercises/abort/tests/sum-io.imp.in | 1 - .../exercises/abort/tests/sum-io.imp.out | 5 - .../lesson_7/exercises/abort/tests/sum.imp | 12 - .../exercises/abort/tests/sum.imp.out | 5 - .../exercises/non-determinism/Makefile | 3 - .../lesson_7/exercises/non-determinism/README | 14 - .../non-determinism/tests/nondet-0.imp | 1 - .../non-determinism/tests/nondet-0.imp.in | 2 - .../non-determinism/tests/nondet-0.imp.out | 5 - .../non-determinism/tests/nondet-1.imp | 1 - .../non-determinism/tests/nondet-1.imp.in | 2 - .../non-determinism/tests/nondet-1.imp.out | 23 - .../non-determinism/tests/nondet-2.imp | 2 - .../non-determinism/tests/nondet-2.imp.out | 23 - .../non-determinism/tests/nondet-3.imp | 8 - .../non-determinism/tests/nondet-3.imp.in | 1 - .../non-determinism/tests/nondet-3.imp.out | 23 - .../non-determinism/tests/nondet-my.imp.out | 41 -- .../1_k/4_imp++/lesson_7/media.properties | 0 .../1_k/4_imp++/lesson_7/tests/collatz.imp | 19 - .../4_imp++/lesson_7/tests/collatz.imp.out | 0 .../1_k/4_imp++/lesson_7/tests/div.imp | 3 - .../1_k/4_imp++/lesson_7/tests/div.imp.out | 104 --- .../1_k/4_imp++/lesson_7/tests/io.imp | 5 - .../1_k/4_imp++/lesson_7/tests/io.imp.in | 1 - .../1_k/4_imp++/lesson_7/tests/io.imp.out | 1 - .../1_k/4_imp++/lesson_7/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_7/tests/locals.imp.out | 5 - .../1_k/4_imp++/lesson_7/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_7/tests/primes.imp.out | 0 .../1_k/4_imp++/lesson_7/tests/spawn.imp | 8 - .../1_k/4_imp++/lesson_7/tests/spawn.imp.in | 1 - .../1_k/4_imp++/lesson_7/tests/spawn.imp.out | 23 - .../1_k/4_imp++/lesson_7/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_7/tests/sum-io.imp.in | 1 - .../1_k/4_imp++/lesson_7/tests/sum-io.imp.out | 2 - .../1_k/4_imp++/lesson_7/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_7/tests/sum.imp.out | 0 .../pl-tutorial/1_k/4_imp++/lesson_8/Makefile | 1 - .../1_k/4_imp++/lesson_8/README.md | 28 - .../pl-tutorial/1_k/4_imp++/lesson_8/imp.md | 669 ------------------ .../1_k/4_imp++/lesson_8/media.properties | 2 - .../1_k/4_imp++/lesson_8/tests/collatz.imp | 19 - .../4_imp++/lesson_8/tests/collatz.imp.out | 0 .../1_k/4_imp++/lesson_8/tests/div.imp | 3 - .../1_k/4_imp++/lesson_8/tests/div.imp.out | 104 --- .../1_k/4_imp++/lesson_8/tests/io.imp | 5 - .../1_k/4_imp++/lesson_8/tests/io.imp.in | 1 - .../1_k/4_imp++/lesson_8/tests/io.imp.out | 1 - .../1_k/4_imp++/lesson_8/tests/locals.imp | 15 - .../1_k/4_imp++/lesson_8/tests/locals.imp.out | 5 - .../1_k/4_imp++/lesson_8/tests/primes.imp | 26 - .../1_k/4_imp++/lesson_8/tests/primes.imp.out | 0 .../4_imp++/lesson_8/tests/proofs/abs-spec.k | 37 - .../lesson_8/tests/proofs/abs-spec.k.out | 1 - .../4_imp++/lesson_8/tests/proofs/max-spec.k | 39 - .../4_imp++/lesson_8/tests/proofs/min-spec.k | 39 - .../lesson_8/tests/proofs/min-spec.k.out | 1 - .../4_imp++/lesson_8/tests/proofs/sum-spec.k | 81 --- .../lesson_8/tests/proofs/sum-spec.k.out | 1 - .../1_k/4_imp++/lesson_8/tests/spawn.imp | 8 - .../1_k/4_imp++/lesson_8/tests/spawn.imp.in | 1 - .../1_k/4_imp++/lesson_8/tests/spawn.imp.out | 23 - .../1_k/4_imp++/lesson_8/tests/sum-io.imp | 14 - .../1_k/4_imp++/lesson_8/tests/sum-io.imp.in | 1 - .../1_k/4_imp++/lesson_8/tests/sum-io.imp.out | 2 - .../1_k/4_imp++/lesson_8/tests/sum.imp | 12 - .../1_k/4_imp++/lesson_8/tests/sum.imp.out | 0 .../pl-tutorial/1_k/5_types/Makefile | 4 - .../pl-tutorial/1_k/5_types/README.md | 11 - .../1_k/5_types/lesson_1.9/Makefile | 7 - .../1_k/5_types/lesson_1.9/NOTES.md | 13 - .../1_k/5_types/lesson_1.9/lambda.k | 51 -- .../1_k/5_types/lesson_1.9/media.properties | 0 .../lesson_1.9/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 5 - .../1_k/5_types/lesson_1.9/tests/ll.lambda | 3 - .../5_types/lesson_1.9/tests/ll.lambda.out | 5 - .../pl-tutorial/1_k/5_types/lesson_1/Makefile | 5 - .../pl-tutorial/1_k/5_types/lesson_1/NOTES.md | 5 - .../1_k/5_types/lesson_1/README.md | 143 ---- .../pl-tutorial/1_k/5_types/lesson_1/imp.k | 101 --- .../1_k/5_types/lesson_1/media.properties | 2 - .../1_k/5_types/lesson_1/tests/collatz.imp | 19 - .../5_types/lesson_1/tests/collatz.imp.out | 12 - .../1_k/5_types/lesson_1/tests/div.imp | 3 - .../1_k/5_types/lesson_1/tests/div.imp.out | 9 - .../1_k/5_types/lesson_1/tests/io.imp | 5 - .../1_k/5_types/lesson_1/tests/io.imp.out | 9 - .../1_k/5_types/lesson_1/tests/locals.imp | 15 - .../1_k/5_types/lesson_1/tests/locals.imp.out | 8 - .../1_k/5_types/lesson_1/tests/primes.imp | 26 - .../1_k/5_types/lesson_1/tests/primes.imp.out | 17 - .../1_k/5_types/lesson_1/tests/spawn.imp | 8 - .../1_k/5_types/lesson_1/tests/spawn.imp.out | 10 - .../1_k/5_types/lesson_1/tests/sum-io.imp | 14 - .../1_k/5_types/lesson_1/tests/sum-io.imp.out | 9 - .../1_k/5_types/lesson_1/tests/sum.imp | 12 - .../1_k/5_types/lesson_1/tests/sum.imp.out | 9 - .../pl-tutorial/1_k/5_types/lesson_2/Makefile | 7 - .../pl-tutorial/1_k/5_types/lesson_2/NOTES.md | 6 - .../1_k/5_types/lesson_2/README.md | 82 --- .../pl-tutorial/1_k/5_types/lesson_2/lambda.k | 51 -- .../1_k/5_types/lesson_2/media.properties | 2 - .../lesson_2/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 5 - .../1_k/5_types/lesson_2/tests/ll.lambda | 3 - .../1_k/5_types/lesson_2/tests/ll.lambda.out | 5 - .../pl-tutorial/1_k/5_types/lesson_3/Makefile | 1 - .../1_k/5_types/lesson_3/README.md | 66 -- .../pl-tutorial/1_k/5_types/lesson_3/lambda.k | 58 -- .../1_k/5_types/lesson_3/media.properties | 0 .../lesson_3/tests/factorial-letrec.lambda | 2 - .../tests/factorial-letrec.lambda.out | 5 - .../1_k/5_types/lesson_3/tests/ll.lambda | 3 - .../1_k/5_types/lesson_3/tests/ll.lambda.out | 5 - .../pl-tutorial/1_k/5_types/lesson_4/Makefile | 8 - .../pl-tutorial/1_k/5_types/lesson_4/NOTES.md | 9 - .../1_k/5_types/lesson_4/README.md | 235 ------ .../pl-tutorial/1_k/5_types/lesson_4/lambda.k | 53 -- .../1_k/5_types/lesson_4/media.properties | 0 .../lesson_4/tests/composition.lambda.out | 1 - .../lesson_4/tests/identity.lambda.out | 1 - .../1_k/5_types/lesson_4/tests/if.lambda.out | 1 - .../5_types/lesson_4/tests/letrec.lambda.out | 1 - .../lesson_4/tests/nested-lets.lambda.out | 1 - .../5_types/lesson_4/tests/plus.lambda.out | 1 - .../lesson_4/tests/tricky-1.lambda.out | 1 - .../lesson_4/tests/tricky-2.lambda.out | 1 - .../lesson_4/tests/tricky-3.lambda.out | 1 - .../lesson_4/tests/tricky-4.lambda.out | 1 - .../lesson_4/tests/tricky-5.lambda.out | 1 - .../1_k/5_types/lesson_5.5/Makefile | 1 - .../1_k/5_types/lesson_5.5/lambda.k | 54 -- .../1_k/5_types/lesson_5.5/media.properties | 0 .../lesson_5.5/tests/composition.lambda | 2 - .../lesson_5.5/tests/composition.lambda.out | 5 - .../5_types/lesson_5.5/tests/identity.lambda | 2 - .../1_k/5_types/lesson_5.5/tests/if.lambda | 2 - .../5_types/lesson_5.5/tests/if.lambda.out | 5 - .../5_types/lesson_5.5/tests/letrec.lambda | 2 - .../lesson_5.5/tests/letrec.lambda.out | 11 - .../lesson_5.5/tests/nested-lets.lambda | 6 - .../1_k/5_types/lesson_5.5/tests/plus.lambda | 1 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../5_types/lesson_5.5/tests/tricky-1.lambda | 6 - .../5_types/lesson_5.5/tests/tricky-2.lambda | 3 - .../lesson_5.5/tests/tricky-2.lambda.out | 11 - .../5_types/lesson_5.5/tests/tricky-3.lambda | 2 - .../lesson_5.5/tests/tricky-3.lambda.out | 5 - .../5_types/lesson_5.5/tests/tricky-4.lambda | 3 - .../5_types/lesson_5.5/tests/tricky-5.lambda | 2 - .../lesson_5.5/tests/tricky-5.lambda.out | 5 - .../pl-tutorial/1_k/5_types/lesson_5/Makefile | 1 - .../1_k/5_types/lesson_5/README.md | 60 -- .../pl-tutorial/1_k/5_types/lesson_5/lambda.k | 52 -- .../1_k/5_types/lesson_5/media.properties | 0 .../5_types/lesson_5/tests/composition.lambda | 2 - .../lesson_5/tests/composition.lambda.out | 5 - .../5_types/lesson_5/tests/identity.lambda | 2 - .../lesson_5/tests/identity.lambda.out | 5 - .../1_k/5_types/lesson_5/tests/if.lambda | 2 - .../1_k/5_types/lesson_5/tests/if.lambda.out | 5 - .../1_k/5_types/lesson_5/tests/letrec.lambda | 2 - .../5_types/lesson_5/tests/letrec.lambda.out | 5 - .../5_types/lesson_5/tests/nested-lets.lambda | 6 - .../lesson_5/tests/nested-lets.lambda.out | 5 - .../1_k/5_types/lesson_5/tests/plus.lambda | 1 - .../5_types/lesson_5/tests/plus.lambda.out | 5 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../lesson_5/tests/static-scoping-1.lambda | 4 - .../tests/static-scoping-1.lambda.out | 5 - .../lesson_5/tests/static-scoping-2.lambda | 6 - .../tests/static-scoping-2.lambda.out | 5 - .../5_types/lesson_5/tests/tricky-1.lambda | 6 - .../lesson_5/tests/tricky-1.lambda.out | 5 - .../5_types/lesson_5/tests/tricky-2.lambda | 3 - .../lesson_5/tests/tricky-2.lambda.out | 5 - .../5_types/lesson_5/tests/tricky-3.lambda | 2 - .../lesson_5/tests/tricky-3.lambda.out | 5 - .../5_types/lesson_5/tests/tricky-4.lambda | 3 - .../lesson_5/tests/tricky-4.lambda.out | 5 - .../5_types/lesson_5/tests/tricky-5.lambda | 2 - .../lesson_5/tests/tricky-5.lambda.out | 5 - .../pl-tutorial/1_k/5_types/lesson_6/NOTES.md | 6 - .../1_k/5_types/lesson_6/README.md | 123 ---- .../1_k/5_types/lesson_6/media.properties | 0 .../5_types/lesson_6/tests/composition.lambda | 2 - .../5_types/lesson_6/tests/identity.lambda | 2 - .../lesson_6/tests/identity.lambda.out | 5 - .../1_k/5_types/lesson_6/tests/if.lambda | 2 - .../1_k/5_types/lesson_6/tests/letrec.lambda | 2 - .../5_types/lesson_6/tests/nested-lets.lambda | 6 - .../lesson_6/tests/nested-lets.lambda.out | 5 - .../1_k/5_types/lesson_6/tests/plus.lambda | 1 - .../5_types/lesson_6/tests/plus.lambda.out | 5 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../lesson_6/tests/static-scoping-1.lambda | 4 - .../tests/static-scoping-1.lambda.out | 5 - .../lesson_6/tests/static-scoping-2.lambda | 6 - .../tests/static-scoping-2.lambda.out | 5 - .../5_types/lesson_6/tests/tricky-1.lambda | 6 - .../lesson_6/tests/tricky-1.lambda.out | 5 - .../5_types/lesson_6/tests/tricky-2.lambda | 3 - .../5_types/lesson_6/tests/tricky-3.lambda | 2 - .../5_types/lesson_6/tests/tricky-4.lambda | 3 - .../lesson_6/tests/tricky-4.lambda.out | 5 - .../5_types/lesson_6/tests/tricky-5.lambda | 2 - .../pl-tutorial/1_k/5_types/lesson_7/Makefile | 1 - .../pl-tutorial/1_k/5_types/lesson_7/NOTES.md | 8 - .../1_k/5_types/lesson_7/README.md | 128 ---- .../pl-tutorial/1_k/5_types/lesson_7/lambda.k | 53 -- .../1_k/5_types/lesson_7/media.properties | 0 .../5_types/lesson_7/tests/composition.lambda | 2 - .../lesson_7/tests/composition.lambda.out | 1 - .../lesson_7/tests/exponential-type.lambda | 13 - .../tests/exponential-type.lambda.out | 1 - .../lesson_7/tests/identities-1.lambda | 3 - .../lesson_7/tests/identities-1.lambda.out | 1 - .../lesson_7/tests/identities-2.lambda | 4 - .../lesson_7/tests/identities-2.lambda.out | 1 - .../5_types/lesson_7/tests/identity.lambda | 2 - .../lesson_7/tests/identity.lambda.out | 1 - .../1_k/5_types/lesson_7/tests/if.lambda | 2 - .../1_k/5_types/lesson_7/tests/if.lambda.out | 1 - .../1_k/5_types/lesson_7/tests/letrec.lambda | 2 - .../5_types/lesson_7/tests/letrec.lambda.out | 1 - .../5_types/lesson_7/tests/nested-lets.lambda | 6 - .../lesson_7/tests/nested-lets.lambda.out | 1 - .../1_k/5_types/lesson_7/tests/plus.lambda | 1 - .../5_types/lesson_7/tests/plus.lambda.out | 1 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../lesson_7/tests/static-scoping-1.lambda | 4 - .../tests/static-scoping-1.lambda.out | 1 - .../lesson_7/tests/static-scoping-2.lambda | 6 - .../tests/static-scoping-2.lambda.out | 1 - .../5_types/lesson_7/tests/tricky-1.lambda | 6 - .../lesson_7/tests/tricky-1.lambda.out | 1 - .../5_types/lesson_7/tests/tricky-2.lambda | 3 - .../lesson_7/tests/tricky-2.lambda.out | 1 - .../5_types/lesson_7/tests/tricky-3.lambda | 2 - .../lesson_7/tests/tricky-3.lambda.out | 1 - .../5_types/lesson_7/tests/tricky-4.lambda | 3 - .../lesson_7/tests/tricky-4.lambda.out | 1 - .../5_types/lesson_7/tests/tricky-5.lambda | 2 - .../lesson_7/tests/tricky-5.lambda.out | 1 - .../1_k/5_types/lesson_7/tests/tricky.lambda | 4 - .../5_types/lesson_7/tests/tricky.lambda.out | 1 - .../pl-tutorial/1_k/5_types/lesson_8/Makefile | 1 - .../pl-tutorial/1_k/5_types/lesson_8/NOTES.md | 6 - .../1_k/5_types/lesson_8/README.md | 53 -- .../pl-tutorial/1_k/5_types/lesson_8/lambda.k | 60 -- .../1_k/5_types/lesson_8/media.properties | 0 .../5_types/lesson_8/tests/composition.lambda | 2 - .../lesson_8/tests/composition.lambda.out | 1 - .../lesson_8/tests/exponential-type.lambda | 13 - .../tests/exponential-type.lambda.out | 1 - .../lesson_8/tests/identities-1.lambda | 3 - .../lesson_8/tests/identities-1.lambda.out | 1 - .../lesson_8/tests/identities-2.lambda | 4 - .../lesson_8/tests/identities-2.lambda.out | 1 - .../5_types/lesson_8/tests/identity.lambda | 2 - .../lesson_8/tests/identity.lambda.out | 1 - .../1_k/5_types/lesson_8/tests/if.lambda | 2 - .../1_k/5_types/lesson_8/tests/if.lambda.out | 1 - .../1_k/5_types/lesson_8/tests/letrec.lambda | 2 - .../5_types/lesson_8/tests/letrec.lambda.out | 1 - .../5_types/lesson_8/tests/nested-lets.lambda | 6 - .../lesson_8/tests/nested-lets.lambda.out | 1 - .../1_k/5_types/lesson_8/tests/plus.lambda | 1 - .../5_types/lesson_8/tests/plus.lambda.out | 1 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../lesson_8/tests/static-scoping-1.lambda | 4 - .../tests/static-scoping-1.lambda.out | 1 - .../lesson_8/tests/static-scoping-2.lambda | 6 - .../tests/static-scoping-2.lambda.out | 1 - .../5_types/lesson_8/tests/tricky-1.lambda | 6 - .../lesson_8/tests/tricky-1.lambda.out | 1 - .../5_types/lesson_8/tests/tricky-2.lambda | 3 - .../lesson_8/tests/tricky-2.lambda.out | 1 - .../5_types/lesson_8/tests/tricky-3.lambda | 2 - .../lesson_8/tests/tricky-3.lambda.out | 1 - .../5_types/lesson_8/tests/tricky-4.lambda | 3 - .../lesson_8/tests/tricky-4.lambda.out | 1 - .../5_types/lesson_8/tests/tricky-5.lambda | 2 - .../lesson_8/tests/tricky-5.lambda.out | 1 - .../1_k/5_types/lesson_8/tests/tricky.lambda | 4 - .../5_types/lesson_8/tests/tricky.lambda.out | 1 - .../1_k/5_types/lesson_9.5/Makefile | 1 - .../1_k/5_types/lesson_9.5/NOTES.md | 5 - .../1_k/5_types/lesson_9.5/lambda.k | 73 -- .../1_k/5_types/lesson_9.5/media.properties | 0 .../lesson_9.5/tests/callCC-return.lambda.out | 0 .../lesson_9.5/tests/composition.lambda | 2 - .../lesson_9.5/tests/composition.lambda.out | 1 - .../lesson_9.5/tests/exponential-type.lambda | 13 - .../tests/exponential-type.lambda.out | 1 - .../lesson_9.5/tests/identities-1.lambda | 3 - .../lesson_9.5/tests/identities-1.lambda.out | 1 - .../lesson_9.5/tests/identities-2.lambda | 4 - .../lesson_9.5/tests/identities-2.lambda.out | 1 - .../5_types/lesson_9.5/tests/identity.lambda | 2 - .../lesson_9.5/tests/identity.lambda.out | 1 - .../1_k/5_types/lesson_9.5/tests/if.lambda | 2 - .../5_types/lesson_9.5/tests/if.lambda.out | 1 - .../5_types/lesson_9.5/tests/letrec.lambda | 2 - .../lesson_9.5/tests/letrec.lambda.out | 1 - .../lesson_9.5/tests/nested-lets.lambda | 6 - .../lesson_9.5/tests/nested-lets.lambda.out | 1 - .../1_k/5_types/lesson_9.5/tests/plus.lambda | 1 - .../5_types/lesson_9.5/tests/plus.lambda.out | 1 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../lesson_9.5/tests/should-fail.lambda | 3 - .../lesson_9.5/tests/should-fail.lambda.out | 1 - .../lesson_9.5/tests/static-scoping-1.lambda | 4 - .../tests/static-scoping-1.lambda.out | 1 - .../lesson_9.5/tests/static-scoping-2.lambda | 6 - .../tests/static-scoping-2.lambda.out | 1 - .../5_types/lesson_9.5/tests/tricky-1.lambda | 6 - .../lesson_9.5/tests/tricky-1.lambda.out | 1 - .../5_types/lesson_9.5/tests/tricky-2.lambda | 3 - .../lesson_9.5/tests/tricky-2.lambda.out | 1 - .../5_types/lesson_9.5/tests/tricky-3.lambda | 2 - .../lesson_9.5/tests/tricky-3.lambda.out | 1 - .../5_types/lesson_9.5/tests/tricky-4.lambda | 3 - .../lesson_9.5/tests/tricky-4.lambda.out | 1 - .../5_types/lesson_9.5/tests/tricky-5.lambda | 2 - .../lesson_9.5/tests/tricky-5.lambda.out | 1 - .../5_types/lesson_9.5/tests/tricky.lambda | 4 - .../lesson_9.5/tests/tricky.lambda.out | 1 - .../pl-tutorial/1_k/5_types/lesson_9/Makefile | 1 - .../1_k/5_types/lesson_9/README.md | 184 ----- .../pl-tutorial/1_k/5_types/lesson_9/lambda.k | 69 -- .../1_k/5_types/lesson_9/media.properties | 0 .../5_types/lesson_9/tests/composition.lambda | 2 - .../lesson_9/tests/composition.lambda.out | 1 - .../lesson_9/tests/exponential-type.lambda | 13 - .../tests/exponential-type.lambda.out | 1 - .../lesson_9/tests/identities-1.lambda | 3 - .../lesson_9/tests/identities-1.lambda.out | 1 - .../lesson_9/tests/identities-2.lambda | 4 - .../lesson_9/tests/identities-2.lambda.out | 1 - .../5_types/lesson_9/tests/identity.lambda | 2 - .../lesson_9/tests/identity.lambda.out | 1 - .../1_k/5_types/lesson_9/tests/if.lambda | 2 - .../1_k/5_types/lesson_9/tests/if.lambda.out | 1 - .../1_k/5_types/lesson_9/tests/letrec.lambda | 2 - .../5_types/lesson_9/tests/letrec.lambda.out | 1 - .../5_types/lesson_9/tests/nested-lets.lambda | 6 - .../lesson_9/tests/nested-lets.lambda.out | 1 - .../1_k/5_types/lesson_9/tests/plus.lambda | 1 - .../5_types/lesson_9/tests/plus.lambda.out | 1 - .../tests/polymorphic-identity-1-fails.lambda | 2 - .../polymorphic-identity-1-fails.lambda.out | 1 - .../tests/polymorphic-identity-2-fails.lambda | 2 - .../polymorphic-identity-2-fails.lambda.out | 1 - .../5_types/lesson_9/tests/should-fail.lambda | 3 - .../lesson_9/tests/should-fail.lambda.out | 1 - .../lesson_9/tests/static-scoping-1.lambda | 4 - .../tests/static-scoping-1.lambda.out | 1 - .../lesson_9/tests/static-scoping-2.lambda | 6 - .../tests/static-scoping-2.lambda.out | 1 - .../5_types/lesson_9/tests/tricky-1.lambda | 6 - .../lesson_9/tests/tricky-1.lambda.out | 1 - .../5_types/lesson_9/tests/tricky-2.lambda | 3 - .../lesson_9/tests/tricky-2.lambda.out | 1 - .../5_types/lesson_9/tests/tricky-3.lambda | 2 - .../lesson_9/tests/tricky-3.lambda.out | 1 - .../5_types/lesson_9/tests/tricky-4.lambda | 3 - .../lesson_9/tests/tricky-4.lambda.out | 1 - .../5_types/lesson_9/tests/tricky-5.lambda | 2 - .../lesson_9/tests/tricky-5.lambda.out | 1 - .../1_k/5_types/lesson_9/tests/tricky.lambda | 4 - .../5_types/lesson_9/tests/tricky.lambda.out | 1 - .../pl-tutorial/1_k/6_extras/README | 51 -- k-distribution/pl-tutorial/1_k/Makefile | 4 - k-distribution/pl-tutorial/1_k/README.md | 15 - .../2_languages/1_simple/1_untyped/NOTES.md | 22 - .../exercises/break-continue/Makefile | 2 - .../1_untyped/exercises/break-continue/README | 24 - .../break-from-exception.simple | 19 - .../break-from-exception.simple.out | 27 - .../break-continue/break-from-function.simple | 19 - .../break-from-function.simple.out | 2 - .../break-continue/collatz-continue.simple | 17 - .../break-continue/collatz-continue.simple.in | 1 - .../collatz-continue.simple.out | 11 - .../break-continue/factorial-continue.simple | 14 - .../factorial-continue.simple.in | 1 - .../factorial-continue.simple.out | 1 - .../break-continue/for-with-break.simple | 7 - .../break-continue/for-with-break.simple.out | 1 - .../break-continue/for-with-continue.simple | 10 - .../for-with-continue.simple.out | 7 - .../tests/break-continue/nested-loops.simple | 27 - .../break-continue/nested-loops.simple.out | 23 - .../while-with-break-and-continue.simple | 9 - .../while-with-break-and-continue.simple.out | 4 - .../break-continue/while-with-break.simple | 6 - .../while-with-break.simple.out | 1 - .../break-continue/while-with-continue.simple | 9 - .../while-with-continue.simple.out | 11 - .../break-continue/while-with-locals.simple | 8 - .../while-with-locals.simple.out | 1 - .../tests/threads/threads_05.simple.out | 199 ------ .../parameter-passing-styles/Makefile | 2 - .../exercises/parameter-passing-styles/README | 21 - .../tests/diverse/collatz.simple | 19 - .../tests/diverse/div-nondet.simple | 15 - .../tests/diverse/factorial.simple | 15 - .../tests/diverse/higher-order.simple | 77 -- .../tests/diverse/matrix.simple | 57 -- .../tests/diverse/matrix.simple.in | 4 - .../tests/diverse/sortings.simple | 133 ---- .../tests/exceptions/exceptions_01.simple | 16 - .../tests/exceptions/exceptions_02.simple | 20 - .../tests/exceptions/exceptions_03.simple | 8 - .../tests/exceptions/exceptions_04.simple | 8 - .../tests/exceptions/exceptions_05.simple | 23 - .../tests/exceptions/exceptions_06.simple | 22 - .../tests/exceptions/exceptions_07.simple | 13 - .../tests/exceptions/exceptions_07.simple.out | 11 - .../tests/exceptions/exceptions_08.simple | 27 - .../tests/exceptions/exceptions_09.simple | 24 - .../tests/exceptions/exceptions_10.simple | 13 - .../tests/exceptions/exceptions_11.simple | 20 - .../tests/exceptions/exceptions_12.simple | 19 - .../tests/exceptions/exceptions_13.simple | 10 - .../tests/exceptions/exceptions_14.simple | 10 - .../tests/exceptions/exceptions_15.simple | 15 - .../parameter-passing-styles/0-basic.simple | 9 - .../0-basic.simple.out | 1 - .../binding-order.simple | 8 - .../binding-order.simple.out | 1 - .../call-by-ref-0.simple | 9 - .../call-by-ref-0.simple.out | 1 - .../call-by-ref-3.simple | 15 - .../call-by-ref-3.simple.out | 3 - .../call-by-ref-4.simple | 13 - .../call-by-ref-4.simple.out | 2 - .../call-by-ref-5.simple | 27 - .../call-by-ref-5.simple.out | 3 - .../increment-by-ref.simple | 13 - .../increment-by-ref.simple.out | 2 - .../parsing-refs.simple | 6 - .../parsing-refs.simple.out | 1 - .../parameter-passing-styles/pointers.simple | 15 - .../pointers.simple.out | 5 - .../same-address.simple | 8 - .../same-address.simple.out | 1 - .../parameter-passing-styles/swap-3.simple | 15 - .../swap-3.simple.out | 3 - .../swap-by-both.simple | 27 - .../swap-by-both.simple.out | 3 - .../swap-by-ptr.simple | 15 - .../swap-by-ptr.simple.out | 3 - .../swap-by-ref.simple | 15 - .../swap-by-ref.simple.out | 3 - .../tests/threads/threads_01.simple | 10 - .../tests/threads/threads_01.simple.out | 11 - .../tests/threads/threads_02.simple | 14 - .../tests/threads/threads_02.simple.out | 11 - .../tests/threads/threads_04.simple | 15 - .../tests/threads/threads_04.simple.out | 23 - .../tests/threads/threads_05.simple | 13 - .../tests/threads/threads_06.simple | 10 - .../tests/threads/threads_06.simple.out | 23 - .../tests/threads/threads_07.simple | 13 - .../tests/threads/threads_09.simple | 15 - .../tests/threads/threads_09.simple.out | 11 - .../tests/threads/threads_10.simple | 18 - .../tests/threads/threads_11.simple | 22 - .../tests/threads/threads_12.simple | 46 -- .../1_untyped/tests/diverse/collatz.simple | 19 - .../1_untyped/tests/diverse/collatz.simple.in | 1 - .../tests/diverse/collatz.simple.out | 6 - .../1_untyped/tests/diverse/div-nondet.simple | 15 - .../tests/diverse/div-nondet.simple.out | 17 - .../1_untyped/tests/diverse/factorial.simple | 15 - .../tests/diverse/factorial.simple.in | 1 - .../tests/diverse/factorial.simple.out | 1 - .../tests/diverse/higher-order.simple | 77 -- .../tests/diverse/higher-order.simple.out | 5 - .../1_untyped/tests/diverse/matrix.simple | 57 -- .../1_untyped/tests/diverse/matrix.simple.in | 4 - .../1_untyped/tests/diverse/matrix.simple.out | 16 - .../diverse/nonterminating/dekker.simple | 31 - .../1_untyped/tests/diverse/sortings.simple | 133 ---- .../tests/diverse/sortings.simple.in | 1 - .../tests/diverse/sortings.simple.out | 17 - .../tests/exceptions/exceptions_01.simple | 16 - .../tests/exceptions/exceptions_01.simple.out | 1 - .../tests/exceptions/exceptions_02.simple | 20 - .../tests/exceptions/exceptions_02.simple.out | 1 - .../tests/exceptions/exceptions_03.simple | 8 - .../tests/exceptions/exceptions_03.simple.out | 1 - .../tests/exceptions/exceptions_04.simple | 8 - .../tests/exceptions/exceptions_04.simple.out | 1 - .../tests/exceptions/exceptions_05.simple | 23 - .../tests/exceptions/exceptions_05.simple.out | 1 - .../tests/exceptions/exceptions_06.simple | 22 - .../tests/exceptions/exceptions_06.simple.out | 1 - .../tests/exceptions/exceptions_07.simple | 13 - .../tests/exceptions/exceptions_07.simple.out | 11 - .../tests/exceptions/exceptions_08.simple | 27 - .../tests/exceptions/exceptions_08.simple.out | 1 - .../tests/exceptions/exceptions_09.simple | 24 - .../tests/exceptions/exceptions_09.simple.out | 1 - .../tests/exceptions/exceptions_10.simple | 13 - .../tests/exceptions/exceptions_10.simple.out | 1 - .../tests/exceptions/exceptions_11.simple | 20 - .../tests/exceptions/exceptions_11.simple.out | 1 - .../tests/exceptions/exceptions_12.simple | 19 - .../tests/exceptions/exceptions_12.simple.out | 1 - .../tests/exceptions/exceptions_13.simple | 10 - .../tests/exceptions/exceptions_13.simple.out | 1 - .../tests/exceptions/exceptions_14.simple | 10 - .../tests/exceptions/exceptions_14.simple.out | 1 - .../tests/exceptions/exceptions_15.simple | 15 - .../1_untyped/tests/threads/threads_01.simple | 10 - .../tests/threads/threads_01.simple.out | 11 - .../1_untyped/tests/threads/threads_02.simple | 14 - .../tests/threads/threads_02.simple.out | 11 - .../1_untyped/tests/threads/threads_04.simple | 15 - .../tests/threads/threads_04.simple.out | 23 - .../1_untyped/tests/threads/threads_05.simple | 13 - .../tests/threads/threads_05.simple.out | 199 ------ .../1_untyped/tests/threads/threads_06.simple | 10 - .../tests/threads/threads_06.simple.in | 1 - .../tests/threads/threads_06.simple.out | 23 - .../1_untyped/tests/threads/threads_07.simple | 13 - .../tests/threads/threads_07.simple.in | 1 - .../tests/threads/threads_07.simple.out | 1 - .../1_untyped/tests/threads/threads_09.simple | 15 - .../tests/threads/threads_09.simple.out | 11 - .../1_untyped/tests/threads/threads_10.simple | 18 - .../tests/threads/threads_10.simple.out | 1 - .../1_untyped/tests/threads/threads_11.simple | 22 - .../tests/threads/threads_11.simple.out | 1 - .../1_untyped/tests/threads/threads_12.simple | 46 -- .../tests/threads/threads_12.simple.out | 1 - .../1_simple/2_typed/1_static/NOTES.md | 9 - .../exercises/functions-with-throws/Makefile | 3 - .../exercises/functions-with-throws/README | 12 - .../functions-with-throws/tests/README.md | 8 - .../tests/ex01.simple.out | 1 - .../tests/ex02.simple.out | 1 - .../tests/ex03.simple.out | 1 - .../tests/ex04.simple.out | 1 - .../tests/ex05.simple.out | 1 - .../tests/ex06.simple.out | 1 - .../tests/ex07.simple.out | 1 - .../tests/ex08.simple.out | 1 - .../tests/ex09.simple.out | 1 - .../tests/ex10.simple.out | 1 - .../tests/ex11.simple.out | 1 - .../tests/ex12.simple.out | 1 - .../tests/ex13.simple.out | 1 - .../tests/ex14.simple.out | 1 - .../tests/ex15.simple.out | 1 - .../tests/ex16.simple.out | 1 - .../tests/ex17.simple.out | 1 - .../tests/exceptions_02.simple.out | 1 - .../tests/exceptions_09.simple.out | 1 - .../tests/functions-with-throws/ex01.simple | 13 - .../tests/functions-with-throws/ex02.simple | 17 - .../tests/functions-with-throws/ex03.simple | 19 - .../tests/functions-with-throws/ex04.simple | 22 - .../tests/functions-with-throws/ex05.simple | 23 - .../tests/functions-with-throws/ex06.simple | 28 - .../tests/functions-with-throws/ex07.simple | 29 - .../tests/functions-with-throws/ex08.simple | 22 - .../tests/functions-with-throws/ex09.simple | 31 - .../tests/functions-with-throws/ex10.simple | 29 - .../tests/functions-with-throws/ex11.simple | 22 - .../tests/functions-with-throws/ex12.simple | 31 - .../tests/functions-with-throws/ex13.simple | 46 -- .../tests/functions-with-throws/ex14.simple | 17 - .../tests/functions-with-throws/ex15.simple | 17 - .../tests/functions-with-throws/ex16.simple | 17 - .../tests/functions-with-throws/ex17.simple | 17 - .../no-duplicate-declarations/Makefile | 3 - .../no-duplicate-declarations/README | 20 - .../tests/collatz.simple.out | 1 - .../tests/dekker.simple.out | 1 - .../tests/div-nondet.simple.out | 1 - .../tests/diverse/collatz.simple | 19 - .../tests/diverse/dekker.simple | 32 - .../tests/diverse/div-nondet.simple | 15 - .../tests/diverse/factorial.simple | 15 - .../tests/diverse/higher-order.simple | 89 --- .../tests/diverse/matrix.simple | 57 -- .../tests/diverse/sortings.simple | 136 ---- .../tests/ex01.simple.out | 1 - .../tests/ex02.simple.out | 1 - .../tests/ex03.simple.out | 1 - .../tests/ex04.simple.out | 1 - .../tests/ex05.simple.out | 1 - .../tests/ex06.simple.out | 1 - .../tests/ex07.simple.out | 1 - .../tests/ex08.simple.out | 1 - .../tests/ex09.simple.out | 1 - .../tests/exceptions/exceptions_01.simple | 16 - .../tests/exceptions/exceptions_02.simple | 20 - .../tests/exceptions/exceptions_03.simple | 8 - .../tests/exceptions/exceptions_04.simple | 8 - .../tests/exceptions/exceptions_05.simple | 23 - .../tests/exceptions/exceptions_06.simple | 22 - .../tests/exceptions/exceptions_07.simple | 12 - .../tests/exceptions/exceptions_08.simple | 26 - .../tests/exceptions/exceptions_09.simple | 24 - .../tests/exceptions/exceptions_10.simple | 13 - .../tests/exceptions/exceptions_11.simple | 20 - .../tests/exceptions/exceptions_12.simple | 19 - .../tests/exceptions/exceptions_13.simple | 10 - .../tests/exceptions/exceptions_14.simple | 10 - .../tests/exceptions/exceptions_15.simple | 15 - .../tests/exceptions_01.simple.out | 1 - .../tests/exceptions_03.simple.out | 1 - .../tests/exceptions_04.simple.out | 1 - .../tests/exceptions_05.simple.out | 1 - .../tests/exceptions_06.simple.out | 1 - .../tests/exceptions_07.simple.out | 1 - .../tests/exceptions_08.simple.out | 1 - .../tests/exceptions_10.simple.out | 1 - .../tests/exceptions_11.simple.out | 1 - .../tests/exceptions_12.simple.out | 1 - .../tests/exceptions_13.simple.out | 1 - .../tests/exceptions_14.simple.out | 1 - .../tests/exceptions_15.simple.out | 1 - .../tests/factorial.simple.out | 1 - .../tests/higher-order.simple.out | 1 - .../tests/matrix.simple.out | 1 - .../no-duplicate-declarations/ex01.simple | 4 - .../no-duplicate-declarations/ex02.simple | 8 - .../no-duplicate-declarations/ex03.simple | 10 - .../no-duplicate-declarations/ex04.simple | 10 - .../no-duplicate-declarations/ex05.simple | 10 - .../no-duplicate-declarations/ex06.simple | 8 - .../no-duplicate-declarations/ex07.simple | 13 - .../no-duplicate-declarations/ex08.simple | 14 - .../no-duplicate-declarations/ex09.simple | 14 - .../tests/sortings.simple.out | 1 - .../tests/threads/threads_01.simple | 10 - .../tests/threads/threads_02.simple | 14 - .../tests/threads/threads_03.simple | 11 - .../tests/threads/threads_04.simple | 15 - .../tests/threads/threads_05.simple | 13 - .../tests/threads/threads_06.simple | 10 - .../tests/threads/threads_07.simple | 13 - .../tests/threads/threads_08.simple | 57 -- .../tests/threads/threads_09.simple | 15 - .../tests/threads/threads_10.simple | 18 - .../tests/threads/threads_11.simple | 22 - .../tests/threads/threads_12.simple | 46 -- .../tests/threads_01.simple.out | 1 - .../tests/threads_02.simple.out | 1 - .../tests/threads_03.simple.out | 1 - .../tests/threads_04.simple.out | 1 - .../tests/threads_05.simple.out | 1 - .../tests/threads_06.simple.out | 1 - .../tests/threads_07.simple.out | 1 - .../tests/threads_08.simple.out | 1 - .../tests/threads_09.simple.out | 1 - .../tests/threads_10.simple.out | 1 - .../tests/threads_11.simple.out | 1 - .../tests/threads_12.simple.out | 1 - .../2_typed/1_static/tests/collatz.simple.out | 1 - .../2_typed/1_static/tests/dekker.simple.out | 1 - .../1_static/tests/div-nondet.simple.out | 1 - .../1_static/tests/exceptions_01.simple.out | 1 - .../1_static/tests/exceptions_02.simple.out | 1 - .../1_static/tests/exceptions_03.simple.out | 1 - .../1_static/tests/exceptions_04.simple.out | 1 - .../1_static/tests/exceptions_05.simple.out | 1 - .../1_static/tests/exceptions_06.simple.out | 1 - .../1_static/tests/exceptions_07.simple.out | 1 - .../1_static/tests/exceptions_08.simple.out | 1 - .../1_static/tests/exceptions_09.simple.out | 1 - .../1_static/tests/exceptions_10.simple.out | 1 - .../1_static/tests/exceptions_11.simple.out | 1 - .../1_static/tests/exceptions_12.simple.out | 1 - .../1_static/tests/exceptions_13.simple.out | 1 - .../1_static/tests/exceptions_14.simple.out | 1 - .../1_static/tests/exceptions_15.simple.out | 1 - .../1_static/tests/factorial.simple.out | 1 - .../1_static/tests/higher-order.simple.out | 1 - .../2_typed/1_static/tests/matrix.simple.out | 1 - .../1_static/tests/sortings.simple.out | 1 - .../1_static/tests/threads_01.simple.out | 1 - .../1_static/tests/threads_02.simple.out | 1 - .../1_static/tests/threads_03.simple.out | 1 - .../1_static/tests/threads_04.simple.out | 1 - .../1_static/tests/threads_05.simple.out | 1 - .../1_static/tests/threads_06.simple.out | 1 - .../1_static/tests/threads_07.simple.out | 1 - .../1_static/tests/threads_08.simple.out | 1 - .../1_static/tests/threads_09.simple.out | 1 - .../1_static/tests/threads_10.simple.out | 1 - .../1_static/tests/threads_11.simple.out | 1 - .../1_static/tests/threads_12.simple.out | 1 - .../exercises/functions-with-throws/Makefile | 3 - .../exercises/functions-with-throws/README | 30 - .../tests/collatz.simple.in | 1 - .../tests/collatz.simple.out | 6 - .../tests/div-nondet.simple.out | 17 - .../tests/diverse/collatz.simple | 19 - .../tests/diverse/dekker.simple | 32 - .../tests/diverse/div-nondet.simple | 15 - .../tests/diverse/factorial.simple | 15 - .../tests/diverse/higher-order.simple | 89 --- .../tests/diverse/matrix.simple | 57 -- .../tests/diverse/sortings.simple | 136 ---- .../tests/ex01.simple.out | 1 - .../tests/ex02.simple.out | 2 - .../tests/ex03.simple.out | 2 - .../tests/ex04.simple.out | 3 - .../tests/ex05.simple.out | 2 - .../tests/ex06.simple.out | 11 - .../tests/ex07.simple.out | 10 - .../tests/ex08.simple.out | 3 - .../tests/ex09.simple.out | 3 - .../tests/ex10.simple.out | 12 - .../tests/ex11.simple.out | 5 - .../tests/ex12.simple.out | 5 - .../tests/ex13.simple.out | 4 - .../tests/ex14.simple.out | 0 .../tests/ex15.simple.out | 1 - .../tests/ex16.simple.out | 2 - .../tests/ex17.simple.out | 3 - .../tests/exceptions/exceptions_01.simple | 16 - .../tests/exceptions/exceptions_02.simple | 20 - .../tests/exceptions/exceptions_03.simple | 8 - .../tests/exceptions/exceptions_04.simple | 8 - .../tests/exceptions/exceptions_05.simple | 23 - .../tests/exceptions/exceptions_06.simple | 22 - .../tests/exceptions/exceptions_07.simple | 12 - .../tests/exceptions/exceptions_08.simple | 26 - .../tests/exceptions/exceptions_09.simple | 24 - .../tests/exceptions/exceptions_10.simple | 13 - .../tests/exceptions/exceptions_11.simple | 20 - .../tests/exceptions/exceptions_12.simple | 19 - .../tests/exceptions/exceptions_13.simple | 10 - .../tests/exceptions/exceptions_14.simple | 10 - .../tests/exceptions/exceptions_15.simple | 15 - .../tests/exceptions_01.simple.out | 1 - .../tests/exceptions_02.simple.out | 0 .../tests/exceptions_03.simple.out | 1 - .../tests/exceptions_04.simple.out | 1 - .../tests/exceptions_05.simple.out | 1 - .../tests/exceptions_06.simple.out | 1 - .../tests/exceptions_08.simple.out | 1 - .../tests/exceptions_09.simple.out | 0 .../tests/exceptions_10.simple.out | 1 - .../tests/exceptions_11.simple.out | 1 - .../tests/exceptions_12.simple.out | 1 - .../tests/exceptions_13.simple.out | 1 - .../tests/exceptions_14.simple.out | 1 - .../tests/exceptions_15.simple.out | 1 - .../tests/factorial.simple.in | 1 - .../tests/factorial.simple.out | 1 - .../tests/functions-with-throws/ex01.simple | 13 - .../tests/functions-with-throws/ex02.simple | 17 - .../tests/functions-with-throws/ex03.simple | 19 - .../tests/functions-with-throws/ex04.simple | 22 - .../tests/functions-with-throws/ex05.simple | 23 - .../tests/functions-with-throws/ex06.simple | 28 - .../tests/functions-with-throws/ex07.simple | 29 - .../tests/functions-with-throws/ex08.simple | 22 - .../tests/functions-with-throws/ex09.simple | 31 - .../tests/functions-with-throws/ex10.simple | 29 - .../tests/functions-with-throws/ex11.simple | 22 - .../tests/functions-with-throws/ex12.simple | 31 - .../tests/functions-with-throws/ex13.simple | 46 -- .../tests/functions-with-throws/ex14.simple | 17 - .../tests/functions-with-throws/ex15.simple | 17 - .../tests/functions-with-throws/ex16.simple | 17 - .../tests/functions-with-throws/ex17.simple | 17 - .../tests/higher-order.simple.out | 5 - .../tests/matrix.simple.out | 16 - .../tests/sortings.simple.in | 1 - .../tests/sortings.simple.out | 17 - .../tests/threads/threads_01.simple | 10 - .../tests/threads/threads_02.simple | 14 - .../tests/threads/threads_03.simple | 11 - .../tests/threads/threads_04.simple | 15 - .../tests/threads/threads_05.simple | 13 - .../tests/threads/threads_06.simple | 10 - .../tests/threads/threads_07.simple | 13 - .../tests/threads/threads_08.simple | 57 -- .../tests/threads/threads_09.simple | 15 - .../tests/threads/threads_10.simple | 18 - .../tests/threads/threads_11.simple | 22 - .../tests/threads/threads_12.simple | 46 -- .../tests/threads_05.simple.out | 199 ------ .../tests/threads_06.simple.in | 1 - .../tests/threads_07.simple.in | 1 - .../tests/threads_07.simple.out | 1 - .../tests/threads_10.simple.out | 1 - .../tests/threads_11.simple.out | 1 - .../tests/threads_12.simple.out | 1 - .../exercises/typed-exceptions/Makefile | 3 - .../exercises/typed-exceptions/README | 12 - .../typed-exceptions/tests/collatz.simple.in | 1 - .../typed-exceptions/tests/collatz.simple.out | 6 - .../tests/div-nondet.simple.out | 17 - .../tests/diverse/collatz.simple | 19 - .../tests/diverse/dekker.simple | 32 - .../tests/diverse/div-nondet.simple | 15 - .../tests/diverse/factorial.simple | 15 - .../tests/diverse/higher-order.simple | 89 --- .../tests/diverse/matrix.simple | 57 -- .../tests/diverse/sortings.simple | 136 ---- .../typed-exceptions/tests/ex01.simple.out | 1 - .../typed-exceptions/tests/ex02.simple.out | 2 - .../typed-exceptions/tests/ex03.simple.out | 2 - .../typed-exceptions/tests/ex04.simple.out | 3 - .../typed-exceptions/tests/ex05.simple.out | 2 - .../typed-exceptions/tests/ex06.simple.out | 11 - .../typed-exceptions/tests/ex07.simple.out | 12 - .../typed-exceptions/tests/ex08.simple.out | 12 - .../typed-exceptions/tests/ex09.simple.out | 5 - .../tests/exceptions/exceptions_01.simple | 16 - .../tests/exceptions/exceptions_02.simple | 20 - .../tests/exceptions/exceptions_03.simple | 8 - .../tests/exceptions/exceptions_04.simple | 8 - .../tests/exceptions/exceptions_05.simple | 23 - .../tests/exceptions/exceptions_06.simple | 22 - .../tests/exceptions/exceptions_07.simple | 12 - .../tests/exceptions/exceptions_08.simple | 26 - .../tests/exceptions/exceptions_09.simple | 24 - .../tests/exceptions/exceptions_10.simple | 13 - .../tests/exceptions/exceptions_11.simple | 20 - .../tests/exceptions/exceptions_12.simple | 19 - .../tests/exceptions/exceptions_13.simple | 10 - .../tests/exceptions/exceptions_14.simple | 10 - .../tests/exceptions/exceptions_15.simple | 15 - .../tests/exceptions_01.simple.out | 1 - .../tests/exceptions_02.simple.out | 1 - .../tests/exceptions_03.simple.out | 1 - .../tests/exceptions_04.simple.out | 1 - .../tests/exceptions_05.simple.out | 1 - .../tests/exceptions_06.simple.out | 1 - .../tests/exceptions_07.simple.out | 3 - .../tests/exceptions_08.simple.out | 1 - .../tests/exceptions_09.simple.out | 1 - .../tests/exceptions_10.simple.out | 1 - .../tests/exceptions_11.simple.out | 1 - .../tests/exceptions_12.simple.out | 1 - .../tests/exceptions_13.simple.out | 1 - .../tests/exceptions_14.simple.out | 1 - .../tests/exceptions_15.simple.out | 1 - .../tests/factorial.simple.in | 1 - .../tests/factorial.simple.out | 1 - .../tests/higher-order.simple.out | 5 - .../typed-exceptions/tests/matrix.simple.in | 1 - .../typed-exceptions/tests/matrix.simple.out | 16 - .../typed-exceptions/tests/sortings.simple.in | 1 - .../tests/sortings.simple.out | 17 - .../tests/threads/threads_01.simple | 10 - .../tests/threads/threads_02.simple | 14 - .../tests/threads/threads_03.simple | 11 - .../tests/threads/threads_04.simple | 15 - .../tests/threads/threads_05.simple | 13 - .../tests/threads/threads_06.simple | 10 - .../tests/threads/threads_07.simple | 13 - .../tests/threads/threads_08.simple | 57 -- .../tests/threads/threads_09.simple | 15 - .../tests/threads/threads_10.simple | 18 - .../tests/threads/threads_11.simple | 22 - .../tests/threads/threads_12.simple | 46 -- .../tests/threads_01.simple.out | 3 - .../tests/threads_02.simple.out | 3 - .../tests/threads_03.simple.out | 1 - .../tests/threads_04.simple.out | 3 - .../tests/threads_06.simple.in | 1 - .../tests/threads_06.simple.out | 7 - .../tests/threads_07.simple.in | 1 - .../tests/threads_07.simple.out | 1 - .../tests/threads_08.simple.out | 1 - .../tests/threads_09.simple.out | 3 - .../tests/threads_10.simple.out | 1 - .../tests/threads_11.simple.out | 1 - .../tests/threads_12.simple.out | 1 - .../tests/typed-exceptions/ex01.simple | 13 - .../tests/typed-exceptions/ex02.simple | 17 - .../tests/typed-exceptions/ex03.simple | 17 - .../tests/typed-exceptions/ex04.simple | 22 - .../tests/typed-exceptions/ex05.simple | 23 - .../tests/typed-exceptions/ex06.simple | 28 - .../tests/typed-exceptions/ex07.simple | 29 - .../tests/typed-exceptions/ex08.simple | 22 - .../tests/typed-exceptions/ex09.simple | 31 - .../2_typed/2_dynamic/tests/collatz.simple.in | 1 - .../2_dynamic/tests/collatz.simple.out | 6 - .../2_dynamic/tests/div-nondet.simple.out | 17 - .../2_dynamic/tests/exceptions_01.simple.out | 1 - .../2_dynamic/tests/exceptions_02.simple.out | 1 - .../2_dynamic/tests/exceptions_03.simple.out | 1 - .../2_dynamic/tests/exceptions_04.simple.out | 1 - .../2_dynamic/tests/exceptions_05.simple.out | 1 - .../2_dynamic/tests/exceptions_06.simple.out | 1 - .../2_dynamic/tests/exceptions_07.simple.out | 3 - .../2_dynamic/tests/exceptions_08.simple.out | 1 - .../2_dynamic/tests/exceptions_09.simple.out | 1 - .../2_dynamic/tests/exceptions_10.simple.out | 1 - .../2_dynamic/tests/exceptions_11.simple.out | 1 - .../2_dynamic/tests/exceptions_12.simple.out | 1 - .../2_dynamic/tests/exceptions_13.simple.out | 1 - .../2_dynamic/tests/exceptions_14.simple.out | 1 - .../2_dynamic/tests/exceptions_15.simple.out | 1 - .../2_dynamic/tests/factorial.simple.in | 1 - .../2_dynamic/tests/factorial.simple.out | 1 - .../2_dynamic/tests/higher-order.simple.out | 5 - .../2_typed/2_dynamic/tests/matrix.simple.in | 1 - .../2_typed/2_dynamic/tests/matrix.simple.out | 16 - .../2_dynamic/tests/sortings.simple.in | 1 - .../2_dynamic/tests/sortings.simple.out | 17 - .../2_dynamic/tests/threads_01.simple.out | 3 - .../2_dynamic/tests/threads_02.simple.out | 3 - .../2_dynamic/tests/threads_03.simple.out | 1 - .../2_dynamic/tests/threads_04.simple.out | 3 - .../2_dynamic/tests/threads_05.simple.out | 199 ------ .../2_dynamic/tests/threads_06.simple.in | 1 - .../2_dynamic/tests/threads_06.simple.out | 7 - .../2_dynamic/tests/threads_07.simple.in | 1 - .../2_dynamic/tests/threads_07.simple.out | 1 - .../2_dynamic/tests/threads_08.simple.out | 1 - .../2_dynamic/tests/threads_09.simple.out | 3 - .../2_dynamic/tests/threads_10.simple.out | 1 - .../2_dynamic/tests/threads_11.simple.out | 1 - .../2_dynamic/tests/threads_12.simple.out | 1 - .../1_simple/2_typed/programs/README.md | 8 - .../2_typed/programs/diverse/collatz.simple | 19 - .../2_typed/programs/diverse/dekker.simple | 32 - .../programs/diverse/div-nondet.simple | 15 - .../2_typed/programs/diverse/factorial.simple | 15 - .../programs/diverse/higher-order.simple | 89 --- .../2_typed/programs/diverse/matrix.simple | 57 -- .../2_typed/programs/diverse/sortings.simple | 136 ---- .../programs/exceptions/exceptions_01.simple | 16 - .../programs/exceptions/exceptions_02.simple | 20 - .../programs/exceptions/exceptions_03.simple | 8 - .../programs/exceptions/exceptions_04.simple | 8 - .../programs/exceptions/exceptions_05.simple | 23 - .../programs/exceptions/exceptions_06.simple | 22 - .../programs/exceptions/exceptions_07.simple | 12 - .../programs/exceptions/exceptions_08.simple | 26 - .../programs/exceptions/exceptions_09.simple | 24 - .../programs/exceptions/exceptions_10.simple | 13 - .../programs/exceptions/exceptions_11.simple | 20 - .../programs/exceptions/exceptions_12.simple | 19 - .../programs/exceptions/exceptions_13.simple | 10 - .../programs/exceptions/exceptions_14.simple | 10 - .../programs/exceptions/exceptions_15.simple | 15 - .../programs/threads/threads_01.simple | 10 - .../programs/threads/threads_02.simple | 14 - .../programs/threads/threads_03.simple | 11 - .../programs/threads/threads_04.simple | 15 - .../programs/threads/threads_05.simple | 13 - .../programs/threads/threads_06.simple | 10 - .../programs/threads/threads_07.simple | 13 - .../programs/threads/threads_08.simple | 57 -- .../programs/threads/threads_09.simple | 15 - .../programs/threads/threads_10.simple | 18 - .../programs/threads/threads_11.simple | 22 - .../programs/threads/threads_12.simple | 46 -- .../pl-tutorial/2_languages/1_simple/Makefile | 4 - .../2_languages/2_kool/1_untyped/Makefile | 10 - .../2_languages/2_kool/1_untyped/NOTES | 4 - .../exercises/private-members/Makefile | 2 - .../exercises/private-members/README | 49 -- .../exercises/private-members/tests/README | 34 - .../exercises/private-members/tests/ex01.kool | 12 - .../private-members/tests/ex01.kool.out | 1 - .../exercises/private-members/tests/ex02.kool | 15 - .../private-members/tests/ex02.kool.out | 1 - .../exercises/private-members/tests/ex03.kool | 17 - .../private-members/tests/ex03.kool.out | 1 - .../exercises/private-members/tests/ex04.kool | 20 - .../private-members/tests/ex04.kool.out | 2 - .../exercises/private-members/tests/ex05.kool | 21 - .../private-members/tests/ex05.kool.out | 1 - .../exercises/private-members/tests/ex06.kool | 21 - .../private-members/tests/ex06.kool.out | 1 - .../exercises/private-members/tests/ex07.kool | 26 - .../private-members/tests/ex07.kool.out | 1 - .../exercises/private-members/tests/ex08.kool | 28 - .../private-members/tests/ex08.kool.out | 1 - .../exercises/private-members/tests/ex09.kool | 27 - .../private-members/tests/ex09.kool.out | 2 - .../exercises/private-members/tests/ex10.kool | 27 - .../private-members/tests/ex10.kool.out | 2 - .../exercises/private-members/tests/ex11.kool | 27 - .../private-members/tests/ex11.kool.out | 1 - .../exercises/private-members/tests/ex12.kool | 27 - .../private-members/tests/ex12.kool.out | 2 - .../exercises/private-members/tests/ex13.kool | 34 - .../private-members/tests/ex13.kool.out | 2 - .../exercises/private-members/tests/ex14.kool | 32 - .../private-members/tests/ex14.kool.out | 2 - .../exercises/private-members/tests/ex15.kool | 41 -- .../private-members/tests/ex15.kool.out | 2 - .../exercises/private-members/tests/ex16.kool | 41 -- .../private-members/tests/ex16.kool.out | 2 - .../exercises/private-members/tests/ex17.kool | 21 - .../private-members/tests/ex17.kool.out | 1 - .../exercises/private-members/tests/ex18.kool | 23 - .../private-members/tests/ex18.kool.out | 0 .../exercises/private-members/tests/ex19.kool | 39 - .../private-members/tests/ex19.kool.out | 2 - .../exercises/private-members/tests/ex20.kool | 26 - .../private-members/tests/ex20.kool.out | 1 - .../exercises/private-members/tests/ex21.kool | 25 - .../private-members/tests/ex21.kool.out | 0 .../2_languages/2_kool/1_untyped/tests/README | 34 - .../2_kool/1_untyped/tests/cast-1.kool | 39 - .../2_kool/1_untyped/tests/cast-2.kool | 34 - .../2_kool/1_untyped/tests/constructor.kool | 31 - .../1_untyped/tests/dynamic-dispatch-1.kool | 21 - .../1_untyped/tests/dynamic-dispatch-2.kool | 23 - .../1_untyped/tests/dynamic-dispatch-3.kool | 57 -- .../2_kool/1_untyped/tests/exceptions-1.kool | 27 - .../2_kool/1_untyped/tests/exceptions-2.kool | 45 -- .../1_untyped/tests/exceptions-2.kool.out | 3 - .../2_kool/1_untyped/tests/factorial.kool | 15 - .../1_untyped/tests/field-shadowing-1.kool | 34 - .../1_untyped/tests/field-shadowing-2.kool | 29 - .../2_kool/1_untyped/tests/field.kool | 10 - .../2_kool/1_untyped/tests/hello-world.kool | 9 - .../2_kool/1_untyped/tests/instanceOf.kool | 38 - .../2_kool/1_untyped/tests/matrix.kool | 99 --- .../1_untyped/tests/method-sharing.kool | 40 -- .../2_kool/1_untyped/tests/new-in-field.kool | 21 - .../1_untyped/tests/new-in-field.kool.out | 3 - .../2_kool/1_untyped/tests/new.kool | 15 - .../2_kool/1_untyped/tests/odd-even.kool | 34 - .../2_kool/1_untyped/tests/point.kool | 43 -- .../2_kool/1_untyped/tests/return-object.kool | 29 - .../2_kool/1_untyped/tests/sorting.kool | 142 ---- .../2_kool/1_untyped/tests/super-1.kool | 33 - .../2_kool/1_untyped/tests/super-2.kool | 75 -- .../2_kool/1_untyped/tests/super-3.kool | 39 - .../2_kool/1_untyped/tests/this-explicit.kool | 19 - .../2_kool/1_untyped/tests/this-implicit.kool | 19 - .../2_kool/1_untyped/tests/threads.kool | 58 -- .../2_kool/1_untyped/tests/tree-sum.kool | 33 - .../2_kool/2_typed/1_dynamic/Makefile | 14 - .../exercises/private-members/Makefile | 3 - .../exercises/private-members/README | 7 - .../exercises/private-members/tests/README | 33 - .../private-members/tests/cast-1.kool.out | 4 - .../private-members/tests/cast-2.kool.out | 1 - .../tests/constructor.kool.out | 2 - .../tests/dynamic-dispatch-1.kool.out | 1 - .../tests/dynamic-dispatch-2.kool.out | 1 - .../tests/dynamic-dispatch-3.kool.out | 3 - .../exercises/private-members/tests/ex01.kool | 12 - .../private-members/tests/ex01.kool.out | 1 - .../exercises/private-members/tests/ex02.kool | 15 - .../private-members/tests/ex02.kool.out | 1 - .../exercises/private-members/tests/ex03.kool | 17 - .../private-members/tests/ex03.kool.out | 1 - .../exercises/private-members/tests/ex04.kool | 20 - .../private-members/tests/ex04.kool.out | 2 - .../exercises/private-members/tests/ex05.kool | 21 - .../private-members/tests/ex05.kool.out | 1 - .../exercises/private-members/tests/ex06.kool | 21 - .../private-members/tests/ex06.kool.out | 1 - .../exercises/private-members/tests/ex07.kool | 26 - .../private-members/tests/ex07.kool.out | 1 - .../exercises/private-members/tests/ex08.kool | 28 - .../private-members/tests/ex08.kool.out | 1 - .../exercises/private-members/tests/ex09.kool | 27 - .../private-members/tests/ex09.kool.out | 2 - .../exercises/private-members/tests/ex10.kool | 27 - .../private-members/tests/ex10.kool.out | 2 - .../exercises/private-members/tests/ex11.kool | 27 - .../private-members/tests/ex11.kool.out | 1 - .../exercises/private-members/tests/ex12.kool | 27 - .../private-members/tests/ex12.kool.out | 2 - .../exercises/private-members/tests/ex13.kool | 33 - .../private-members/tests/ex13.kool.out | 2 - .../exercises/private-members/tests/ex14.kool | 32 - .../private-members/tests/ex14.kool.out | 2 - .../exercises/private-members/tests/ex15.kool | 41 -- .../private-members/tests/ex15.kool.out | 2 - .../exercises/private-members/tests/ex16.kool | 41 -- .../private-members/tests/ex16.kool.out | 2 - .../exercises/private-members/tests/ex17.kool | 21 - .../private-members/tests/ex17.kool.out | 1 - .../exercises/private-members/tests/ex18.kool | 28 - .../private-members/tests/ex18.kool.out | 1 - .../exercises/private-members/tests/ex19.kool | 38 - .../private-members/tests/ex19.kool.out | 2 - .../exercises/private-members/tests/ex20.kool | 26 - .../private-members/tests/ex20.kool.out | 1 - .../exercises/private-members/tests/ex21.kool | 25 - .../private-members/tests/ex21.kool.out | 0 .../exercises/private-members/tests/ex22.kool | 30 - .../private-members/tests/ex22.kool.out | 1 - .../tests/exceptions-1.kool.out | 1 - .../private-members/tests/factorial.kool.out | 1 - .../tests/field-shadowing-1.kool.out | 1 - .../tests/field-shadowing-2.kool.out | 1 - .../private-members/tests/field.kool.out | 1 - .../tests/hello-world.kool.out | 1 - .../private-members/tests/instanceOf.kool.out | 4 - .../private-members/tests/matrix.kool.in | 3 - .../private-members/tests/matrix.kool.out | 18 - .../tests/method-sharing.kool.out | 1 - .../private-members/tests/new.kool.out | 1 - .../private-members/tests/odd-even.kool.out | 1 - .../private-members/tests/point.kool.out | 3 - .../tests/return-object.kool.out | 1 - .../private-members/tests/sorting.kool.in | 2 - .../private-members/tests/sorting.kool.out | 17 - .../private-members/tests/super-1.kool.out | 1 - .../private-members/tests/super-2.kool.out | 3 - .../private-members/tests/super-3.kool.out | 1 - .../tests/this-explicit.kool.out | 1 - .../tests/this-implicit.kool.out | 1 - .../private-members/tests/threads.kool.out | 1 - .../private-members/tests/tree-sum.kool.out | 1 - .../1_dynamic/exercises/profiling/Makefile | 5 - .../1_dynamic/exercises/profiling/README | 49 -- .../exercises/profiling/tests/cast-1.kool | 39 - .../exercises/profiling/tests/cast-1.kool.out | 20 - .../exercises/profiling/tests/cast-2.kool | 27 - .../exercises/profiling/tests/cast-2.kool.out | 18 - .../exercises/profiling/tests/collatz.kool | 24 - .../exercises/profiling/tests/collatz.kool.in | 1 - .../profiling/tests/collatz.kool.out | 23 - .../profiling/tests/constructor.kool | 32 - .../profiling/tests/constructor.kool.out | 17 - .../exercises/profiling/tests/cycle.kool | 19 - .../profiling/tests/dynamic-dispatch-1.kool | 22 - .../tests/dynamic-dispatch-1.kool.out | 19 - .../profiling/tests/dynamic-dispatch-2.kool | 24 - .../tests/dynamic-dispatch-2.kool.out | 20 - .../profiling/tests/dynamic-dispatch-3.kool | 74 -- .../tests/dynamic-dispatch-3.kool.out | 23 - .../profiling/tests/exceptions-1.kool | 27 - .../profiling/tests/exceptions-1.kool.out | 13 - .../profiling/tests/exceptions-2.kool | 44 -- .../profiling/tests/exceptions-2.kool.out | 17 - .../exercises/profiling/tests/factorial.kool | 13 - .../profiling/tests/factorial.kool.out | 13 - .../profiling/tests/field-shadowing-1.kool | 34 - .../tests/field-shadowing-1.kool.out | 21 - .../profiling/tests/field-shadowing-2.kool | 30 - .../tests/field-shadowing-2.kool.out | 18 - .../exercises/profiling/tests/field.kool | 10 - .../exercises/profiling/tests/field.kool.out | 12 - .../profiling/tests/function-types.kool | 45 -- .../profiling/tests/function-types.kool.out | 15 - .../profiling/tests/hello-world.kool | 9 - .../profiling/tests/hello-world.kool.out | 12 - .../exercises/profiling/tests/instanceOf.kool | 38 - .../profiling/tests/instanceOf.kool.out | 24 - .../profiling/tests/many-objects.kool | 41 -- .../profiling/tests/many-objects.kool.out | 18 - .../exercises/profiling/tests/matrix.kool | 101 --- .../exercises/profiling/tests/matrix.kool.in | 3 - .../exercises/profiling/tests/matrix.kool.out | 36 - .../profiling/tests/method-sharing.kool | 42 -- .../profiling/tests/method-sharing.kool.out | 18 - .../exercises/profiling/tests/new.kool | 15 - .../exercises/profiling/tests/new.kool.out | 15 - .../exercises/profiling/tests/odd-even.kool | 34 - .../profiling/tests/odd-even.kool.out | 16 - .../exercises/profiling/tests/point.kool | 44 -- .../exercises/profiling/tests/point.kool.out | 21 - .../profiling/tests/return-object.kool | 29 - .../profiling/tests/return-object.kool.out | 18 - .../exercises/profiling/tests/sorting.kool | 146 ---- .../exercises/profiling/tests/sorting.kool.in | 2 - .../profiling/tests/sorting.kool.out | 37 - .../exercises/profiling/tests/super-1.kool | 33 - .../profiling/tests/super-1.kool.out | 17 - .../exercises/profiling/tests/super-2.kool | 75 -- .../profiling/tests/super-2.kool.out | 30 - .../exercises/profiling/tests/super-3.kool | 39 - .../profiling/tests/super-3.kool.out | 16 - .../profiling/tests/this-explicit.kool | 19 - .../profiling/tests/this-explicit.kool.out | 16 - .../profiling/tests/this-implicit.kool | 19 - .../profiling/tests/this-implicit.kool.out | 16 - .../exercises/profiling/tests/threads.kool | 58 -- .../profiling/tests/threads.kool.out | 18 - .../exercises/profiling/tests/tree-sum.kool | 37 - .../profiling/tests/tree-sum.kool.out | 18 - .../2_typed/1_dynamic/tests/cast-1.kool.out | 4 - .../2_typed/1_dynamic/tests/cast-2.kool.out | 1 - .../2_typed/1_dynamic/tests/collatz.kool.in | 1 - .../2_typed/1_dynamic/tests/collatz.kool.out | 11 - .../1_dynamic/tests/constructor.kool.out | 2 - .../tests/dynamic-dispatch-1.kool.out | 1 - .../tests/dynamic-dispatch-2.kool.out | 1 - .../tests/dynamic-dispatch-3.kool.out | 3 - .../1_dynamic/tests/exceptions-1.kool.out | 1 - .../1_dynamic/tests/exceptions-2.kool.out | 2 - .../1_dynamic/tests/factorial.kool.out | 1 - .../tests/field-shadowing-1.kool.out | 1 - .../tests/field-shadowing-2.kool.out | 1 - .../2_typed/1_dynamic/tests/field.kool.out | 1 - .../1_dynamic/tests/function-types.kool.out | 2 - .../1_dynamic/tests/hello-world.kool.out | 1 - .../1_dynamic/tests/instanceOf.kool.out | 4 - .../2_typed/1_dynamic/tests/matrix.kool.in | 3 - .../2_typed/1_dynamic/tests/matrix.kool.out | 18 - .../1_dynamic/tests/method-sharing.kool.out | 1 - .../2_typed/1_dynamic/tests/new.kool.out | 1 - .../2_typed/1_dynamic/tests/odd-even.kool.out | 1 - .../2_typed/1_dynamic/tests/point.kool.out | 3 - .../1_dynamic/tests/return-object.kool.out | 1 - .../2_typed/1_dynamic/tests/sorting.kool.in | 2 - .../2_typed/1_dynamic/tests/sorting.kool.out | 17 - .../2_typed/1_dynamic/tests/super-1.kool.out | 1 - .../2_typed/1_dynamic/tests/super-2.kool.out | 3 - .../2_typed/1_dynamic/tests/super-3.kool.out | 1 - .../1_dynamic/tests/this-explicit.kool.out | 1 - .../1_dynamic/tests/this-implicit.kool.out | 1 - .../2_typed/1_dynamic/tests/threads.kool.out | 1 - .../2_typed/1_dynamic/tests/tree-sum.kool.out | 1 - .../2_kool/2_typed/2_static/NOTES.md | 12 - .../exercises/private-members/Makefile | 3 - .../2_static/exercises/private-members/README | 32 - .../private-members/tests/cast-1.kool | 39 - .../private-members/tests/cast-2.kool | 27 - .../private-members/tests/collatz.kool | 24 - .../private-members/tests/constructor.kool | 32 - .../private-members/tests/cycle.kool | 19 - .../tests/dynamic-dispatch-1.kool | 22 - .../tests/dynamic-dispatch-2.kool | 24 - .../tests/dynamic-dispatch-3.kool | 74 -- .../exercises/private-members/tests/ex01.kool | 12 - .../private-members/tests/ex01.kool.out | 1 - .../exercises/private-members/tests/ex02.kool | 15 - .../private-members/tests/ex02.kool.out | 1 - .../exercises/private-members/tests/ex03.kool | 17 - .../private-members/tests/ex03.kool.out | 1 - .../exercises/private-members/tests/ex04.kool | 20 - .../private-members/tests/ex04.kool.out | 1 - .../exercises/private-members/tests/ex05.kool | 21 - .../private-members/tests/ex05.kool.out | 1 - .../exercises/private-members/tests/ex06.kool | 21 - .../private-members/tests/ex06.kool.out | 1 - .../exercises/private-members/tests/ex07.kool | 26 - .../private-members/tests/ex07.kool.out | 1 - .../exercises/private-members/tests/ex08.kool | 28 - .../private-members/tests/ex08.kool.out | 1 - .../exercises/private-members/tests/ex09.kool | 27 - .../private-members/tests/ex09.kool.out | 1 - .../exercises/private-members/tests/ex10.kool | 27 - .../private-members/tests/ex10.kool.out | 1 - .../exercises/private-members/tests/ex11.kool | 27 - .../private-members/tests/ex11.kool.out | 1 - .../exercises/private-members/tests/ex12.kool | 27 - .../private-members/tests/ex12.kool.out | 1 - .../exercises/private-members/tests/ex13.kool | 33 - .../private-members/tests/ex13.kool.out | 1 - .../exercises/private-members/tests/ex14.kool | 32 - .../private-members/tests/ex14.kool.out | 1 - .../exercises/private-members/tests/ex15.kool | 41 -- .../private-members/tests/ex15.kool.out | 1 - .../exercises/private-members/tests/ex16.kool | 41 -- .../private-members/tests/ex16.kool.out | 1 - .../exercises/private-members/tests/ex17.kool | 21 - .../private-members/tests/ex17.kool.out | 1 - .../exercises/private-members/tests/ex18.kool | 28 - .../private-members/tests/ex18.kool.out | 1 - .../exercises/private-members/tests/ex19.kool | 38 - .../private-members/tests/ex19.kool.out | 1 - .../exercises/private-members/tests/ex20.kool | 26 - .../private-members/tests/ex20.kool.out | 1 - .../exercises/private-members/tests/ex21.kool | 25 - .../private-members/tests/ex21.kool.out | 1 - .../exercises/private-members/tests/ex22.kool | 30 - .../private-members/tests/ex22.kool.out | 1 - .../private-members/tests/exceptions-1.kool | 27 - .../private-members/tests/exceptions-2.kool | 44 -- .../private-members/tests/factorial.kool | 13 - .../tests/field-shadowing-1.kool | 34 - .../tests/field-shadowing-2.kool | 30 - .../private-members/tests/field.kool | 10 - .../private-members/tests/function-types.kool | 45 -- .../private-members/tests/hello-world.kool | 9 - .../private-members/tests/instanceOf.kool | 38 - .../private-members/tests/matrix.kool | 101 --- .../private-members/tests/method-sharing.kool | 42 -- .../exercises/private-members/tests/new.kool | 15 - .../private-members/tests/odd-even.kool | 34 - .../private-members/tests/point.kool | 44 -- .../private-members/tests/return-object.kool | 29 - .../private-members/tests/sorting.kool | 146 ---- .../private-members/tests/super-1.kool | 33 - .../private-members/tests/super-2.kool | 75 -- .../private-members/tests/super-3.kool | 39 - .../private-members/tests/this-explicit.kool | 19 - .../private-members/tests/this-implicit.kool | 19 - .../private-members/tests/threads.kool | 58 -- .../private-members/tests/tree-sum.kool | 37 - .../2_typed/2_static/tests/cast-1.kool.out | 1 - .../2_typed/2_static/tests/cast-2.kool.out | 1 - .../2_typed/2_static/tests/collatz.kool.out | 1 - .../2_static/tests/constructor.kool.out | 1 - .../2_typed/2_static/tests/cycle.kool.out | 11 - .../tests/dynamic-dispatch-1.kool.out | 1 - .../tests/dynamic-dispatch-2.kool.out | 1 - .../tests/dynamic-dispatch-3.kool.out | 1 - .../2_static/tests/exceptions-1.kool.out | 1 - .../2_static/tests/exceptions-2.kool.out | 1 - .../2_typed/2_static/tests/factorial.kool.out | 1 - .../2_static/tests/field-shadowing-1.kool.out | 1 - .../2_static/tests/field-shadowing-2.kool.out | 1 - .../2_typed/2_static/tests/field.kool.out | 1 - .../2_static/tests/function-types.kool.out | 1 - .../2_static/tests/hello-world.kool.out | 1 - .../2_static/tests/instanceOf.kool.out | 1 - .../2_typed/2_static/tests/matrix.kool.out | 1 - .../2_static/tests/method-sharing.kool.out | 1 - .../2_typed/2_static/tests/new.kool.out | 1 - .../2_typed/2_static/tests/odd-even.kool.out | 1 - .../2_typed/2_static/tests/point.kool.out | 1 - .../2_static/tests/return-object.kool.out | 1 - .../2_typed/2_static/tests/sorting.kool.out | 1 - .../2_typed/2_static/tests/super-1.kool.out | 1 - .../2_typed/2_static/tests/super-2.kool.out | 1 - .../2_typed/2_static/tests/super-3.kool.out | 1 - .../2_static/tests/this-explicit.kool.out | 1 - .../2_static/tests/this-implicit.kool.out | 1 - .../2_typed/2_static/tests/threads.kool.out | 1 - .../2_typed/2_static/tests/tree-sum.kool.out | 1 - .../2_kool/2_typed/programs/README | 33 - .../2_kool/2_typed/programs/cast-1.kool | 39 - .../2_kool/2_typed/programs/cast-2.kool | 27 - .../2_kool/2_typed/programs/collatz.kool | 24 - .../2_kool/2_typed/programs/constructor.kool | 32 - .../2_kool/2_typed/programs/cycle.kool | 19 - .../2_typed/programs/dynamic-dispatch-1.kool | 22 - .../2_typed/programs/dynamic-dispatch-2.kool | 24 - .../2_typed/programs/dynamic-dispatch-3.kool | 74 -- .../2_kool/2_typed/programs/exceptions-1.kool | 27 - .../2_kool/2_typed/programs/exceptions-2.kool | 44 -- .../2_kool/2_typed/programs/factorial.kool | 13 - .../2_typed/programs/field-shadowing-1.kool | 34 - .../2_typed/programs/field-shadowing-2.kool | 30 - .../2_kool/2_typed/programs/field.kool | 10 - .../2_typed/programs/function-types.kool | 45 -- .../2_kool/2_typed/programs/hello-world.kool | 9 - .../2_kool/2_typed/programs/instanceOf.kool | 38 - .../2_kool/2_typed/programs/matrix.kool | 101 --- .../2_typed/programs/method-sharing.kool | 42 -- .../2_kool/2_typed/programs/new.kool | 15 - .../2_kool/2_typed/programs/odd-even.kool | 34 - .../2_kool/2_typed/programs/point.kool | 44 -- .../2_typed/programs/return-object.kool | 29 - .../2_kool/2_typed/programs/sorting.kool | 146 ---- .../2_kool/2_typed/programs/super-1.kool | 33 - .../2_kool/2_typed/programs/super-2.kool | 75 -- .../2_kool/2_typed/programs/super-3.kool | 39 - .../2_typed/programs/this-explicit.kool | 19 - .../2_typed/programs/this-implicit.kool | 19 - .../2_kool/2_typed/programs/threads.kool | 58 -- .../2_kool/2_typed/programs/tree-sum.kool | 37 - .../pl-tutorial/2_languages/2_kool/Makefile | 4 - .../1_environment/exercises/io/Makefile | 11 - .../1_environment/exercises/io/README | 13 - .../exercises/io/tests/ex-01.fun | 1 - .../exercises/io/tests/ex-01.fun.out | 1 - .../exercises/io/tests/ex-02.fun | 1 - .../exercises/io/tests/ex-02.fun.out | 1 - .../exercises/io/tests/ex-03.fun | 1 - .../exercises/io/tests/ex-03.fun.out | 1 - .../exercises/io/tests/ex-04.fun | 1 - .../exercises/io/tests/ex-04.fun.out | 1 - .../exercises/io/tests/ex-05.fun | 1 - .../exercises/io/tests/ex-05.fun.out | 1 - .../exercises/io/tests/ex-06.fun | 2 - .../exercises/io/tests/ex-06.fun.out | 11 - .../exercises/io/tests/ex-07.fun | 9 - .../exercises/io/tests/ex-07.fun.out | 11 - .../exercises/io/tests/ex-08.fun | 5 - .../exercises/io/tests/ex-08.fun.out | 31 - .../exercises/io/tests/ex-09.fun | 9 - .../exercises/io/tests/ex-09.fun.out | 1 - .../exercises/io/tests/ex-10.fun | 1 - .../exercises/io/tests/ex-10.fun.in | 1 - .../exercises/io/tests/ex-10.fun.out | 1 - .../exercises/io/tests/ex-11.fun | 1 - .../exercises/io/tests/ex-11.fun.in | 1 - .../exercises/io/tests/ex-11.fun.out | 1 - .../exercises/io/tests/ex-12.fun | 1 - .../exercises/io/tests/ex-12.fun.in | 1 - .../exercises/io/tests/ex-12.fun.out | 11 - .../exercises/io/tests/ex-13.fun | 1 - .../exercises/io/tests/ex-13.fun.in | 1 - .../exercises/io/tests/ex-13.fun.out | 1 - .../exercises/io/tests/ex-14.fun | 2 - .../exercises/io/tests/ex-14.fun.in | 1 - .../exercises/io/tests/ex-14.fun.out | 11 - .../exercises/io/tests/ex-15.fun | 5 - .../exercises/io/tests/ex-15.fun.in | 1 - .../exercises/io/tests/ex-15.fun.out | 31 - .../exercises/io/tests/ex-16.fun | 11 - .../exercises/io/tests/ex-16.fun.in | 1 - .../exercises/io/tests/ex-16.fun.out | 1 - .../exercises/io/tests/ex-17.fun | 1 - .../exercises/io/tests/ex-17.fun.out | 1 - .../exercises/io/tests/ex-18.fun | 2 - .../exercises/io/tests/ex-18.fun.out | 1 - .../exercises/io/tests/ex-19.fun | 3 - .../exercises/io/tests/ex-19.fun.in | 1 - .../exercises/io/tests/ex-19.fun.out | 3 - .../exercises/io/tests/references-5.fun.out | 11 - .../1_environment/exercises/letstar/Makefile | 3 - .../1_environment/exercises/letstar/README | 15 - .../exercises/letstar/tests/ackermann.fun | 6 - .../exercises/letstar/tests/ackermann.fun.out | 5 - .../exercises/letstar/tests/callcc-1.fun | 5 - .../exercises/letstar/tests/callcc-1.fun.out | 5 - .../exercises/letstar/tests/callcc-2.fun | 5 - .../exercises/letstar/tests/callcc-2.fun.out | 5 - .../exercises/letstar/tests/callcc-3.fun | 5 - .../exercises/letstar/tests/callcc-3.fun.out | 5 - .../exercises/letstar/tests/callcc-4.fun | 5 - .../exercises/letstar/tests/callcc-4.fun.out | 5 - .../exercises/letstar/tests/callcc-5.fun | 5 - .../exercises/letstar/tests/callcc-5.fun.out | 5 - .../letstar/tests/callcc-efficient-with-1.fun | 13 - .../tests/callcc-efficient-with-1.fun.out | 5 - .../letstar/tests/callcc-efficient-with-2.fun | 13 - .../tests/callcc-efficient-with-2.fun.out | 5 - .../tests/callcc-inefficient-without.fun | 11 - .../tests/callcc-inefficient-without.fun.out | 5 - .../letstar/tests/callcc-looping.fun | 8 - .../letstar/tests/callcc-looping.fun.out | 5 - .../letstar/tests/callcc-return-1.fun | 8 - .../letstar/tests/callcc-return-1.fun.out | 5 - .../letstar/tests/callcc-return-2.fun | 10 - .../letstar/tests/callcc-return-2.fun.out | 5 - .../letstar/tests/constructor-bst-sorting.fun | 17 - .../tests/constructor-bst-sorting.fun.out | 5 - .../letstar/tests/constructor-days.fun | 17 - .../letstar/tests/constructor-days.fun.out | 5 - .../tests/constructor-expr-distributivity.fun | 16 - .../constructor-expr-distributivity.fun.out | 5 - .../tests/constructor-expr-toString.fun | 8 - .../tests/constructor-expr-toString.fun.out | 5 - .../letstar/tests/constructor-list-length.fun | 4 - .../tests/constructor-list-length.fun.out | 5 - .../letstar/tests/constructor-tree-mirror.fun | 7 - .../tests/constructor-tree-mirror.fun.out | 5 - .../letstar/tests/empty-argument-1.fun | 9 - .../letstar/tests/empty-argument-1.fun.out | 5 - .../letstar/tests/empty-argument-2.fun | 9 - .../letstar/tests/empty-argument-2.fun.out | 5 - .../exercises/letstar/tests/ex-01.fun | 3 - .../exercises/letstar/tests/ex-01.fun.out | 5 - .../exercises/letstar/tests/ex-02.fun | 3 - .../exercises/letstar/tests/ex-02.fun.out | 5 - .../exercises/letstar/tests/ex-03.fun | 4 - .../exercises/letstar/tests/ex-03.fun.out | 5 - .../exercises/letstar/tests/ex-04.fun | 7 - .../exercises/letstar/tests/ex-04.fun.out | 5 - .../exercises/letstar/tests/ex-05.fun | 10 - .../exercises/letstar/tests/ex-05.fun.out | 5 - .../exercises/letstar/tests/ex-06.fun | 6 - .../exercises/letstar/tests/ex-06.fun.out | 5 - .../exercises/letstar/tests/ex-07.fun | 5 - .../exercises/letstar/tests/ex-07.fun.out | 5 - .../exercises/letstar/tests/ex-08.fun | 5 - .../exercises/letstar/tests/ex-08.fun.out | 5 - .../exercises/letstar/tests/ex-09.fun | 5 - .../exercises/letstar/tests/ex-09.fun.out | 5 - .../exercises/letstar/tests/ex-10.fun | 5 - .../exercises/letstar/tests/ex-10.fun.out | 5 - .../exercises/letstar/tests/exceptions.fun | 11 - .../letstar/tests/exceptions.fun.out | 5 - .../letstar/tests/factorial-and-list-max.fun | 16 - .../tests/factorial-and-list-max.fun.out | 5 - .../exercises/letstar/tests/factorial.fun | 8 - .../exercises/letstar/tests/factorial.fun.out | 5 - .../exercises/letstar/tests/list-1.fun | 6 - .../exercises/letstar/tests/list-1.fun.out | 5 - .../exercises/letstar/tests/list-2.fun | 6 - .../exercises/letstar/tests/list-2.fun.out | 5 - .../exercises/letstar/tests/list-3.fun | 6 - .../exercises/letstar/tests/list-3.fun.out | 5 - .../exercises/letstar/tests/list-4.fun | 4 - .../exercises/letstar/tests/list-4.fun.out | 5 - .../exercises/letstar/tests/list-length.fun | 5 - .../letstar/tests/list-length.fun.out | 5 - .../exercises/letstar/tests/list-max.fun | 6 - .../exercises/letstar/tests/list-max.fun.out | 5 - .../exercises/letstar/tests/list-nth.fun | 4 - .../exercises/letstar/tests/list-nth.fun.out | 5 - .../exercises/letstar/tests/nth.fun | 10 - .../exercises/letstar/tests/nth.fun.out | 5 - .../exercises/letstar/tests/pattern.fun | 16 - .../exercises/letstar/tests/pattern.fun.out | 5 - .../letstar/tests/polymorphism-1.fun | 6 - .../letstar/tests/polymorphism-1.fun.out | 5 - .../letstar/tests/polymorphism-2.fun | 6 - .../letstar/tests/polymorphism-2.fun.out | 5 - .../letstar/tests/polymorphism-3.fun | 6 - .../letstar/tests/polymorphism-3.fun.out | 5 - .../letstar/tests/polymorphism-4.fun | 6 - .../letstar/tests/polymorphism-4.fun.out | 5 - .../letstar/tests/polymorphism-5.fun | 9 - .../letstar/tests/polymorphism-5.fun.out | 5 - .../letstar/tests/polymorphism-6.fun | 8 - .../letstar/tests/polymorphism-6.fun.out | 8 - .../exercises/letstar/tests/references-1.fun | 29 - .../letstar/tests/references-1.fun.out | 5 - .../exercises/letstar/tests/references-2.fun | 5 - .../letstar/tests/references-2.fun.out | 5 - .../exercises/letstar/tests/references-3.fun | 7 - .../letstar/tests/references-3.fun.out | 5 - .../exercises/letstar/tests/references-4.fun | 10 - .../letstar/tests/references-4.fun.out | 5 - .../exercises/letstar/tests/references-5.fun | 7 - .../exercises/letstar/tests/stuck-letrec.fun | 6 - .../letstar/tests/stuck-letrec.fun.out | 5 - .../letstar/tests/tail-recursion.fun | 12 - .../letstar/tests/tail-recursion.fun.out | 5 - .../exercises/letstar/tests/tuple-1.fun | 5 - .../exercises/letstar/tests/tuple-1.fun.out | 5 - .../exercises/letstar/tests/tuple-2.fun | 9 - .../exercises/letstar/tests/tuple-2.fun.out | 5 - .../exercises/letstar/tests/tuple-3.fun | 6 - .../exercises/letstar/tests/tuple-3.fun.out | 5 - .../exercises/letstar/tests/tuple-4.fun | 6 - .../exercises/letstar/tests/tuple-4.fun.out | 5 - .../exercises/letstar/tests/tuple-5.fun | 9 - .../exercises/letstar/tests/tuple-5.fun.out | 5 - .../exercises/spawn-join/Makefile | 8 - .../1_environment/exercises/spawn-join/README | 20 - .../exercises/spawn-join/tests/ackermann.fun | 6 - .../spawn-join/tests/ackermann.fun.out | 5 - .../exercises/spawn-join/tests/callcc-1.fun | 5 - .../spawn-join/tests/callcc-1.fun.out | 5 - .../exercises/spawn-join/tests/callcc-2.fun | 5 - .../spawn-join/tests/callcc-2.fun.out | 5 - .../exercises/spawn-join/tests/callcc-3.fun | 5 - .../spawn-join/tests/callcc-3.fun.out | 5 - .../exercises/spawn-join/tests/callcc-4.fun | 5 - .../spawn-join/tests/callcc-4.fun.out | 5 - .../exercises/spawn-join/tests/callcc-5.fun | 5 - .../spawn-join/tests/callcc-5.fun.out | 5 - .../tests/callcc-efficient-with-1.fun | 13 - .../tests/callcc-efficient-with-1.fun.out | 5 - .../tests/callcc-efficient-with-2.fun | 13 - .../tests/callcc-efficient-with-2.fun.out | 5 - .../tests/callcc-inefficient-without.fun | 11 - .../tests/callcc-inefficient-without.fun.out | 5 - .../spawn-join/tests/callcc-looping.fun | 8 - .../spawn-join/tests/callcc-looping.fun.out | 5 - .../spawn-join/tests/callcc-return-1.fun | 8 - .../spawn-join/tests/callcc-return-1.fun.out | 5 - .../spawn-join/tests/callcc-return-2.fun | 10 - .../spawn-join/tests/callcc-return-2.fun.out | 5 - .../tests/constructor-bst-sorting.fun | 17 - .../tests/constructor-bst-sorting.fun.out | 5 - .../spawn-join/tests/constructor-days.fun | 17 - .../spawn-join/tests/constructor-days.fun.out | 5 - .../tests/constructor-expr-distributivity.fun | 16 - .../constructor-expr-distributivity.fun.out | 5 - .../tests/constructor-expr-toString.fun | 8 - .../tests/constructor-expr-toString.fun.out | 5 - .../tests/constructor-list-length.fun | 4 - .../tests/constructor-list-length.fun.out | 5 - .../tests/constructor-tree-mirror.fun | 7 - .../tests/constructor-tree-mirror.fun.out | 5 - .../spawn-join/tests/empty-argument-1.fun | 9 - .../spawn-join/tests/empty-argument-1.fun.out | 5 - .../spawn-join/tests/empty-argument-2.fun | 9 - .../spawn-join/tests/empty-argument-2.fun.out | 5 - .../exercises/spawn-join/tests/ex-01.fun | 2 - .../exercises/spawn-join/tests/ex-01.fun.out | 23 - .../exercises/spawn-join/tests/ex-02.fun | 2 - .../exercises/spawn-join/tests/ex-02.fun.out | 5 - .../exercises/spawn-join/tests/ex-03.fun | 4 - .../exercises/spawn-join/tests/ex-03.fun.in | 1 - .../exercises/spawn-join/tests/ex-03.fun.out | 23 - .../exercises/spawn-join/tests/ex-04.fun | 4 - .../exercises/spawn-join/tests/ex-04.fun.in | 1 - .../exercises/spawn-join/tests/ex-04.fun.out | 5 - .../exercises/spawn-join/tests/exceptions.fun | 11 - .../spawn-join/tests/exceptions.fun.out | 5 - .../tests/factorial-and-list-max.fun | 16 - .../tests/factorial-and-list-max.fun.out | 5 - .../exercises/spawn-join/tests/factorial.fun | 8 - .../spawn-join/tests/factorial.fun.out | 5 - .../exercises/spawn-join/tests/list-1.fun | 6 - .../exercises/spawn-join/tests/list-1.fun.out | 5 - .../exercises/spawn-join/tests/list-2.fun | 6 - .../exercises/spawn-join/tests/list-2.fun.out | 5 - .../exercises/spawn-join/tests/list-3.fun | 6 - .../exercises/spawn-join/tests/list-3.fun.out | 5 - .../exercises/spawn-join/tests/list-4.fun | 4 - .../exercises/spawn-join/tests/list-4.fun.out | 5 - .../spawn-join/tests/list-length.fun | 5 - .../spawn-join/tests/list-length.fun.out | 5 - .../exercises/spawn-join/tests/list-max.fun | 6 - .../spawn-join/tests/list-max.fun.out | 5 - .../exercises/spawn-join/tests/list-nth.fun | 4 - .../spawn-join/tests/list-nth.fun.out | 5 - .../exercises/spawn-join/tests/nth.fun | 10 - .../exercises/spawn-join/tests/nth.fun.out | 5 - .../exercises/spawn-join/tests/pattern.fun | 16 - .../spawn-join/tests/pattern.fun.out | 5 - .../spawn-join/tests/polymorphism-1.fun | 6 - .../spawn-join/tests/polymorphism-1.fun.out | 5 - .../spawn-join/tests/polymorphism-2.fun | 6 - .../spawn-join/tests/polymorphism-2.fun.out | 5 - .../spawn-join/tests/polymorphism-3.fun | 6 - .../spawn-join/tests/polymorphism-3.fun.out | 5 - .../spawn-join/tests/polymorphism-4.fun | 6 - .../spawn-join/tests/polymorphism-4.fun.out | 5 - .../spawn-join/tests/polymorphism-5.fun | 9 - .../spawn-join/tests/polymorphism-5.fun.out | 5 - .../spawn-join/tests/polymorphism-6.fun | 8 - .../spawn-join/tests/polymorphism-6.fun.out | 8 - .../spawn-join/tests/references-1.fun | 29 - .../spawn-join/tests/references-1.fun.out | 5 - .../spawn-join/tests/references-2.fun | 5 - .../spawn-join/tests/references-2.fun.out | 5 - .../spawn-join/tests/references-3.fun | 7 - .../spawn-join/tests/references-3.fun.out | 5 - .../spawn-join/tests/references-4.fun | 10 - .../spawn-join/tests/references-4.fun.out | 5 - .../spawn-join/tests/references-5.fun | 7 - .../spawn-join/tests/references-5.fun.out | 1 - .../spawn-join/tests/stuck-letrec.fun | 6 - .../spawn-join/tests/stuck-letrec.fun.out | 5 - .../spawn-join/tests/tail-recursion.fun | 12 - .../spawn-join/tests/tail-recursion.fun.out | 5 - .../exercises/spawn-join/tests/tuple-1.fun | 5 - .../spawn-join/tests/tuple-1.fun.out | 5 - .../exercises/spawn-join/tests/tuple-2.fun | 9 - .../spawn-join/tests/tuple-2.fun.out | 5 - .../exercises/spawn-join/tests/tuple-3.fun | 6 - .../spawn-join/tests/tuple-3.fun.out | 5 - .../exercises/spawn-join/tests/tuple-4.fun | 6 - .../spawn-join/tests/tuple-4.fun.out | 5 - .../exercises/spawn-join/tests/tuple-5.fun | 9 - .../spawn-join/tests/tuple-5.fun.out | 5 - .../1_environment/tests/ackermann.fun.out | 5 - .../1_environment/tests/callcc-1.fun.out | 5 - .../1_environment/tests/callcc-2.fun.out | 5 - .../1_environment/tests/callcc-3.fun.out | 5 - .../1_environment/tests/callcc-4.fun.out | 5 - .../1_environment/tests/callcc-5.fun.out | 5 - .../tests/callcc-efficient-with-1.fun.out | 5 - .../tests/callcc-efficient-with-2.fun.out | 5 - .../tests/callcc-inefficient-without.fun.out | 5 - .../tests/callcc-looping.fun.out | 5 - .../tests/callcc-return-1.fun.out | 5 - .../tests/callcc-return-2.fun.out | 5 - .../tests/constructor-bst-sorting.fun.out | 5 - .../tests/constructor-days.fun.out | 5 - .../constructor-expr-distributivity.fun.out | 5 - .../tests/constructor-expr-toString.fun.out | 5 - .../tests/constructor-list-length.fun.out | 5 - .../tests/constructor-tree-mirror.fun.out | 5 - .../tests/empty-argument-1.fun.out | 5 - .../tests/empty-argument-2.fun.out | 5 - .../1_environment/tests/exceptions.fun.out | 5 - .../tests/factorial-and-list-max.fun.out | 5 - .../1_environment/tests/factorial.fun.out | 5 - .../1_environment/tests/list-1.fun.out | 5 - .../1_environment/tests/list-2.fun.out | 5 - .../1_environment/tests/list-3.fun.out | 5 - .../1_environment/tests/list-4.fun.out | 5 - .../1_environment/tests/list-length.fun.out | 5 - .../1_environment/tests/list-max.fun.out | 5 - .../1_environment/tests/list-nth.fun.out | 5 - .../1_untyped/1_environment/tests/nth.fun.out | 5 - .../1_environment/tests/pattern.fun.out | 5 - .../tests/polymorphism-1.fun.out | 5 - .../tests/polymorphism-2.fun.out | 5 - .../tests/polymorphism-3.fun.out | 5 - .../tests/polymorphism-4.fun.out | 5 - .../tests/polymorphism-5.fun.out | 5 - .../tests/polymorphism-6.fun.out | 8 - .../1_environment/tests/references-1.fun.out | 5 - .../1_environment/tests/references-2.fun.out | 5 - .../1_environment/tests/references-3.fun.out | 5 - .../1_environment/tests/references-4.fun.out | 5 - .../1_environment/tests/references-5.fun.out | 23 - .../1_environment/tests/stuck-letrec.fun.out | 5 - .../tests/tail-recursion.fun.out | 5 - .../1_environment/tests/tuple-1.fun.out | 5 - .../1_environment/tests/tuple-2.fun.out | 5 - .../1_environment/tests/tuple-3.fun.out | 5 - .../1_environment/tests/tuple-4.fun.out | 5 - .../1_environment/tests/tuple-5.fun.out | 5 - .../3_fun/1_untyped/2_substitution/Makefile | 21 - .../2_substitution/exercises/letrec/Makefile | 3 - .../2_substitution/exercises/letrec/README | 6 - .../exercises/letrec/tests/README | 60 -- .../exercises/letrec/tests/ackermann.fun | 6 - .../exercises/letrec/tests/ackermann.fun.out | 1 - .../exercises/letrec/tests/callcc-1.fun | 5 - .../exercises/letrec/tests/callcc-1.fun.out | 1 - .../exercises/letrec/tests/callcc-2.fun | 5 - .../exercises/letrec/tests/callcc-2.fun.out | 1 - .../exercises/letrec/tests/callcc-3.fun | 5 - .../exercises/letrec/tests/callcc-3.fun.out | 1 - .../exercises/letrec/tests/callcc-4.fun | 5 - .../exercises/letrec/tests/callcc-4.fun.out | 1 - .../exercises/letrec/tests/callcc-5.fun | 5 - .../exercises/letrec/tests/callcc-5.fun.out | 1 - .../letrec/tests/callcc-efficient-with-1.fun | 13 - .../tests/callcc-efficient-with-1.fun.out | 1 - .../letrec/tests/callcc-efficient-with-2.fun | 13 - .../tests/callcc-efficient-with-2.fun.out | 1 - .../tests/callcc-inefficient-without.fun | 11 - .../tests/callcc-inefficient-without.fun.out | 1 - .../exercises/letrec/tests/callcc-looping.fun | 8 - .../letrec/tests/callcc-looping.fun.out | 1 - .../letrec/tests/callcc-return-1.fun | 8 - .../letrec/tests/callcc-return-1.fun.out | 1 - .../letrec/tests/callcc-return-2.fun | 10 - .../letrec/tests/callcc-return-2.fun.out | 1 - .../letrec/tests/constructor-bst-sorting.fun | 17 - .../tests/constructor-bst-sorting.fun.out | 3 - .../letrec/tests/constructor-days.fun | 17 - .../letrec/tests/constructor-days.fun.out | 1 - .../tests/constructor-expr-distributivity.fun | 16 - .../constructor-expr-distributivity.fun.out | 3 - .../tests/constructor-expr-toString.fun | 8 - .../tests/constructor-expr-toString.fun.out | 1 - .../letrec/tests/constructor-list-length.fun | 4 - .../tests/constructor-list-length.fun.out | 1 - .../letrec/tests/constructor-tree-mirror.fun | 7 - .../tests/constructor-tree-mirror.fun.out | 1 - .../letrec/tests/empty-argument-1.fun | 9 - .../letrec/tests/empty-argument-1.fun.out | 1 - .../letrec/tests/empty-argument-2.fun | 9 - .../letrec/tests/empty-argument-2.fun.out | 1 - .../exercises/letrec/tests/exceptions.fun | 11 - .../exercises/letrec/tests/exceptions.fun.out | 1 - .../letrec/tests/factorial-and-list-max.fun | 16 - .../tests/factorial-and-list-max.fun.out | 3 - .../exercises/letrec/tests/factorial.fun | 8 - .../exercises/letrec/tests/factorial.fun.out | 1 - .../letrec/tests/letrec-many-bindings.fun | 8 - .../letrec/tests/letrec-many-bindings.fun.out | 1 - .../exercises/letrec/tests/list-1.fun | 6 - .../exercises/letrec/tests/list-1.fun.out | 1 - .../exercises/letrec/tests/list-2.fun | 6 - .../exercises/letrec/tests/list-2.fun.out | 1 - .../exercises/letrec/tests/list-3.fun | 6 - .../exercises/letrec/tests/list-3.fun.out | 1 - .../exercises/letrec/tests/list-4.fun | 4 - .../exercises/letrec/tests/list-4.fun.out | 1 - .../exercises/letrec/tests/list-length.fun | 5 - .../letrec/tests/list-length.fun.out | 1 - .../exercises/letrec/tests/list-max.fun | 6 - .../exercises/letrec/tests/list-max.fun.out | 1 - .../exercises/letrec/tests/list-nth.fun | 4 - .../exercises/letrec/tests/list-nth.fun.out | 1 - .../exercises/letrec/tests/nth.fun | 10 - .../exercises/letrec/tests/nth.fun.out | 3 - .../exercises/letrec/tests/pattern.fun | 16 - .../exercises/letrec/tests/pattern.fun.out | 1 - .../exercises/letrec/tests/polymorphism-1.fun | 6 - .../letrec/tests/polymorphism-1.fun.out | 1 - .../exercises/letrec/tests/polymorphism-2.fun | 6 - .../letrec/tests/polymorphism-2.fun.out | 1 - .../exercises/letrec/tests/polymorphism-3.fun | 6 - .../letrec/tests/polymorphism-3.fun.out | 1 - .../exercises/letrec/tests/polymorphism-4.fun | 6 - .../letrec/tests/polymorphism-4.fun.out | 1 - .../exercises/letrec/tests/polymorphism-5.fun | 9 - .../letrec/tests/polymorphism-5.fun.out | 1 - .../exercises/letrec/tests/polymorphism-6.fun | 8 - .../letrec/tests/polymorphism-6.fun.out | 1 - .../exercises/letrec/tests/references-1.fun | 29 - .../letrec/tests/references-1.fun.out | 3 - .../exercises/letrec/tests/references-2.fun | 5 - .../letrec/tests/references-2.fun.out | 1 - .../exercises/letrec/tests/references-3.fun | 7 - .../letrec/tests/references-3.fun.out | 1 - .../exercises/letrec/tests/references-4.fun | 10 - .../letrec/tests/references-4.fun.out | 1 - .../exercises/letrec/tests/references-5.fun | 7 - .../letrec/tests/references-5.fun.out | 71 -- .../exercises/letrec/tests/stuck-letrec.fun | 6 - .../letrec/tests/stuck-letrec.fun.out | 3 - .../exercises/letrec/tests/tail-recursion.fun | 12 - .../letrec/tests/tail-recursion.fun.out | 1 - .../exercises/letrec/tests/tuple-1.fun | 5 - .../exercises/letrec/tests/tuple-1.fun.out | 1 - .../exercises/letrec/tests/tuple-2.fun | 9 - .../exercises/letrec/tests/tuple-2.fun.out | 1 - .../exercises/letrec/tests/tuple-3.fun | 6 - .../exercises/letrec/tests/tuple-3.fun.out | 1 - .../exercises/letrec/tests/tuple-4.fun | 6 - .../exercises/letrec/tests/tuple-4.fun.out | 1 - .../exercises/letrec/tests/tuple-5.fun | 9 - .../exercises/letrec/tests/tuple-5.fun.out | 1 - .../1_untyped/2_substitution/fun-untyped.md | 327 --------- .../2_substitution/tests/ackermann.fun.out | 1 - .../2_substitution/tests/callcc-1.fun.out | 1 - .../2_substitution/tests/callcc-2.fun.out | 1 - .../2_substitution/tests/callcc-3.fun.out | 1 - .../2_substitution/tests/callcc-4.fun.out | 1 - .../2_substitution/tests/callcc-5.fun.out | 1 - .../tests/callcc-efficient-with-1.fun.out | 1 - .../tests/callcc-efficient-with-2.fun.out | 1 - .../tests/callcc-inefficient-without.fun.out | 1 - .../tests/callcc-looping.fun.out | 1 - .../tests/callcc-return-1.fun.out | 1 - .../tests/callcc-return-2.fun.out | 1 - .../tests/constructor-bst-sorting.fun.out | 3 - .../tests/constructor-days.fun.out | 1 - .../constructor-expr-distributivity.fun.out | 3 - .../tests/constructor-expr-toString.fun.out | 1 - .../tests/constructor-list-length.fun.out | 1 - .../tests/constructor-tree-mirror.fun.out | 1 - .../tests/empty-argument-1.fun.out | 1 - .../tests/empty-argument-2.fun.out | 1 - .../2_substitution/tests/exceptions.fun.out | 1 - .../tests/factorial-and-list-max.fun.out | 3 - .../2_substitution/tests/factorial.fun.out | 1 - .../2_substitution/tests/list-1.fun.out | 1 - .../2_substitution/tests/list-2.fun.out | 1 - .../2_substitution/tests/list-3.fun.out | 1 - .../2_substitution/tests/list-4.fun.out | 1 - .../2_substitution/tests/list-length.fun.out | 1 - .../2_substitution/tests/list-max.fun.out | 1 - .../2_substitution/tests/list-nth.fun.out | 1 - .../2_substitution/tests/nth.fun.out | 3 - .../2_substitution/tests/pattern.fun.out | 1 - .../tests/polymorphism-1.fun.out | 1 - .../tests/polymorphism-2.fun.out | 1 - .../tests/polymorphism-3.fun.out | 1 - .../tests/polymorphism-4.fun.out | 1 - .../tests/polymorphism-5.fun.out | 1 - .../tests/polymorphism-6.fun.out | 1 - .../2_substitution/tests/references-1.fun.out | 3 - .../2_substitution/tests/references-2.fun.out | 1 - .../2_substitution/tests/references-3.fun.out | 1 - .../2_substitution/tests/references-4.fun.out | 1 - .../2_substitution/tests/references-5.fun.out | 71 -- .../2_substitution/tests/stuck-letrec.fun.out | 3 - .../tests/tail-recursion.fun.out | 1 - .../2_substitution/tests/tuple-1.fun.out | 1 - .../2_substitution/tests/tuple-2.fun.out | 1 - .../2_substitution/tests/tuple-3.fun.out | 1 - .../2_substitution/tests/tuple-4.fun.out | 1 - .../2_substitution/tests/tuple-5.fun.out | 1 - .../exercises/fun-type-inferencer/Makefile | 8 - .../exercises/fun-type-inferencer/README | 55 -- .../fun-type-inferencer/tests/README | 60 -- .../fun-type-inferencer/tests/ackermann.fun | 6 - .../tests/ackermann.fun.out | 1 - .../fun-type-inferencer/tests/callcc-1.fun | 5 - .../tests/callcc-1.fun.out | 1 - .../fun-type-inferencer/tests/callcc-2.fun | 5 - .../tests/callcc-2.fun.out | 1 - .../fun-type-inferencer/tests/callcc-3.fun | 5 - .../tests/callcc-3.fun.out | 1 - .../fun-type-inferencer/tests/callcc-4.fun | 5 - .../tests/callcc-4.fun.out | 1 - .../fun-type-inferencer/tests/callcc-5.fun | 5 - .../tests/callcc-5.fun.out | 1 - .../tests/callcc-efficient-with-1.fun | 13 - .../tests/callcc-efficient-with-1.fun.out | 1 - .../tests/callcc-efficient-with-2.fun | 13 - .../tests/callcc-efficient-with-2.fun.out | 1 - .../tests/callcc-inefficient-without.fun | 11 - .../tests/callcc-inefficient-without.fun.out | 1 - .../tests/callcc-looping.fun | 8 - .../tests/callcc-looping.fun.out | 1 - .../tests/callcc-return-1.fun | 8 - .../tests/callcc-return-1.fun.out | 1 - .../tests/callcc-return-2.fun | 10 - .../tests/callcc-return-2.fun.out | 1 - .../fun-type-inferencer/tests/callcc.fun | 1 - .../fun-type-inferencer/tests/callcc.fun.out | 1 - .../tests/constructor-bst-sorting.fun | 17 - .../tests/constructor-bst-sorting.fun.out | 1 - .../tests/constructor-days.fun | 17 - .../tests/constructor-days.fun.out | 1 - .../tests/constructor-expr-distributivity.fun | 16 - .../constructor-expr-distributivity.fun.out | 1 - .../tests/constructor-expr-toString.fun | 8 - .../tests/constructor-expr-toString.fun.out | 1 - .../tests/constructor-list-length.fun | 4 - .../tests/constructor-list-length.fun.out | 1 - .../tests/constructor-tree-mirror.fun | 7 - .../tests/constructor-tree-mirror.fun.out | 1 - .../tests/empty-argument-1.fun | 9 - .../tests/empty-argument-1.fun.out | 1 - .../tests/empty-argument-2.fun | 9 - .../tests/empty-argument-2.fun.out | 1 - .../fun-type-inferencer/tests/exceptions.fun | 11 - .../tests/exceptions.fun.out | 1 - .../tests/factorial-and-list-max.fun | 16 - .../tests/factorial-and-list-max.fun.out | 1 - .../fun-type-inferencer/tests/factorial.fun | 8 - .../tests/factorial.fun.out | 1 - .../fun-type-inferencer/tests/letrec.fun | 45 -- .../fun-type-inferencer/tests/letrec.fun.out | 1 - .../fun-type-inferencer/tests/list-1.fun | 6 - .../fun-type-inferencer/tests/list-1.fun.out | 1 - .../fun-type-inferencer/tests/list-2.fun | 6 - .../fun-type-inferencer/tests/list-2.fun.out | 1 - .../fun-type-inferencer/tests/list-3.fun | 6 - .../fun-type-inferencer/tests/list-3.fun.out | 1 - .../fun-type-inferencer/tests/list-4.fun | 4 - .../fun-type-inferencer/tests/list-4.fun.out | 1 - .../fun-type-inferencer/tests/list-length.fun | 5 - .../tests/list-length.fun.out | 1 - .../fun-type-inferencer/tests/list-max.fun | 6 - .../tests/list-max.fun.out | 1 - .../fun-type-inferencer/tests/list-nth.fun | 4 - .../tests/list-nth.fun.out | 1 - .../fun-type-inferencer/tests/nth.fun | 10 - .../fun-type-inferencer/tests/nth.fun.out | 1 - .../fun-type-inferencer/tests/pattern.fun | 16 - .../fun-type-inferencer/tests/pattern.fun.out | 1 - .../tests/polymorphism-1.fun | 6 - .../tests/polymorphism-1.fun.out | 1 - .../tests/polymorphism-2.fun | 6 - .../tests/polymorphism-2.fun.out | 1 - .../tests/polymorphism-3.fun | 6 - .../tests/polymorphism-3.fun.out | 1 - .../tests/polymorphism-4.fun | 6 - .../tests/polymorphism-4.fun.out | 1 - .../tests/polymorphism-5.fun | 9 - .../tests/polymorphism-5.fun.out | 1 - .../tests/polymorphism-6.fun | 8 - .../tests/polymorphism-6.fun.out | 1 - .../tests/references-1.fun | 29 - .../tests/references-1.fun.out | 1 - .../tests/references-2.fun | 5 - .../tests/references-2.fun.out | 1 - .../tests/references-3.fun | 7 - .../tests/references-3.fun.out | 1 - .../tests/references-4.fun | 10 - .../tests/references-4.fun.out | 1 - .../tests/references-5.fun | 7 - .../tests/references-5.fun.out | 1 - .../tests/stuck-letrec.fun | 6 - .../tests/stuck-letrec.fun.out | 1 - .../tests/tail-recursion.fun | 12 - .../tests/tail-recursion.fun.out | 1 - .../fun-type-inferencer/tests/tuple-1.fun | 5 - .../fun-type-inferencer/tests/tuple-1.fun.out | 1 - .../fun-type-inferencer/tests/tuple-2.fun | 9 - .../fun-type-inferencer/tests/tuple-2.fun.out | 1 - .../fun-type-inferencer/tests/tuple-3.fun | 6 - .../fun-type-inferencer/tests/tuple-3.fun.out | 1 - .../fun-type-inferencer/tests/tuple-4.fun | 6 - .../fun-type-inferencer/tests/tuple-4.fun.out | 1 - .../fun-type-inferencer/tests/tuple-5.fun | 9 - .../fun-type-inferencer/tests/tuple-5.fun.out | 1 - .../pl-tutorial/2_languages/3_fun/Makefile | 4 - .../pl-tutorial/2_languages/3_fun/NOTES | 5 - .../2_languages/3_fun/programs/README | 60 -- .../2_languages/3_fun/programs/ackermann.fun | 6 - .../2_languages/3_fun/programs/callcc-1.fun | 5 - .../2_languages/3_fun/programs/callcc-2.fun | 5 - .../2_languages/3_fun/programs/callcc-3.fun | 5 - .../2_languages/3_fun/programs/callcc-4.fun | 5 - .../2_languages/3_fun/programs/callcc-5.fun | 5 - .../programs/callcc-efficient-with-1.fun | 13 - .../programs/callcc-efficient-with-2.fun | 13 - .../programs/callcc-inefficient-without.fun | 11 - .../3_fun/programs/callcc-looping.fun | 8 - .../3_fun/programs/callcc-return-1.fun | 8 - .../3_fun/programs/callcc-return-2.fun | 10 - .../programs/constructor-bst-sorting.fun | 17 - .../3_fun/programs/constructor-days.fun | 17 - .../constructor-expr-distributivity.fun | 16 - .../programs/constructor-expr-toString.fun | 8 - .../programs/constructor-list-length.fun | 4 - .../programs/constructor-tree-mirror.fun | 7 - .../3_fun/programs/empty-argument-1.fun | 9 - .../3_fun/programs/empty-argument-2.fun | 9 - .../2_languages/3_fun/programs/exceptions.fun | 11 - .../3_fun/programs/factorial-and-list-max.fun | 16 - .../2_languages/3_fun/programs/factorial.fun | 8 - .../2_languages/3_fun/programs/list-1.fun | 6 - .../2_languages/3_fun/programs/list-2.fun | 6 - .../2_languages/3_fun/programs/list-3.fun | 6 - .../2_languages/3_fun/programs/list-4.fun | 4 - .../3_fun/programs/list-length.fun | 5 - .../2_languages/3_fun/programs/list-max.fun | 6 - .../2_languages/3_fun/programs/list-nth.fun | 4 - .../2_languages/3_fun/programs/nth.fun | 10 - .../2_languages/3_fun/programs/pattern.fun | 16 - .../3_fun/programs/polymorphism-1.fun | 6 - .../3_fun/programs/polymorphism-2.fun | 6 - .../3_fun/programs/polymorphism-3.fun | 6 - .../3_fun/programs/polymorphism-4.fun | 6 - .../3_fun/programs/polymorphism-5.fun | 9 - .../3_fun/programs/polymorphism-6.fun | 8 - .../3_fun/programs/references-1.fun | 29 - .../3_fun/programs/references-2.fun | 5 - .../3_fun/programs/references-3.fun | 7 - .../3_fun/programs/references-4.fun | 10 - .../3_fun/programs/references-5.fun | 7 - .../3_fun/programs/stuck-letrec.fun | 6 - .../3_fun/programs/tail-recursion.fun | 12 - .../2_languages/3_fun/programs/tuple-1.fun | 5 - .../2_languages/3_fun/programs/tuple-2.fun | 9 - .../2_languages/3_fun/programs/tuple-3.fun | 6 - .../2_languages/3_fun/programs/tuple-4.fun | 6 - .../2_languages/3_fun/programs/tuple-5.fun | 9 - .../2_languages/4_logik/basic/Makefile | 20 - .../2_languages/4_logik/basic/logik.md | 352 --------- .../2_languages/4_logik/basic/tests/README | 12 - .../4_logik/basic/tests/append-1.logik | 5 - .../4_logik/basic/tests/append-1.logik.out | 1 - .../4_logik/basic/tests/append-2.logik | 5 - .../4_logik/basic/tests/append-2.logik.out | 5 - .../4_logik/basic/tests/append-3.logik | 5 - .../4_logik/basic/tests/append-3.logik.out | 2 - .../4_logik/basic/tests/append-4.logik | 5 - .../4_logik/basic/tests/append-4.logik.out | 19 - .../4_logik/basic/tests/append-5.logik | 5 - .../4_logik/basic/tests/append-5.logik.out | 1 - .../4_logik/basic/tests/fact-1.logik | 3 - .../4_logik/basic/tests/fact-1.logik.out | 1 - .../4_logik/basic/tests/fact-2.logik | 3 - .../4_logik/basic/tests/fact-2.logik.out | 1 - .../4_logik/basic/tests/fact-3.logik | 3 - .../4_logik/basic/tests/fact-3.logik.out | 1 - .../4_logik/basic/tests/fact-4.logik | 3 - .../4_logik/basic/tests/fact-4.logik.out | 1 - .../4_logik/basic/tests/fact-5.logik | 3 - .../4_logik/basic/tests/fact-5.logik.out | 1 - .../4_logik/basic/tests/family-1.logik | 17 - .../4_logik/basic/tests/family-1.logik.out | 39 - .../4_logik/basic/tests/family-2.logik | 20 - .../4_logik/basic/tests/family-2.logik.out | 5 - .../4_logik/basic/tests/reverse-fast-1.logik | 9 - .../basic/tests/reverse-fast-1.logik.out | 1 - .../4_logik/basic/tests/reverse-fast-2.logik | 11 - .../basic/tests/reverse-fast-2.logik.out | 1 - .../4_logik/basic/tests/reverse-fast-3.logik | 8 - .../basic/tests/reverse-fast-3.logik.out | 3 - .../tests/reverse-fast-palindromes-1.logik | 10 - .../reverse-fast-palindromes-1.logik.out | 9 - .../tests/reverse-fast-palindromes-2.logik | 9 - .../reverse-fast-palindromes-2.logik.out | 3 - .../4_logik/basic/tests/reverse-slow-1.logik | 10 - .../basic/tests/reverse-slow-1.logik.out | 1 - .../4_logik/basic/tests/reverse-slow-2.logik | 12 - .../basic/tests/reverse-slow-2.logik.out | 1 - .../4_logik/basic/tests/reverse-slow-3.logik | 9 - .../basic/tests/reverse-slow-3.logik.out | 3 - .../tests/reverse-slow-palindromes-1.logik | 11 - .../reverse-slow-palindromes-1.logik.out | 9 - .../tests/reverse-slow-palindromes-2.logik | 10 - .../reverse-slow-palindromes-2.logik.out | 3 - .../4_logik/basic/tests/takeout-1.logik | 4 - .../4_logik/basic/tests/takeout-1.logik.out | 3 - .../4_logik/basic/tests/takeout-2.logik | 4 - .../4_logik/basic/tests/takeout-2.logik.out | 7 - .../basic/tests/untested/append-6.logik | 5 - .../exercises/logik-extended/Makefile | 2 - .../extended/exercises/logik-extended/README | 18 - .../extended/exercises/logik-extended/logik.k | 71 -- .../logik-extended/tests/append-1.logik | 5 - .../logik-extended/tests/append-1.logik.out | 1 - .../logik-extended/tests/append-2.logik | 5 - .../logik-extended/tests/append-2.logik.out | 5 - .../logik-extended/tests/append-3.logik | 5 - .../logik-extended/tests/append-3.logik.out | 2 - .../logik-extended/tests/append-4.logik | 5 - .../logik-extended/tests/append-4.logik.out | 19 - .../logik-extended/tests/append-5.logik | 5 - .../logik-extended/tests/append-5.logik.out | 1 - .../logik-extended/tests/fact-1.logik | 3 - .../logik-extended/tests/fact-1.logik.out | 1 - .../logik-extended/tests/fact-2.logik | 3 - .../logik-extended/tests/fact-2.logik.out | 1 - .../logik-extended/tests/fact-3.logik | 3 - .../logik-extended/tests/fact-3.logik.out | 1 - .../logik-extended/tests/fact-4.logik | 3 - .../logik-extended/tests/fact-4.logik.out | 1 - .../logik-extended/tests/fact-5.logik | 3 - .../logik-extended/tests/fact-5.logik.out | 1 - .../tests/factorial-tail-recursive.logik | 9 - .../tests/factorial-tail-recursive.logik.out | 1 - .../logik-extended/tests/factorial.logik | 9 - .../logik-extended/tests/factorial.logik.out | 1 - .../logik-extended/tests/family-1.logik | 17 - .../logik-extended/tests/family-1.logik.out | 39 - .../logik-extended/tests/family-2.logik | 20 - .../logik-extended/tests/family-2.logik.out | 5 - .../logik-extended/tests/hanoi.logik | 14 - .../logik-extended/tests/hanoi.logik.out | 1 - .../logik-extended/tests/list-append-1.logik | 5 - .../tests/list-append-1.logik.out | 1 - .../logik-extended/tests/list-append-2.logik | 5 - .../tests/list-append-2.logik.out | 5 - .../logik-extended/tests/list-member-1.logik | 5 - .../tests/list-member-1.logik.out | 1 - .../logik-extended/tests/list-member-2.logik | 5 - .../tests/list-member-2.logik.out | 11 - .../logik-extended/tests/list-member-3.logik | 5 - .../tests/list-member-3.logik.out | 3 - .../logik-extended/tests/list-mergesort.logik | 18 - .../tests/list-mergesort.logik.out | 1 - .../logik-extended/tests/list-perm.logik | 7 - .../logik-extended/tests/list-perm.logik.out | 11 - .../logik-extended/tests/list-reverse.logik | 6 - .../tests/list-reverse.logik.out | 1 - .../logik-extended/tests/list-takeout-1.logik | 4 - .../tests/list-takeout-1.logik.out | 1 - .../logik-extended/tests/list-takeout-2.logik | 5 - .../tests/list-takeout-2.logik.out | 8 - .../logik-extended/tests/list-takeout-3.logik | 5 - .../tests/list-takeout-3.logik.out | 11 - .../logik-extended/tests/reverse-fast-1.logik | 9 - .../tests/reverse-fast-1.logik.out | 1 - .../logik-extended/tests/reverse-fast-2.logik | 11 - .../tests/reverse-fast-2.logik.out | 1 - .../logik-extended/tests/reverse-fast-3.logik | 8 - .../tests/reverse-fast-3.logik.out | 3 - .../tests/reverse-fast-palindromes-1.logik | 10 - .../reverse-fast-palindromes-1.logik.out | 9 - .../tests/reverse-fast-palindromes-2.logik | 9 - .../reverse-fast-palindromes-2.logik.out | 3 - .../logik-extended/tests/reverse-slow-1.logik | 10 - .../tests/reverse-slow-1.logik.out | 1 - .../logik-extended/tests/reverse-slow-2.logik | 12 - .../tests/reverse-slow-2.logik.out | 1 - .../logik-extended/tests/reverse-slow-3.logik | 9 - .../tests/reverse-slow-3.logik.out | 3 - .../tests/reverse-slow-palindromes-1.logik | 11 - .../reverse-slow-palindromes-1.logik.out | 9 - .../tests/reverse-slow-palindromes-2.logik | 10 - .../reverse-slow-palindromes-2.logik.out | 3 - .../logik-extended/tests/takeout-1.logik | 4 - .../logik-extended/tests/takeout-1.logik.out | 3 - .../logik-extended/tests/takeout-2.logik | 4 - .../logik-extended/tests/takeout-2.logik.out | 7 - .../pl-tutorial/2_languages/Makefile | 4 - .../pl-tutorial/2_languages/README.md | 14 - k-distribution/pl-tutorial/NOTES.md | 96 --- k-distribution/pl-tutorial/README.md | 116 --- k-distribution/src/main/assembly/bin.xml | 12 - .../pl-tutorial/1_k/1_lambda/Makefile | 3 + .../1_k/1_lambda/lesson_8/Makefile | 8 + .../1_k/1_lambda/lesson_8/lambda.k | 0 .../tests/arithmetic-div-zero.lambda | 0 .../lesson_8}/tests/arithmetic.lambda | 0 .../lesson_8}/tests/arithmetic.lambda.out | 0 .../tests/closed-variable-capture.lambda | 0 .../tests/closed-variable-capture.lambda.out | 0 .../lesson_8}/tests/factorial-let-fix.lambda | 0 .../tests/factorial-let-fix.lambda.out | 0 .../lesson_8}/tests/factorial-let.lambda | 0 .../lesson_8}/tests/factorial-let.lambda.out | 0 .../lesson_8}/tests/factorial-letrec.lambda | 0 .../tests/factorial-letrec.lambda.out | 0 .../1_k/1_lambda/lesson_8}/tests/fibbo.lambda | 0 .../1_lambda/lesson_8}/tests/fibbo.lambda.out | 0 .../tests/free-variable-capture.lambda | 0 .../tests/free-variable-capture.lambda.out | 0 .../1_lambda/lesson_8}/tests/identity.lambda | 0 .../lesson_8}/tests/identity.lambda.out | 0 .../1_k/1_lambda/lesson_8}/tests/if.lambda | 0 .../1_lambda/lesson_8}/tests/if.lambda.out | 0 .../1_k/1_lambda/lesson_8}/tests/lets.lambda | 0 .../1_lambda/lesson_8}/tests/lets.lambda.out | 0 .../pl-tutorial/1_k/2_imp/Makefile | 3 + .../pl-tutorial/1_k/2_imp/lesson_4/Makefile | 5 + .../pl-tutorial/1_k/2_imp/lesson_4/imp.k | 0 .../1_k/2_imp/lesson_4}/tests/collatz.imp | 0 .../1_k/2_imp/lesson_4/tests/collatz.imp.out | 0 .../1_k/2_imp/lesson_4}/tests/primes.imp | 0 .../1_k/2_imp/lesson_4/tests/primes.imp.out | 0 .../1_k/2_imp/lesson_4}/tests/sum.imp | 0 .../1_k/2_imp/lesson_4}/tests/sum.imp.out | 0 .../pl-tutorial/1_k/3_lambda++/Makefile | 3 + .../1_k/3_lambda++/lesson_5/Makefile | 0 .../1_k/3_lambda++/lesson_5/Makefile.det | 12 + .../1_k/3_lambda++/lesson_5/Makefile.nondet | 11 + .../1_k/3_lambda++/lesson_5/lambda.k | 0 .../deterministic}/factorial-let-fix.lambda | 0 .../factorial-let-fix.lambda.out | 0 .../tests/deterministic}/factorial-let.lambda | 0 .../deterministic/factorial-let.lambda.out | 0 .../deterministic}/factorial-letrec.lambda | 0 .../deterministic/factorial-letrec.lambda.out | 0 .../tests/deterministic}/fibbo.lambda | 0 .../tests/deterministic/fibbo.lambda.out | 0 .../arithmetic-div-zero.lambda | 0 .../tests/nondeterministic}/arithmetic.lambda | 0 .../nondeterministic/arithmetic.lambda.out | 0 .../nondeterministic}/callcc-env1.lambda | 0 .../nondeterministic/callcc-env1.lambda.out | 0 .../nondeterministic}/callcc-env2.lambda | 0 .../nondeterministic/callcc-env2.lambda.out | 0 .../nondeterministic}/callcc-with-let.lambda | 0 .../callcc-with-let.lambda.out | 0 .../closed-variable-capture.lambda | 0 .../closed-variable-capture.lambda.out | 0 .../free-variable-capture.lambda | 0 .../free-variable-capture.lambda.out | 0 .../tests/nondeterministic}/identity.lambda | 0 .../nondeterministic}/identity.lambda.out | 0 .../tests/nondeterministic}/if.lambda | 0 .../tests/nondeterministic/if.lambda.out | 0 .../tests/nondeterministic}/lets.lambda | 0 .../tests/nondeterministic/lets.lambda.out | 0 .../pl-tutorial/1_k/4_imp++/Makefile | 3 + .../pl-tutorial/1_k/4_imp++/lesson_7/Makefile | 0 .../1_k/4_imp++/lesson_7/Makefile.concrete | 4 +- .../1_k/4_imp++/lesson_7/Makefile.proof | 9 + .../pl-tutorial/1_k/4_imp++/lesson_7/imp.k | 0 .../1_k/4_imp++/lesson_7}/tests/collatz.imp | 0 .../4_imp++/lesson_7}/tests/collatz.imp.out | 0 .../1_k/4_imp++/lesson_7}/tests/div.imp | 0 .../1_k/4_imp++/lesson_7}/tests/div.imp.out | 0 .../1_k/4_imp++/lesson_7}/tests/io.imp | 0 .../1_k/4_imp++/lesson_7}/tests/io.imp.in | 0 .../1_k/4_imp++/lesson_7}/tests/io.imp.out | 0 .../1_k/4_imp++/lesson_7}/tests/locals.imp | 0 .../4_imp++/lesson_7}/tests/locals.imp.out | 0 .../1_k/4_imp++/lesson_7}/tests/primes.imp | 0 .../4_imp++/lesson_7}/tests/primes.imp.out | 0 .../4_imp++/lesson_7/tests/proofs/sum-spec.k | 0 .../lesson_7/tests/proofs/sum-spec.k.out | 0 .../1_k/4_imp++/lesson_7}/tests/spawn.imp | 0 .../1_k/4_imp++/lesson_7}/tests/spawn.imp.in | 0 .../1_k/4_imp++/lesson_7}/tests/spawn.imp.out | 0 .../1_k/4_imp++/lesson_7}/tests/sum-io.imp | 0 .../1_k/4_imp++/lesson_7}/tests/sum-io.imp.in | 0 .../4_imp++/lesson_7}/tests/sum-io.imp.out | 0 .../1_k/4_imp++/lesson_7}/tests/sum.imp | 0 .../1_k/4_imp++/lesson_7}/tests/sum.imp.out | 0 .../pl-tutorial/1_k/5_types/Makefile | 3 + .../pl-tutorial/1_k/5_types/lesson_6/Makefile | 3 +- .../pl-tutorial/1_k/5_types/lesson_6/lambda.k | 0 .../lesson_6}/tests/composition.lambda | 0 .../lesson_6/tests/composition.lambda.out | 0 .../5_types/lesson_6}/tests/identity.lambda | 0 .../lesson_6}/tests/identity.lambda.out | 0 .../1_k/5_types/lesson_6}/tests/if.lambda | 0 .../1_k/5_types/lesson_6/tests/if.lambda.out | 0 .../1_k/5_types/lesson_6}/tests/letrec.lambda | 0 .../5_types/lesson_6/tests/letrec.lambda.out | 0 .../lesson_6}/tests/nested-lets.lambda | 0 .../lesson_6}/tests/nested-lets.lambda.out | 0 .../1_k/5_types/lesson_6}/tests/plus.lambda | 0 .../5_types/lesson_6}/tests/plus.lambda.out | 0 .../tests/polymorphic-identity-1-fails.lambda | 0 .../polymorphic-identity-1-fails.lambda.out | 0 .../tests/polymorphic-identity-2-fails.lambda | 0 .../polymorphic-identity-2-fails.lambda.out | 0 .../lesson_6}/tests/static-scoping-1.lambda | 0 .../tests/static-scoping-1.lambda.out | 0 .../lesson_6}/tests/static-scoping-2.lambda | 0 .../tests/static-scoping-2.lambda.out | 0 .../5_types/lesson_6}/tests/tricky-1.lambda | 0 .../lesson_6}/tests/tricky-1.lambda.out | 0 .../5_types/lesson_6}/tests/tricky-2.lambda | 0 .../lesson_6/tests/tricky-2.lambda.out | 0 .../5_types/lesson_6}/tests/tricky-3.lambda | 0 .../lesson_6/tests/tricky-3.lambda.out | 0 .../5_types/lesson_6}/tests/tricky-4.lambda | 0 .../lesson_6}/tests/tricky-4.lambda.out | 0 .../5_types/lesson_6}/tests/tricky-5.lambda | 0 .../lesson_6/tests/tricky-5.lambda.out | 0 .../regression-new/pl-tutorial/1_k/Makefile | 3 + .../2_languages/1_simple/1_untyped/Makefile | 4 +- .../1_simple/1_untyped/simple-untyped.md | 0 .../1_untyped}/tests/diverse/collatz.simple | 0 .../tests/diverse/collatz.simple.in | 0 .../tests/diverse/collatz.simple.out | 0 .../tests/diverse/div-nondet.simple | 0 .../tests/diverse/div-nondet.simple.out | 0 .../1_untyped}/tests/diverse/factorial.simple | 0 .../tests/diverse/factorial.simple.in | 0 .../tests/diverse/factorial.simple.out | 0 .../tests/diverse/higher-order.simple | 0 .../tests/diverse/higher-order.simple.out | 0 .../1_untyped}/tests/diverse/matrix.simple | 0 .../1_untyped}/tests/diverse/matrix.simple.in | 0 .../tests/diverse/matrix.simple.out | 0 .../diverse/nonterminating/dekker.simple | 0 .../1_untyped}/tests/diverse/sortings.simple | 0 .../tests/diverse/sortings.simple.in | 0 .../tests/diverse/sortings.simple.out | 0 .../tests/exceptions/exceptions_01.simple | 0 .../tests/exceptions/exceptions_01.simple.out | 0 .../tests/exceptions/exceptions_02.simple | 0 .../tests/exceptions/exceptions_02.simple.out | 0 .../tests/exceptions/exceptions_03.simple | 0 .../tests/exceptions/exceptions_03.simple.out | 0 .../tests/exceptions/exceptions_04.simple | 0 .../tests/exceptions/exceptions_04.simple.out | 0 .../tests/exceptions/exceptions_05.simple | 0 .../tests/exceptions/exceptions_05.simple.out | 0 .../tests/exceptions/exceptions_06.simple | 0 .../tests/exceptions/exceptions_06.simple.out | 0 .../tests/exceptions/exceptions_07.simple | 0 .../tests/exceptions/exceptions_07.simple.out | 0 .../tests/exceptions/exceptions_08.simple | 0 .../tests/exceptions/exceptions_08.simple.out | 0 .../tests/exceptions/exceptions_09.simple | 0 .../tests/exceptions/exceptions_09.simple.out | 0 .../tests/exceptions/exceptions_10.simple | 0 .../tests/exceptions/exceptions_10.simple.out | 0 .../tests/exceptions/exceptions_11.simple | 0 .../tests/exceptions/exceptions_11.simple.out | 0 .../tests/exceptions/exceptions_12.simple | 0 .../tests/exceptions/exceptions_12.simple.out | 0 .../tests/exceptions/exceptions_13.simple | 0 .../tests/exceptions/exceptions_13.simple.out | 0 .../tests/exceptions/exceptions_14.simple | 0 .../tests/exceptions/exceptions_14.simple.out | 0 .../tests/exceptions/exceptions_15.simple | 0 .../tests/exceptions/exceptions_15.simple.out | 0 .../tests/threads/threads_01.simple | 0 .../tests/threads/threads_01.simple.out | 0 .../tests/threads/threads_02.simple | 0 .../tests/threads/threads_02.simple.out | 0 .../tests/threads/threads_04.simple | 0 .../tests/threads/threads_04.simple.out | 0 .../tests/threads/threads_05.simple | 0 .../tests/threads/threads_05.simple.out | 0 .../tests/threads/threads_06.simple | 0 .../tests/threads/threads_06.simple.in | 0 .../tests/threads/threads_06.simple.out | 0 .../tests/threads/threads_07.simple | 0 .../tests/threads/threads_07.simple.in | 0 .../tests/threads/threads_07.simple.out | 0 .../tests/threads/threads_09.simple | 0 .../tests/threads/threads_09.simple.out | 0 .../tests/threads/threads_10.simple | 0 .../tests/threads/threads_10.simple.out | 0 .../tests/threads/threads_11.simple | 0 .../tests/threads/threads_11.simple.out | 0 .../tests/threads/threads_12.simple | 0 .../tests/threads/threads_12.simple.out | 0 .../1_simple/2_typed/1_static/Makefile | 4 +- .../2_typed/1_static/simple-typed-static.md | 0 .../1_static}/tests/collatz.simple.out | 0 .../2_typed/1_static}/tests/dekker.simple.out | 0 .../1_static}/tests/div-nondet.simple.out | 0 .../1_static}/tests/exceptions_01.simple.out | 0 .../1_static}/tests/exceptions_02.simple.out | 0 .../1_static}/tests/exceptions_03.simple.out | 0 .../1_static}/tests/exceptions_04.simple.out | 0 .../1_static}/tests/exceptions_05.simple.out | 0 .../1_static}/tests/exceptions_06.simple.out | 0 .../1_static}/tests/exceptions_07.simple.out | 0 .../1_static}/tests/exceptions_08.simple.out | 0 .../1_static}/tests/exceptions_09.simple.out | 0 .../1_static}/tests/exceptions_10.simple.out | 0 .../1_static}/tests/exceptions_11.simple.out | 0 .../1_static}/tests/exceptions_12.simple.out | 0 .../1_static}/tests/exceptions_13.simple.out | 0 .../1_static}/tests/exceptions_14.simple.out | 0 .../1_static}/tests/exceptions_15.simple.out | 0 .../1_static/tests/exceptions_16.simple.out | 0 .../1_static}/tests/factorial.simple.out | 0 .../1_static}/tests/higher-order.simple.out | 0 .../2_typed/1_static}/tests/matrix.simple.out | 0 .../1_static}/tests/sortings.simple.out | 0 .../1_static}/tests/threads_01.simple.out | 0 .../1_static}/tests/threads_02.simple.out | 0 .../1_static}/tests/threads_03.simple.out | 0 .../1_static}/tests/threads_04.simple.out | 0 .../1_static}/tests/threads_05.simple.out | 0 .../1_static}/tests/threads_06.simple.out | 0 .../1_static}/tests/threads_07.simple.out | 0 .../1_static}/tests/threads_08.simple.out | 0 .../1_static}/tests/threads_09.simple.out | 0 .../1_static}/tests/threads_10.simple.out | 0 .../1_static}/tests/threads_11.simple.out | 0 .../1_static}/tests/threads_12.simple.out | 0 .../1_simple/2_typed/2_dynamic/Makefile | 4 +- .../2_typed/2_dynamic/simple-typed-dynamic.md | 0 .../2_dynamic/tests}/collatz.simple.in | 0 .../2_dynamic/tests}/collatz.simple.out | 0 .../2_dynamic/tests}/div-nondet.simple.out | 0 .../2_dynamic/tests}/exceptions_01.simple.out | 0 .../2_dynamic/tests}/exceptions_02.simple.out | 0 .../2_dynamic/tests}/exceptions_03.simple.out | 0 .../2_dynamic/tests}/exceptions_04.simple.out | 0 .../2_dynamic/tests}/exceptions_05.simple.out | 0 .../2_dynamic/tests}/exceptions_06.simple.out | 0 .../2_dynamic}/tests/exceptions_07.simple.out | 0 .../2_dynamic/tests}/exceptions_08.simple.out | 0 .../2_dynamic/tests}/exceptions_09.simple.out | 0 .../2_dynamic/tests}/exceptions_10.simple.out | 0 .../2_dynamic/tests}/exceptions_11.simple.out | 0 .../2_dynamic/tests}/exceptions_12.simple.out | 0 .../2_dynamic/tests}/exceptions_13.simple.out | 0 .../2_dynamic/tests}/exceptions_14.simple.out | 0 .../2_dynamic/tests}/exceptions_15.simple.out | 0 .../2_dynamic/tests/exceptions_16.simple.out | 0 .../2_dynamic/tests}/factorial.simple.in | 0 .../2_dynamic/tests}/factorial.simple.out | 0 .../2_dynamic/tests}/higher-order.simple.out | 0 .../2_typed/2_dynamic}/tests/matrix.simple.in | 0 .../2_dynamic/tests}/matrix.simple.out | 0 .../2_dynamic/tests}/sortings.simple.in | 0 .../2_dynamic/tests}/sortings.simple.out | 0 .../2_dynamic}/tests/threads_01.simple.out | 0 .../2_dynamic}/tests/threads_02.simple.out | 0 .../2_dynamic}/tests/threads_03.simple.out | 0 .../2_dynamic}/tests/threads_04.simple.out | 0 .../2_dynamic}/tests/threads_05.simple.out | 0 .../2_dynamic/tests}/threads_06.simple.in | 0 .../2_dynamic}/tests/threads_06.simple.out | 0 .../2_dynamic/tests}/threads_07.simple.in | 0 .../2_dynamic/tests}/threads_07.simple.out | 0 .../2_dynamic}/tests/threads_08.simple.out | 0 .../2_dynamic}/tests/threads_09.simple.out | 0 .../2_dynamic/tests}/threads_10.simple.out | 0 .../2_dynamic/tests}/threads_11.simple.out | 0 .../2_dynamic/tests}/threads_12.simple.out | 0 .../2_typed/programs}/diverse/collatz.simple | 0 .../2_typed/programs}/diverse/dekker.simple | 0 .../programs}/diverse/div-nondet.simple | 0 .../programs}/diverse/factorial.simple | 0 .../programs}/diverse/higher-order.simple | 0 .../2_typed/programs}/diverse/matrix.simple | 0 .../2_typed/programs}/diverse/sortings.simple | 0 .../programs}/exceptions/exceptions_01.simple | 0 .../programs}/exceptions/exceptions_02.simple | 0 .../programs}/exceptions/exceptions_03.simple | 0 .../programs}/exceptions/exceptions_04.simple | 0 .../programs}/exceptions/exceptions_05.simple | 0 .../programs}/exceptions/exceptions_06.simple | 0 .../programs}/exceptions/exceptions_07.simple | 0 .../programs}/exceptions/exceptions_08.simple | 0 .../programs}/exceptions/exceptions_09.simple | 0 .../programs}/exceptions/exceptions_10.simple | 0 .../programs}/exceptions/exceptions_11.simple | 0 .../programs}/exceptions/exceptions_12.simple | 0 .../programs}/exceptions/exceptions_13.simple | 0 .../programs}/exceptions/exceptions_14.simple | 0 .../programs}/exceptions/exceptions_15.simple | 0 .../programs/exceptions/exceptions_16.simple | 0 .../programs}/threads/threads_01.simple | 0 .../programs}/threads/threads_02.simple | 0 .../programs}/threads/threads_03.simple | 0 .../programs}/threads/threads_04.simple | 0 .../programs}/threads/threads_05.simple | 0 .../programs}/threads/threads_06.simple | 0 .../programs}/threads/threads_07.simple | 0 .../programs}/threads/threads_08.simple | 0 .../programs}/threads/threads_09.simple | 0 .../programs}/threads/threads_10.simple | 0 .../programs}/threads/threads_11.simple | 0 .../programs}/threads/threads_12.simple | 0 .../pl-tutorial/2_languages/1_simple/Makefile | 3 + .../2_languages/2_kool/1_untyped/Makefile | 8 + .../2_kool/1_untyped/kool-untyped.md | 0 .../2_kool/1_untyped}/tests/cast-1.kool | 0 .../2_kool/1_untyped}/tests/cast-1.kool.out | 0 .../2_kool/1_untyped}/tests/cast-2.kool | 0 .../2_kool/1_untyped}/tests/cast-2.kool.out | 0 .../2_kool/1_untyped}/tests/constructor.kool | 0 .../1_untyped}/tests/constructor.kool.out | 0 .../1_untyped}/tests/dynamic-dispatch-1.kool | 0 .../tests/dynamic-dispatch-1.kool.out | 0 .../1_untyped}/tests/dynamic-dispatch-2.kool | 0 .../tests/dynamic-dispatch-2.kool.out | 0 .../1_untyped}/tests/dynamic-dispatch-3.kool | 0 .../tests/dynamic-dispatch-3.kool.out | 0 .../2_kool/1_untyped}/tests/exceptions-1.kool | 0 .../1_untyped}/tests/exceptions-1.kool.out | 0 .../2_kool/1_untyped}/tests/exceptions-2.kool | 0 .../1_untyped}/tests/exceptions-2.kool.out | 0 .../2_kool/1_untyped}/tests/factorial.kool | 0 .../1_untyped}/tests/factorial.kool.out | 0 .../2_kool/1_untyped/tests/failing/cycle.kool | 0 .../1_untyped}/tests/field-shadowing-1.kool | 0 .../tests/field-shadowing-1.kool.out | 0 .../1_untyped}/tests/field-shadowing-2.kool | 0 .../tests/field-shadowing-2.kool.out | 0 .../2_kool/1_untyped}/tests/field.kool | 0 .../2_kool/1_untyped}/tests/field.kool.out | 0 .../2_kool/1_untyped}/tests/hello-world.kool | 0 .../1_untyped}/tests/hello-world.kool.out | 0 .../2_kool/1_untyped}/tests/instanceOf.kool | 0 .../1_untyped}/tests/instanceOf.kool.out | 0 .../2_kool/1_untyped}/tests/matrix.kool | 0 .../2_kool/1_untyped}/tests/matrix.kool.in | 0 .../2_kool/1_untyped}/tests/matrix.kool.out | 0 .../1_untyped}/tests/method-sharing.kool | 0 .../1_untyped}/tests/method-sharing.kool.out | 0 .../2_kool/1_untyped}/tests/new-in-field.kool | 0 .../1_untyped}/tests/new-in-field.kool.out | 0 .../2_kool/1_untyped}/tests/new.kool | 0 .../2_kool/1_untyped}/tests/new.kool.out | 0 .../2_kool/1_untyped}/tests/odd-even.kool | 0 .../2_kool/1_untyped}/tests/odd-even.kool.out | 0 .../2_kool/1_untyped}/tests/point.kool | 0 .../2_kool/1_untyped}/tests/point.kool.out | 0 .../1_untyped}/tests/return-object.kool | 0 .../1_untyped}/tests/return-object.kool.out | 0 .../2_kool/1_untyped}/tests/sorting.kool | 0 .../2_kool/1_untyped}/tests/sorting.kool.in | 0 .../2_kool/1_untyped}/tests/sorting.kool.out | 0 .../2_kool/1_untyped}/tests/super-1.kool | 0 .../2_kool/1_untyped}/tests/super-1.kool.out | 0 .../2_kool/1_untyped}/tests/super-2.kool | 0 .../2_kool/1_untyped}/tests/super-2.kool.out | 0 .../2_kool/1_untyped}/tests/super-3.kool | 0 .../2_kool/1_untyped}/tests/super-3.kool.out | 0 .../1_untyped}/tests/this-explicit.kool | 0 .../1_untyped}/tests/this-explicit.kool.out | 0 .../1_untyped}/tests/this-implicit.kool | 0 .../1_untyped}/tests/this-implicit.kool.out | 0 .../2_kool/1_untyped}/tests/threads.kool | 0 .../2_kool/1_untyped/tests/threads.kool.out | 0 .../2_kool/1_untyped}/tests/tree-sum.kool | 0 .../2_kool/1_untyped}/tests/tree-sum.kool.out | 0 .../2_kool/2_typed/1_dynamic/Makefile | 12 + .../2_typed/1_dynamic/kool-typed-dynamic.md | 0 .../2_typed/1_dynamic}/tests/cast-1.kool.out | 0 .../2_typed/1_dynamic}/tests/cast-2.kool.out | 0 .../2_typed/1_dynamic}/tests/collatz.kool.in | 0 .../2_typed/1_dynamic}/tests/collatz.kool.out | 0 .../1_dynamic}/tests/constructor.kool.out | 0 .../tests/dynamic-dispatch-1.kool.out | 0 .../tests/dynamic-dispatch-2.kool.out | 0 .../tests/dynamic-dispatch-3.kool.out | 0 .../1_dynamic}/tests/exceptions-1.kool.out | 0 .../1_dynamic}/tests/exceptions-2.kool.out | 0 .../1_dynamic}/tests/factorial.kool.out | 0 .../tests/field-shadowing-1.kool.out | 0 .../tests/field-shadowing-2.kool.out | 0 .../2_typed/1_dynamic}/tests/field.kool.out | 0 .../1_dynamic}/tests/function-types.kool.out | 0 .../1_dynamic}/tests/hello-world.kool.out | 0 .../1_dynamic}/tests/instanceOf.kool.out | 0 .../2_typed/1_dynamic}/tests/matrix.kool.in | 0 .../2_typed/1_dynamic}/tests/matrix.kool.out | 0 .../1_dynamic}/tests/method-sharing.kool.out | 0 .../2_typed/1_dynamic}/tests/new.kool.out | 0 .../1_dynamic}/tests/odd-even.kool.out | 0 .../2_typed/1_dynamic}/tests/point.kool.out | 0 .../1_dynamic}/tests/return-object.kool.out | 0 .../2_typed/1_dynamic}/tests/sorting.kool.in | 0 .../2_typed/1_dynamic}/tests/sorting.kool.out | 0 .../2_typed/1_dynamic}/tests/super-1.kool.out | 0 .../2_typed/1_dynamic}/tests/super-2.kool.out | 0 .../2_typed/1_dynamic}/tests/super-3.kool.out | 0 .../1_dynamic}/tests/this-explicit.kool.out | 0 .../1_dynamic}/tests/this-implicit.kool.out | 0 .../2_typed/1_dynamic}/tests/threads.kool.out | 0 .../1_dynamic}/tests/tree-sum.kool.out | 0 .../2_kool/2_typed/2_static/Makefile | 4 +- .../2_typed/2_static/kool-typed-static.md | 0 .../2_typed/2_static}/tests/cast-1.kool.out | 0 .../2_typed/2_static}/tests/cast-2.kool.out | 0 .../2_typed/2_static}/tests/collatz.kool.out | 0 .../2_static}/tests/constructor.kool.out | 0 .../2_typed/2_static}/tests/cycle.kool.out | 0 .../tests/dynamic-dispatch-1.kool.out | 0 .../tests/dynamic-dispatch-2.kool.out | 0 .../tests/dynamic-dispatch-3.kool.out | 0 .../2_static}/tests/exceptions-1.kool.out | 0 .../2_static}/tests/exceptions-2.kool.out | 0 .../2_static}/tests/factorial.kool.out | 0 .../tests/field-shadowing-1.kool.out | 0 .../tests/field-shadowing-2.kool.out | 0 .../2_typed/2_static}/tests/field.kool.out | 0 .../2_static}/tests/function-types.kool.out | 0 .../2_static}/tests/hello-world.kool.out | 0 .../2_static}/tests/instanceOf.kool.out | 0 .../2_typed/2_static}/tests/matrix.kool.out | 0 .../2_static}/tests/method-sharing.kool.out | 0 .../2_typed/2_static}/tests/new.kool.out | 0 .../2_typed/2_static}/tests/odd-even.kool.out | 0 .../2_typed/2_static}/tests/point.kool.out | 0 .../2_static}/tests/return-object.kool.out | 0 .../2_typed/2_static}/tests/sorting.kool.out | 0 .../2_typed/2_static}/tests/super-1.kool.out | 0 .../2_typed/2_static}/tests/super-2.kool.out | 0 .../2_typed/2_static}/tests/super-3.kool.out | 0 .../2_static}/tests/this-explicit.kool.out | 0 .../2_static}/tests/this-implicit.kool.out | 0 .../2_typed/2_static}/tests/threads.kool.out | 0 .../2_typed/2_static}/tests/tree-sum.kool.out | 0 .../2_kool/2_typed/programs}/cast-1.kool | 0 .../2_kool/2_typed/programs}/cast-2.kool | 0 .../2_kool/2_typed/programs}/collatz.kool | 0 .../2_kool/2_typed/programs}/constructor.kool | 0 .../2_kool/2_typed/programs}/cycle.kool | 0 .../2_typed/programs}/dynamic-dispatch-1.kool | 0 .../2_typed/programs}/dynamic-dispatch-2.kool | 0 .../2_typed/programs}/dynamic-dispatch-3.kool | 0 .../2_typed/programs}/exceptions-1.kool | 0 .../2_typed/programs}/exceptions-2.kool | 0 .../2_kool/2_typed/programs}/factorial.kool | 0 .../2_typed/programs}/field-shadowing-1.kool | 0 .../2_typed/programs}/field-shadowing-2.kool | 0 .../2_kool/2_typed/programs}/field.kool | 0 .../2_typed/programs}/function-types.kool | 0 .../2_kool/2_typed/programs}/hello-world.kool | 0 .../2_kool/2_typed/programs}/instanceOf.kool | 0 .../2_kool/2_typed/programs}/matrix.kool | 0 .../2_typed/programs}/method-sharing.kool | 0 .../2_kool/2_typed/programs}/new.kool | 0 .../2_kool/2_typed/programs}/odd-even.kool | 0 .../2_kool/2_typed/programs}/point.kool | 0 .../2_typed/programs}/return-object.kool | 0 .../2_kool/2_typed/programs}/sorting.kool | 0 .../2_kool/2_typed/programs}/super-1.kool | 0 .../2_kool/2_typed/programs}/super-2.kool | 0 .../2_kool/2_typed/programs}/super-3.kool | 0 .../2_typed/programs}/this-explicit.kool | 0 .../2_typed/programs}/this-implicit.kool | 0 .../2_kool/2_typed/programs}/threads.kool | 0 .../2_kool/2_typed/programs}/tree-sum.kool | 0 .../pl-tutorial/2_languages/2_kool/Makefile | 3 + .../3_fun/1_untyped/1_environment/Makefile | 4 +- .../1_untyped/1_environment/fun-untyped.md | 0 .../1_environment}/tests/ackermann.fun.out | 0 .../1_environment}/tests/callcc-1.fun.out | 0 .../1_environment}/tests/callcc-2.fun.out | 0 .../1_environment}/tests/callcc-3.fun.out | 0 .../1_environment}/tests/callcc-4.fun.out | 0 .../1_environment}/tests/callcc-5.fun.out | 0 .../tests/callcc-efficient-with-1.fun.out | 0 .../tests/callcc-efficient-with-2.fun.out | 0 .../tests/callcc-inefficient-without.fun.out | 0 .../tests/callcc-looping.fun.out | 0 .../tests/callcc-return-1.fun.out | 0 .../tests/callcc-return-2.fun.out | 0 .../tests/constructor-bst-sorting.fun.out | 0 .../tests/constructor-days.fun.out | 0 .../constructor-expr-distributivity.fun.out | 0 .../tests/constructor-expr-toString.fun.out | 0 .../tests/constructor-list-length.fun.out | 0 .../tests/constructor-tree-mirror.fun.out | 0 .../tests/empty-argument-1.fun.out | 0 .../tests/empty-argument-2.fun.out | 0 .../1_environment}/tests/exceptions.fun.out | 0 .../tests/factorial-and-list-max.fun.out | 0 .../1_environment}/tests/factorial.fun.out | 0 .../1_environment}/tests/list-1.fun.out | 0 .../1_environment}/tests/list-2.fun.out | 0 .../1_environment}/tests/list-3.fun.out | 0 .../1_environment}/tests/list-4.fun.out | 0 .../1_environment}/tests/list-length.fun.out | 0 .../1_environment}/tests/list-max.fun.out | 0 .../1_environment/tests/list-nth.fun | 0 .../1_environment}/tests/list-nth.fun.out | 0 .../1_environment}/tests/nth.fun.out | 0 .../1_environment}/tests/pattern.fun.out | 0 .../tests/polymorphism-1.fun.out | 0 .../tests/polymorphism-2.fun.out | 0 .../tests/polymorphism-3.fun.out | 0 .../tests/polymorphism-4.fun.out | 0 .../tests/polymorphism-5.fun.out | 0 .../tests/polymorphism-6.fun.out | 0 .../1_environment}/tests/references-1.fun.out | 0 .../1_environment}/tests/references-2.fun.out | 0 .../1_environment}/tests/references-3.fun.out | 0 .../1_environment}/tests/references-4.fun.out | 0 .../1_environment}/tests/references-5.fun.out | 0 .../1_environment}/tests/stuck-letrec.fun.out | 0 .../tests/tail-recursion.fun.out | 0 .../1_environment}/tests/tuple-1.fun.out | 0 .../1_environment}/tests/tuple-2.fun.out | 0 .../1_environment}/tests/tuple-3.fun.out | 0 .../1_environment}/tests/tuple-4.fun.out | 0 .../1_environment}/tests/tuple-5.fun.out | 0 .../pl-tutorial/2_languages/3_fun/Makefile | 3 + .../2_languages/3_fun/programs}/ackermann.fun | 0 .../2_languages/3_fun/programs}/callcc-1.fun | 0 .../2_languages/3_fun/programs}/callcc-2.fun | 0 .../2_languages/3_fun/programs}/callcc-3.fun | 0 .../2_languages/3_fun/programs}/callcc-4.fun | 0 .../2_languages/3_fun/programs}/callcc-5.fun | 0 .../programs}/callcc-efficient-with-1.fun | 0 .../programs}/callcc-efficient-with-2.fun | 0 .../programs}/callcc-inefficient-without.fun | 0 .../3_fun/programs}/callcc-looping.fun | 0 .../3_fun/programs}/callcc-return-1.fun | 0 .../3_fun/programs}/callcc-return-2.fun | 0 .../programs}/constructor-bst-sorting.fun | 0 .../3_fun/programs}/constructor-days.fun | 0 .../constructor-expr-distributivity.fun | 0 .../programs}/constructor-expr-toString.fun | 0 .../programs}/constructor-list-length.fun | 0 .../programs}/constructor-tree-mirror.fun | 0 .../3_fun/programs}/empty-argument-1.fun | 0 .../3_fun/programs}/empty-argument-2.fun | 0 .../3_fun/programs}/exceptions.fun | 0 .../programs}/factorial-and-list-max.fun | 0 .../2_languages/3_fun/programs}/factorial.fun | 0 .../2_languages/3_fun/programs}/list-1.fun | 0 .../2_languages/3_fun/programs}/list-2.fun | 0 .../2_languages/3_fun/programs}/list-3.fun | 0 .../2_languages/3_fun/programs}/list-4.fun | 0 .../3_fun/programs}/list-length.fun | 0 .../2_languages/3_fun/programs}/list-max.fun | 0 .../2_languages/3_fun/programs}/list-nth.fun | 0 .../2_languages/3_fun/programs}/nth.fun | 0 .../2_languages/3_fun/programs}/pattern.fun | 0 .../3_fun/programs}/polymorphism-1.fun | 0 .../3_fun/programs}/polymorphism-2.fun | 0 .../3_fun/programs}/polymorphism-3.fun | 0 .../3_fun/programs}/polymorphism-4.fun | 0 .../3_fun/programs}/polymorphism-5.fun | 0 .../3_fun/programs}/polymorphism-6.fun | 0 .../3_fun/programs}/references-1.fun | 0 .../3_fun/programs}/references-2.fun | 0 .../3_fun/programs}/references-3.fun | 0 .../3_fun/programs}/references-4.fun | 0 .../3_fun/programs}/references-5.fun | 0 .../3_fun/programs}/stuck-letrec.fun | 0 .../3_fun/programs}/tail-recursion.fun | 0 .../2_languages/3_fun/programs}/tuple-1.fun | 0 .../2_languages/3_fun/programs}/tuple-2.fun | 0 .../2_languages/3_fun/programs}/tuple-3.fun | 0 .../2_languages/3_fun/programs}/tuple-4.fun | 0 .../2_languages/3_fun/programs}/tuple-5.fun | 0 .../pl-tutorial/2_languages/Makefile | 3 + .../tests/regression-new/pl-tutorial/Makefile | 2 + .../{pl-tutorial => tests/smoke}/Makefile | 2 +- .../{pl-tutorial => tests/smoke}/find-k.mak | 4 +- .../4_imp++/lesson_1 => tests/smoke}/imp.k | 32 +- k-distribution/tests/smoke/kast-test/Makefile | 7 + .../tests/smoke/kast-test/kast-in.k | 15 + .../tests/smoke/kast-test/kast-in1.kast | 2 + .../tests/smoke/kast-test/kast-in1.kast.out | 5 + .../smoke/kparse-test/1.test.kparse} | 0 .../tests/smoke/kparse-test/1.test.kparse.out | 1 + .../tests/smoke/kparse-test/Makefile | 7 + k-distribution/tests/smoke/kparse-test/test.k | 15 + .../tests/smoke/kprove-test/Makefile | 7 + .../tests/smoke/kprove-test/max-spec.k | 33 + .../smoke/kprove-test}/max-spec.k.out | 0 k-distribution/tests/smoke/krun-test/Makefile | 7 + .../tests => tests/smoke/krun-test}/sum.imp | 0 .../smoke/krun-test}/sum.imp.out | 0 package/test-package | 4 +- 3534 files changed, 233 insertions(+), 34906 deletions(-) delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/lambda.md delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/imp.md delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/lambda.md delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/README delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/README delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/README delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-my.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/imp.md delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/max-spec.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.in delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/imp.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/NOTES.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/callCC-return.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/README.md delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/lambda.k delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/media.properties delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda delete mode 100644 k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda.out delete mode 100644 k-distribution/pl-tutorial/1_k/6_extras/README delete mode 100644 k-distribution/pl-tutorial/1_k/Makefile delete mode 100644 k-distribution/pl-tutorial/1_k/README.md delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/NOTES.md delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/README delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/README delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/div-nondet.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/higher-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/nonterminating/dekker.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/NOTES.md delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/README delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/README.md delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex16.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex17.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/README delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/collatz.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/dekker.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/div-nondet.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/collatz.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/dekker.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/div-nondet.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/factorial.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/higher-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/matrix.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/sortings.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/factorial.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/higher-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/matrix.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/sortings.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/collatz.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/dekker.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/div-nondet.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/factorial.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/higher-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/matrix.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/sortings.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/README delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/div-nondet.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/collatz.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/dekker.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/div-nondet.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/factorial.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/higher-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/matrix.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/sortings.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex16.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex17.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/higher-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/matrix.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_06.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/README delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/div-nondet.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/collatz.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/dekker.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/div-nondet.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/factorial.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/higher-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/matrix.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/sortings.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/higher-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/div-nondet.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_13.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_14.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_15.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/higher-order.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_01.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_02.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_03.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_04.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_05.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.in delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_08.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_09.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_10.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_11.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_12.simple.out delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/README.md delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/collatz.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/dekker.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/div-nondet.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/factorial.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/higher-order.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/matrix.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/sortings.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_13.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_14.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_15.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_01.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_02.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_03.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_04.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_05.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_06.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_07.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_08.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_09.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_10.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_11.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_12.simple delete mode 100644 k-distribution/pl-tutorial/2_languages/1_simple/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/NOTES delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/new-in-field.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/new-in-field.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cast-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cast-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/constructor.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex01.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex01.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex02.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex02.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex03.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex03.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex04.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex04.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex05.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex05.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex06.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex06.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex07.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex07.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex08.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex08.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex09.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex09.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex10.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex10.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex11.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex11.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex12.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex12.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex13.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex13.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex14.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex14.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex15.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex15.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex16.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex16.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex17.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex17.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex18.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex18.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex19.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex19.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex20.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex20.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex21.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex21.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex22.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/ex22.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/factorial.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field-shadowing-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field-shadowing-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/hello-world.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/instanceOf.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/matrix.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/matrix.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/method-sharing.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/new.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/odd-even.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/point.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/return-object.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/sorting.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/sorting.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/this-explicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/this-implicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/threads.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/tree-sum.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cycle.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/matrix.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/matrix.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/matrix.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/sorting.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/sorting.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/sorting.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/constructor.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/factorial.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/function-types.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/hello-world.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/instanceOf.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/method-sharing.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/new.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/odd-even.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/point.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/return-object.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.in delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-explicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-implicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/threads.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/tree-sum.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/NOTES.md delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/collatz.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/constructor.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cycle.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/factorial.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/function-types.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/hello-world.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/instanceOf.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/matrix.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/method-sharing.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/new.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/odd-even.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/point.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/return-object.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/sorting.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/this-explicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/this-implicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/threads.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/tree-sum.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cast-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cast-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/collatz.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/constructor.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cycle.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/exceptions-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/exceptions-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/factorial.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field-shadowing-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field-shadowing-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/function-types.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/hello-world.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/instanceOf.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/matrix.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/method-sharing.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/new.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/odd-even.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/point.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/return-object.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/sorting.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-1.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-2.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-3.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/this-explicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/this-implicit.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/threads.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/tree-sum.kool.out delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/README delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/cast-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/cast-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/collatz.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/constructor.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/cycle.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/factorial.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/function-types.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/hello-world.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/instanceOf.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/matrix.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/method-sharing.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/new.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/odd-even.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/point.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/return-object.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/sorting.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/super-1.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/super-2.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/super-3.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/this-explicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/this-implicit.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/threads.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/tree-sum.kool delete mode 100644 k-distribution/pl-tutorial/2_languages/2_kool/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.in delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/ackermann.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-inefficient-without.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-looping.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-bst-sorting.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-days.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-distributivity.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-toString.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-tree-mirror.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/exceptions.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial-and-list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/pattern.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-6.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/stuck-letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tail-recursion.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/fun-untyped.md delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/ackermann.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-inefficient-without.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-looping.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-bst-sorting.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-days.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-distributivity.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-toString.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-tree-mirror.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/exceptions.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial-and-list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/pattern.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-6.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/stuck-letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tail-recursion.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun.out delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/NOTES delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/README delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/ackermann.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-inefficient-without.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-looping.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-bst-sorting.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-days.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-distributivity.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-toString.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-tree-mirror.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/exceptions.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial-and-list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-length.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-max.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/list-nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/nth.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/pattern.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-6.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/references-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/references-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/references-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/references-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/references-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/stuck-letrec.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/tail-recursion.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-1.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-2.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-3.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-4.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-5.fun delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/logik.md delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/README delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/untested/append-6.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/README delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/logik.k delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik delete mode 100644 k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik.out delete mode 100644 k-distribution/pl-tutorial/2_languages/Makefile delete mode 100644 k-distribution/pl-tutorial/2_languages/README.md delete mode 100644 k-distribution/pl-tutorial/NOTES.md delete mode 100644 k-distribution/pl-tutorial/README.md create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/Makefile create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/1_lambda/lesson_8/lambda.k (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_5 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/arithmetic-div-zero.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_5 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/arithmetic.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_5 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/arithmetic.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_1 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/closed-variable-capture.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_2 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/closed-variable-capture.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/factorial-let-fix.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/factorial-let-fix.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/factorial-let.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/factorial-let.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/factorial-letrec.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/factorial-letrec.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/fibbo.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/fibbo.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_1 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/free-variable-capture.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_2.5 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/free-variable-capture.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_1 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/identity.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_1 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/identity.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_6 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/if.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_6 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/if.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/lets.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7 => tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8}/tests/lets.lambda.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/Makefile create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/2_imp/lesson_4/imp.k (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_1 => tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4}/tests/collatz.imp (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_1 => tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4}/tests/primes.imp (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_1 => tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4}/tests/sum.imp (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables => tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4}/tests/sum.imp.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/lambda.k (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic}/factorial-let-fix.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic}/factorial-let.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic}/factorial-letrec.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic}/fibbo.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_6/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/arithmetic-div-zero.lambda (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_6/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/arithmetic.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/3_lambda++/lesson_4/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/callcc-env1.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/3_lambda++/lesson_4/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/callcc-env2.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/callcc-with-let.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_2.5/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/closed-variable-capture.lambda (100%) rename k-distribution/{pl-tutorial/1_k/3_lambda++/lesson_2/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/closed-variable-capture.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_2.5/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/free-variable-capture.lambda (100%) rename k-distribution/{pl-tutorial/1_k/3_lambda++/lesson_2/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/free-variable-capture.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_2.5/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/identity.lambda (100%) rename k-distribution/{pl-tutorial/1_k/3_lambda++/lesson_2/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/identity.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_7/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/if.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests => tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic}/lets.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/4_imp++/lesson_7/Makefile (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete (75%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/4_imp++/lesson_7/imp.k (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_2 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/collatz.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/collatz.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_1 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/div.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/div.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_1 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/io.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/io.imp.in (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/io.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_1 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/locals.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/locals.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_2 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/primes.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/primes.imp.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k.out (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/spawn.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/spawn.imp.in (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/spawn.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_1 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/sum-io.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/sum-io.imp.in (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/sum-io.imp.out (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_2 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/sum.imp (100%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_4 => tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7}/tests/sum.imp.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/Makefile (70%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/lambda.k (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/composition.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/identity.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/identity.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/if.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/letrec.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/nested-lets.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/nested-lets.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/plus.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/plus.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/polymorphic-identity-1-fails.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/polymorphic-identity-1-fails.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/polymorphic-identity-2-fails.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/polymorphic-identity-2-fails.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/static-scoping-1.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/static-scoping-1.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/static-scoping-2.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/static-scoping-2.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-1.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-1.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-2.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-3.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-4.lambda (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_5.5 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-4.lambda.out (100%) rename k-distribution/{pl-tutorial/1_k/5_types/lesson_4 => tests/regression-new/pl-tutorial/1_k/5_types/lesson_6}/tests/tricky-5.lambda (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/1_k/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/1_untyped/Makefile (82%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/1_untyped/simple-untyped.md (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/collatz.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/collatz.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/collatz.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/div-nondet.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/div-nondet.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/factorial.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/factorial.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/factorial.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/higher-order.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/higher-order.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/matrix.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/matrix.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/matrix.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/nonterminating/dekker.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/sortings.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/sortings.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/diverse/sortings.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_01.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_01.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_02.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_02.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_03.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_03.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_04.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_04.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_05.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_05.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_06.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_06.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_07.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_07.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_08.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_08.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_09.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_09.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_10.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_10.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_11.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_11.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_12.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_12.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_13.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_13.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_14.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_14.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_15.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/exceptions/exceptions_15.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_01.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_01.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_02.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_02.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_04.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_04.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_05.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_05.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_06.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_06.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_06.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_07.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_07.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_07.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_09.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_09.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_10.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_10.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_11.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_11.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_12.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue => tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped}/tests/threads/threads_12.simple.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile (50%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/1_static/simple-typed-static.md (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/collatz.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/dekker.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/div-nondet.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_01.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_02.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_03.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_04.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_05.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_06.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_07.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_08.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_09.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_10.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_11.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_12.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_13.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_14.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/exceptions_15.simple.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_16.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/factorial.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/higher-order.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/matrix.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/sortings.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_01.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_02.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_03.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_04.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_05.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_06.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_07.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_08.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_09.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_10.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_11.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static}/tests/threads_12.simple.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile (84%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/simple-typed-dynamic.md (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/collatz.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/collatz.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/div-nondet.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_01.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_02.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_03.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_04.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_05.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_06.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/exceptions_07.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_08.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_09.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_10.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_11.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_12.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_13.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_14.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/exceptions_15.simple.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_16.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/factorial.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/factorial.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/higher-order.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/matrix.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/matrix.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/sortings.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/sortings.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_01.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_02.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_03.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_04.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_05.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/threads_06.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_06.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/threads_07.simple.in (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/threads_07.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_08.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic}/tests/threads_09.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/threads_10.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/threads_11.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests}/threads_12.simple.out (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/collatz.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/dekker.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/div-nondet.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/factorial.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/higher-order.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/matrix.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/diverse/sortings.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_01.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_02.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_03.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_04.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_05.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_06.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_07.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_08.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_09.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_10.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_11.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_12.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_13.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_14.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/exceptions/exceptions_15.simple (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_16.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_01.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_02.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_03.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_04.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_05.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_06.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_07.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_08.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_09.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_10.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_11.simple (100%) rename k-distribution/{pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests => tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs}/threads/threads_12.simple (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/Makefile create mode 100644 k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/2_kool/1_untyped/kool-untyped.md (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/cast-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/cast-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/cast-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/cast-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/constructor.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/constructor.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/dynamic-dispatch-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/dynamic-dispatch-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/dynamic-dispatch-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/dynamic-dispatch-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/dynamic-dispatch-3.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/dynamic-dispatch-3.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/exceptions-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/exceptions-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/exceptions-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/exceptions-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/factorial.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/factorial.kool.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/2_kool/1_untyped/tests/failing/cycle.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/field-shadowing-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/field-shadowing-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/field-shadowing-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/field-shadowing-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/field.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/field.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/hello-world.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/hello-world.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/instanceOf.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/instanceOf.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/matrix.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/matrix.kool.in (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/matrix.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/method-sharing.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/method-sharing.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/new-in-field.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/new-in-field.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/new.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/new.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/odd-even.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/odd-even.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/point.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/point.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/return-object.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/return-object.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/sorting.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/sorting.kool.in (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/sorting.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/super-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/super-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/super-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/super-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/super-3.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/super-3.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/this-explicit.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/this-explicit.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/this-implicit.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/this-implicit.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/threads.kool (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/tree-sum.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped}/tests/tree-sum.kool.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/kool-typed-dynamic.md (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/cast-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/cast-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/collatz.kool.in (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/collatz.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/constructor.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/dynamic-dispatch-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/dynamic-dispatch-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/dynamic-dispatch-3.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/exceptions-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/exceptions-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/factorial.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/field-shadowing-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/field-shadowing-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/field.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/function-types.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/hello-world.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/instanceOf.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/matrix.kool.in (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/matrix.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/method-sharing.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/new.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/odd-even.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/point.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/return-object.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/sorting.kool.in (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/sorting.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/super-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/super-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/super-3.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/this-explicit.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/this-implicit.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/threads.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/1_untyped => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic}/tests/tree-sum.kool.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile (72%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/2_kool/2_typed/2_static/kool-typed-static.md (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/cast-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/cast-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/collatz.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/constructor.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/cycle.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/dynamic-dispatch-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/dynamic-dispatch-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/dynamic-dispatch-3.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/exceptions-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/exceptions-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/factorial.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/field-shadowing-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/field-shadowing-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/field.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/function-types.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/hello-world.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/instanceOf.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/matrix.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/method-sharing.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/new.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/odd-even.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/point.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/return-object.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/sorting.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/super-1.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/super-2.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/super-3.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/this-explicit.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/this-implicit.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/threads.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static}/tests/tree-sum.kool.out (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/cast-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/cast-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/collatz.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/constructor.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/cycle.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/dynamic-dispatch-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/dynamic-dispatch-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/dynamic-dispatch-3.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/exceptions-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/exceptions-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/factorial.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/field-shadowing-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/field-shadowing-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/field.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/function-types.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/hello-world.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/instanceOf.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/matrix.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/method-sharing.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/new.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/odd-even.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/point.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/return-object.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/sorting.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/super-1.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/super-2.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/super-3.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/this-explicit.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/this-implicit.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/threads.kool (100%) rename k-distribution/{pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests => tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs}/tree-sum.kool (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/Makefile rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile (67%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/fun-untyped.md (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/ackermann.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-3.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-4.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-5.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-efficient-with-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-efficient-with-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-inefficient-without.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-looping.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-return-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/callcc-return-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/constructor-bst-sorting.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/constructor-days.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/constructor-expr-distributivity.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/constructor-expr-toString.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/constructor-list-length.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/constructor-tree-mirror.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/empty-argument-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/empty-argument-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/exceptions.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/factorial-and-list-max.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/factorial.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-3.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-4.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-length.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-max.fun.out (100%) rename k-distribution/{ => tests/regression-new}/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/list-nth.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/nth.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/pattern.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/polymorphism-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/polymorphism-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/polymorphism-3.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/polymorphism-4.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/polymorphism-5.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/polymorphism-6.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/references-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/references-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/references-3.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/references-4.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/references-5.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/stuck-letrec.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/tail-recursion.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/tuple-1.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/tuple-2.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/tuple-3.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/tuple-4.fun.out (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io => tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment}/tests/tuple-5.fun.out (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/Makefile rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/ackermann.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-3.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-4.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-5.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-efficient-with-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-efficient-with-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-inefficient-without.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-looping.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-return-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/callcc-return-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/constructor-bst-sorting.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/constructor-days.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/constructor-expr-distributivity.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/constructor-expr-toString.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/constructor-list-length.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/constructor-tree-mirror.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/empty-argument-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/empty-argument-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/exceptions.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/factorial-and-list-max.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/factorial.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-3.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-4.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-length.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-max.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/list-nth.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/nth.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/pattern.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/polymorphism-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/polymorphism-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/polymorphism-3.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/polymorphism-4.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/polymorphism-5.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/polymorphism-6.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/references-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/references-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/references-3.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/references-4.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/references-5.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/stuck-letrec.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/tail-recursion.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/tuple-1.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/tuple-2.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/tuple-3.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/tuple-4.fun (100%) rename k-distribution/{pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests => tests/regression-new/pl-tutorial/2_languages/3_fun/programs}/tuple-5.fun (100%) create mode 100644 k-distribution/tests/regression-new/pl-tutorial/2_languages/Makefile create mode 100644 k-distribution/tests/regression-new/pl-tutorial/Makefile rename k-distribution/{pl-tutorial => tests/smoke}/Makefile (54%) rename k-distribution/{pl-tutorial => tests/smoke}/find-k.mak (79%) rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_1 => tests/smoke}/imp.k (69%) create mode 100644 k-distribution/tests/smoke/kast-test/Makefile create mode 100644 k-distribution/tests/smoke/kast-test/kast-in.k create mode 100644 k-distribution/tests/smoke/kast-test/kast-in1.kast create mode 100644 k-distribution/tests/smoke/kast-test/kast-in1.kast.out rename k-distribution/{pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple.out => tests/smoke/kparse-test/1.test.kparse} (100%) create mode 100644 k-distribution/tests/smoke/kparse-test/1.test.kparse.out create mode 100644 k-distribution/tests/smoke/kparse-test/Makefile create mode 100644 k-distribution/tests/smoke/kparse-test/test.k create mode 100644 k-distribution/tests/smoke/kprove-test/Makefile create mode 100644 k-distribution/tests/smoke/kprove-test/max-spec.k rename k-distribution/{pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs => tests/smoke/kprove-test}/max-spec.k.out (100%) create mode 100644 k-distribution/tests/smoke/krun-test/Makefile rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_3/tests => tests/smoke/krun-test}/sum.imp (100%) rename k-distribution/{pl-tutorial/1_k/2_imp/lesson_4/tests => tests/smoke/krun-test}/sum.imp.out (100%) diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml index 17b6058967e..5491765209a 100644 --- a/.github/workflows/test-pr.yml +++ b/.github/workflows/test-pr.yml @@ -73,6 +73,13 @@ jobs: token: ${{ secrets.JENKINS_GITHUB_PAT }} submodules: recursive path: k-exercises + - name: 'Check out pl-tutorial' + uses: actions/checkout@v3 + with: + repository: runtimeverification/pl-tutorial + token: ${{ secrets.JENKINS_GITHUB_PAT }} + submodules: recursive + path: k-distribution/pl-tutorial - name: 'Tutorial Integration Tests' run: | docker exec -t k-ci-${GITHUB_SHA} /bin/bash -c 'k-distribution/target/release/k/bin/spawn-kserver kserver.log' diff --git a/k-distribution/INSTALL.md b/k-distribution/INSTALL.md index ac28739003e..22f57c79b7e 100644 --- a/k-distribution/INSTALL.md +++ b/k-distribution/INSTALL.md @@ -175,27 +175,16 @@ Testing Packages The easiest way to test the K package is to copy a K tutorial language and check if you can compile and run an included example. -1. Start by copying the K tutorial to some work directory - (e.g. `$HOME/pl-tutorial`) from the K distribution root. Using a Linux - package, this command typically will be like: +1. Start by cloning the K tutorial from the [K PL Tutorial](https://www.github.com/runtimeverification/pl-tutorial). This command typically will be like: ```sh - $ cp -R /usr/share/kframework/pl-tutorial $HOME/pl-tutorial + $ git clone https://www.github.com/runtimeverification/pl-tutorial ``` - On macOS/brew, this command typically will be like: - - ```sh - $ cp -R /usr/local/share/kframework/pl-tutorial $HOME/pl-tutorial - ``` - - This step is needed because sometimes only the `root` user can run the - examples in the default installation directory. - 2. Now you can try to run some programs: ```sh - $ cd $HOME/pl-tutorial/2_languages/1_simple/1_untyped + $ cd pl-tutorial/2_languages/1_simple/1_untyped $ make kompile $ krun tests/diverse/factorial.simple ``` diff --git a/k-distribution/Makefile b/k-distribution/Makefile index f1cd65a75d3..ee2349cfc55 100644 --- a/k-distribution/Makefile +++ b/k-distribution/Makefile @@ -1,3 +1,3 @@ -SUBDIRS=pl-tutorial tests/regression-new tests/builtins/collections +SUBDIRS=tests/regression-new tests/builtins/collections include include/kframework/ktest-group.mak diff --git a/k-distribution/k-tutorial/README.md b/k-distribution/k-tutorial/README.md index 6117d90754f..6a02b407f4d 100644 --- a/k-distribution/k-tutorial/README.md +++ b/k-distribution/k-tutorial/README.md @@ -9,7 +9,7 @@ K. While the primary use of K is in the specification of operational semantics of programming languages, this tutorial is agnostic on how the knowledge of K is used. For a more detailed tutorial explaining the basic principles of programming language design, refer to the -[K PL Tutorial](../pl-tutorial/README.md). Note that that tutorial is somewhat +[K PL Tutorial](https://www.github.com/runtimeverification/pl-tutorial). Note that that tutorial is somewhat out of date presently. This K tutorial is a work in progress. Many lessons are currently simply diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/Makefile deleted file mode 100644 index eb3f73db96c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=lesson_1 lesson_2 lesson_2.5 lesson_3 lesson_4 lesson_5 lesson_6 lesson_7 lesson_8 lesson_9 - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/README.md deleted file mode 100644 index f12df455efe..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/README.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -## Part 1: Defining LAMBDA - -Here you will learn how to define a very simple language in K and the basics -of how to use the K tool. The language is a variant of call-by-value lambda -calculus and its definition is based on substitution. Specifically, you will -learn the following: - -* How to define a module. -* How to define a language syntax. -* How to use the defined syntax to parse programs. -* How to import predefined modules. -* How to define evaluation strategies using strictness attributes. -* How to define semantic rules. -* How the predefined generic substitution works. -* How to generate PDF and HTML documentation from ASCII definitions. -* How to include builtins (integers and Booleans) into your language. -* How to define derived language constructs. - -This folder contains several lessons, each adding new features to LAMBDA. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/Makefile deleted file mode 100644 index 4211afaf951..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=lambda -EXT=lambda -KOMPILE_FLAGS=--gen-bison-parser - -%/arithmetic-div-zero.lambda: - true - -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/NOTES.md deleted file mode 100644 index da2bb714e31..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/NOTES.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -We now support the following line to the syntax module: - - syntax priority lambda_._ > __ // exact syntax subject to change - -This will allow for fewer parentheses in programs. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/README.md deleted file mode 100644 index b8af2007583..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/README.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Syntax Modules and Basic K Commands - -Here we define our first K module, which contains the initial syntax of the -LAMBDA language, and learn how to use the basic K commands. - -Let us create an empty working folder, and open a terminal window -(to the left) and an editor window (to the right). We will edit our K -definition in the right window in a file called `lambda.k`, and will call -the K tool commands in the left window. - -Let us start by defining a K module, containing the syntax of LAMBDA. - -K modules are introduced with the keywords `module` ... `endmodule`. - -The keyword `syntax` adds new productions to the syntax grammar, using a -BNF-like notation. - -Terminals are enclosed in double-quotes, like strings. - -You can define multiple productions for the same non-terminal in the same -syntax declaration using the `|` separator. - -Productions can have attributes, which are enclosed in square brackets. - -The attribute `left` tells the parser that we want the lambda application to be -left associative. For example, `a b c d` will then parse as `(((a b) c) d)`. - -The attribute `bracket` tells the parser to not generate a node for the -parenthesis production in the abstract syntax trees associated to programs. -In other words, we want to allow parentheses to be used for grouping, but we -do not want to bother to give them their obvious (ignore) semantics. - -In our variant of lambda calculus defined here, identifiers and lambda -abstractions are meant to be irreducible, that is, are meant to be values. -However, so far `Val` is just another non-terminal, just like `Exp`, -without any semantic meaning. It will get a semantic meaning later. - -After we are done typing our definition in the file `lambda.k`, we can kompile -it with the command: - - kompile lambda.k - -If we get no errors then a parser has been generated. This parser will be -called from now on by default by the krun tool. To see whether and how the -parser works, we are going to write some LAMBDA programs and store them in -files with the extension `.lambda`. - -Let us create a file `identity.lambda`, which contains the identity lambda -abstraction: - - lambda x . x - -Now let us call `krun` on `identity.lambda`: - - krun identity.lambda - -Make sure you call the `krun` command from the folder containing your language -definition (otherwise type `krun --help` to learn how to pass a language -definition as a parameter to `krun`). The krun command produces the output: - - - lambda x . x - - -If you see such an output it means that your program has been parsed (and then -pretty printed) correctly. If you want to see the internal abstract syntax -tree (AST) representation of the parsed program, which we call the K AST, then -type `kast` in the command instead of `krun`: - - kast identity.lambda - -You should normally never need to see this internal representation in your -K definitions, so do not get scared (yes, it is ugly for humans, but it is -very convenient for tools). - -Note that `krun` placed the program in a ` ... ` cell. In K, computations -happen only in cells. If you do not define a configuration in your definition, -like we did here, then a configuration will be created automatically for you -which contains only one cell, the default `k` cell, which holds the program. - -Next, let us create a file `free-variable-capture.lambda`, which contains an -expression which, in order to execute correctly in a substitution-based -semantics of LAMBDA, the substitution operation needs to avoid -variable-capture: - - a (((lambda x.lambda y.x) y) z) - -Next, file `closed-variable-capture.lambda` shows an expression which also -requires a capture-free substitution, but this expression is closed (that is, -it has no free variables) and all its bound variables are distinct (I believe -this is the smallest such expression): - - (lambda z.(z z)) (lambda x.lambda y.(x y)) - -Finally, the file `omega.lambda` contains the classic omega combinator -(or closed expression), which is the smallest expression which loops forever -(not now, but after we define the semantics of LAMBDA): - - (lambda x.(x x)) (lambda x.(x x)) - -Feel free to define and parse several other LAMBDA programs to get a feel for -how the parser works. Parse also some incorrect programs, to see how the -parser generates error messages. - -In the next lesson we will see how to define semantic rules that iteratively -rewrite expressions over the defined syntax until they evaluate to a result. -This way, we obtain our first programming language defined using K. - -Go to [Lesson 2, LAMBDA: Module Importing, Rules, Variables](../lesson_2/README.md) - -[MOVIE (out of date) [4'07"]](https://youtu.be/y5Tf1EZVj8E) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/lambda.k deleted file mode 100644 index 8d44b3ef819..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/lambda.k +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - - syntax Val ::= Id - | "lambda" Id "." Exp - syntax Exp ::= Val - | Exp Exp [left] - | "(" Exp ")" [bracket] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/media.properties deleted file mode 100644 index 4ad0cd251e3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=y5Tf1EZVj8E -video_length_secs=247 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 989ddb0da63..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - ( lambda z . ( z z ) ) lambda x . lambda y . ( x y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/free-variable-capture.lambda.out deleted file mode 100644 index 453eeb2a539..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a ( ( lambda x . lambda y . x ) y z ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda deleted file mode 100644 index 7ebb7a6215b..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda x.(x x)) (lambda x.(x x)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda.out deleted file mode 100644 index 9c9ebb87a1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/omega.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - ( lambda x . ( x x ) ) lambda x . ( x x ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/NOTES.md deleted file mode 100644 index 0ee9f3f4e65..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/NOTES.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -This folder has been added after the original tutorial was made -and after the videos were recorded. Eventually we will renumber -the lessons and redo the videos. A README.md file is also needed -here. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/lambda.k deleted file mode 100644 index 26242e66853..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/lambda.k +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder] - syntax Exp ::= Val - | Exp Exp [left] - | "(" Exp ")" [bracket] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] [anywhere] -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 45c65694517..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . lambda y0 . ( y y0 ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/NOTES.md deleted file mode 100644 index c491220e658..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/NOTES.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Substitution has been reimplemented in the meanwhile, where the fresh -variables are resolved locally. So there is no global counter for -fresh variables anymore as shown in the video, and fewer variable -renamings take place. - -When calling krun on the programs in lesson_1, a different path is -shown than in the README.md. - -Marking the beta-reduction rule with `[anywhere]` will give us the -conventional lambda-calculus. A new lesson has been added, 2.5, -showing that. The README.md file should be changed at the end to -point to lesson 2.5. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/README.md deleted file mode 100644 index 58fa8c01c0f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/README.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Module Importing, Rules, Variables - -We here learn how to include a predefined module (SUBSTITUTION), how to -use it to define a K rule (the characteristic rule of lambda calculus), -and how to make proper use of variables in rules. - -Let us continue our `lambda.k` definition started in the previous lesson. - -The `requires` keyword takes a `.k` file containing language features that -are needed for the current definition, which can be found in the -[k-distribution/include/kframework/builtin](../../../../include/kframework/builtin/README.md) folder. Thus, the command - - require "substitution.k" - -says that the subsequent definition of LAMBDA needs the generic substitution, -which is predefined in file `substitution.k` under the folder -[k-distribution/include/kframework/builtin](../../../../include/kframework/builtin/README.md). Note that substitution can be defined itself in K, -although it uses advanced features that we have not discussed yet in this -tutorial, so it may not be easy to understand now. - -Using the `imports` keyword, we can now modify LAMBDA to import the module -SUBSTITUTION, which is defined in the required `substitution.k` file. - -Now we have all the substitution machinery available for our definition. -However, since our substitution is generic, it cannot know which language -constructs bind variables, and what counts as a variable; however, this -information is critical in order to correctly solve the variable capture -problem. Thus, you have to tell the substitution that your lambda construct -is meant to be a binder, and that your `Id` terms should be treated as variables -for substitution. The former is done using the attribute `binder`. -By default, `binder` binds all the variables occurring anywhere in the first -argument of the corresponding syntactic construct within its other arguments; -you can configure which arguments are bound where, but that will be discussed -in subsequent lectures. To tell K which terms are meant to act as variables -for binding and substitution, we have to explicitly subsort the desired syntactic -categories to the builtin `KVariable` sort. - -Now we are ready to define our first K rule. Rules are introduced with the -keyword `rule` and make use of the rewrite symbol, `=>`. In our case, -the rule defines the so-called lambda calculus *beta-reduction*, which -makes use of substitution in its right-hand side, as shown in `lambda.k`. - -By convention, variables that appear in rules start with a capital letter -(the current implementation of the K tool may even enforce that). - -Variables may be explicitly tagged with their syntactic category (also called -*sort*). If tagged, the matching term will be checked at run-time for -membership to the claimed sort. If not tagged, then no check will be made. -The former is safer, but involves the generation of a side condition to the -rule, so the resulting definition may execute slightly slower overall. - -In our rule in `lambda.k` we tagged all variables with their sorts, so we chose -the safest path. Only the `V` variable really needs to be tagged there, -because we can prove (using other means, not the K tool, as the K tool is not -yet concerned with proving) that the first two variables will always have the -claimed sorts whenever we execute any expression that parses within our -original grammar. - -Let us compile the definition and then run some programs. For example, - - krun closed-variable-capture.lambda - -yields the output - - - lambda y . ((lambda x . (lambda y . (x y))) y) - - -Notice that only certain programs reduce (some even yield non-termination, -such as `omega.lambda`), while others do not. For example, -`free-variable-capture.lambda` does not reduce its second argument expression -to `y`, as we would expect. This is because the K rewrite rules between syntactic -terms do not apply anywhere they match. They only apply where they have been -given permission to apply by means of appropriate evaluation strategies of language -constructs, which is done using strictness attributes, evaluation contexts, -heating/cooling rules, etc., as discussed in the next lessons. - -The next lesson will show how to add LAMBDA the desired evaluation strategies -using strictness attributes. - -Go to [Lesson 3, LAMBDA: Evaluation Strategies using Strictness](../lesson_3/README.md) - -[MOVIE (out of date) [4'03"]](https://youtu.be/NDXgYfHG6R4) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/lambda.k deleted file mode 100644 index d2227b901f7..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/lambda.k +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder] - syntax Exp ::= Val - | Exp Exp [left] - | "(" Exp ")" [bracket] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/media.properties deleted file mode 100644 index e8851b5f0da..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=NDXgYfHG6R4 -video_length_secs=243 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda.out deleted file mode 100644 index 25ced2a24ef..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a ( ( lambda x . lambda y . x ) y0 z ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/NOTES.md deleted file mode 100644 index 1c48128e932..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -When we say "previous lesson" we refer to lesson 2. This will need to change -when we incorporate lesson 2.5 properly. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/README.md deleted file mode 100644 index c2f5284ccf1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/README.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Evaluation Strategies using Strictness - -Here we learn how to use the K `strict` attribute to define desired evaluation -strategies. We will also learn how to tell K which terms are already -evaluated, so it does not attempt to evaluate them anymore and treats them -internally as results of computations. - -Recall from the previous lecture that the LAMBDA program -`free-variable-capture.lambda` was stuck, because K was not given permission -to evaluate the arguments of the lambda application construct. - -You can use the attribute `strict` to tell K that the corresponding construct -has a strict evaluation strategy, that is, that its arguments need to be -evaluated before the semantics of the construct applies. The order of -argument evaluation is purposely unspecified when using `strict`, and indeed -the K tool allows us to detect all possible non-deterministic behaviors that -result from such intended underspecification of evaluation strategies. We will -learn how to do that when we define the IMP language later in this tutorial; -we will also learn how to enforce a particular order of evaluation. - -In order for the above strictness declaration to work effectively and -efficiently, we need to tell the K tool which expressions are meant to be -results of computations, so that it will not attempt to evaluate them anymore. -One way to do it is to make `Val` a syntactic subcategory of the builtin -`KResult` syntactic category. Since we use the same K parser to also parse -the semantics, we use the same `syntax` keyword to define additional syntax -needed exclusively for the semantics (like `KResult`s). See `lambda.k`. - -Compile again and then run some programs. They should all work as expected. -In particular, `free-variable-capture.lambda` now evaluates to `a y`. - -We now got a complete and working semantic definition of call-by-value -lambda-calculus. While theoretically correct, our definition is not -easy to use and disseminate. In the next lessons we will learn how to -generate formatted documentation for LAMBDA and how to extend LAMBDA -in order to write human readable and interesting programs. - -Go to [Lesson 4, LAMBDA: Generating Documentation; Latex Attributes](../lesson_4/README.md). - -[MOVIE (out of date) [2'20"]](https://youtu.be/aul1x6bd1YM) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/lambda.k deleted file mode 100644 index 8e4eab88901..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/lambda.k +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder] - syntax Exp ::= Val - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - - syntax KResult ::= Val - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/media.properties deleted file mode 100644 index dc2d835c42c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=aul1x6bd1YM -video_length_secs=140 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_3/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/NOTES.md deleted file mode 100644 index 4b5f8861d4d..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/NOTES.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -README.md refers to Lesson 9. This will need to be updated. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/README.md deleted file mode 100644 index 331274b4b58..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/README.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Generating Documentation; Latex Attributes - -In this lesson we learn how to generate formatted documentation from K -language definitions. We also learn how to use Latex attributes to control -the formatting of language constructs, particularly of ones which have a -mathematical flavor and we want to display accordingly. - -To enhance readability, we may want to replace the keyword `lambda` by the -mathematical lambda symbol in the generated documentation. We can control -the way we display language constructs in the generated documentation -by associating them Latex attributes. - -This is actually quite easy. All we have to do is to associate a `latex` -attribute to the production defining the construct in question, following -the Latex syntax for defining new commands (or macros). - -In our case, we associate the attribute `latex(\lambda{#1}.{#2})` to the -production declaring the lambda abstraction (recall that in Latex, `#n` refers -to the n-th argument of the defined new command). - -We will later see, in Lesson 9, that we can add arbitrarily complex Latex -comments and headers to our language definitions, which give us maximum -flexibility in formatting our language definitions. - -Now we have a simple programming language, with a nice documentation. However, -it is not easy to write interesting programs in this language. Almost all -programming languages build upon existing data-types and libraries. The K -tool provides a few of these (and you can add more). - -In the next lesson we show how we can add builtin integers and Booleans to -LAMBDA, so we can start to evaluate meaningful expressions. - -Go to [Lesson 5, LAMBDA: Adding Builtins; Side Conditions](../lesson_5/README.md). - -[MOVIE (out of date) [3'13"]](https://youtu.be/ULXA4e_6-DY) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/lambda.k deleted file mode 100644 index d92aa5283ae..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/lambda.k +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder, latex(\lambda{#1}.{#2})] - syntax Exp ::= Val - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - - syntax KResult ::= Val - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/media.properties deleted file mode 100644 index 95246957e16..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=ULXA4e_6-DY -video_length_secs=193 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_4/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/NOTES.md deleted file mode 100644 index 2cb108e7098..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/NOTES.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -The builtins have changed, they are now generic for all backends. - -Talk about sort inference for variables, for example from `I1 +Int I2` -we infer the sort of `I1` and `I2` is `Int`. - -Check the entire tutorial for instances where we give the sort of a -variable but we don't have to. Many of those are artifacts since we were -not able to infer sorts that well. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/README.md deleted file mode 100644 index 9232864595b..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/README.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Adding Builtins; Side Conditions - -We have already added the builtin identifiers (sort `Id`) to LAMBDA expressions, -but those had no operations on them. In this lesson we add integers and -Booleans to LAMBDA, and extend the builtin operations on them into -corresponding operations on LAMBDA expressions. We will also learn how to add -side conditions to rules, to limit the number of instances where they can -apply. - -The K tool provides several builtins, which are automatically included in all -definitions. These can be used in the languages that we define, typically by -including them in the desired syntactic categories. You can also define your -own builtins in case the provided ones are not suitable for your language -(e.g., the provided builtin integers and operations on them are arbitrary -precision). - -For example, to add integers and Booleans as values to our LAMBDA, we have to -add the productions - - syntax Val ::= Int | Bool - -`Int` and `Bool` are the nonterminals that correspond to these builtins. - -To make use of these builtins, we have to add some arithmetic operation -constructs to our language. We prefer to use the conventional infix notation -for these, and the usual precedences (i.e., multiplication and division bind -tighter than addition, which binds tighter than relational operators). -Inspired from [SDF](http://www.syntax-definition.org/), we use `>` instead of -`|` to state that all the previous constructs bind tighter than all the -subsequent ones. See `lambda.k`. - -The only thing left is to link the LAMBDA arithmetic operations to the -corresponding builtin operations, when their arguments are evaluated. -This can be easily done using trivial rewrite rules, as shown in `lambda.k`. -In general, the K tool attempts to uniformly add the corresponding builtin -name as a suffix to all the operations over builtins. For example, the -addition over integers is an infix operation named `+Int`. - -Compile the new `lambda.k` definition and evaluate some simple arithmetic -expressions. For example, if `arithmetic.lambda` is `(1+2*3)/4 <= 1`, then - - krun arithmetic.lambda - -yields, as expected, `true`. Note that the parser took the desired operation -precedence into account. - -Let us now try to evaluate an expression which performs a wrong computation, -namely a division by zero. Consider the expression `arithmetic-div-zero.lambda` -which is `1/(2/3)`. Since division is strict and `2/3` evaluates to `0`, this -expression reduces to `1/0`, which further reduces to `1 /Int 0` by the rule for -division, which is now stuck (with the current back-end to the K tool). - -In fact, depending upon the back-end that we use to execute K definitions and -in particular to evaluate expressions over builtins, `1 /Int 0` can evaluate to -anything. It just happens that the current back-end keeps it as an -irreducible term. Other K back-ends may reduce it to an explicit error -element, or issue a segmentation fault followed by a core dump, or throw an -exception, etc. - -To avoid requesting the back-end to perform an illegal operation, we may use a -side condition in the rule of division, to make sure it only applies when the -denominator is non-zero. - -Like in other operational formalisms, the role of the K side -conditions is to filter the number of instances of the rule. The notion -of a *side condition* comes from logics, where a sharp distinction is made -between a side condition (cheap) and a *premise* (expensive). Premises are -usually resolved using further (expensive) logical derivations, while side -conditions are simple (cheap) conditions over the rule meta-variables within -the underlying mathematical domains (which in K can be extended by the user, -as we will see in future lessons). Regarded as a logic, K derives rewrite -rules from other rewrite rules; therefore, the K side conditions cannot -contain other rewrites in them (using `=>`). This contrasts other rewrite -engines, for example [Maude](http://maude.cs.illinois.edu/), which -allow conditional rules with rewrites in conditions. -The rationale behind this deliberate restriction in K is twofold: -- On the one hand, general conditional rules require a complex, and thus slower -rewrite engine, which starts recursive (sometimes exhaustive) rewrite sessions -to resolve the rewrites in conditions. In contrast, the side conditions in K -can be evaluated efficiently by back-ends, for example by evaluating builtin -expressions and/or by calling builtin functions. -- On the other hand, the semantic definitional philosophy of K is that rule -premises are unnecessary, so there is no need to provide support for them. - -Having builtin arithmetic is useful, but writing programs with just lambda -and arithmetic constructs is still a pain. In the next two lessons we will -add conditional (`if_then_else`) and binding (`let` and `letrec`) constructs, -which will allow us to write nicer programs. - -Go to [Lesson 6, LAMBDA: Selective Strictness; Anonymous Variables](../lesson_6/README.md). - -[MOVIE (out of date) [4'52"]](https://youtu.be/T1aI04q3l9U) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/lambda.k deleted file mode 100644 index 786ffb652f0..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/lambda.k +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder, latex(\lambda{#1}.{#2})] - syntax Exp ::= Val - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - syntax Val ::= Int | Bool - syntax Exp ::= "-" Int - > Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - imports DOMAINS - - syntax KResult ::= Val - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] - - rule - I => 0 -Int I - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 -// rule I1 / I2 => I1 /Int I2 requires I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/media.properties deleted file mode 100644 index 1bb1455e8ef..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=T1aI04q3l9U -video_length_secs=292 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/README.md deleted file mode 100644 index 57a11cd2250..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/README.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Selective Strictness; Anonymous Variables - -We here show how to define selective strictness of language constructs, -that is, how to state that certain language constructs are strict only -in some arguments. We also show how to use anonymous variables. - -We next define a conditional `if` construct, which takes three arguments, -evaluates only the first one, and then reduces to either the second or the -third, depending on whether the first one evaluated to true or to false. - -K allows to define selective strictness using the same `strict` attribute, -but passing it a list of numbers. The numbers correspond to the arguments -in which we want the defined construct to be strict. In our case, - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] - -states that the conditional construct is strict in the first argument. - -We can now assume that its first argument will eventually reduce to a value, so -we only write the following two semantic rules: - - rule if true then E else _ => E - rule if false then _ else E => E - -Thus, we assume that the first argument evaluates to either `true` or `false`. - -Note the use of the anonymous variable `_`. We use such variables purely for -structural reasons, to state that something is there but we don't care what. -An anonymous variable is therefore completely equivalent to a normal variable -which is unsorted and different from all the other variables in the rule. If -you use `_` multiple times in a rule, they will all be considered distinct. - -Compile `lambda.k` and write and execute some interesting expressions making -use of the conditional construct. For example, the expression - - if 2<=1 then 3/0 else 10 - -evaluates to `10` and will never evaluate `3/0`, thus avoiding an unwanted -division-by-zero. - -In the next lesson we will introduce two new language constructs, called -`let` and `letrec` and conventionally found in functional programming -languages, which will allow us to already write interesting LAMBDA programs. - -Go to [Lesson 7, LAMBDA: Derived Constructs; Extending Predefined Syntax](../lesson_7/README.md). - -[MOVIE (out of date) [2'14"]](https://youtu.be/IreP6DFPWdk) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/lambda.k deleted file mode 100644 index 01ddcbdabfe..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/lambda.k +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder, latex(\lambda{#1}.{#2})] - syntax Exp ::= Val - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - syntax Val ::= Int | Bool - syntax Exp ::= "-" Int - > Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - imports DOMAINS - - syntax KResult ::= Val - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] - - rule - I => 0 -Int I - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 - - rule if true then E else _ => E - rule if false then _ else E => E -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/media.properties deleted file mode 100644 index c07771e3d3e..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=IreP6DFPWdk -video_length_secs=134 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/NOTES.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/NOTES.md deleted file mode 100644 index 1ae55ac886f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/NOTES.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -In more recent definitions, we prefer to make some `[macro]` rules. -Macros apply statically, before the program is executed, thus -increasing the execution performance. The `let` and `letrec` constructs -here could be made into `[macro]`. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/README.md deleted file mode 100644 index f9051e244be..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/README.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Derived Constructs, Extending Predefined Syntax - -In this lesson we will learn how to define derived language constructs, that -is, ones whose semantics is defined completely in terms of other language -constructs. We will also learn how to add new constructs to predefined -syntactic categories. - -When defining a language, we often want certain language constructs to be -defined in terms of other constructs. For example, a let-binding construct -of the form - - let x = e in e' - -is nothing but syntactic sugar for - - (lambda x . e') e - -This can be easily achieved with a rule, as shown in `lambda.k`. - -Compile `lambda.k` and write some programs using `let` binders. - -For example, consider a `lets.lambda` program which takes `arithmetic.lambda` -and replaces each integer by a let-bound variable. It should evaluate to -`true`, just like the original `arithmetic.lambda`. - -Let us now consider a more interesting program, namely one that calculates the -factorial of 10: - - let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) - in (f 10) - -This program follows a common technique to define fixed points in untyped -lambda calculus, based on passing a function to itself. - -We may not like to define fixed-points following the approach above, because -it requires global changes in the body of the function meant to be recursive, -basically to pass it to itself (`f f` in our case above). The approach below -isolates the fixed-point aspect of the function in a so-called *fixed-point -combinator*, which we call `fix` below, and then apply it to the function -defining the body of the factorial, without any changes to it: - - let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) - in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) - -Although the above techniques are interesting and powerful (indeed, untyped -lambda calculus is in fact Turing complete), programmers will probably not -like to write programs this way. - -We can easily define a more complex derived construct, called `letrec` and -conventionally encountered in functional programming languages, whose semantics -captures the fixed-point idea above. In order to keep its definition simple -and intuitive, we define a simplified variant of `letrec`, namely one which only -allows to define one recursive one-argument function. See `lambda.k`. - -There are two interesting observations here. - -First, note that we have already in-lined the definition of the `fix` -combinator in the definition of the factorial, to save one application of the -beta reduction rule (and the involved substitution steps). We could have -in-lined the definition of the remaining `let`, too, but we believe that the -current definition is easier to read. - -Second, note that we extended the predefined `Id` syntactic category with two -new constants, `$x` and `$y`. The predefined identifiers cannot start with -`$`, so programs that will be executed with this semantics cannot possibly -contain the identifiers $x and $y. In other words, by adding them to Id they -become indirectly reserved for the semantics. This is indeed desirable, -because any possible uses of $x in the body of the function defined -using `letrec` would be captured by the `lambda $x` declaration in the -definition of `letrec`. - -Using `letrec`, we can now write the factorial program as elegantly as it can -be written in a functional language: - - letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) - in (f 10) - -In the next lesson we will discuss an alternative definition of `letrec`, based -on another binder, `mu`, specifically designed to define fixed points. - -Go to [Lesson 8, LAMBDA: Multiple Binding Constructs](../lesson_8/README.md). - -[MOVIE (out of date) [5'10"]](https://youtu.be/qZWiBaN7zrw) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/lambda.k b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/lambda.k deleted file mode 100644 index 09ae0f90de5..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/lambda.k +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder, latex(\lambda{#1}.{#2})] - syntax Exp ::= Val - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - syntax Val ::= Int | Bool - syntax Exp ::= "-" Int - > Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] - - syntax Exp ::= "let" KVar "=" Exp "in" Exp [macro] - rule let X = E in E':Exp => (lambda X . E') E - - syntax Exp ::= "letrec" KVar KVar "=" Exp "in" Exp [macro] - syntax KVar ::= "$x" [token] | "$y" [token] - rule letrec F:KVar X:KVar = E in E' - => let F = - (lambda $x . ((lambda F . lambda X . E) (lambda $y . ($x $x $y)))) - (lambda $x . ((lambda F . lambda X . E) (lambda $y . ($x $x $y)))) - in E' -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - imports DOMAINS - - syntax KResult ::= Val - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] - - rule - I => 0 -Int I - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 - - rule if true then E else _ => E - rule if false then _ else E => E -endmodule diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/media.properties deleted file mode 100644 index 9d8e295aa5f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=qZWiBaN7zrw -video_length_secs=310 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/Makefile deleted file mode 100644 index 6191094f250..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/README.md deleted file mode 100644 index 05290de09cd..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/README.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Multiple Binding Constructs - -Here we learn how multiple language constructs that bind variables can -coexist. We will also learn about or recall another famous binder besides -`lambda`, namely `mu`, which can be used to elegantly define all kinds of -interesting fixed-point constructs. - -The `mu` binder has the same syntax as lambda, except that it replaces -`lambda` with `mu`. - -Since `mu` is a binder, in order for substitution to know how to deal with -variable capture in the presence of `mu`, we have to tell it that `mu` is a -binding construct, same like lambda. We take advantage of being there and -also add `mu` its desired latex attribute. - -The intuition for - - mu x . e - -is that it reduces to `e`, but each free occurrence of `x` in `e` behaves -like a pointer that points back to `mu x . e`. - -With that in mind, let us postpone the definition of `mu` and instead redefine -`letrec F X = E in E'` as a derived construct, assuming `mu` available. The -idea is to simply regard `F` as a fixed-point of the function - - lambda X . E - -that is, to first calculate - - mu F . lambda X . E - -and then to evaluate `E'` where `F` is bound to this fixed-point: - - let F = mu F . lambda X . E in E' - -This new definition of `letrec` may still look a bit tricky, particularly -because `F` is bound twice, but it is much simpler and cleaner than our -previous definition. Moreover, now it is done in a type-safe manner -(this aspect goes beyond our objective in this tutorial). - -Let us now define the semantic rule of `mu`. - -The semantics of `mu` is actually disarmingly simple. We just have to -substitute `mu X . E` for each free occurrence of `X` in `E`: - - mu X . E => E[(mu X . E) / X] - -Compile `lambda.k` and execute some recursive programs. They should be now -several times faster. Write a few more recursive programs, for example ones -for calculating the Ackermann function, for calculating the number of moves -needed to solve the Hanoi tower problem, etc. - -We have defined our first programming language in K, which allows us to -write interesting functional programs. In the next lesson we will learn how -to fully document our language definition, in order to disseminate it, to ship -it to colleagues or friends, to publish it, to teach it, and so on. - -Go to [Lesson 9, LAMBDA: A Complete and Commented Definition](../lesson_9/README.md). - -[MOVIE (out of date) [2'40"]](https://youtu.be/Ox4uXDpcY64) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/README.md deleted file mode 100644 index 74521b6028e..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Define LAMBDA using the S/K combinators instead of substitution. -You new definition will not require the `substitution.k` module anymore, -and will not use environments (discussed in future lectures), either. - -Recall that the `S` and `K` combinators are defined as follows: - - K E1 E2 = E1 - S E1 E2 E3 = E1 E3 (E2 E3) - -where the application is that of LAMBDA (left associative binary operation), -and that the lambda construct can be desugared to combinators using the -following simple rules: - - lambda X . X = S K K - lambda X . Y = K Y when Y is a name different from X - lambda X . (E1 E2) = S (lambda X . E1) (lambda X . E2) - lambda X . B = K B when B is any constant, including S or K - -To distinguish the `S` and `K` combinators from K variables and make them -more visible, we prefer to write them as `SS` and `KK` instead of `S` and `K`. - -If defined correctly and completely, all the tests should pass when you call -`ktest` on the provided `config.xml` file. The tests include all the programs -previously executed using LAMBDA (lesson_8), plus the additional program of -the mu-derived exercise, plus a few more simple programs given with this -exercise to help you better test your definition and nail down the notation. - -The syntax of the new LAMBDA should be the same as before, although -`mu` needs to be desugared as in the mu-desugared exercise (using a macro). -The tricky part is how to deal with the builtin operations. For example, -`lambda x . if x then y else z` cannot be transformed into combinators as is, -but it can if we assume a builtin conditional function constant, say `cond`, -and desugar `if_then_else_` to it. Then this expression becomes -`lambda x . (((cond x) y) z)`, which we know how to transform. The drawback -of this `cond` constant approach is that it may induce non-termination -in recursive programs, but that appears to not be a problem in our examples. - -You will have to do the same for all builtin functions, and you will have -to make sure that you define your values correctly! In our previous -definition we were able to say that `lambda x . e` was a value, but now that -is not possible anymore, because the lambda construct will be eliminated. -Instead, you will have to explicitly say it using the `isVal` membership -predicate that all the expressions that involve builtin functions and -yield functions are values; for example, `isVal(cond V:Val) => true` and -`isVal(cond V1:Val V2:Val) => true` need to be added, but obviously not -`isVal(cond V1:Val V2:Val V3:Val) => true`. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda deleted file mode 100644 index beeb1e59036..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda +++ /dev/null @@ -1 +0,0 @@ -x + y diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda.out deleted file mode 100644 index 345683aacb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/add.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - add x y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda.out deleted file mode 100644 index e3eb34c9f72..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic-div-zero.lambda.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( div 1 0 ) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 3054c5b0b75..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - SS ( KK ( SS ( SS ( KK SS ) ( SS ( KK KK ) ( SS KK KK ) ) ) ( SS ( SS ( KK SS ) ( KK KK ) ) ( KK KK ) ) ) ) ( SS KK KK ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda deleted file mode 100644 index c51467ebc8e..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda +++ /dev/null @@ -1 +0,0 @@ -if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda.out deleted file mode 100644 index cced467ebed..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/cond.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - cond x y z ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda deleted file mode 100644 index 02514641d8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda +++ /dev/null @@ -1 +0,0 @@ -x / y diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda.out deleted file mode 100644 index cad594172e9..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/div.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - div x y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda deleted file mode 100644 index b459d40f907..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda +++ /dev/null @@ -1,6 +0,0 @@ -letrec f1 x = x in -letrec f2 x = f1 f1 x in -letrec f3 x = f2 f2 x in -letrec f4 x = f3 f3 x in -letrec f5 x = f4 f4 x in -(f5 0) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda.out deleted file mode 100644 index 99474604871..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/ex-01.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 0 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda.out deleted file mode 100644 index 1057eba6b8a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - SS KK KK ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda.out deleted file mode 100644 index b35d165b881..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - div 3 0 ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( cond false ~> . ) ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp0_ ( 10 ~> . ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda deleted file mode 100644 index cd6c3fff1bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . y diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda.out deleted file mode 100644 index 5d9b8faa252..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-1.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - KK y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda deleted file mode 100644 index 00f5f2e5340..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . (y z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda.out deleted file mode 100644 index 2ee8e0f8076..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-2.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - SS ( KK y ) ( KK z ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda deleted file mode 100644 index 1d9eb49a9f7..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . 1 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda.out deleted file mode 100644 index c2eb2ef1184..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-3.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - KK 1 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda deleted file mode 100644 index f9be470a6ae..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . cond diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda.out deleted file mode 100644 index 316300b84d1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-4.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - KK cond ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda deleted file mode 100644 index 8541a6b6dad..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . (y * z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda.out deleted file mode 100644 index 2f897722a6f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-5.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - SS ( SS ( KK mul ) ( KK y ) ) ( KK z ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda deleted file mode 100644 index 99f4f6986d2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . if a then b else c diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda.out deleted file mode 100644 index 19afd957343..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lambda-6.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - SS ( SS ( SS ( KK cond ) ( KK a ) ) ( KK b ) ) ( KK c ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda deleted file mode 100644 index da883403b44..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda +++ /dev/null @@ -1 +0,0 @@ -x <= y diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda.out deleted file mode 100644 index f8c915c4fa1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/leq.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - leq x y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda deleted file mode 100644 index d1a067af676..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda +++ /dev/null @@ -1 +0,0 @@ -x * y diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda.out deleted file mode 100644 index 0e7c38f46f0..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/mul.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - mul x y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/README.md deleted file mode 100644 index 628899343fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/README.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -The current K LAMBDA semantics of `mu` (in Lesson 8) is based on -substitution, and then `letrec` is defined as a derived operation using -`mu`. Give `mu` a different semantics, as a derived construct by -translation into other LAMBDA constructs, like we defined `letrec` in -Lesson 7. diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda deleted file mode 100644 index b459d40f907..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda +++ /dev/null @@ -1,6 +0,0 @@ -letrec f1 x = x in -letrec f2 x = f1 f1 x in -letrec f3 x = f2 f2 x in -letrec f4 x = f3 f3 x in -letrec f5 x = f4 f4 x in -(f5 0) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda.out deleted file mode 100644 index 99474604871..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/ex-01.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 0 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/media.properties deleted file mode 100644 index 10e6cb0b4f8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=Ox4uXDpcY64 -video_length_secs=160 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/Makefile b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/README.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/README.md deleted file mode 100644 index 59c1156a1c1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/README.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# A Complete and Documented K Definition - -In this lesson you will learn how to add formal comments to your K definition, -in order to nicely document it. The generated document can be then used for -various purposes: to ease understanding the K definition, to publish it, -to send it to others, etc. - -The K tool allows a literate programming style, where the executable -language definition can be documented by means of annotations. One such -annotation is the `latex(_)` annotation, where you can specify how to format -the given production when producing Latex output via the `--output latex` -option to `krun`, `kast`, and `kprove`. - -There are three types of comments, which we discuss next. - -## Ordinary comments - -These use `//` or `/* ... */`, like in various programming languages. These -comments are completely ignored. - -## Document annotations - -Use the `@` symbol right after `//` or `/*` in order for the comment to be -considered an annotation and thus be processed by the K tool when it -generates documentation. - -As an example, we can go ahead and add such an annotation at the beginning -of the LAMBDA module, explaining how we define the syntax of this language. - -## Header annotations - -Use the `!` symbol right after `//` or `/*` if you want the comment to be -considered a header annotation, that is, one which goes before -`\begin{document}` in the generated Latex. You typically need header -annotations to include macros, or to define a title, etc. - -As an example, let us set a Latex length and then add a title and an -author to this K definition. - -Compile the documentation and take a look at the results. Notice the title. - -Feel free to now add lots of annotations to `lambda.k`. - -Then compile and check the result. Depending on your PDF viewer, you -may also see a nice click-able table of contents, with all the sections -of your document. This could be quite convenient when you define large -languages, because it helps you jump to any part of the semantics. - -Tutorial 1 is now complete. The next tutorial will take us through the -definition of a simple imperative language and will expose us to more -feature of the K framework and the K tool. - -[MOVIE (out of date) [6'07"]](https://youtu.be/-pHgLqNMKac) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/lambda.md b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/lambda.md deleted file mode 100644 index c3adc750daf..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/lambda.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -**K** code can be nested inside Markdown using annotated code blocks. -Use the tag `k` to tell the compiler which blocks to select. - -Inside `.k` files, C/Java-like comments are available. -```k -// Single line comment -/* Multiline -comments */ -``` - -Tutorial 1 --- LAMBDA -===================== - -Author: Grigore Roșu (grosu@illinois.edu) -Organization: University of Illinois at Urbana-Champaign - -### Abstract -This file defines a simple functional language in **K**, called LAMBDA, -using a substitution style. The explicit objective here is to teach some -**K** concepts and how they work in the K tool, and not to teach -λ-calculus or to argue for one definitional style against another -(e.g., some may prefer environment/closure-based definitions of such -languages). - -Note that the subsequent definition is so simple, that it hardly shows any -of the strengths of **K**. Perhaps the most interesting **K** aspect it shows is -that substitution can be defined fully generically, and then used to give -semantics to various constructs in various languages. - -Note: - **K** follows the -[literate programming](https://en.wikipedia.org/wiki/Literate_programming) -approach. The various semantic features defined in a **K** -module can be reordered at will and can be commented using normal -comments like in C/C++/Java. -While comments are useful in general, they can annoy the expert user -of **K**. To turn them off, you can do one of the following (unless you -want to remove them manually): -(1) Use an [editor](https://github.com/kframework/k-editor-support) which can -hide or highlight Markdown and conventional C-like comments; or -(2) Run `kompile --debug `. Inside `./.kompiled-xxx/.md2.k/` you will find -all the K code extracted from the markdown files as used for compilation. - -### Substitution -We need the predefined substitution module, so we require it with the command -below. Then we should make sure we import its module called SUBSTITUTION -in our LAMBDA module below. - -```k -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX -``` -### Basic Call-by-value λ-Calculus Syntax - -We first define the syntax of conventional call-by-value λ-calculus, making -sure we declare the lambda abstraction construct to be a binder, the -lambda application to be strict, and the parentheses used for grouping as -a bracket. - -Note: -Syntax in **K** is defined using the familiar BNF notation, with -terminals enclosed in quotes and nonterminals starting with capital -letters. **K** actually extends BNF with several attributes, which will be -described in this tutorial. - -Note: -The `strict` constructs can evaluate their arguments in any (fully -interleaved) order. - - -The initial syntax of our λ-calculus: -```k - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder, latex(\lambda{#1}.{#2})] - syntax Exp ::= Val - | Exp Exp [left, strict] - | "(" Exp ")" [bracket] -``` - -### Integer and Boolean Builtins Syntax -The LAMBDA arithmetic and Boolean expression constructs are simply rewritten -to their builtin counterparts once their arguments are evaluated. -The annotated operators in the right-hand side of the rules below are -builtin and come with the corresponding builtin sort. Note that the -variables appearing in these rules have integer sort. That means that these -rules will only be applied after the arguments of the arithmetic constructs -are fully evaluated to **K** results; this will happen thanks to their strictness -attributes declared as annotations to their syntax declarations (below). - -```k - syntax Val ::= Int | Bool - syntax Exp ::= "-" Int - > Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] -``` - -### Conditional Syntax -Note that the `if` construct is strict only in its first argument. - -```k - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] -``` - -### Let Binder -The let binder is a derived construct, because it can be defined using λ. - -```k - syntax Exp ::= "let" KVar "=" Exp "in" Exp [macro] - rule let X = E in E':Exp => (lambda X . E') E -``` - -### Letrec Binder -We prefer a definition based on the μ construct. Note that μ is not -really necessary, but it makes the definition of letrec easier to understand -and faster to execute. - -```k - syntax Exp ::= "letrec" KVar KVar "=" Exp "in" Exp [macro] - | "mu" KVar "." Exp [binder, latex(\mu{#1}.{#2})] - rule letrec F:KVar X:KVar = E in E' => let F = mu F . lambda X . E in E' -endmodule -``` - -### LAMBDA module - -```k -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - imports DOMAINS - - syntax KResult ::= Val -``` - -### β-reduction - -```k - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] -``` - -### Integer Builtins - -```k - rule - I => 0 -Int I - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 requires I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 -``` - -### Conditional - -```k - rule if true then E else _ => E - rule if false then _ else E => E -``` - -### Mu - -```k - rule mu X . E => E[(mu X . E) / X] -endmodule -``` diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/media.properties b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/media.properties deleted file mode 100644 index 42133dad464..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=-pHgLqNMKac -video_length_secs=367 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda deleted file mode 100644 index 229fef21d72..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda +++ /dev/null @@ -1 +0,0 @@ -((lambda n . (n (lambda f . lambda a . lambda b . (f b ((lambda m . lambda n . lambda f . lambda x . (n f (m f x))) a b))) (lambda x . lambda y . x) (lambda f . lambda x . x) (lambda f . lambda x . (f x)))) (lambda f . lambda x . (f (f (f (f (f (f (f x))))))))) (lambda x . (x + 1)) 0 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo-church.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_9/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/Makefile deleted file mode 100644 index bd5e925c3d1..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=lesson_1 lesson_2 lesson_3 lesson_4 lesson_5 - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/2_imp/NOTES.md b/k-distribution/pl-tutorial/1_k/2_imp/NOTES.md deleted file mode 100644 index 0ccf2760412..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -* Revise the change of `S1 S2` into `S1:Stmt S2:Stmt`, if needed; only `S2` -really needs to be sorted. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/README.md b/k-distribution/pl-tutorial/1_k/2_imp/README.md deleted file mode 100644 index b4bcec5436b..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/README.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -## Part 2: Defining IMP - -Here you will learn how to define a very simple imperative language in K -and the basics of how to work with configurations, cells, and computations. -Specifically, you will learn the following: - -* How to define languages using multiple modules. -* How to define sequentially strict syntactic constructs. -* How to use K's syntactic lists. -* How to define, initialize and configure configurations. -* How the language syntax is swallowed by the builtin K syntactic category. -* The additional syntax of the K syntactic category. -* How the strictness annotations are automatically desugared into rules. -* The first steps of the configuration abstraction mechanism. - -Like in the previous tutorial, this folder contains several lessons, each -adding new features to IMP. Do them in order. Also, make sure you completed -and understood the previous tutorial. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/Makefile deleted file mode 100644 index 0bfaa2a7602..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=imp -EXT=imp -KOMPILE_FLAGS=--gen-glr-bison-parser - -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/README.md deleted file mode 100644 index f828a3d08df..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/README.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Defining a More Complex Syntax - -Here we learn how to define a more complex language syntax than LAMBDA's, -namely the C-like syntax of IMP. Also, we will learn how to define languages -using multiple modules, because we are going to separate IMP's syntax from -its semantics using modules. Finally, we will also learn how to use K's -builtin support for syntactic lists. - -The K tool provides modules for grouping language features. In general, we -can organize our languages in arbitrarily complex module structures. -While there are no rigid requirements or even guidelines for how to group -language features in modules, we often separate the language syntax from the -language semantics in different modules. - -In our case here, we start by defining two modules, IMP-SYNTAX and IMP, and -import the first in the second, using the keyword `imports`. As their names -suggest, we will place all IMP's syntax definition in IMP-SYNTAX and all its -semantics in IMP. - -Note, however, that K does no more than simply includes all the -contents of the imported module in the one which imports it (making sure -that everything is only kept once, even if you import it multiple times). -In other words, there is currently nothing fancy in K tool's module system. - -IMP has six syntactic categories, as shown in `imp.k`: `AExp` for arithmetic -expressions, `BExp` for Boolean expressions, `Block` for blocks, `Stmt` for -statements, `Pgm` for programs and `Ids` for comma-separated lists of -identifiers. Blocks are special statements, whose role is to syntactically -constrain the conditional statement and the while loop statement to only -take blocks as branches and body, respectively. - -There is nothing special about arithmetic and Boolean expressions. They -are given the expected strictness attributes, except for `<=` and `&&`, -for demonstration purposes. - -The `<=` is defined to be `seqstrict`, which means that it evaluates its -arguments in order, from left-to-right (recall that the `strict` operators -can evaluate their arguments in any, fully interleaved, orders). Like -`strict`, the `seqstrict` annotation can also be configured; for example, one -can specify in which arguments and in what order. By default, `seqstrict` -refers to all the arguments, in their left-to-right order. In our case here, -it is equivalent with `seqstrict(1 2)`. - -The `&&` is only strict in its first argument, because we will give it a -short-circuited semantics (its second argument will only be evaluated when -the first evaluates to true). Recall the K tool also allows us to associate -LaTex attributes to constructs, telling the document generator how to display -them. For example, we associate `<=` the attribute `latex({#1}\leq{#2})`, -which makes it be displayed $\leq$ everywhere in the generated LaTex -documentation. - -In this tutorial we take the freedom to associate the various constructs -parsing precedences that we have already tested and we know work well, so that -we can focus on the semantics here instead of syntax. In practice, though, -you typically need to experiment with precedences until you obtain the desired -parser. - -Blocks are defined using curly brackets, and they can either be empty or -hold a statement. - -Nothing special about the IMP statements. Note that `;` is an assignment -statement terminator, not a statement separator. Note also that blocks are -special statements. - -An IMP program declares a comma-separated list of variables using the keyword -`int` like in C, followed by a semicolon `;`, followed by a statement. -Syntactically, the idea here is that we can wrap any IMP program within a -`main(){...}` function and get a valid C program. IMP does not allow variable -declarations anywhere else except through this construct, at the top-level of -the program. Other languages provided with the K distribution (see, e.g., the -IMP++ language also discussed in this tutorial) remove this top-level program -construct of IMP and add instead variable declaration as a statement construct, -which can be used anywhere in the program, not only at the top level. - -Note how we defined the comma-separated list of identifiers using -`List{Id,","}`. The K tool provides builtin support for generic syntactic -lists. In general, - - syntax B ::= List{A,T} - -declares a new non-terminal, `B`, corresponding to `T`-separated sequences of -elements of `A`, where `A` is a non-terminal and `T` is a terminal. These -lists can also be empty, that is, IMP programs declaring no variable are also -allowed (e.g., `int; {}` is a valid IMP program). To instantiate and use -the K builtin lists, you should alias each instance with a (typically fresh) -non-terminal in your syntax, like we do with the `Ids` nonterminal. - -Like with other K features, there are ways to configure the syntactic lists, -but we do not discuss them here. - -Recall from Tutorial 1 (LAMBDA) that in order for strictness to work well -we also need to tell K which computations are meant to be results. We do -this as well now, in the module IMP: integers and Booleans are K results. - -Kompile `imp.k` and test the generated parser by running some programs. -Since IMP is a fragment of C, you may want to select the C mode in your -editor when writing these programs. This will also give your the feel that -you are writing programs in a real programming language. - -For example, here is `sum.imp`, which sums in `sum` all numbers up to `n`: - - int n, sum; - n = 100; - sum=0; - while (!(n <= 0)) { - sum = sum + n; - n = n + -1; - } - -Now krun it and see how it looks parsed in the default `k` cell. - -The program `collatz.imp` tests the Collatz conjecture for all numbers up to -`m` and accumulates the total number of steps in `s`: - - int m, n, q, r, s; - m = 10; - while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // of n/2 if even - } - } - -Finally, program `primes.imp` counts in `s` all the prime numbers up to `m`: - - int i, m, n, q, r, s, t, x, y, z; - m = 10; n = 2; - while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; - } - -All the programs above will run once we define the semantics of IMP. If you -want to execute them now, wrap them in a `main(){...}` function and compile -them and run them with your favorite C compiler. - -Before we move to the K semantics of IMP, we would like to make some -clarifications regarding the K builtin parser, `kast`. Although it is quite -powerful, you should not expect magic from it! While the K parser can parse -many non-trivial languages (see, for example, the KOOL language in -[pl-tutorial/2_languages](/pl-tutorial/2_languages)) in the K distribution), it was -never meant to be a substitute for real parsers. We often call the syntax -defined in K _the syntax of the semantics_, to highlight the fact that its -role is to serve as a convenient notation when writing the semantics, not -necessarily as a means to define concrete syntax of arbitrarily complex -programming languages. See the KERNELC language for an example on how to connect an external parser for concrete syntax to -the K tool. - -The above being said, we strongly encourage you to strive to make the -builtin parser work with your desired language syntax! Do not give up -simply because you don't want to deal with syntactic problems. On the -contrary, fight for your syntax! If you really cannot define your desired -syntax because of tool limitations, we would like to know. Please tell us. - -Until now we have only seen default configurations. In the next lesson we -will learn how to define a K custom configuration. - -Go to [Lesson 2, IMP: Defining a Configuration](../lesson_2/README.md). - -[MOVIE (out of date) [09'15"]](https://youtu.be/F39Ta1stiCM) diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/imp.k b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/imp.k deleted file mode 100644 index c774a804bcb..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/imp.k +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | Id - | "-" Int - | AExp "/" AExp [left, strict] - | "(" AExp ")" [bracket] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - > Stmt Stmt [left] - syntax Pgm ::= "int" Ids ";" Stmt - syntax Ids ::= List{Id,","} -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool -endmodule diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/media.properties b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/media.properties deleted file mode 100644 index bf6ecfb50df..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=F39Ta1stiCM -video_length_secs=555 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/collatz.imp.out deleted file mode 100644 index 88e74d91676..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/collatz.imp.out +++ /dev/null @@ -1,3 +0,0 @@ - - int m , n , q , r , s , .Ids ; m = 10 ; while ( ! m <= 2 ) { n = m ; m = m + - 1 ; while ( ! n <= 1 ) { s = s + 1 ; q = n / 2 ; r = q + q + 1 ; if ( r <= n ) { n = n + n + n + 1 ; } else { n = q ; } } } ~> . - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/primes.imp.out deleted file mode 100644 index 393dffbb326..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/primes.imp.out +++ /dev/null @@ -1,3 +0,0 @@ - - int i , m , n , q , r , s , t , x , y , z , .Ids ; m = 10 ; n = 2 ; while ( n <= m ) { i = 2 ; q = n / i ; t = 1 ; while ( i <= q && 1 <= t ) { x = i ; y = q ; z = 0 ; while ( ! x <= 0 ) { q = x / 2 ; r = q + q + 1 ; if ( r <= x ) { z = z + y ; } else { } x = q ; y = y + y ; } if ( n <= z ) { t = 0 ; } else { i = i + 1 ; q = n / i ; } } if ( 1 <= t ) { s = s + 1 ; } else { } n = n + 1 ; } ~> . - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/sum.imp.out deleted file mode 100644 index e4012cab324..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/sum.imp.out +++ /dev/null @@ -1,3 +0,0 @@ - - int n , sum , .Ids ; n = 100 ; sum = 0 ; while ( ! n <= 0 ) { sum = sum + n ; n = n + - 1 ; } ~> . - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/README.md deleted file mode 100644 index f5ce4963833..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/README.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Defining a Configuration - -Here we learn how to define a configuration in K. We also learn how to -initialize and how to display it. - -As explained in the overview presentation on K, configurations are quite -important, because all semantic rules match and apply on them. -Moreover, they are the backbone of _configuration abstraction_, which allows -you to only mention the relevant cells in each semantic rule, the rest of -the configuration context being inferred automatically. The importance of -configuration abstraction will become clear when we define more complex -languages (even in IMP++). IMP does not really need it. K configurations -are constructed making use of cells, which are labeled and can be arbitrarily -nested. - -Configurations are defined with the keyword `configuration`. Cells are -defined using an XML-ish notation stating clearly where the cell starts -and where it ends. - -While not enforced by the tool, we typically like to put the entire -configuration in a top-level cell, called `T`. So let's define it: - - configuration ... - -Cells can have other cells inside. In our case of IMP, we need a cell to -hold the remaining program, cell which we typically call `k`, and a cell to -hold the program state. Let us add them: - - configuration ... ... - -K allows us to also specify how to initialize a configuration at the same -time with declaring the configuration. All we have to do is to fill in -the contents of the cells with some terms. The syntactic categories of -those terms will also indirectly define the types of the corresponding -cells. - -For example, we want the `k` cell to initially hold the program that is passed -to `krun`. K provides a builtin configuration variable, called `$PGM`, which -is specifically designed for this purpose: `krun` will place its program there -(after it parses it, or course). The K tool allows users to define their own -configuration variables, too, which can be used to develop custom -initializations of program configurations with the help of `krun`; this can be -quite useful when defining complex languages, but we do not discuss it in -this tutorial. - - configuration $PGM ... - -Moreover, we want the program to be a proper `Pgm` term (because we do not -want to allow `krun` to take fragments of programs, for example, statements). -Therefore, we tag `$PGM` with the desired syntactic category, `Pgm`: - - configuration $PGM:Pgm ... - -Like for other variable tags in K, a run-time check will be performed and the -semantics will get stuck if the passed term is not a well-formed program. - -We next tell K that the state cell should be initialized with the empty map: - - configuration $PGM:Pgm .Map - -Recall that in K `.` stands for _nothing_. However, since there are various -types of nothing, to avoid confusion we can suffix the `.` with its desired -type. K has several builtin data-types, including lists, sets, bags, and -maps. `.Map` is the empty map. - -Kompile `imp.k` and run several programs to see how the configuration is -initialized as desired. - -When configurations get large, and they do when defining large programming -languages, you may want to color the cells in order to more easily distinguish -them. This can be easily achieved using the `color` cell attribute, following -again an XML-ish style: - - configuration - $PGM:Pgm - .Map - - -In the next lesson we will learn how to write rules that involve cells. - -Go to [Lesson 3, IMP: Computations, Results, Strictness; Rules Involving Cells](../lesson_3/README.md). - -[MOVIE (out of date) [04'21"]](https://youtu.be/jkwLyGdt70U) diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/imp.k b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/imp.k deleted file mode 100644 index 8e1660b7c6c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/imp.k +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | Id - | "-" Int - | AExp "/" AExp [left, strict] - | "(" AExp ")" [bracket] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - > Stmt Stmt [left] - syntax Pgm ::= "int" Ids ";" Stmt - syntax Ids ::= List{Id,","} -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool - - configuration - $PGM:Pgm - .Map - -endmodule diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/media.properties b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/media.properties deleted file mode 100644 index f2fdfc47fd9..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=jkwLyGdt70U -video_length_secs=261 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/collatz.imp.out deleted file mode 100644 index 0b8674caf7d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/collatz.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - int m , n , q , r , s , .Ids ; m = 10 ; while ( ! m <= 2 ) { n = m ; m = m + - 1 ; while ( ! n <= 1 ) { s = s + 1 ; q = n / 2 ; r = q + q + 1 ; if ( r <= n ) { n = n + n + n + 1 ; } else { n = q ; } } } ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/primes.imp.out deleted file mode 100644 index b975be1aaf2..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/primes.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - int i , m , n , q , r , s , t , x , y , z , .Ids ; m = 10 ; n = 2 ; while ( n <= m ) { i = 2 ; q = n / i ; t = 1 ; while ( i <= q && 1 <= t ) { x = i ; y = q ; z = 0 ; while ( ! x <= 0 ) { q = x / 2 ; r = q + q + 1 ; if ( r <= x ) { z = z + y ; } else { } x = q ; y = y + y ; } if ( n <= z ) { t = 0 ; } else { i = i + 1 ; q = n / i ; } } if ( 1 <= t ) { s = s + 1 ; } else { } n = n + 1 ; } ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/sum.imp.out deleted file mode 100644 index 80a08851cea..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/sum.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - int n , sum , .Ids ; n = 100 ; sum = 0 ; while ( ! n <= 0 ) { sum = sum + n ; n = n + - 1 ; } ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/README.md deleted file mode 100644 index 94ceac8c1ae..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/README.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Computations, Results, Strictness; Rules Involving Cells - -In this lesson we will learn about the syntactic category `K` of computations, -about how strictness attributes are in fact syntactic sugar for rewrite rules -over computations, and why it is important to tell the tool which -computations are results. We will also see a K rule that involves cells. - -## K Computations - -Computation structures, or more simply _computations_, extend the abstract -syntax of your language with a list structure using `~>` (read _followed -by_ or _and then_, and written $\curvearrowright$ in Latex) as a separator. -K provides a distinguished sort, `K`, for computations. The extension of the -abstract syntax of your language into computations is done automatically by -the K tool when you declare constructs using the `syntax` keyword, so the K -semantic rules can uniformly operate only on terms of sort `K`. The intuition -for computation structures of the form - - t1 ~> t2 ~> ... ~> tn - -is that the listed tasks are to be processed in order. The initial -computation typically contains the original program as its sole task, but -rules can then modify it into task sequences, as seen shortly. - -## Strictness in Theory - -The strictness attributes, used as annotations to language constructs, -actually correspond to rules over computations. For example, the -`strict(2)` attribute of the assignment statement corresponds to the -following two opposite rules (`X` ranges over `Id` and `A` over `AExp`): - - X=A; => A ~> X=[]; - A ~> X=[]; => X=A; - -The first rule pulls `A` from the syntactic context `X=A;` and schedules it -for processing. The second rule plugs `A` back into its context. -Inspired from the chemical abstract machine, we call rules of the first -type above _heating_ rules and rules of the second type _cooling_ rules. -Similar rules are generated for other arguments in which operations are -strict. Iterative applications of heating rules eventually bring to the -top of the computation atomic tasks, such as a variable lookup, or a -builtin operation, which then make computational progress by means of other -rules. Once progress is made, cooling rules can iteratively plug the result -back into context, so that heating rules can pick another candidate for -reduction, and so on and so forth. - -When operations are strict only in some of their arguments, the corresponding -positions of the arguments in which they are strict are explicitly enumerated -in the argument of the `strict` attribute, e.g., `strict(2)` like above, or -`strict(2 3)` for an operation strict in its second and third arguments, etc. -If an operation is simply declared `strict` then it means that it is strict -in all its arguments. For example, the strictness of addition yields: - - A1+A2 => A1 ~> []+A2 - A1 ~> []+A2 => A1+A2 - A1+A2 => A2 ~> A1+[] - A2 ~> A1+[] => A1+A2 - -It can be seen that such heating/cooling rules can easily lead to -non-determinism, since the same term may be heated many different ways; -these different evaluation orders may lead to different behaviors in some -languages (not in IMP, because its expressions do not have side effects, -but we will experiment with non-determinism in its successor, IMP++). - -A similar desugaring applies to sequential strictness, declared with the -keyword `seqstrict`. While the order of arguments of `strict` is irrelevant, -it matters in the case of `seqstrict`: they are to be evaluated in the -specified order; if no arguments are given, then they are assumed by default -to be evaluated from left-to-right. For example, the default heating/cooling -rules associated to the sequentially strict `<=` construct above are -(`A1`, `A2` range over `AExp` and `I1` over `Int`): - - A1<=A2 => A1 ~> []<=A2 - A1 ~> []<=A2 => A1<=A2 - I1<=A2 => A2 ~> I1<=[] - A2 ~> I1<=[] => I1<=A2 - -In other words, `A2` is only heated/cooled after `A1` is already evaluated. - -While the heating/cooling rules give us a nice and uniform means to define -all the various allowable ways in which a program can evaluate, all based -on rewriting, the fact that they are reversible comes with a serious practical -problem: they make the K definitions unexecutable, because they lead to -non-termination. - -## Strictness in Practice; K Results - -To break the reversibility of the theoretical heating/cooling rules, and, -moreover, to efficiently execute K definitions, the current implementation of -the K tool relies on users giving explicit definitions of their languages' -results. - -The K tool provides a predicate `isKResult`, which is automatically defined -as we add syntactic constructs to `KResult` (in fact the K tool defines such -predicates for all syntactic categories, which are used, for example, as -rule side conditions to check user-declared variable memberships, such as -`V:Val` stating that `V` belongs to `Val`). - -The `kompile` tool, depending upon what it is requested to do, changes the -reversible heating/cooling rules corresponding to evaluation strategy -definitions (e.g., those corresponding to strictness attributes) to avoid -non-termination. For example, when one is interested in obtaining an -executable model of the language (which is the default compilation mode of -`kompile`), then heating is performed only when the to-be-pulled syntactic -fragment is not a result, and the corresponding cooling only when the -to-be-plugged fragment is a result. In this case, e.g., the heating/cooling -rules for assignment are modified as follows: - - X=A; => A ~> X=[]; requires notBool isKResult(A) - A ~> X=[]; => X=A; requires isKResult(A) - -Note that non-termination of heating/cooling is avoided now. The only thing -lost is the number of possible behaviors that a program can manifest, but -this is irrelevant when all we want is one behavior. - -As will be discussed in the IMP++ tutorial, the heating/cooling rules are -modified differently by `kompile` when we are interested in other aspects -of the language definition, such us, for example, in a search-able model that -comprises all program behaviors. This latter model is obviously more general -from a theoretical perspective, but, in practice, it is also slower to execute. -The `kompile` tool strives to give you the best model of the language for the -task you are interested in. - -## Can't Results be Inferred Automatically? - -This is a long story, but the short answer is: _No!_. Maybe in some cases -it is possible, but we prefer to not attempt it in the K tool. For example, -you most likely do not want any stuck computation to count as a result, -since some of them can happen simply because you forgot a semantic rule that -could have further reduce it! Besides, in our experience with defining large -languages, it is quite useful to take your time and think of what the results -of your language's computations are. This fact in itself may help you improve -your overall language design. We typically do it at the same time with -defining the evaluation strategies of our languages. Although in theory K -could infer the results of your language as the stuck computations, based on -the above we have deliberately decided to not provide this feature, in spite -of requests from some users. So you currently do have to explicitly define -your K results if you want to effectively use the K tool. Note, however, that -theoretical definitions, not meant to be executed, need not worry about -defining results (that's because in theory semantic rules apply _modulo_ the -reversible heating/cooling rules, so results are not necessary). - -## A K Rule Involving Cells - -All our K rules so far in the tutorial were of the form - - rule left => right requires condition - -where `left` and `right` were syntactic, or more generally computation, terms. - -Here is our first K rule explicitly involving cells: - - rule X:Id => I ... ... X |-> I ... - -Recall that the `k` cell holds computations, which are sequences of tasks -separated by `~>`. Also, the `state` cell holds a map, which is a set of -bindings, each binding being a pair of computations (currently, the -K builtin data-structures, like maps, are untyped; or, said differently, -they are all over the type of computations, `K`). - -Therefore, the two cells mentioned in the rule above hold collections -of things, ordered or not. The `...`s, which we also call cell _frames_, -stand for _more stuff there, which we do not care about_. - -The rewrite relation `=>` is allowed in K to appear anywhere in a term, its -meaning being that the corresponding subterm is rewritten as indicated in the -shown context. We say that K's rewriting is _local_. - -The rule above says that if the identifier `X` is the first task in the `k` -cell, and if `X` is bound to `I` somewhere in the `state`, then `X` rewrites -to `I` _locally_ in the `k` cell. Therefore, IMP variables need to be already -declared when looked up. - -Of course, the K rule above can be translated into an ordinary rewrite rule -of the form - - rule X ~> Rest Before (X |-> I) After - => I ~> Rest Before (X |-> I) After - -Besides being more verbose and thus tedious to write, this ordinary rule -is also more error-prone; for example, we may forget the `Rest` variable -in the right-hand-side, etc. Moreover, the concurrent semantics of K -allows for its rules to be interpreted as _concurrent transactions_, where -the context is the read-only component of the transaction, while the -subterms which are rewritten are read/write component of the transaction; -thus, K rule instances can apply concurrently if they only overlap -on read-only parts, while they cannot if regarded as ordinary rewrite logic -rules. Note: our current implementation of the K tool is not concurrent, -so K rules are in fact desugared as normal rewrite rules in the K tool. - -Kompile `imp.k` using a documentation option and check out how the K rule -looks in the generated document. The `...` frames are displayed as cell -tears, metaphorically implying that those parts of the cells that we -do not care about are _torn away_. The rewrite relation is replaced by a -horizontal line: specifically, the subterm which rewrites, `X`, is -underlined, and its replacement is written underneath the line. - -In the next lesson we define the complete K semantics of IMP and -run the programs we parsed in the first lesson. - -Go to [Lesson 4, IMP: Configuration Abstraction, Part 1; Types of Rules](../lesson_4/README.md). - -[MOVIE (out of date) [10'30"]](https://youtu.be/gYPkhiT2SxA) diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/imp.k b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/imp.k deleted file mode 100644 index 96f05e43981..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/imp.k +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | Id - | "-" Int - | AExp "/" AExp [left, strict] - | "(" AExp ")" [bracket] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - > Stmt Stmt [left] - syntax Pgm ::= "int" Ids ";" Stmt - syntax Ids ::= List{Id,","} -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool - - configuration - $PGM:Pgm - .Map - - - rule X:Id => I ... ... X |-> I ... - -endmodule diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/media.properties b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/media.properties deleted file mode 100644 index 66fa063c68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=gYPkhiT2SxA -video_length_secs=630 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp.out deleted file mode 100644 index 0b8674caf7d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/collatz.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - int m , n , q , r , s , .Ids ; m = 10 ; while ( ! m <= 2 ) { n = m ; m = m + - 1 ; while ( ! n <= 1 ) { s = s + 1 ; q = n / 2 ; r = q + q + 1 ; if ( r <= n ) { n = n + n + n + 1 ; } else { n = q ; } } } ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp.out deleted file mode 100644 index b975be1aaf2..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/primes.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - int i , m , n , q , r , s , t , x , y , z , .Ids ; m = 10 ; n = 2 ; while ( n <= m ) { i = 2 ; q = n / i ; t = 1 ; while ( i <= q && 1 <= t ) { x = i ; y = q ; z = 0 ; while ( ! x <= 0 ) { q = x / 2 ; r = q + q + 1 ; if ( r <= x ) { z = z + y ; } else { } x = q ; y = y + y ; } if ( n <= z ) { t = 0 ; } else { i = i + 1 ; q = n / i ; } } if ( 1 <= t ) { s = s + 1 ; } else { } n = n + 1 ; } ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/sum.imp.out deleted file mode 100644 index 80a08851cea..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/sum.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - int n , sum , .Ids ; n = 100 ; sum = 0 ; while ( ! n <= 0 ) { sum = sum + n ; n = n + - 1 ; } ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/Makefile deleted file mode 100644 index 6191094f250..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/README.md deleted file mode 100644 index db45cdc43a7..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/README.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Configuration Abstraction, Part 1; Types of Rules - -Here we will complete the K definition of IMP and, while doing so, we will -learn the very first step of what we call _configuration abstraction_. - -## The IMP Semantic Rules - -Let us add the remaining rules, in the order in which the language constructs -were defined in IMP-SYNTAX. - -The rules for the arithmetic and Boolean constructs are self-explanatory. -Note, however, that K will infer the correct sorts of all the variables in -these rules, because they appear as arguments of the builtin operations -(`_+Int_`, etc.). Moreover, the inferred sorts will be enforced dynamically. -Indeed, we do not want to apply the rule for addition, for example, when the -two arguments are not integers. In the rules for `&&`, although we prefer to -not do it here for simplicity, we could have eliminated the dynamic check by -replacing `B` (and similarly for `_`) with `B:K`. Indeed, it can be shown -that whenever any of these rules apply, `B` (or `_`) is a `BExp` anyway. -That's because there is no rule that can touch such a `B` (or `_`); this -will become clearer shortly, when we discuss the first step of configuration -abstraction. Therefore, since we know that `B` will be a `BExp` anyway, we -could save the time it takes to check its sort; such times may look minor, -but they accumulate, so some designers may prefer to avoid run-time checks -whenever possible. - -The block rules are trivial. However, the rule for non-empty blocks is -semantically correct only because we do not have local variable declarations -in IMP. We will have to change this rule in IMP++. - -The assignment rule has two `=>`: one in the `k` cell dissolving the -assignment statement, and the other in the `state` cell updating the value of -the assigned variable. Note that the one in the `state` is surrounded by -parentheses: `(_ => I)`. That is because `=>` is greedy: it matches as much -as it can to the left and to the right, until it reaches the cell boundaries -(closed or open). If you want to limit its scope, or for clarity, you can use -parentheses like here. - -The rule for sequential composition simply desugars `S1 S2` into `S1 ~> S2`. -Indeed, the two have exactly the same semantics. Note that statements -_evaluate_ to nothing (`.`), so once `S1` is processed in `S1 ~> S2`, then the -next task is automatically `S2`, without wasting any step for the transition. - -The rules for the conditional and while statements are clear. One thing to -keep in mind now is that the `while` unrolling rule will not apply -indefinitely in the positive branch of the resulting conditional, because -of K's configuration abstraction, which will be discussed shortly. - -An IMP program declares a set of variables and then executes a -statement in the state obtained after initializing all those variables -to `0`. The rules for programs initialize the declared variables one by one, -checking also that there are no duplicates. We check for duplicates only for -demonstration purposes, to illustrate the `keys` predefined operation that -returns the set of keys of a map, and the set membership operation `in`. -In practice, we typically define a static type checker for our language, -which we execute before the semantics and reject inappropriate programs. - -The use of the `.Ids` in the second rule is not necessary. We could have -written `int; S` instead of `int .Ids; S` and the K tool would parse it and -kompile the definition correctly, because it uses the same parser used for -parsing programs also to parse the semantics. However, we typically prefer to -explicitly write the _nothing_ values in the semantics, for clarity; -the parser has been extended to accept these. Note that the first rule -matches the entire `k` cell, because `int_;_` is the top-level program -construct in IMP, so there is nothing following it in the computation cell. -The anonymous variable stands for the second argument of this top-level program -construct, not for the rest of the computation. The second rule could have -also been put in a complete `k` cell, but we preferred not to, for simplicity. - -Our IMP semantics is now complete, but there are a few more things that we -need to understand and do. - -## Configuration Abstraction, Part 1 - -First, let us briefly discuss the very first step of configuration abstraction. -In K, all semantic rules are in fact rules between configurations. As soon -explained in the IMP++ tutorial, the declared configuration cell structure is -used to automatically complete the missing configuration parts in rules. -However, many rules do not involve any cells, being rules between syntactic -terms (of sort `K`); for example, we had only three rules involving cells in our -IMP semantics. In this case, the `k` cell will be added automatically and the -actual rewrite will happen on top of the enclosed computation. For example, -the rule for the `while` loop is automatically translated into the following: - - rule while (B) S => if (B) {S while (B) S} else {} ... - -Since the first task in computations is what needs to be done next, the -intuition for this rule completion is that the syntactic transition -only happens when the term to rewrite is ready for processing. This explains, -for example, why the while loop unrolling does not indefinitely apply in the -positive branch of the conditional: the inner while loop is not ready for -evaluation yet. We call this rule completion process, as well as other -similar ones, _configuration abstraction_. That is because the incomplete -rule abstracts away the configuration structure, thus being easier to read. -As seen soon when we define IMP++, configuration abstraction is not only a -user convenience; it actually significantly increases the modularity of our -definitions. The k-cell-completion is only the very first step, though. - -If you really want certain rewrites over syntactic terms to apply -anywhere they match, then you should tag the rule with the attribute -`anywhere`, which was discussed in Tutorial 1, Lesson 2.5. - -Kompile and then krun the programs that you only parsed in Lesson 1. They -should all execute as expected. The state cell shows the final state -of the program. The `k` cell shows the final code contents, which should be -empty whenever the IMP program executes correctly. - -Kompile also with the documentation option and take a look at the generated -documentation. The assignment rule should particularly be of interest, -because it contains two local rewrites. - -In the next lesson we comment the IMP definition and conclude this tutorial. - -Go to [Lesson 5, IMP: Completing and Documenting IMP](../lesson_5/README.md). - -[MOVIE (out of date) [09'16"]](https://youtu.be/fR2VEfGHtho) diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/README.md deleted file mode 100644 index 4117e212767..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/README.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Modify IMP so that the K *followed by* arrow, `~>`, does not explicitly -occur in the definition (it currently occurs in the semantics of -sequential composition). - -Hint: make sequential composition `strict(1)` or `seqstrict`, and have -statements reduce to `{}` instead of `.`; and don't forget to make -`{}` a `KResult` (you may need a new syntactic category for that, which -only includes `{}` and is included in `KResult`). diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp.out deleted file mode 100644 index 3ddcf86d4b0..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/collatz.imp.out +++ /dev/null @@ -1,12 +0,0 @@ - - - { } ~> . - - - m |-> 2 - n |-> 1 - q |-> 1 - r |-> 3 - s |-> 66 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp.out deleted file mode 100644 index 6f22e1162b0..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/primes.imp.out +++ /dev/null @@ -1,17 +0,0 @@ - - - { } ~> . - - - i |-> 2 - m |-> 10 - n |-> 11 - q |-> 0 - r |-> 1 - s |-> 4 - t |-> 0 - x |-> 0 - y |-> 20 - z |-> 10 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp.out deleted file mode 100644 index 3846a6deca0..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/purely-syntactic/tests/sum.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - { } ~> . - - - n |-> 0 - sum |-> 5050 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/README.md deleted file mode 100644 index 4c5ce8d8b5d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/README.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Modify the K definition of IMP to not automatically initialize -variables to `0`. Instead, declared variables should stay uninitialized -until assigned a value, and the execution should get stuck when an -uninitialized variable is looked up. Specifically, you should add a -new `undefined` construct of sort `K`, and initialize all the declared -variables with it. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp deleted file mode 100644 index 796ee1dc361..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp +++ /dev/null @@ -1,20 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -s = 0; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp.out deleted file mode 100644 index 4e77a353e3c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz-initialized.imp.out +++ /dev/null @@ -1,12 +0,0 @@ - - - . - - - m |-> 2 - n |-> 1 - q |-> 1 - r |-> 3 - s |-> 66 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp.out deleted file mode 100644 index 5142150f60b..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/collatz.imp.out +++ /dev/null @@ -1,12 +0,0 @@ - - - undefined ~> #freezer_+__IMP-SYNTAX_AExp_AExp_AExp0_ ( 1 ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( s ~> . ) ~> q = n / 2 ; ~> r = q + q + 1 ; ~> if ( r <= n ) { n = n + n + n + 1 ; } else { n = q ; } ~> while ( ! n <= 1 ) { s = s + 1 ; q = n / 2 ; r = q + q + 1 ; if ( r <= n ) { n = n + n + n + 1 ; } else { n = q ; } } ~> while ( ! m <= 2 ) { n = m ; m = m + - 1 ; while ( ! n <= 1 ) { s = s + 1 ; q = n / 2 ; r = q + q + 1 ; if ( r <= n ) { n = n + n + n + 1 ; } else { n = q ; } } } ~> . - - - m |-> 9 - n |-> 10 - q |-> undefined - r |-> undefined - s |-> undefined - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp deleted file mode 100644 index fba0db2a776..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; s = 0; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp.out deleted file mode 100644 index dc1326e506a..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes-initialized.imp.out +++ /dev/null @@ -1,17 +0,0 @@ - - - . - - - i |-> 2 - m |-> 10 - n |-> 11 - q |-> 0 - r |-> 1 - s |-> 4 - t |-> 0 - x |-> 0 - y |-> 20 - z |-> 10 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp.out deleted file mode 100644 index 28531d72869..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/primes.imp.out +++ /dev/null @@ -1,17 +0,0 @@ - - - undefined ~> #freezer_+__IMP-SYNTAX_AExp_AExp_AExp0_ ( 1 ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( s ~> . ) ~> n = n + 1 ; ~> while ( n <= m ) { i = 2 ; q = n / i ; t = 1 ; while ( i <= q && 1 <= t ) { x = i ; y = q ; z = 0 ; while ( ! x <= 0 ) { q = x / 2 ; r = q + q + 1 ; if ( r <= x ) { z = z + y ; } else { } x = q ; y = y + y ; } if ( n <= z ) { t = 0 ; } else { i = i + 1 ; q = n / i ; } } if ( 1 <= t ) { s = s + 1 ; } else { } n = n + 1 ; } ~> . - - - i |-> 2 - m |-> 10 - n |-> 2 - q |-> 1 - r |-> undefined - s |-> undefined - t |-> 1 - x |-> undefined - y |-> undefined - z |-> undefined - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/sum.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/media.properties b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/media.properties deleted file mode 100644 index 6ff54ddc477..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=fR2VEfGHtho -video_length_secs=556 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/Makefile b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/Makefile deleted file mode 100644 index b28d02bef3e..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -include ../lesson_1/Makefile -KOMPILE_FLAGS+=-ccopt -g diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/README.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/README.md deleted file mode 100644 index d6f24e4dbbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/README.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Completing and Documenting IMP - -We here learn no new concepts, but it is a good moment to take a break -and contemplate what we learned so far. - -Let us add lots of formal annotations to `imp.k`. - -Once we are done with the annotations, we kompile with the documentation -option and then take a look at the produced document. We often call these -documents _language posters_. Depending on how much information you add to -these language posters, they can serve as standalone, formal presentations -of your languages. For example, you can print them as large posters and -post them on the wall, or in poster sessions at conferences. - -This completes our second tutorial. The next tutorials will teach us more -features of the K framework, such as how to define languages with complex -control constructs (like `callcc`), languages which are concurrent, and so on. - -[MOVIE (out of date) [03'45"]](https://youtu.be/w2t_Yx2VGVQ) diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/imp.md b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/imp.md deleted file mode 100644 index b4715158620..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/imp.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -IMP -=== - -Author: Grigore Roșu (grosu@illinois.edu) -Organization: University of Illinois at Urbana-Champaign - -### Abstract -This is the **K** semantic definition of the classic IMP language. -IMP is considered a folklore language, without an official inventor, -and has been used in many textbooks and papers, often with slight -syntactic variations and often without being called **IMP**. It includes -the most basic imperative language constructs, namely basic constructs -for arithmetic and Boolean expressions, and variable assignment, -conditional, while loop and sequential composition constructs for statements. - -```k -module IMP-SYNTAX - imports DOMAINS-SYNTAX -``` -### Syntax -This module defines the syntax of **IMP**. -Note that `<=` is sequentially strict, and `&&` is strict only in its first -argument, because we want to give it a short-circuit semantics. - -```k - syntax AExp ::= Int | Id - | "-" Int [format(%1%2)] - | AExp "/" AExp [left, strict, color(pink)] - | "(" AExp ")" [bracket] - > AExp "+" AExp [left, strict, color(pink)] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2}), color(pink)] - | "!" BExp [strict, color(pink)] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1), color(pink)] - syntax Block ::= "{" "}" - | "{" Stmt "}" [format(%1%i%n%2%d%n%3)] - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2), color(pink), format(%1 %2 %3%4)] - | "if" "(" BExp ")" - Block "else" Block [strict(1), colors(yellow, white, white, yellow), format(%1 %2%3%4 %5 %6 %7)] - | "while" "(" BExp ")" Block [colors(yellow,white,white), format(%1 %2%3%4 %5)] - > Stmt Stmt [left, format(%1%n%2)] -``` -An IMP program declares a set of variables and then executes a -statement in the state obtained after initializing all those variables -to 0. **K** provides builtin support for generic syntactic lists: -`List{Nonterminal,terminal}` stands for `terminal`-separated lists of `Nonterminal` elements. - -```k - syntax Pgm ::= "int" Ids ";" Stmt [format(%1 %2%3%n%4), colors(yellow,pink)] - syntax Ids ::= List{Id,","} [format(%1%2 %3)] -endmodule -``` - -We are done with the definition of IMP's syntax. Make sure -that you write and parse several interesting programs before you move to the -semantics. - -```k -module IMP - imports IMP-SYNTAX - imports DOMAINS -``` -### Semantics -This module defines the semantics of **IMP**. -Before you start adding semantic rules to a **K** definition, you need to -define the basic semantic infrastructure consisting of definitions for -`results` and the `configuration`. - -### Values and results -IMP only has two types of values, or results of computations: integers -and Booleans. We here use the **K** builtin variants for both of them. - -```k - syntax KResult ::= Int | Bool -``` - -### Configuration -The configuration of IMP is trivial: it only contains two cells, one -for the computation and another for the state. For good encapsulation -and clarity, we place the two cells inside another cell, the *top* cell -which is labeled `T`. - -```k - configuration - $PGM:Pgm - .Map - -``` - -The configuration variable *PGM* tells the **K** tool where to -place the program. More precisely, the command -`krun program` parses the program and places the resulting -**K** abstract syntax tree in the `k` cell before invoking the -semantic rules described in the sequel. The `.` in the -`state` cell, written `.Map` in ASCII in the -`imp.md` file, is **K**'s way to say *nothing*. Technically, it -is a constant which is the unit, or identity, of all maps in **K** -(similar dot units exist for other **K** structures, such as lists, sets, -multi-sets, etc.). - -### Arithmetic expressions -The **K** semantics of each arithmetic construct is defined below. - -### Variable lookup -A program variable `X` is looked up in the state by matching a binding -of the form `X |-> I` in the state cell. If such a binding does not -exist, then the rewriting process will get stuck. Thus our semantics of -IMP disallows uses of uninitialized variables. Note that the variable -to be looked up is the first task in the `k` cell (the cell is -closed to the left and torn to the right), while the binding can be -anywhere in the `state` cell (the cell is torn at both sides). - -```k - rule X:Id => I ... ... X |-> I ... -``` - -### Arithmetic operators -There is nothing special about these, but recall that **K**'s configuration -abstraction mechanism is at work here! That means that the rewrites in the -rules below all happen at the beginning of the `k` cell. - -```k - rule I1 / I2 => I1 /Int I2 requires I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I1 => 0 -Int I1 -``` - -### Boolean expressions -The rules below are straightforward. Note the short-circuited semantics -of `&&`; this is the reason we annotated the syntax of -`&&` with the **K** attribute `strict(1)` instead of `strict`. - -```k - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -``` - -### Blocks and Statements -There is one rule per statement construct except for the conditional, -which needs two rules. - -### Blocks -The empty block `{}` is simply dissolved. The `.` below is the -unit of the computation list structure `K`, that is, the empty task. -Similarly, the non-empty blocks are dissolved and replaced by their statement -contents, thus effectively giving them a bracket semantics; we can afford to -do this only because we have no block-local variable declarations yet in IMP. - -```k - rule {} => . - rule {S} => S -``` - -### Assignment -The assigned variable is updated in the state. The variable is expected -to be declared, otherwise the semantics will get stuck. At the same time, -the assignment is dissolved. - -```k - rule X = I:Int; => . ... ... X |-> (_ => I) ... -``` - -### Sequential composition -Sequential composition is simply structurally translated into **K**'s -builtin task sequentialization operation. - -```k - rule S1:Stmt S2:Stmt => S1 ~> S2 -``` - -### Conditional -The conditional statement has two semantic cases, corresponding to -when its condition evaluates to `true` or to `false`. -Recall that the conditional was annotated with the attribute -`strict(1)` in the syntax module above, so only its first -argument is allowed to be evaluated. - -```k - rule if (true) S else _ => S - rule if (false) _ else S => S -``` - -### While loop -We give the semantics of the `while` loop by unrolling. - -```k - rule while (B) S => if (B) {S while (B) S} else {} -``` - -### Programs -The semantics of an IMP program is that its body statement is executed -in a state initializing all its global variables to 0. Since **K**'s -syntactic lists are internally interpreted as cons-lists (i.e., lists -constructed with a head element followed by a tail list), we need to -distinguish two cases, one when the list has at least one element and -another when the list is empty. In the first case we initialize the -variable to 0 in the state, but only when the variable is not already -declared (all variables are global and distinct in IMP). - -```k - rule int (X,Xs => Xs);_ Rho:Map (.Map => X|->0) - requires notBool (X in keys(Rho)) - rule int .Ids; S => S -endmodule -``` diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/media.properties b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/media.properties deleted file mode 100644 index 948dce28e54..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=w2t_Yx2VGVQ -video_length_secs=224 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp.out deleted file mode 100644 index 4e77a353e3c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/collatz.imp.out +++ /dev/null @@ -1,12 +0,0 @@ - - - . - - - m |-> 2 - n |-> 1 - q |-> 1 - r |-> 3 - s |-> 66 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp.out deleted file mode 100644 index dc1326e506a..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/primes.imp.out +++ /dev/null @@ -1,17 +0,0 @@ - - - . - - - i |-> 2 - m |-> 10 - n |-> 11 - q |-> 0 - r |-> 1 - s |-> 4 - t |-> 0 - x |-> 0 - y |-> 20 - z |-> 10 - - diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp.out deleted file mode 100644 index f72ab68a441..00000000000 --- a/k-distribution/pl-tutorial/1_k/2_imp/lesson_5/tests/sum.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - . - - - n |-> 0 - sum |-> 5050 - - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/Makefile deleted file mode 100644 index 4574dbaddbc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=lesson_1 lesson_2 lesson_3 lesson_4 lesson_5 lesson_6 - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/README.md deleted file mode 100644 index a8239bd4471..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/README.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Part 3: Defining LAMBDA++ - -Here you will learn how to define language constructs which abruptly change -the execution control flow, and how to define language semantics following -and environment/store style. Specifically, you will learn the following: - -* How to define constructs like `callcc`, which allow you to take snapshots of - program executions and to go *back in time* at any moment. -* How to define languages in an environment/store style. -* Some basic notions about the use of closures and closure-like semantic - structures to save and restore execution environments. -* Some basic intuitions about reusing existing semantics in new languages, - as well as some of the pitfalls in doing so. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/Makefile deleted file mode 100644 index 9fe6d749b0a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../1_lambda/lesson_1/Makefile -KOMPILE_FLAGS=--gen-glr-bison-parser diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/README.md deleted file mode 100644 index 49a5960723f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/README.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Abrupt Changes of Control - -Here we add *call-with-current-continuation* (`callcc`) to the definition of -LAMBDA completed in Tutorial 1, and call the resulting language LAMBDA++. -While doing so, we will learn how to define language constructs that -abruptly change the execution control flow. - -Take over the `lambda.k` definition from Lesson 8 in Part 1 of this Tutorial, -which is the complete definition of the LAMBDA language, but without the -comments. - -`callcc` is a good example for studying the capabilities of a framework to -support abrupt changes of control, because it is one of the most -control-intensive language constructs known. Scheme is probably the first -programming language that incorporated the `callcc` construct, although -similar constructs have been recently included in many other languages in -one form or another. - -Here is a quick description: `callcc e` passes the remaining computation -context, packaged as a function `k`, to `e` (which is expected to be a function); -if during its evaluation `e` passes any value to `k`, then the current -execution context is discarded and replaced by the one encoded by `k` and -the value is passed to it; if `e` evaluates normally to some value `v` and -passes nothing to `k` in the process, then `v` is returned as a result of -`callcc e` and the execution continues normally. For example, we want the -program `callcc-jump.lambda`: - - (callcc (lambda k . ((k 5) + 2))) + 10 - -to evaluate to `15`, not `17`! Indeed, the computation context `[] + 10` is -passed to `callcc`'s argument, which then sends it a `5`, so the computation -resumes to `5 + 10`. On the other hand, the program `callcc-not-jump.lambda` - - (callcc (lambda k . (5 + 2))) + 10 - -evaluates to `17`. - -If you like playing games, you can metaphorically think of `callcc e` as -*saving your game state in a file and passing it to your friend `e`*. -Then `e` can decide at some moment to drop everything she was doing, load -your game and continue to play it from where you were. - -The behavior of many popular control-changing constructs can be obtained -using `callcc`. The program `callcc-return.lambda` shows, for example, how to -obtain the behavior of a `return` statement, which exits the current execution -context inside a function and returns a value to the caller's context: - - letrec f x = callcc (lambda return . ( - f (if (x <= 0) then ((return 1) / 0) else 2) - )) - in (f -3) - -This should evaluate to `1`, in spite of the recursive call to `f` -and of the division by zero! Note that `return` is nothing but a variable -name, but one which is bound to the current continuation at the beginning of -the function execution. As soon as `1` is passed to `return`, the computation -jumps *back in time* to where `callcc` was defined! Change `-3` to `3` and the -program will loop forever. - -`callcc` is quite a powerful and beautiful language construct, although one -which is admittedly hard to give semantics to in some frameworks. -But not in K :) Here is the entire K syntax and semantics of `callcc`: - - syntax Exp ::= "callcc" Exp [strict] - syntax Val ::= cc(K) - rule (callcc V:Val => V cc(K)) ~> K - rule cc(K) V ~> _ => V ~> K - -Let us first discuss the annotated syntax. We declared `callcc` strict, -because its argument may not necessarily be a function yet, so it may need -to be evaluated. As explained above, we need to encode the remaining -computation somehow and pass it to `callcc`'s argument. More specifically, -since LAMBDA is call-by-value, we have to encode the remaining computation as -a value. We do not want to simply subsort computations to `Val`, because there -are computations which we do not want to be values. A simple solution to -achieve our goal here is to introduce a new value construct, say `cc` (from -*current-continuation*), which holds any computation. - -Note that, inspired from [SDF](http://www.program-transformation.org/Sdf/), -K allows you to define the syntax of helping semantic operations, like `cc`, -more compactly. Typically, we do not need a fancy syntax for such operators; -all we need is a name, followed by open parenthesis, followed by a -comma-separated list of arguments, followed by closed parenthesis. If this -is the syntax that you want for a particular construct, then K allows you to -drop all the quotes surrounding the terminals, as we did above for `cc`. - -The semantic rules do exactly what the English semantics of `callcc` says. -Note that here, unlike in our definition of LAMBDA in Tutorial 1, we had -to mention the cell `` in our rules. This is because we need to make sure -that we match the entire remaining computation, not only a fragment of it! -For example, if we replace the two rules above with - - rule (callcc V:Val => V cc(K)) ~> K - rule cc(K) V ~> _ => V ~> K - -then we get a `callcc` which is allowed to non-deterministically pick a -prefix of the remaining computation and pass it to its argument, and then -when invoked within its argument, a non-deterministic prefix of the new -computation is discarded and replaced by the saved one. Wow, that would -be quite a language! Would you like to write programs in it? :) - -Consequently, in K we can abruptly change the execution control flow of a -program by simply changing the contents of the `` cell. This is one of -the advantages of having an explicit representation of the execution context, -like in K or in reduction semantics with evaluation contexts. Constructs like -`callcc` are very hard and non-elegant to define in frameworks such as SOS, -because those implicitly represent the execution context as proof context, -and the latter cannot be easily changed. - -Now that we know how to handle cells in configurations and use them in rules, -in the next lesson we take a fresh look at LAMBDA and define it using -an environment-based style, which avoids the complexity of substitution -(e.g., having to deal with variable capture) and is closer in spirit to how -functional languages are implemented. - - -Go to [Lesson 2, LAMBDA++: Semantic (Non-Syntactic) Computation Items](../lesson_2/README.md). - -[MOVIE (out of date) [6'28"]](https://youtu.be/UZ9iaus024g) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/NOTES.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/NOTES.md deleted file mode 100644 index 6a35b795946..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/NOTES.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Maybe we should change the name of `calCC`, as it is not a good idea to have -two constructs with different semantics but names which cannot be distinguished -easily. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/README.md deleted file mode 100644 index 26a79150734..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/README.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Define a variant of `callcc`, say `callCC`, which never returns to the -current context unless a value is specifically passed to its argument -continuation. Follow a substitution-based style. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda deleted file mode 100644 index 45807b20208..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . ((k 5) + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda.out deleted file mode 100644 index eb2385c1c66..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 15 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda deleted file mode 100644 index 63d757e37e3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . (5 + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda.out deleted file mode 100644 index 94b143e25e6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-not-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 7 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda deleted file mode 100644 index 34aac48a04b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda +++ /dev/null @@ -1,7 +0,0 @@ -// This program evaluated to 10 if we used callcc instead of callCC. -// But with callCC it evaluates to 2. - -letrec f x = callCC (lambda return . - (if (x <= 0) then ((return 1) / 0) else 2) -) -in let a = f 3 in 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda.out deleted file mode 100644 index f91de778ab2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-return.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 2 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda deleted file mode 100644 index dbf1c805985..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callCC (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda.out deleted file mode 100644 index 9051ba6f6aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/callCC-with-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 32 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/callCC/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/Makefile deleted file mode 100644 index 81ad3b4b2f6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile -KOMPILE_FLAGS=--main-module CALLCC --gen-glr-bison-parser diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/README.md deleted file mode 100644 index bfeb1529343..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/README.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Define `callcc` in terms of `callCC`, where `callCC` is explained in the -`callCC` exercise under LAMBDA++, Lesson 1. Follow a substitution-based style. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda deleted file mode 100644 index 2cd3246bd68..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callcc (lambda k . ((k 5) + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda.out deleted file mode 100644 index eb2385c1c66..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 15 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda deleted file mode 100644 index b6f735465cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callcc (lambda k . (5 + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda.out deleted file mode 100644 index 3f513e00efb..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-not-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 17 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda deleted file mode 100644 index 7b872f2ecdb..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda +++ /dev/null @@ -1,11 +0,0 @@ -// This program shows how callcc can implement return. - -letrec f x = callcc (lambda return . ( - f (if (x <= 0) then ((return 1) / 0) else 2) -)) -in (f -3) - -// The above should evaluate to 1, in spite of the recursive call to f -// and of the division by zero! As soon as 1 is passed to return, the -// computation jumps back in time to where callcc was defined! -// Change -3 to 3 and the program will loop forever. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda.out deleted file mode 100644 index 63d0524f749..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-return.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 1 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-with-let.lambda.out deleted file mode 100644 index 9051ba6f6aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-with-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 32 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/Makefile deleted file mode 100644 index a03350d91da..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../callCC/Makefile -KOMPILE_FLAGS=--main-module CALLCC --syntax-module CALLCC-SYNTAX --gen-glr-bison-parser diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/README.md deleted file mode 100644 index c7d01bfe757..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/README.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Define `callCC` in terms of `callcc`, where `callCC` is explained in the -`callCC` exercise under LAMBDA++, Lesson 1. Follow a substitution-based style. - -To facilitate testing, call the main module CALLCC (see tests/config.xml). -For example, you can define a module CALLCC which imports the previous -definition of `callcc` and adds the definition of `callCC` in terms of -`callcc`. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda deleted file mode 100644 index 45807b20208..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . ((k 5) + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda.out deleted file mode 100644 index eb2385c1c66..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 15 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda deleted file mode 100644 index 63d757e37e3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . (5 + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda.out deleted file mode 100644 index 94b143e25e6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-not-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 7 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda deleted file mode 100644 index 34aac48a04b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda +++ /dev/null @@ -1,7 +0,0 @@ -// This program evaluated to 10 if we used callcc instead of callCC. -// But with callCC it evaluates to 2. - -letrec f x = callCC (lambda return . - (if (x <= 0) then ((return 1) / 0) else 2) -) -in let a = f 3 in 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda.out deleted file mode 100644 index f91de778ab2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-return.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 2 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda deleted file mode 100644 index dbf1c805985..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callCC (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda.out deleted file mode 100644 index 9051ba6f6aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/callCC-with-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 32 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-callcc-to-call-CC/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/lambda.k b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/lambda.k deleted file mode 100644 index 5b5f89f0029..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/lambda.k +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR-SYNTAX - - syntax Val ::= KVar - | "lambda" KVar "." Exp [binder, latex(\lambda{#1}.{#2})] - syntax Exp ::= Val - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - syntax Val ::= Int | Bool - syntax Exp ::= "-" Int - > Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] - - syntax Exp ::= "let" KVar "=" Exp "in" Exp [macro] - rule let X = E in E':Exp => (lambda X . E') E - - syntax Exp ::= "letrec" KVar KVar "=" Exp "in" Exp [macro] - | "mu" KVar "." Exp [binder, latex(\mu{#1}.{#2})] - rule letrec F:KVar X = E in E' => let F = mu F . lambda X . E in E' - - syntax Exp ::= "callcc" Exp [strict] - syntax Val ::= cc(K) -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports SUBSTITUTION - imports DOMAINS - - syntax KResult ::= Val - - rule (lambda X:KVar . E:Exp) V:Val => E[V / X] - - rule - I => 0 -Int I - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 - - rule if true then E else _ => E - rule if false then _ else E => E - - rule mu X . E => E[(mu X . E) / X] - - rule (callcc V:Val => V cc(K)) ~> K - rule cc(K) V ~> _ => V ~> K -endmodule diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/media.properties b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/media.properties deleted file mode 100644 index 402a5310734..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=UZ9iaus024g -video_length_secs=388 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/arithmetic.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda deleted file mode 100644 index 2cd3246bd68..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callcc (lambda k . ((k 5) + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda.out deleted file mode 100644 index eb2385c1c66..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 15 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda deleted file mode 100644 index b6f735465cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callcc (lambda k . (5 + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda.out deleted file mode 100644 index 3f513e00efb..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-not-jump.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 17 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda deleted file mode 100644 index 7b872f2ecdb..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda +++ /dev/null @@ -1,11 +0,0 @@ -// This program shows how callcc can implement return. - -letrec f x = callcc (lambda return . ( - f (if (x <= 0) then ((return 1) / 0) else 2) -)) -in (f -3) - -// The above should evaluate to 1, in spite of the recursive call to f -// and of the division by zero! As soon as 1 is passed to return, the -// computation jumps back in time to where callcc was defined! -// Change -3 to 3 and the program will loop forever. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda.out deleted file mode 100644 index 63d0524f749..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-return.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 1 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda deleted file mode 100644 index 61582c62876..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callcc (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda.out deleted file mode 100644 index 9051ba6f6aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/callcc-with-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 32 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda.out deleted file mode 100644 index 7cb2c2a2c1f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda y . ( ( lambda x . lambda y0 . ( x y0 ) ) y ) ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let-fix.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-let.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda.out deleted file mode 100644 index 31643d70cff..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 3628800 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda.out deleted file mode 100644 index 7b3823bafc1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/fibbo.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 13 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda.out deleted file mode 100644 index ea4c74bd38a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - a y ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda.out deleted file mode 100644 index 46c620ac40c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/identity.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - lambda x . x ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda.out deleted file mode 100644 index faedaaaf377..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/if.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - 10 ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda.out deleted file mode 100644 index 123601721d8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/tests/lets.lambda.out +++ /dev/null @@ -1,3 +0,0 @@ - - true ~> . - diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/Makefile deleted file mode 100644 index 3c70403eb73..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=lambda -EXT=lambda -KOMPILE_FLAGS=--syntax-module LAMBDA --enable-search -KRUN_FLAGS=--search --pattern " V:K " - -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/README.md deleted file mode 100644 index 2a001dba070..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/README.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Semantic (Non-Syntactic) Computation Items - -In this lesson we start another semantic definition of LAMBDA++, which -follows a style based on environments instead of substitution. In terms of -K, we will learn how easy it is to add new items to the syntactic category -of computations `K`, even ones which do not have a syntactic nature. - -An environment binds variable names of interest to locations where their -values are stored. The idea of environment-based definitions is to maintain -a global *store* mapping locations to values, and then have environments -available when we evaluate expressions telling where the variables are -located in the store. Since LAMBDA++ is a relatively simple language, we -only need to maintain one global environment. Following a similar style -like in IMP, we place all cells into a top cell `T`: - - configuration - $PGM:Exp - .Map - .Map - - -Recall that `$PGM` is where the program is placed by `krun` after parsing. So -the program execution starts with an empty environment and an empty store. - -In environment-based definitions of lambda-calculi, lambda abstractions -evaluate to so-called *closures*: - - rule lambda X:Id . E => closure(Rho,X,E) ... - Rho - -A closure is like a lambda abstraction, but it also holds the environment -in which it was declared. This way, when invoked, a closure knows where to -find in the store the values of all the variables that its body expression -refers to. We will define the lookup rule shortly. - -Therefore, unlike in the substitution-based definitions of LAMBDA and -LAMBDA++, neither the lambda abstractions nor the identifiers are values -anymore here, because they both evaluate further: lambda abstractions to -closures and identifiers to their values in the store. In fact, the only -values at this moment are the closures, and they are purely semantic entities, -which cannot be used explicitly in programs. That's why we modified the -original syntax of the language to include no `Val` syntactic category -anymore, and that's why we need to add closures as values now; same like -before, we add a `Val` syntactic category which is subsorted -to `KResult`. In general, whenever you have any strictness attributes, -your should also define some K results. - -Invoking a closure is a bit more involved than the substitution-based -beta-reduction: we need to switch to the closure's environment, then create a -new, or fresh, binding for the closure's parameter to the value passed to the -closure, then evaluate the closure's body, and then switch back to the -caller's environment, which needs to be stored somewhere in the meanwhile. -We can do all these with one rule: - - rule closure(Rho,X,E) V:Val => E ~> Rho' ... - Rho' => Rho[X <- !N] - ... .Map => (!N:Int |-> V) ... - -Therefore, we atomically do all the following: - -- switch the computation to the closure's body, `E`, followed by a -caller-environment-recovery task `Rho'` (note that `Rho'` is the -current environment), -- generate a fresh location `!N` (the `!` is important, we discuss it below), -bind `X` to `!N` in closure's environment and switch the current environment -`Rho'` to that one, -- write the value passed to the closure, `V`, at location `!N`. - -This was the most complex K rule we've seen so far in the tutorial. Note, -however, that this one rule achieves a lot. It is, in fact, quite compact -considering how much it does. Note also that everything that this K rule -mentions is needed also conceptually in order to achieve this task, so it -is minimal from that point of view. That would not be the case if we -used, instead, a conventional rewrite rule, because we would have had to -mention the remaining store, say `Sigma`, in both sides of the rule, to say -it stays unchanged. Here we just use `...`. - -The declaration of the *fresh* variable above, `!N`, is new and needs -some explanation. First, note that `!N` appears only in the right-hand-side -terms in the rule, that is, it is not matched when the rule is applied. -Instead, a fresh `Nat` element is generated each time the rule is applied. -In K, we can define syntactic categories which have the capability to -generate fresh elements like above, using unbound variables whose name starts -with a `!`. The details of how to do that are beyond the scope of this -tutorial (see Tutorial 6). All we need to know here is that an arbitrary -fresh element of that syntactic category is generated each time the rule -is applied. We cannot rely on the particular name or value of the generated -element, because that can change with the next version of the K tool, or -even from execution to execution with the same version. All you can rely -on is that each newly generated element is distinct from the previously -generated elements for the same syntactic category. - -Unlike in the substitution-based definition, we now also need a lookup rule: - - rule X => V ... - ... X |-> N ... - ... N |-> V ... - -This rule speaks for itself: replace `X` by the value `V` located in the store -at `X`'s location `N` in the current environment. - -The only thing left to define is the auxiliary environment-recovery operation: - - rule _:Val ~> (Rho => .) ... _ => Rho - -When the item preceding the environment recovery task `Rho` in the -computation becomes a value, replace the current environment with `Rho` -and dissolve `Rho` from the computation. - -Let us kompile and ... fail: - - kompile lambda - -gives a parsing error saying that `V:Val` does not fit there in the closure -invocation rule. That's because `Val` and `Exp` are currently completely -disconnected, so K rightfully complains that we want to apply a value to -another one, because application was defined to work with expressions, not -values. What we forgot here was to state that `Exp` includes `Val`: - - syntax Exp ::= Val - -Now everything works, but it is a good time to reflect a bit. - -So we added closures, which are inherently semantic entities, to the syntax -of expressions. Does that mean that we can now write LAMBDA programs with -closures in them? Interestingly, with our current definition of LAMBDA, -which purposely did not follow the nice organization of IMP into syntax and -semantic modules, and with K's default parser, `kast`, you can. But you are -not supposed to speculate this! In fact, if you use an external parser, that -parser will reject programs with explicit closures. Also, if we split the -LAMBDA definition into two modules, one called LAMBDA-SYNTAX containing -exclusively the desired program syntax and one called LAMBDA importing the -former and defining the syntax of the auxiliary operations and the semantics, -then even K's default parser will reject programs using auxiliary syntactic -constructs. - -Indeed, when you kompile a language, say `lang.k`, the tool will by default -attempt to find a module LANG-SYNTAX and generate the program parser from -that. If it cannot find it, then it will use the module LANG instead. There -are also ways to tell kompile precisely which syntax module you want to use -for the program parser if you don't like the default convention. -See `kompile --help`. - -Another insightful thought to reflect upon, is the relationship between your -language's values and other syntactic categories. It is often the case that -values form a subset of the original language syntax, like in IMP (Part 2 of -the tutorial), but sometimes that is not true, like in our case here. When -that happens, in order for the semantics to be given smoothly and uniformly -using the original syntax, you need to extend your language's original -syntactic categories with the new values. The same holds true in other -semantic approaches, not only in K, even in ones which are considered purely -syntactic. As it should be clear by now, K does not enforce you to use a -purely syntactic style in your definitions; nevertheless, K does allow you to -develop purely syntactic definitions, like LAMBDA in Part 1 of the tutorial, -if you prefer those. - -`krun` some programs, such as those provided in Lesson 1 of the LAMBDA -tutorial (Part 1). Note the closures, both as results in the `` cell, -and as values in the store. Also, since variables are not values anymore, -expressions that contain free variables may get stuck with one of those on -top of their computation. See, for example, `free-variable-capture.lambda`, -which gets stuck on `z`, because `z` is free, so it cannot evaluate it. -If you want, you can go ahead and manually provide a configuration with -`z` mapped to some location in the environment and that location mapped to -some value in the store, and then you can also execute this program. The -program `omega.lambda` should still loop. - -Although we completely changed the definitional style of LAMBDA, the semantics -of the other constructs do not need to change, as seen in the next lesson. - - -Go to [Lesson 3, LAMBDA++: Reusing Existing Semantics](../lesson_3/README.md). - -[MOVIE (out of date) [8'02"]](https://youtu.be/BYhQQW6swfc) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/lambda.k b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/lambda.k deleted file mode 100644 index 70207f54e29..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/lambda.k +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA - imports DOMAINS - syntax Exp ::= Id - | "lambda" Id "." Exp [latex(\lambda{#1}.{#2})] - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - configuration - $PGM:Exp - .Map - .Map - - - syntax Val ::= closure(Map,Id,Exp) - syntax Exp ::= Val - syntax KResult ::= Val - - rule lambda X:Id . E => closure(Rho,X,E) ... - Rho - rule closure(Rho,X,E) V:Val => E ~> Rho' ... - Rho' => Rho[X <- !N] - ... .Map => (!N:Int |-> V) ... - rule X => V ... - ... X |-> N ... - ... N |-> V ... - -// Auxiliary task - rule _:Val ~> (Rho => .) ... _ => Rho -endmodule diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/media.properties b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/media.properties deleted file mode 100644 index fb7f0f49719..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=BYhQQW6swfc -video_length_secs=722 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/Makefile deleted file mode 100644 index 46a572e4b12..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_2/Makefile diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/NOTES.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/NOTES.md deleted file mode 100644 index 3638d79df3d..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/NOTES.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -* Cut-and-paste is a poor-man's approach to reuse. - -Indeed, it is. A better way to reuse, which requires a bit of planning ahead, -is to put each feature in its own module. Then you can simply include the -modules containing the features you want to reuse. Our point in this lesson -was that such reuse is possible, not to teach the best way to do it in -practice. Good methodologies on how to use a technology are equally important. - -* Do we need an env/store split? Couldn't we just work with a state? - -Since in our language so far we never change the value of a variable, it -happens to be OK to only keep a state. That is, to collapse env/store into -state, then embed the state in closures and restore the state instead of the -environment. However, this simplistic approach breaks as soon as we add -references to our language, because functions can then modify the environment -in which they were declared, so we would have to carry over those changes when -returning from function invocations, which would be quite difficult. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/README.md deleted file mode 100644 index b42ce8c1fe3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/README.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Reusing Existing Semantics - -In this lesson we will learn that, in some cases, we can reuse existing -semantics of language features without having to make any change! - -Although the definitional style of the basic LAMBDA language changed quite -radically in our previous lesson, compared to its original definition in -Part 1 of the tutorial, we fortunately can reuse a large portion of the -previous definition. For example, let us just cut-and-paste the rest of the -definition from Lesson 7 in Part 1 of the tutorial. - -Let us `kompile` and `krun` all the remaining programs from Part 1 of the -tutorial. Everything should work fine, although the store contains lots of -garbage. Garbage collection is an interesting topic, but we do not do it -here. Nevertheless, much of this garbage is caused by the intricate use of -the fixed-point combinator to define recursion. In a future lesson in this -tutorial we will see that a different, environment-based definition of -fixed-points will allocate much less memory. - -One interesting question at this stage is: how do we know when we can reuse -an existing semantics of a language feature? Well, I'm afraid the answer is: -we don't. In the next lesson we will learn how reuse can fail for quite subtle -reasons, which are impossible to detect statically (and some non-experts may -fail to even detect them at all). - -Go to [Lesson 4, LAMBDA++: Do Not Reuse Blindly!](../lesson_4/README.md). - -[MOVIE (out of date) [3'21"]](https://youtu.be/tW4KRdgBIGo) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/lambda.k b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/lambda.k deleted file mode 100644 index c6ebf44cc87..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/lambda.k +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA - imports DOMAINS - syntax Exp ::= Id - | "lambda" Id "." Exp [latex(\lambda{#1}.{#2})] - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - configuration - $PGM:Exp - .Map - .Map - - - syntax Val ::= closure(Map,Id,Exp) - syntax Exp ::= Val - syntax KResult ::= Val - - rule lambda X:Id . E => closure(Rho,X,E) ... - Rho - rule closure(Rho,X,E) V:Val => E ~> Rho' ... - Rho' => Rho[X <- !N] - ... .Map => (!N:Int |-> V) ... - rule X => V ... - ... X |-> N ... - ... N |-> V ... - rule _:Val ~> (Rho => .) ... _ => Rho - - syntax Val ::= Int | Bool - syntax Exp ::= Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] - rule if true then E else _ => E - rule if false then _ else E => E - - syntax Exp ::= "let" Id "=" Exp "in" Exp [macro] - rule let X = E in E':Exp => (lambda X . E') E - - syntax Exp ::= "letrec" Id Id "=" Exp "in" Exp [macro] - syntax Id ::= "$x" [token] | "$y" [token] - rule letrec F:Id X:Id = E in E' - => let F = - (lambda $x . ((lambda F . lambda X . E) (lambda $y . ($x $x $y)))) - (lambda $x . ((lambda F . lambda X . E) (lambda $y . ($x $x $y)))) - in E' -endmodule diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/media.properties b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/media.properties deleted file mode 100644 index 837337c00e6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=tW4KRdgBIGo -video_length_secs=201 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda.out deleted file mode 100644 index b6bf03faae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( x |-> 1 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda.out deleted file mode 100644 index 1611b54b2c8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( closure ( .Map , x , lambda y . x ) ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda.out deleted file mode 100644 index 4d5cd5b9c8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_3/tests/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/Makefile deleted file mode 100644 index 46a572e4b12..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_2/Makefile diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/NOTES.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/NOTES.md deleted file mode 100644 index 3c407d754c9..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/NOTES.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -With the current version of the tool (as of Sept 12, 2013), the -callcc-env1.lambda program actually evaluates to 4, as expected. -But the comments in the README are still valid, because it could just as -well evaluate to 3. For example, just replace ...+x with x+..., and it -should evaluate to 3 now. - -Also, the first "fix" suggested in the READMEm to make "+" seqstrict, only -works for that particular program. It does not fix the problem if we change -the program as indicated above. In that case "+" it would need to be -seqstrict(2,1). - -Also, callcc-env2.lambda evaluates to 3 instead of 4, because of the -particular order in which the strictness of the application operation is -applied. If you make application seqstrict(2,1) then you get 4. - -Dec 06, 2014: Looks like we should discuss the --search and --transition -options before this lesson, and then kompile the definition with option ---transition = computational and krun it with --search. - -The README.md says "One is to make `+` `seqstrict` in the semantics, to -enforce its evaluation from left-to-right. Do it and then run the program -above again;". Then it continues and says "The problem is now the -non-deterministic evaluation strategy of the function application construct". -Grigore will add this as an exercise, asking reader to fix this -non-determinism. Then ask them to propose another example where you still get -non-determinism; can they? diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/README.md deleted file mode 100644 index 6efe5cc6455..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/README.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Do Not Reuse Blindly! - -It may be tempting to base your decision to reuse an existing semantics of -a language feature solely on syntactic considerations; for example, to reuse -whenever the parser does not complain. As seen in this lesson, this could -be quite risky. - -Let's try (and fail) to reuse the definition of `callcc` from Lesson 1: - - syntax Exp ::= "callcc" Exp [strict] - syntax Val ::= cc(K) - rule (callcc V:Val => V cc(K)) ~> K - rule cc(K) V ~> _ => V ~> K - -The `callcc` examples that we tried in Lesson 1 work, so it may look it works. - -However, the problem is that `cc(K)` should also include an environment, -and that environment should also be restored when `cc(K)` is invoked. -Let's try to illustrate this bug with `callcc-env1.lambda` - - let x = 1 in - ((callcc lambda k . (let x = 2 in (k x))) + x) - -where the second argument of `+`, `x`, should be bound to the top `x`, which -is 1. However, since `callcc` does not restore the environment, that `x` -should be looked up in the wrong, callcc-inner environment, so we should see -the overall result 4. - -Hm, we get the right result, 3 ... (Note: you may get 4, depending on -your version of K and platform; but both 3 and 4 are possible results, as -explained below and seen in the tests). How can we get 3? Well, recall that -`+` is strict, which means that it can evaluate its arguments in any order. -It just happened that in the execution that took place above its second -argument was evaluated first, to 1, and then the `callcc` was evaluated, but -its `cc` value K had already included the 1 instead of `x` ... In Part 4 of -the tutorial we will see how to explore all the non-deterministic behaviors of -a program; we could use that feature of K to debug semantics, too. -For example, in this case, we could search for all behaviors of this program -and we would indeed get two possible value results: 3 and 4. - -One may think that the problem is the non-deterministic evaluation order -of `+`, and thus that all we need to do is to enforce a deterministic order -in which the arguments of + are evaluated. Let us follow this path to -see what happens. There are two simple ways to make the evaluation order -of `+`'s arguments deterministic. One is to make `+` `seqstrict` in the -semantics, to enforce its evaluation from left-to-right. Do it and then -run the program above again; you should get only one behavior for the -program above, 4, which therefore shows that copying-and-pasting our old -definition of `callcc` was incorrect. However, as seen shortly, that only -fixed the problem for the particular example above, but not in general. -Another conventional approach to enforce the desired evaluation order is to -modify the program to enforce the left-to-right evaluation order using let -binders, as we do in `callcc-env2.lambda`: - - let x = 1 in - let a = callcc lambda k . (let x = 2 in (k x)) in - let b = x in - (a + b) - -With your installation of K you may get the "expected" result 4 when you -execute this program, so it may look like our non-deterministic problem is -fixed. Unfortunately, it is not. Using the K tool to search for all the -behaviors in the program above reveals that the final result 3 is still -possible. Moreover, both the 3 and the 4 behaviors are possible regardless -of whether `+` is declared to be `seqstrict` or just `strict`. How is that -possible? The problem is now the non-deterministic evaluation strategy of -the function application construct. Indeed, recall that the semantics of -the let-in construct is defined by desugaring to lambda application: - - rule let X = E in E' => (lambda X . E') E - -With this, the program above eventually reduces to - - (lambda a . ((lambda b . a + b) x)) - (callcc lambda k . (let x = 2 in (k x))) - -in an environment where `x` is 1. If the first expression evaluates first, -then it does so to a closure in which `x` is bound to a location holding 1, -so when applied later on to the `x` inside the argument of `callcc` (which is -2), it will correctly lookup `x` in its enclosed environment and thus the -program will evaluate to 3. On the other hand, if the second expression -evaluates first, then the `cc` value will freeze the first expression as is, -breaking the relationship between its `x` and the current environment in which -it is bound to 1, being inadvertently captured by the environment of the -let-in construct inside the `callcc` and thus making the entire expression -evaluate to 4. - -So the morale is: Do not reuse blindly. *Think!* - -In the next lesson we fix the environment-based semantics of `callcc` by having -`cc` also wrap an environment, besides a computation. We will also give a more -direct semantics to recursion, based on environments instead of fixed-point -combinators. - -Go to [Lesson 5, LAMBDA++: More Semantic Computation Items](../lesson_5/README.md). - -[MOVIE (out of date) [3'37"]](https://youtu.be/OXvtklaSaSQ) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/lambda.k b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/lambda.k deleted file mode 100644 index 4a5e22402af..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/lambda.k +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA - imports DOMAINS - syntax Exp ::= Id - | "lambda" Id "." Exp [latex(\lambda{#1}.{#2})] - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - configuration - $PGM:Exp - .Map - .Map - - - syntax Val ::= closure(Map,Id,Exp) - syntax Exp ::= Val - syntax KResult ::= Val - - rule lambda X:Id . E => closure(Rho,X,E) ... - Rho - rule closure(Rho,X,E) V:Val => E ~> Rho' ... - Rho' => Rho[X <- !N] - ... .Map => (!N:Int |-> V) ... - rule X => V ... - ... X |-> N ... - ... N |-> V ... - rule _:Val ~> (Rho => .) ... _ => Rho - - syntax Val ::= Int | Bool - syntax Exp ::= Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] - rule if true then E else _ => E - rule if false then _ else E => E - - syntax Exp ::= "let" Id "=" Exp "in" Exp [macro] - rule let X = E in E':Exp => (lambda X . E') E - - syntax Exp ::= "letrec" Id Id "=" Exp "in" Exp [macro] - syntax Id ::= "$x" [token] | "$y" [token] - rule letrec F:Id X:Id = E in E' - => let F = - (lambda $x . ((lambda F . lambda X . E) (lambda $y . ($x $x $y)))) - (lambda $x . ((lambda F . lambda X . E) (lambda $y . ($x $x $y)))) - in E' - - syntax Exp ::= "callcc" Exp [strict] - syntax Val ::= cc(K) - rule (callcc V:Val => V cc(K)) ~> K - rule cc(K) V ~> _ => V ~> K -endmodule diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/media.properties b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/media.properties deleted file mode 100644 index 327ce2ce0b3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=OXvtklaSaSQ -video_length_secs=217 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env1.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env1.lambda.out deleted file mode 100644 index 844768f83de..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env1.lambda.out +++ /dev/null @@ -1,11 +0,0 @@ - { - V:K - #Equals - 3 ~> . - } -#Or - { - V:K - #Equals - 4 ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env2.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env2.lambda.out deleted file mode 100644 index 844768f83de..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env2.lambda.out +++ /dev/null @@ -1,11 +0,0 @@ - { - V:K - #Equals - 3 ~> . - } -#Or - { - V:K - #Equals - 4 ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda deleted file mode 100644 index 61582c62876..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callcc (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda.out deleted file mode 100644 index 4a781c72195..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-with-let.lambda.out +++ /dev/null @@ -1,11 +0,0 @@ - { - V:K - #Equals - 32 ~> . - } -#Or - { - V:K - #Equals - 33 ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda.out deleted file mode 100644 index b6bf03faae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/closed-variable-capture.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( x |-> 1 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda.out deleted file mode 100644 index 1611b54b2c8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( closure ( .Map , x , lambda y . x ) ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda.out deleted file mode 100644 index 4d5cd5b9c8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det deleted file mode 100644 index 73b4c0a011a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det +++ /dev/null @@ -1,11 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests/deterministic -DEFDIR=det -include $(MAKEFILE_PATH)/../../1_lambda/lesson_1/Makefile -# disable bison parser because we are using the Java backend -KOMPILE_FLAGS=--enable-search --syntax-module LAMBDA -KRUN_FLAGS=--pattern " V:K " -# Some of these programs yield nondeterminism unless we kompile with the -# superstrict "strict" option, which is done in Makefile.nondet. We do not -# want to kompile with the superstrict "strict" option for all programs, -# because it is too slow (we should check if it still is slow now). diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet deleted file mode 100644 index 12faa1da825..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet +++ /dev/null @@ -1,7 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests/nondeterministic -DEFDIR=nondet -include $(MAKEFILE_PATH)/../lesson_2/Makefile - -tests/nondeterministic/arithmetic-div-zero.lambda: - true diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/README.md deleted file mode 100644 index f6401f759af..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/README.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# More Semantic Computation Items - -In this lesson we see more examples of semantic (i.e., non-syntactic) -computational items, and how useful they can be. Specifically, we fix the -environment-based definition of `callcc` and give an environment-based -definition of the `mu` construct for recursion. - -Let us first fix `callcc`. As discussed in Lesson 4, the problem that we -noticed there was that we only recovered the computation, but not the -environment, when a value was passed to the current continuation. This is -quite easy to fix: we modify `cc` to take both an environment and a -computation, and its rules to take a snapshot of the current environment with -it, and to recover it at invocation time: - - syntax Val ::= cc(Map,K) - rule (callcc V:Val => V cc(Rho,K)) ~> K Rho - rule cc(Rho,K) V:Val ~> _ => V ~> K _ => Rho - -Let us kompile and make sure it works with the `callcc-env2.lambda` program, -which should evaluate to 3, not to 4. - -Note that the `cc` value, which can be used as a computation item in the `` -cell, is now quite semantic in nature, pretty much the same as the closures. - -Let us next add one more closure-like semantic computational item, for `mu`. -But before that, let us reuse the semantics of `letrec` in terms of `mu` that -was defined in Lesson 8 of Part 1 of the tutorial on LAMBDA: - - syntax Exp ::= "letrec" Id Id "=" Exp "in" Exp [macro] - | "mu" Id "." Exp [latex(\mu{#1}.{#2})] - rule letrec F:Id X = E in E' => let F = mu F . lambda X . E in E' - -We removed the `binder` annotation of `mu`, because it is not necessary -anymore (since we do not work with substitutions anymore). - -To save the number of locations needed to evaluate `mu X . E`, let us replace -it with a special closure which already binds `X` to a fresh location holding -the closure itself: - - syntax Exp ::= muclosure(Map,Exp) - - rule mu X . E => muclosure(Rho[X <- !N], E) ... - Rho - ... .Map => (!N:Int |-> muclosure(Rho[X <- !N], E)) ... - -Since each time `mu X . E` is encountered during the evaluation it needs to -evaluate `E`, we conclude that `muclosure` cannot be a value. We can declare -it as either an expression or as a computation. Let's go with the former. - -Finally, here is the rule unrolling the `muclosure`: - - rule muclosure(Rho,E) => E ~> Rho' ... - Rho' => Rho - -Note that the current environment `Rho'` needs to be saved before and -restored after `E` is executed, because the fixed point may be invoked -from a context with a completely different environment from the one -in which `mu X . E` was declared. - -We are done. Let us now `kompile` and `krun` `factorial-letrec.lambda` from -Lesson 7 in Part 1 of the tutorial on LAMBDA. Recall that in the previous -lesson this program generated a lot of garbage into the store, due to the -need to allocate space for the arguments of all those lambda abstractions -needed to run the fixed-point combinator. Now we need much fewer locations, -essentially only locations for the argument of the factorial function, one at -each recursive call. Anyway, much better than before. - -In the next lesson we wrap up the environment definition of LAMBDA++ and -generate its documentation. - -Go to [Lesson 6, LAMBDA++: Wrapping Up and Documenting LAMBDA++](../lesson_6/README.md). - -[MOVIE (out of date) [5'19"]](https://youtu.be/dP3FW0kZN6k) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/media.properties b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/media.properties deleted file mode 100644 index 449cc3dfa0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=dP3FW0kZN6k -video_length_secs=319 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda deleted file mode 100644 index c717d54a8bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let x = 1 in - ((callcc lambda k . (let x = 2 in (k x))) + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda deleted file mode 100644 index cafc58e5706..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 in - let a = callcc lambda k . (let x = 2 in (k x)) in - let b = x in - (a + b) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda deleted file mode 100644 index 61582c62876..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callcc (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda.out deleted file mode 100644 index b6bf03faae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( x |-> 1 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda.out deleted file mode 100644 index 1611b54b2c8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( closure ( .Map , x , lambda y . x ) ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda.out deleted file mode 100644 index 4d5cd5b9c8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/Makefile deleted file mode 100644 index 1a3516a8009..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../lesson_5/Makefile diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/README.md deleted file mode 100644 index a416576ab3e..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Wrapping Up and Documenting LAMBDA++ - -In this lesson we wrap up and nicely document LAMBDA++. In doing so, we also -take the freedom to reorganize the semantics a bit, to make it look better. - -See the `lambda.k` file, which is self-explanatory. - -Part 3 of the tutorial is now complete. Part 4 will teach you more features -of the K framework, in particular how to exhaustively explore the behaviors -of non-deterministic or concurrent programs. - -[MOVIE (out of date) [6'23"]](https://youtu.be/xfvx6Ss5PcA) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/NOTES.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/NOTES.md deleted file mode 100644 index 6a35b795946..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/NOTES.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Maybe we should change the name of `calCC`, as it is not a good idea to have -two constructs with different semantics but names which cannot be distinguished -easily. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/Makefile deleted file mode 100644 index bdd2b67de12..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../..//Makefile diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/README.md deleted file mode 100644 index 653ada8fffe..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/README.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -(see similar exercise in Lesson 1, with substitution instead of environments) - -Define a variant of `callcc`, say `callCC`, which never returns to the -current context unless a value is specifically passed to its argument -continuation. Follow an environment-based style. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let-fix.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda.out deleted file mode 100644 index a7028cdee68..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/deterministic/fibbo.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 13 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda.out deleted file mode 100644 index 1e1eb478a8b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic-div-zero.lambda.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 1 /Int 0 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/arithmetic.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda deleted file mode 100644 index 45807b20208..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . ((k 5) + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda.out deleted file mode 100644 index 9d3be435ffe..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-jump.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 15 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda deleted file mode 100644 index 63d757e37e3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . (5 + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-not-jump.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda deleted file mode 100644 index 34aac48a04b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda +++ /dev/null @@ -1,7 +0,0 @@ -// This program evaluated to 10 if we used callcc instead of callCC. -// But with callCC it evaluates to 2. - -letrec f x = callCC (lambda return . - (if (x <= 0) then ((return 1) / 0) else 2) -) -in let a = f 3 in 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-return.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda deleted file mode 100644 index dbf1c805985..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callCC (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda.out deleted file mode 100644 index 579a5e290e7..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/callCC-with-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 32 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda.out deleted file mode 100644 index b6bf03faae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/closed-variable-capture.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( x |-> 1 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda.out deleted file mode 100644 index 1611b54b2c8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( closure ( .Map , x , lambda y . x ) ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda.out deleted file mode 100644 index 4d5cd5b9c8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/if.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/callCC/tests/nondeterministic/lets.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/Makefile deleted file mode 100644 index 5fd16bea8cd..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile -export KOMPILE_FLAGS=--main-module CALLCC --enable-search diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/README.md deleted file mode 100644 index 38f20bb7e5f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/README.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Define `callcc` in terms of `callCC`, where `callCC` is explained in the -`callCC` exercise under LAMBDA++, Lesson 1. Follow an environment-based style. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let-fix.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda.out deleted file mode 100644 index a7028cdee68..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/deterministic/fibbo.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 13 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda.out deleted file mode 100644 index 1e1eb478a8b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic-div-zero.lambda.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 1 /Int 0 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/arithmetic.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda deleted file mode 100644 index c717d54a8bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let x = 1 in - ((callcc lambda k . (let x = 2 in (k x))) + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env1.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda deleted file mode 100644 index cafc58e5706..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 in - let a = callcc lambda k . (let x = 2 in (k x)) in - let b = x in - (a + b) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-env2.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-with-let.lambda.out deleted file mode 100644 index 4aaa0d27320..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/callcc-with-let.lambda.out +++ /dev/null @@ -1,9 +0,0 @@ -Search results: - -Solution 1: -V:K@SORT-K --> -32 - -Solution 2: -V:K@SORT-K --> -33 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda.out deleted file mode 100644 index b6bf03faae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/closed-variable-capture.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( x |-> 1 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda.out deleted file mode 100644 index 1611b54b2c8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( closure ( .Map , x , lambda y . x ) ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___LAMBDA_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda.out deleted file mode 100644 index 4d5cd5b9c8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/if.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-call-CC-to-callcc/tests/nondeterministic/lets.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/Makefile b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/Makefile deleted file mode 100644 index 11c676df6b9..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../callCC/Makefile -export KOMPILE_FLAGS=--main-module CALLCC --syntax-module CALLCC-SYNTAX --enable-search diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/README.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/README.md deleted file mode 100644 index e5fa40a911e..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/README.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Define `callCC` in terms of `callcc`, where `callCC` is explained in the -`callCC` exercise under LAMBDA++, Lesson 1. Follow an environment-based -style. diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let-fix.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda.out deleted file mode 100644 index a7028cdee68..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/deterministic/fibbo.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 13 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda.out deleted file mode 100644 index 1e1eb478a8b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic-div-zero.lambda.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 1 /Int 0 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/arithmetic.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda deleted file mode 100644 index 45807b20208..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . ((k 5) + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda.out deleted file mode 100644 index 9d3be435ffe..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-jump.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 15 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda deleted file mode 100644 index 63d757e37e3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda +++ /dev/null @@ -1 +0,0 @@ -(callCC (lambda k . (5 + 2))) + 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-not-jump.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda deleted file mode 100644 index 34aac48a04b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda +++ /dev/null @@ -1,7 +0,0 @@ -// This program evaluated to 10 if we used callcc instead of callCC. -// But with callCC it evaluates to 2. - -letrec f x = callCC (lambda return . - (if (x <= 0) then ((return 1) / 0) else 2) -) -in let a = f 3 in 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-return.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda deleted file mode 100644 index dbf1c805985..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callCC (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda.out deleted file mode 100644 index 579a5e290e7..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/callCC-with-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 32 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda.out deleted file mode 100644 index 60cf0f5d926..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/closed-variable-capture.lambda.out +++ /dev/null @@ -1,6 +0,0 @@ -{ - V:K -#Equals - closure ( $exit |-> 0 - x |-> 2 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda.out deleted file mode 100644 index f7740318bbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___CALLCC_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> .Map ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___CALLCC_Exp_Exp_Exp1_ ( closure ( $exit |-> 0 , x , lambda y . x ) ~> . ) ~> #freezer___CALLCC_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___CALLCC_Exp_Exp_Exp1_ ( a ~> . ) ~> .Map ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___CALLCC_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___CALLCC_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___CALLCC_Exp_Exp_Exp1_ ( a ~> . ) ~> .Map ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___CALLCC_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___CALLCC_Exp_Exp_Exp1_ ( a ~> . ) ~> .Map ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda.out deleted file mode 100644 index 7252b7ebde5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( $exit |-> 0 , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/if.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/exercises/from-callcc-to-call-CC/tests/nondeterministic/lets.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/lambda.md b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/lambda.md deleted file mode 100644 index 466bb86a8fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/lambda.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Tutorial 3--- LAMBDA++ -====================== - -Author: Grigore Roșu (grosu@illinois.edu) -Organization: University of Illinois at Urbana-Champaign - -### Abstract -This file contains an environment-based **K** semantic definition of LAMBDA++, an -extension of the LAMBDA language (defined in Tutorial 1) with a `callcc` -construct. The objective here is to further disseminate some of the features -of the K framework, in particular to illustrate how popular environment-based -and closure-based semantics can be defined in K. - -For notational/kompilation/krun simplicity and to avoid OS errors, we continue -to write LAMBDA and lambda as names for modules and program extensions, -respectively, in the sequel. - -To restrict the default program parser invoked by krun, namely kast, -to only parse proper LAMBDA++ programs no matter what other syntactic -constructs we add to Exp later on in the semantics, we put the actual program -syntax in a module with the suffix `-SYNTAX`. This issue was discussed in more -detail in Lesson 2 of this tutorial. In short, the parser generated by kompile -to be used by kast will be by default built only based on the syntax in this -module. Type `kompile --help` to see how to tell the parser which syntax to use. - -```k -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX -``` -### Syntax -We move all the LAMBDA++ syntax here. - -```k - syntax Val ::= Int | Bool - syntax Exp ::= Val -// Basic lambda-calculus syntax - | Id - | "lambda" Id "." Exp [latex(\lambda{#1}.{#2})] - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] -// Arithmetic - > "-" Int - | Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] -// Other functional constructs - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] // Conditional - | "let" Id "=" Exp "in" Exp [macro] // Let binder - | "letrec" Id Id "=" Exp "in" Exp [macro] // Letrec - | "mu" Id "." Exp [latex(\mu{#1}.{#2})] // Mu - | "callcc" Exp [strict] // Callcc -``` - -One thing you may want to do, now that the entire syntax is in one -place, is to play with precedences. This way, you can make kompile -generate the parser you want for your programs, so that you won't have to -put lots of parentheses in your programs. -```k -endmodule - - -module LAMBDA - imports LAMBDA-SYNTAX - imports DOMAINS -``` -### Semantics -The next module contains the semantics of all the LAMBDA++ constructs, -in the order in which their syntax was declared above. - -### The K Results -We should not forget to define the results of our computations. -Here is a rule of thumb: whenever you have any strictness attributes, your -should also define some K results. Or even simpler: _always define your -results!_ (unless you define a theoretical semantics, for analysis but not -for execution purposes, you will need to define your results) -```k - syntax KResult ::= Val -``` - -### Configuration -Since LAMBDA++ is such a simple language, its configuration is minimal -for an environment-based semantics: it only contains the `k` cell, -an environment cell, and a store cell. An environment binds variable names -to locations, and a store binds locations to values. -```k - configuration - $PGM:Exp - .Map - .Map - -``` -Recall that `$PGM` is where the program is placed by krun after parsing. - -### Closures -In environment-based definitions of lambda-calculi, λ-abstractions -evaluate to _closures_. A closure is like a λ-abstraction, -but it also holds the environment in which it was declared. This way, when -invoked, a closure knows where to find in the store the values of all the -variables that its body expression refers to. -To invoke a closure, we need to switch to closure's environment, then create -a new binding for closure's parameter, then evaluate the closure's body, and -then switch back to caller's environment. - -```k - syntax Val ::= closure(Map,Id,Exp) - [latex(\textsf{closure}_\lambda({#1},{#2},{#3}))] - - rule lambda X:Id . E => closure(Rho,X,E) ... - Rho - rule closure(Rho,X,E) V:Val => E ~> Rho' ... - Rho' => Rho[X <- !N] - ... .Map => (!N:Int |-> V) ... - rule X => V ... - ... X |-> N ... - ... N |-> V ... -``` - -### Environment Recovery -The environment-recovery computation item defined below is useful in many -semantics, like it was above. It is so useful, that there are discussions -in the **K** team to add it to the set of pre-defined **K** features. - -```k - rule _:Val ~> (Rho => .) ... _ => Rho -``` - -### Arithmetic Constructs -Not much to say here. They have exactly the same semantics as in LAMBDA and -IMP. Note that we let it in programmer's hands to check that the denominator -of a division is different from zero. If a division-by-zero is issued, then -completely non-deterministic result can happen depending upon what back-end -one uses for the K tool. Currently, Maude is used and Maude gets stuck -with a term of the form `I /Int 0`, but one should not rely on that. -If you want to catch division-by-zero in the semantics, instead of letting -the back-end do whatever it wants, you should add a side condition to the -division rule. - -```k - rule - I => 0 -Int I - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 - rule I1 + I2 => I1 +Int I2 - rule I1 <= I2 => I1 <=Int I2 -``` - -### Conditional - -```k - rule if true then E else _ => E - rule if false then _ else E => E -``` - -### Let Binder - -```k - rule let X = E in E':Exp => (lambda X . E') E -``` - -### Letrec Binder -We define `letrec` in term of `mu`, whose semantics is below. - -```k - rule letrec F:Id X = E in E' => let F = mu F . lambda X . E in E' -``` - -### Mu -To save the number of locations needed to evaluate `μ X . E`, we replace it -with a special closure which binds `X` to a fresh location holding the closure -itself. This has the same effect as binding `X` to a reference that points -back to the fixed-point. - -```k - syntax Exp ::= muclosure(Map,Exp) - [latex(\textsf{closure}_\mu({#1},{#2}))] - rule mu X . E => muclosure(Rho[X <- !N], E) ... - Rho - ... .Map => (!N:Int |-> muclosure(Rho[X <- !N], E)) ... - rule muclosure(Rho,E) => E ~> Rho' ... - Rho' => Rho -``` - -### Callcc -For `callcc`, we need to create a new closure-like value which -wraps both the remaining computation, and the environment in which it is -supposed to be executed. Forget the environment, and you get a wrong -`callcc`. - -```k - syntax Val ::= cc(Map,K) - [latex(\textsf{closure}_{\texttt{callcc}}({#1},{#2}))] - rule (callcc V:Val => V cc(Rho,K)) ~> K Rho - rule cc(Rho,K) V:Val ~> _ => V ~> K _ => Rho -endmodule -``` diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/media.properties b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/media.properties deleted file mode 100644 index c1ac74b8cf8..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=xfvx6Ss5PcA -video_length_secs=383 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda deleted file mode 100644 index 54c86722d88..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda +++ /dev/null @@ -1,7 +0,0 @@ -let fix = lambda f . ( - (lambda x . (f (lambda y . (x x y)))) - (lambda x . (f (lambda y . (x x y)))) - ) -in let f = fix (lambda f . lambda x . - (if x <= 1 then 1 else (x * (f (x + -1))))) - in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let-fix.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda deleted file mode 100644 index 3d0a415af36..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f = lambda x . ( - (lambda t . lambda x . (t t x)) - (lambda f . lambda x . (if x <= 1 then 1 else (x * (f f (x + -1))))) - x - ) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda deleted file mode 100644 index 2bdce53ba41..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda.out deleted file mode 100644 index 1c843187ac5..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3628800 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda deleted file mode 100644 index b779adc6851..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda +++ /dev/null @@ -1 +0,0 @@ -(mu f . lambda x . if x <=1 then x else ((f (x + -1)) + (f (x + -2)))) 7 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda.out deleted file mode 100644 index a7028cdee68..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/deterministic/fibbo.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 13 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda deleted file mode 100644 index a6b7d5920c6..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda +++ /dev/null @@ -1 +0,0 @@ -1/(2/3) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda.out deleted file mode 100644 index 1e1eb478a8b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic-div-zero.lambda.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 1 /Int 0 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda deleted file mode 100644 index 4893f8b5b19..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda +++ /dev/null @@ -1 +0,0 @@ -(1 + 2 * 3) / 4 <= 1 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/arithmetic.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda deleted file mode 100644 index c717d54a8bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let x = 1 in - ((callcc lambda k . (let x = 2 in (k x))) + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env1.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda deleted file mode 100644 index cafc58e5706..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 in - let a = callcc lambda k . (let x = 2 in (k x)) in - let b = x in - (a + b) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-env2.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda deleted file mode 100644 index 61582c62876..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let x = 1 in -let x = 2 in -((callcc (lambda k . -let x = 3 in -(k x))) * 10 + x) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda.out deleted file mode 100644 index 579a5e290e7..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/callcc-with-let.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 32 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda deleted file mode 100644 index 6209d1d1fb2..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -(lambda z.(z z)) (lambda x.lambda y.(x y)) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda.out deleted file mode 100644 index b6bf03faae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/closed-variable-capture.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( x |-> 1 , y , x y ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda deleted file mode 100644 index 793931475bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda +++ /dev/null @@ -1 +0,0 @@ -a (((lambda x.lambda y.x) y) z) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda.out deleted file mode 100644 index d39db2f2398..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/free-variable-capture.lambda.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - a ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp0_ ( ( lambda x . lambda y . x ) y z ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( closure ( .Map , x , lambda y . x ) ~> . ) ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - y ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( lambda x . lambda y . x ~> . ) ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp0_ ( z ~> . ) ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } -#Or - { - V:K - #Equals - z ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( ( lambda x . lambda y . x ) y ~> . ) ~> #freezer___LAMBDA-SYNTAX_Exp_Exp_Exp1_ ( a ~> . ) ~> . - } diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda deleted file mode 100644 index beeea9eda4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . x diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda.out deleted file mode 100644 index 4d5cd5b9c8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x , x ) ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda deleted file mode 100644 index f82975e8ed3..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda +++ /dev/null @@ -1 +0,0 @@ -if 2<=1 then 3/0 else 10 diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/if.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda deleted file mode 100644 index fc3ecccc3ec..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda +++ /dev/null @@ -1,5 +0,0 @@ -let a=1 in - let b=2 in - let c=3 in - let d=4 in - ((a+b*c)/d <= a) diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda.out b/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda.out deleted file mode 100644 index a01c03d1210..00000000000 --- a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_6/tests/nondeterministic/lets.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - true ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/Makefile deleted file mode 100644 index c04fe35af95..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=lesson_1 lesson_2 lesson_3 lesson_4 lesson_5 lesson_6 lesson_7 lesson_8 - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/README.md deleted file mode 100644 index f4b237c5407..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/README.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Part 4: Defining IMP++ - -IMP++ extends IMP, which was discussed in Part 2 of this tutorial, with several -new syntactic constructs. Also, some existing syntax is generalized, which -requires non-modular changes of the existing IMP semantics. For example, -global variable declarations become local declarations and can occur -anywhere a statement can occur. In this tutorial we will learn the following: - -* That (and how) existing syntax/semantics may change as a language evolves. -* How to refine configurations as a language evolves. -* How to define and use fresh elements of desired sorts. -* How to tag syntactic constructs and rules, and how to use such tags - with the `superheat`/`supercool`/`transition` options of `kompile`. -* How the `search` option of `krun` works. -* How to stream cells holding semantic lists to the standard input/output, - and thus obtain interactive interpreters for the defined languages. -* How to delete, save and restore cell contents. -* How to add/delete cells dynamically. -* More details on how the configuration abstraction mechanism works. - -Like in the previous tutorials, this folder contains several lessons, each -adding new features to IMP++. Do them in order and make sure you completed -and understood the previous tutorials. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/Makefile deleted file mode 100644 index 94482c8233a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../2_imp/lesson_1/Makefile -KOMPILE_FLAGS+=--enable-search - -tests/div.imp: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled --search $(CHECK) $@.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/NOTES.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/NOTES.md deleted file mode 100644 index 393a4ef9552..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/NOTES.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Add an exercise somewhere with a print which first evaluates all its arguments -and THEN prints them. The idea is to define `print` to be `strict` and to -make the `AExps` list construct `seqstrict`, so lists of arithmetic -expressions get evaluated from left-to-right whenever they reach the top of -the `` cell (replace `seqstrict` with `strict` if you want expressions in -a list to evaluate non-deterministically and interleaved). diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/README.md deleted file mode 100644 index 79a02e044f9..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/README.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Extending/Changing an Existing Language Syntax - -Here we learn how to extend the syntax of an existing language, both with -new syntactic constructs and with more general uses of existing constructs. -The latter, in particular, requires changes of the existing semantics. - -Consider the IMP language, as defined in Lesson 4 of Part 2 of the tutorial. - -Let us first add the new syntactic constructs, with their precedences: - -- variable increment, `++`, which increments an integer variable and - evaluates to the new value; -- `read`, which reads and evaluates to a new integer from the input buffer; -- `print`, which takes a comma-separated list of arithmetic expressions and - evaluates and prints each of them in order, from left to right, to the - output buffer; we therefore define a new list syntactic category, `AExps`, - which we pass as an argument to `print`; note we do not want to declare - `print` to be `strict`, because we do not want to first evaluate the - arguments and then print them (for example, if the second argument performs - an illegal operation, say division by zero, we still want to print the first - argument); we also go ahead and add strings as arithmetic expressions, - because we intend print to also take strings, in order to print nice - messages to the user; -- `halt`, which abruptly terminates the program; and -- `spawn`, which takes a statement and creates a new concurrent thread - executing it and sharing its environment with the parent thread. - -Also, we want to allow local variable declarations, which can appear anywhere -a statement can appear. Their scope ranges from the place they are defined -until the end of the current block, and they can shadow previous declarations, -both inside and outside the current block. The simplest way to define the -syntax of the new variable declarations is as ordinary statements, at the same -time removing the previous `Pgm` syntactic category and its construct. -Programs are now just statements. - -We are now done with adding the new syntax and modifying the old one. -Note that the old syntax was modified in a way which makes the previous IMP -programs still parse, but this time as statements. Let us then modify -the configuration variable `$PGM` to have the sort `Stmt` instead of `Pgm`, -and let us try to run the old IMP programs, for example `sum.imp`. - -Note that they actually get stuck with the _global_ declaration on the top -of their computations. This is because variable declarations are now treated -like any statements, in particular, the sequential composition rule applies. -This makes the old IMP rule for global variable declarations not match anymore. -We can easily fix it by replacing the anonymous variable `_`, which matched -the program's statement that now turned into the remaining computation in -the `` cell, with the cell frame variable `...`, which matches the -remaining computation. Similarly, we have to change the rule for the case -where there are no variables left to declare into one that dissolves itself. - -We can now run all the previous IMP programs, in spite of the fact that -our IMP++ semantics is incomplete and, more interestingly, in spite of the -fact that our current semantics of blocks is incorrect in what regards the -semantics of local variable declarations (note that the old IMP programs do -not declare block-local variables, which is why they still run correctly). - -Let us also write some proper IMP++ programs, which we would like to execute -once we give semantics to the new constructs. - -`div.imp` is a program manifesting non-deterministic behaviors due to the -desired non-deterministic evaluation strategy of division and the fact that -expressions will have side effects once we add variable increment. We will -be able to see all the different behaviors of this program. Challenge: can -you identify the behavior where the program performs a division-by-zero? - -If we run `div.imp` now, it will get stuck with the variable increment -construct on top of the computation cell. Once we give it a semantics, -`div.imp` will execute completely (all the other constructs in `div.imp` -already have their semantics defined as part of IMP). - -Note that some people prefer to define all their semantics in a _by need_ -style, that is, they first write and parse lots of programs, and then they -add semantics to each language construct on which any of the programs gets -stuck, and so on and so forth until they can run all the programs. - -`io.imp` is a program which exercises the input/output capabilities of the -language: reads two integers and prints three strings and an integer. -Note that the variable declaration is not the first statement anymore. - -`sum-io.imp` is an interactive variant of the sum program. - -`spawn.imp` is a program which dynamically creates two threads that interact -with the main thread via the shared variable x. Lots of behaviors will be -seen here once we give spawn the right semantics. - -Finally, `locals.imp` tests whether variable shadowing/unshadowing works well. - -In the next lesson we will prepare the configuration for the new constructs, -and will see what it takes to adapt the semantics to the new configuration. -Specifically, we will split the state cell into an environment cell and a -store cell, like in LAMBDA++ in Part 3 of the tutorial. - -Go to [Lesson 2, IMP++: Configuration Refinement; Freshness](../lesson_2/README.md). - -[MOVIE (out of date) [07'47"]](https://youtu.be/hWqJ8k9NNp8) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/media.properties deleted file mode 100644 index b4dbb490c01..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=hWqJ8k9NNp8 -video_length_secs=467 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp.out deleted file mode 100644 index 4e77a353e3c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/collatz.imp.out +++ /dev/null @@ -1,12 +0,0 @@ - - - . - - - m |-> 2 - n |-> 1 - q |-> 1 - r |-> 3 - s |-> 66 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/div.imp.out deleted file mode 100644 index b92be8cce6c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/div.imp.out +++ /dev/null @@ -1,41 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - ++ x ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp0_ ( 1 ~> . ) ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp1_ ( ++ x ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( y ~> . ) ~> . - - - x |-> 1 - y |-> 0 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - ++ x ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp0_ ( ++ x / x ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( y ~> . ) ~> . - - - x |-> 1 - y |-> 0 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - ++ x ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp0_ ( x ~> . ) ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp1_ ( ++ x ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( y ~> . ) ~> . - - - x |-> 1 - y |-> 0 - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/io.imp.out deleted file mode 100644 index dadd9f37ba5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/io.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - print ( "Input two numbers: " , .Ids ) ; ~> int x , y , .Ids ; ~> x = read ( ) ; ~> y = read ( ) ; ~> print ( "Their sum is: " , x + y , "\n" , .Ids ) ; ~> . - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/locals.imp.out deleted file mode 100644 index 50c438887d0..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/locals.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - print ( "Line 3: x = " , x , "\n" , .Ids ) ; ~> { int x , .Ids ; x = 2 ; print ( "Line 7: x = " , x , "\n" , .Ids ) ; { int x , .Ids ; x = 3 ; print ( "Line 11: x = " , x , "\n" , .Ids ) ; } print ( "Line 13: x = " , x , "\n" , .Ids ) ; } ~> print ( "Line 15: x = " , x , "\n" , .Ids ) ; ~> . - - - x |-> 1 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp.out deleted file mode 100644 index dc1326e506a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/primes.imp.out +++ /dev/null @@ -1,17 +0,0 @@ - - - . - - - i |-> 2 - m |-> 10 - n |-> 11 - q |-> 0 - r |-> 1 - s |-> 4 - t |-> 0 - x |-> 0 - y |-> 20 - z |-> 10 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp.out deleted file mode 100644 index 3ad7733084a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/spawn.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - print ( "x = " , .Ids ) ; ~> x = read ( ) ; ~> spawn x = x / 2 ; ~> spawn x = x + 10 ; ~> print ( x , "\n" , .Ids ) ; ~> . - - - x |-> 0 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum-io.imp.out deleted file mode 100644 index 6cda5667794..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum-io.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - print ( "Add numbers up to (<= 0 to quit)? " , .Ids ) ; ~> n = read ( ) ; ~> if ( n <= 0 ) { halt ; } else { s = 0 ; while ( ! n <= 0 ) { s = s + n ; n = n + - 1 ; } print ( "Sum = " , s , "\n" , .Ids ) ; } ~> while ( true ) { print ( "Add numbers up to (<= 0 to quit)? " , .Ids ) ; n = read ( ) ; if ( n <= 0 ) { halt ; } else { s = 0 ; while ( ! n <= 0 ) { s = s + n ; n = n + - 1 ; } print ( "Sum = " , s , "\n" , .Ids ) ; } } ~> . - - - n |-> 0 - s |-> 0 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp.out deleted file mode 100644 index f72ab68a441..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - . - - - n |-> 0 - sum |-> 5050 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/NOTES.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/NOTES.md deleted file mode 100644 index 812d07e8f4c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/NOTES.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -update discussion on fresh; it has already been explained in lambda++ diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/README.md deleted file mode 100644 index 87dcbe0df47..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/README.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Configuration Refinement; Freshness - -To prepare for the semantics of threads and local variables, in this lesson we -split the state cell into an environment and a store. The environment and -the store will be similar to those in the definition of LAMBDA++ in Part -3 of the Tutorial. This configuration refinement will require us to change -some of IMP's rules, namely those that used the state. - -To split the state map, which binds program variables to values, into an -environment mapping program variables to locations and a store mapping -locations to values, we replace in the configuration declaration the cell - - .Map - -with two cells - - .Map - .Map - -Structurally speaking, this split of a cell into other cells is a major -semantic change, which, unfortunately, requires us to revisit the existing -rules that used the state cell. One could, of course, argue that we could -have avoided this problem if we had followed from the very beginning the -good-practice style to work with an environment and a store, instead of a -monolithic state. While that is a valid argument, highlighting the fact that -modularity is not only a feature of the framework alone, but one should also -follow good practices to achieve it, it is also true that if all we wanted -in Part 2 of the tutorial was to define IMP as is, then the split of the state -in an environment and a store is unnecessary and not really justified. - -The first rule which used a state cell is the lookup rule: - - rule X:Id => I ... ... X |-> I ... - -We modify it as follows: - - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... - -So we first match the location `N` of `X` in the environment, then the value -`I` at location `N` in the store, and finally we rewrite `X` to `I` into the -computation. This rule also shows an instance of a more complex -multiset matching, where two variables (`X` and `N`) are matched each twice. - -The assignment rule is modified quite similarly. - -The variable declaration rule is trickier, though, because we need to allocate -a fresh location in the store and bind the newly declared variable to it. -This is quite similar to the way we allocated space for variables in -the environment-based definition of LAMBDA++ in Part 3 of the tutorial. - - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - -Note the use of the fresh (`!N`) variable notation above. Recall from -the LAMBDA++ tutorial that each time the rule with fresh (`!`) variables is -applied, fresh elements of corresponding sorts are generated for the fresh -variables, distinct from all the previously generated elements; also, we -cannot and should not assume anything about the particular element that is -being generated, except that it is different from the previous ones. - -`kompile` and `krun` `sum.imp` to see how the fresh locations have been -generated and used. There were two fresh locations needed, for the two -variables. Note also that a cell holding the counter has been added to the -configuration. - -In the next lesson we will add the semantics of variable increment, and see -how that yields non-deterministic behaviors in programs and how to explore -those behaviors using the K tool. - -Go to [Lesson 3, IMP++: Tagging; Superheat/Supercool Kompilation Options](../lesson_3/README.md). - -[MOVIE (out of date) [04'06"]](https://youtu.be/f-qrqs8cMcU) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/imp.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/imp.k deleted file mode 100644 index 66aafa39aa6..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/imp.k +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" Int - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "spawn" Stmt - > Stmt Stmt [left] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool - - configuration - $PGM:Stmt - .Map - .Map - - -// AExp - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... - rule I1 / I2 => I1 /Int I2 when I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I -// BExp - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -// Block - rule {} => . - rule {S} => S -// Stmt - rule X = I:Int; => . ... - ... X |-> N ... - ... N |-> (_ => I) ... - rule S1:Stmt S2:Stmt => S1 ~> S2 - rule if (true) S else _ => S - rule if (false) _ else S => S - rule while (B) S => if (B) {S while (B) S} else {} - - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - rule int .Ids; => . -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/media.properties deleted file mode 100644 index cdb87d2e400..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=f-qrqs8cMcU -video_length_secs=246 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp.out deleted file mode 100644 index 25e89858d8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/collatz.imp.out +++ /dev/null @@ -1,19 +0,0 @@ - - - . - - - m |-> 0 - n |-> 1 - q |-> 2 - r |-> 3 - s |-> 4 - - - 0 |-> 2 - 1 |-> 1 - 2 |-> 1 - 3 |-> 3 - 4 |-> 66 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp.out deleted file mode 100644 index 197e36c6358..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/div.imp.out +++ /dev/null @@ -1,53 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - ++ x ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp0_ ( 1 ~> . ) ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp1_ ( ++ x ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( y ~> . ) ~> . - - - x |-> 0 - y |-> 1 - - - 0 |-> 1 - 1 |-> 0 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - ++ x ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp0_ ( ++ x / x ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( y ~> . ) ~> . - - - x |-> 0 - y |-> 1 - - - 0 |-> 1 - 1 |-> 0 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - ++ x ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp0_ ( x ~> . ) ~> #freezer_/__IMP-SYNTAX_AExp_AExp_AExp1_ ( ++ x ~> . ) ~> #freezer_=_;_IMP-SYNTAX_Stmt_Id_AExp1_ ( y ~> . ) ~> . - - - x |-> 0 - y |-> 1 - - - 0 |-> 1 - 1 |-> 0 - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp.out deleted file mode 100644 index 0abd9904be6..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/io.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - - - print ( "Input two numbers: " , .Ids ) ; ~> int x , y , .Ids ; ~> x = read ( ) ; ~> y = read ( ) ; ~> print ( "Their sum is: " , x + y , "\n" , .Ids ) ; ~> . - - - .Map - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp.out deleted file mode 100644 index e6e28e2b577..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/locals.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - - - print ( "Line 3: x = " , x , "\n" , .Ids ) ; ~> { int x , .Ids ; x = 2 ; print ( "Line 7: x = " , x , "\n" , .Ids ) ; { int x , .Ids ; x = 3 ; print ( "Line 11: x = " , x , "\n" , .Ids ) ; } print ( "Line 13: x = " , x , "\n" , .Ids ) ; } ~> print ( "Line 15: x = " , x , "\n" , .Ids ) ; ~> . - - - x |-> 0 - - - 0 |-> 1 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp.out deleted file mode 100644 index 9434601ef42..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/primes.imp.out +++ /dev/null @@ -1,29 +0,0 @@ - - - . - - - i |-> 0 - m |-> 1 - n |-> 2 - q |-> 3 - r |-> 4 - s |-> 5 - t |-> 6 - x |-> 7 - y |-> 8 - z |-> 9 - - - 0 |-> 2 - 1 |-> 10 - 2 |-> 11 - 3 |-> 0 - 4 |-> 1 - 5 |-> 4 - 6 |-> 0 - 7 |-> 0 - 8 |-> 20 - 9 |-> 10 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp.out deleted file mode 100644 index c2be178bcbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/spawn.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - - - print ( "x = " , .Ids ) ; ~> x = read ( ) ; ~> spawn x = x / 2 ; ~> spawn x = x + 10 ; ~> print ( x , "\n" , .Ids ) ; ~> . - - - x |-> 0 - - - 0 |-> 0 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp.out deleted file mode 100644 index e93a02ef253..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum-io.imp.out +++ /dev/null @@ -1,13 +0,0 @@ - - - print ( "Add numbers up to (<= 0 to quit)? " , .Ids ) ; ~> n = read ( ) ; ~> if ( n <= 0 ) { halt ; } else { s = 0 ; while ( ! n <= 0 ) { s = s + n ; n = n + - 1 ; } print ( "Sum = " , s , "\n" , .Ids ) ; } ~> while ( true ) { print ( "Add numbers up to (<= 0 to quit)? " , .Ids ) ; n = read ( ) ; if ( n <= 0 ) { halt ; } else { s = 0 ; while ( ! n <= 0 ) { s = s + n ; n = n + - 1 ; } print ( "Sum = " , s , "\n" , .Ids ) ; } } ~> . - - - n |-> 0 - s |-> 1 - - - 0 |-> 0 - 1 |-> 0 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp.out deleted file mode 100644 index afc535a879c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_2/tests/sum.imp.out +++ /dev/null @@ -1,13 +0,0 @@ - - - . - - - n |-> 0 - sum |-> 1 - - - 0 |-> 0 - 1 |-> 5050 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/Makefile deleted file mode 100644 index 4e4ee8e1a05..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_1/Makefile diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/NOTES.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/NOTES.md deleted file mode 100644 index 5ff99375072..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -We eliminated the superheat/supercool optimization. Now we only need to use -the transition option. So the video is out of synch now. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/README.md deleted file mode 100644 index 0e93478d844..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/README.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Tagging; Transition Kompilation Option - -In this lesson we add the semantics of variable increment. In doing so, we -learn how to tag syntactic constructs and rules and then use such tags to -instruct the `kompile` tool to generate the desired language model that is -amenable for exhaustive analysis. - -The variable increment rule is self-explanatory: - - rule ++X => I +Int 1 ... - ... X |-> N ... - ... N |-> (I => I +Int 1) ... - -We can now run programs like our `div.imp` program introduced in Lesson 1. -Do it. - -The addition of increment makes the evaluation of expressions have side -effects. That, in combination with the non-determinism allowed by the -strictness attributes in how expression constructs evaluate their -arguments, makes expressions in particular and programs in general have -non-deterministic behaviors. One possible execution of the `div.imp` program -assigns `1` to `y`'s location, for example, but this program manifests several -other behaviors, too. - -To see all the (final-state) behaviors that a program can have, you can call -the `krun` tool with the option `--search`. For example: - - krun div.imp --search - -Oops, we see only one solution, the same as when we ran it without search. - -Here is what happens. `krun` can only explore as much of the transition -system associated to a program as `kompile` allowed the generated language -model to yield. Since most of the K users are interested in language models -that execute efficiently, that is, in faster interpreters for the defined -languages, by default `kompile` optimizes the generated language model for -execution. In particular, it inserts no backtracking markers, which `krun` -uses when called with the `--search` option in order to systematically generate -the entire transition system associated to a program. This is why `krun` -showed us only one solution when run with the `--search` option on `div.imp`. - -We next explain how to tell `kompile` what kind of language model we are -interested in for analysis purposes. When you experiment with non-determinism -in a language semantics, you should keep it in mind that the `--transition` -option of `kompile` allows you to configure what counts as a transition in -your language model. We here only discuss transitions due to the -non-deterministic evaluation strategies of language constructs, but we will -see in future lectures (see Lesson 6 of IMP++, where we add concurrency) that -we can also have transitions due to non-deterministic applications of rewrite -rules. - -If you want to explore the entire behavior space due to non-deterministic -evaluation strategies, then you should include all the language constructs -in the `--transition` option. This may sound like the obvious thing to -always do, but as soon as you do it you soon realize that it is way too much -in practice when you deal with large languages or programs. There are simply -too many program behaviors to consider, and `krun` will likely hang -on you or crush. For example, a small ten-statement program where each -statement uses one strict expression construct already has 1000+ behaviors for -`krun` to explore! Driven by practical needs of its users, the K tool -therefore allows you to finely tune the generated language models using the -`--transition` option. - -To state which constructs are to be considered to generate transitions in the -generated language model, and for other reasons, too, the K tool allows you to -tag any production and any rule by putting the tag in brackets. You can associate - multiple tags to the same construct or rule, and more than one construct or -rule can have the same tag. As an example, let us tag the division construct -with `division`, the lookup rule with `lookup` and the increment rule with -`increment`. The tags of the rules are not needed in this lesson, we do it only -to demonstrate that rules can also be tagged. - -The least intrusive way to enforce our current language to explore the -entire space of behaviors due to the strictness of division is to `kompile` it -with the following option: - - kompile imp.k --transition "division" - -It is interesting to note that the `lookup` and `increment` rules are the only -two rules which can trigger non-deterministic behaviors for division, because -no other rule but these two can ever apply while a division operation is -heated. Previous versions of K allowed you to also specify which rules could -trigger non-deterministic behaviors of operator evaluation strategies, -but that option was rarely used and is not available anymore. - -Note that it is highly non-trivial to say precisely whether a strict language -construct may yield non-deterministic behaviors. For example, division's -strictness would yield no non-determinism if the language had no side effects. -It is even harder to say so for a particular program. Consequently, our K -implementation makes no attempt to automatically detect which operations -should be tagged as transitions. Instead, it provides the functionality to -let you decide it. - -Now the command - - krun div.imp --search - -shows us all five behaviors of this program. Interestingly, one -of the five behaviors yields a division by zero! - -The `--transition` option can be quite useful when you experiment with your -language designs or when you formally analyze programs for certain kinds of -errors. Please let us know if you ever need more finer-grained control over -the non-determinism of your language models. - -Before we conclude this lesson, we'd like to let you know one trick, which -you will hopefully not overuse: you can tag elements in your K definition with -`kompile` option names, and those elements will be automatically included in -their corresponding options. For example, if you tag the division production -with `transition` then the command - - kompile imp - -is completely equivalent to the previous `kompile` command. - -Please use this default behavior with caution, or even better, try to avoid -using it! You may be tempted to add the `transition` tag to lots of elements -and then forget about them; your language models will then be increasingly slower -when you execute them and you may wonder why ... This convention is typically -convenient when you want to quickly experiment with non-determinism and do not -want to bother inventing tag names and calling `kompile` with options. - -In the next lesson we add input/output to our language and learn how to -generate a model of it which behaves like an interactive interpreter! - -Go to [Lesson 4, IMP++: Semantic Lists; Input/Output Streaming](../lesson_4/README.md). - -[MOVIE (out of date) [06'56"]](https://youtu.be/uwCUfWt7n-o) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/imp.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/imp.k deleted file mode 100644 index f082dc6de1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/imp.k +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" Int - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "spawn" Stmt - > Stmt Stmt [left] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool - - configuration - $PGM:Stmt - .Map - .Map - - -// AExp - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... [group(lookup)] - rule ++X => I +Int 1 ... - ... X |-> N ... - ... N |-> (I => I +Int 1) ... [group(increment)] - rule I1 / I2 => I1 /Int I2 when I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I -// BExp - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -// Block - rule {} => . - rule {S} => S -// Stmt - rule X = I:Int; => . ... - ... X |-> N ... - ... N |-> (_ => I) ... - rule S1:Stmt S2:Stmt => S1 ~> S2 - rule if (true) S else _ => S - rule if (false) _ else S => S - rule while (B) S => if (B) {S while (B) S} else {} - - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - rule int .Ids; => . -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/media.properties deleted file mode 100644 index 7317f052680..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=uwCUfWt7n-o -video_length_secs=416 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp.out deleted file mode 100644 index 25e89858d8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/collatz.imp.out +++ /dev/null @@ -1,19 +0,0 @@ - - - . - - - m |-> 0 - n |-> 1 - q |-> 2 - r |-> 3 - s |-> 4 - - - 0 |-> 2 - 1 |-> 1 - 2 |-> 1 - 3 |-> 3 - 4 |-> 66 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp.out deleted file mode 100644 index 6ba728d1c52..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/div.imp.out +++ /dev/null @@ -1,53 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 1 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 2 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 3 - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp.out deleted file mode 100644 index 0abd9904be6..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/io.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - - - print ( "Input two numbers: " , .Ids ) ; ~> int x , y , .Ids ; ~> x = read ( ) ; ~> y = read ( ) ; ~> print ( "Their sum is: " , x + y , "\n" , .Ids ) ; ~> . - - - .Map - - - .Map - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp.out deleted file mode 100644 index e6e28e2b577..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/locals.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - - - print ( "Line 3: x = " , x , "\n" , .Ids ) ; ~> { int x , .Ids ; x = 2 ; print ( "Line 7: x = " , x , "\n" , .Ids ) ; { int x , .Ids ; x = 3 ; print ( "Line 11: x = " , x , "\n" , .Ids ) ; } print ( "Line 13: x = " , x , "\n" , .Ids ) ; } ~> print ( "Line 15: x = " , x , "\n" , .Ids ) ; ~> . - - - x |-> 0 - - - 0 |-> 1 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp.out deleted file mode 100644 index 9434601ef42..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/primes.imp.out +++ /dev/null @@ -1,29 +0,0 @@ - - - . - - - i |-> 0 - m |-> 1 - n |-> 2 - q |-> 3 - r |-> 4 - s |-> 5 - t |-> 6 - x |-> 7 - y |-> 8 - z |-> 9 - - - 0 |-> 2 - 1 |-> 10 - 2 |-> 11 - 3 |-> 0 - 4 |-> 1 - 5 |-> 4 - 6 |-> 0 - 7 |-> 0 - 8 |-> 20 - 9 |-> 10 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp.out deleted file mode 100644 index c2be178bcbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/spawn.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - - - print ( "x = " , .Ids ) ; ~> x = read ( ) ; ~> spawn x = x / 2 ; ~> spawn x = x + 10 ; ~> print ( x , "\n" , .Ids ) ; ~> . - - - x |-> 0 - - - 0 |-> 0 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp.out deleted file mode 100644 index e93a02ef253..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum-io.imp.out +++ /dev/null @@ -1,13 +0,0 @@ - - - print ( "Add numbers up to (<= 0 to quit)? " , .Ids ) ; ~> n = read ( ) ; ~> if ( n <= 0 ) { halt ; } else { s = 0 ; while ( ! n <= 0 ) { s = s + n ; n = n + - 1 ; } print ( "Sum = " , s , "\n" , .Ids ) ; } ~> while ( true ) { print ( "Add numbers up to (<= 0 to quit)? " , .Ids ) ; n = read ( ) ; if ( n <= 0 ) { halt ; } else { s = 0 ; while ( ! n <= 0 ) { s = s + n ; n = n + - 1 ; } print ( "Sum = " , s , "\n" , .Ids ) ; } } ~> . - - - n |-> 0 - s |-> 1 - - - 0 |-> 0 - 1 |-> 0 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp.out deleted file mode 100644 index afc535a879c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_3/tests/sum.imp.out +++ /dev/null @@ -1,13 +0,0 @@ - - - . - - - n |-> 0 - sum |-> 1 - - - 0 |-> 0 - 1 |-> 5050 - - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/Makefile deleted file mode 100644 index 97f3c60fb28..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../lesson_1/Makefile -KRUN_FLAGS+=--output none diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/NOTES.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/NOTES.md deleted file mode 100644 index 4486ea8b410..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/NOTES.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Make sure cells have the same indentation, which should use normal -spaces, not tabs. Tabs look differently in different editors. - -The tests here include all the imp and imp++ programs, but of course -the imp ones do not display any output, so their .out files are empty. -But this way we at least make sure we test that these programs -do not fail/crash and that nothing is output, so it is better that what -we used to have in K3.6. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/README.md deleted file mode 100644 index 700398bb59c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/README.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Semantic Lists; Input/Output Streaming - -In this lesson we add semantics to the `read` and `print` IMP++ constructs. -In doing so, we also learn how to use semantic lists and how to connect -cells holding semantic lists to the standard input and standard output. -This allows us to turn the K semantics into an interactive interpreter. - -We start by adding two new cells to the configuration, - - .List - .List - -each holding a semantic list, initially empty. Semantic lists are -space-separated sequences of items, each item being a term of the form -`ListItem(t)`, where `t` is a term of sort `K`. Recall that the semantic maps, -which we use for states, environments, stores, etc., are sets of pairs -`t1 |-> t2`, where `t1` and `t2` are terms of sort K. The `ListItem` wrapper -is currently needed, to avoid parsing ambiguities. - -Since we want the `print` statement to also print strings, we need to tell -K that strings are results. To make it more interesting, let us also overload -the `+` symbol on arithmetic expressions to also take strings and, as a -result, to concatenate them. Since `+` is already strict, we only need to add -a rule reducing the IMP addition of strings to the builtin operation `+String` -which concatenates two strings. - -The semantics of `read` is immediate: read and consumes the first integer item -from the `` cell; note that our read only reads integer values (it gets -stuck if the first item in the `` cell is not an integer). - -The semantics of `print` is a bit trickier. Recall that `print` takes an -arbitrary number of arithmetic expression arguments, and evaluates and outputs -each of them in order, from left to right. For example, -`print("Hello", 3/0, "Bye");` outputs "Hello" and then gets stuck on the -illegal division by zero operation. In other words, we do not want it to -first evaluate all its arguments and then print them, because that would miss -outputting potentially valuable information. So the first step is to evaluate -the first argument of `print`. In some sense, what we'd like to say is that -`print` has the evaluation strategy `strict(1)`. However, strictness -attributes only work with individual language constructs, while what we need -is an evaluation strategy that involves _two_ constructs: `print` and the list -(comma) construct of `AExps`. If we naively associate `print` the `strict(1)` -evaluation strategy then its first and unique argument, an `AExps` list, will -be scheduled for evaluation and the execution will get stuck because we have -no rules for evaluating `AExps` terms. If we make the list construct of -`AExps` `strict` then we get the wrong semantics for `print` which first -evaluates all its arguments and then outputs them. The correct way to -tell K that `print` should evaluate only its first argument is by using a -context declaration: - - context print(HOLE:AExp, _); - -Note the `HOLE` of sort `AExp` above. Contexts allow us to define finer-grain -evaluation strategies than the strictness attributes, involving potentially -more than one language construct, like above. The `HOLE` indicates the -argument which is requested to be evaluated. For example, the `strict` -attribute of division corresponds to two contexts: - - context HOLE / _ - context _ / HOLE - -In their full generality, contexts can be any terms with precisely one -occurrence of a `HOLE`, and with arbitrary side conditions on any variables -occurring in the context term as well as on the `HOLE`. See Part 6 of the -tutorial for more examples. - -Once evaluated, the first argument of `print` is expected to become either an -integer or a string. Since we want to print both integers and string values, -to avoid writing two rules, one for each type of value, we instead add a new -syntactic category, `Printable`, which is the union of integers and strings. - -Let us `kompile` and `krun` the `io.imp` program discussed in Lesson 1. As -expected, it gets stuck with a read construct on top of the computation and -with an empty `` cell. To run it, we need to provide some items in the -`` cell, so that the rule of read can match. Let us add - - ListItem(3) ListItem(5) ListItem(7) - -Now, if we `krun` `io.imp`, we can see that its execution completes normally -(the `` cell is empty), that the first two items have been removed by the -two read constructs from the `` cell, and that the desired strings and -numbers have been placed into the `` cell. - -Cells holding semantic lists can be connected to the standard input and -standard output buffers, and `krun` knows how to handle these appropriately. -Let us connect the `` cell to the standard input using the cell attribute -`stream="stdin"` and the `` cell to the standard output with the -attribute `stream="sdtout"`. A cell connected to the standard input will -take its items from the standard input and block the rewriting process when -an input is needed until an item is available in the standard input buffer. -A cell connected to the standard output buffer will send all its items, in -order, to the standard output. - -Let us `kompile` and `krun` `io.imp` again. It prints the message and then -waits for your input numbers. Type in two numbers, then press ``. -A message with their sum is then printed, followed by the final configuration. -If you do not want to see the final configuration, and thus obtain a realistic -interpreter for our language, then call `krun` with the option `--output none`: - - krun io.imp --output none - -Let us now `krun` our interactive sum program, which continuously reads numbers -from the console and prints the sum of numbers up to them: - - krun sum-io.imp - -Try a few numbers, then `0`. Note that the program terminated, but with junk -in the `` cell, essentially with a `halt` statement on its top. Of course, -because `halt` has been reached and it has no semantics yet. - -In the next lesson we give the semantics of `halt` and also fix the semantics -of blocks with local variable declarations. - -Go to [Lesson 5, IMP++: Deleting, Saving and Restoring Cell Contents](../lesson_5/README.md). - -[MOVIE (out of date) [05'21"]](https://youtu.be/a0qxV1GFR5s) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/imp.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/imp.k deleted file mode 100644 index 7bd8d325ae1..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/imp.k +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" Int - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "spawn" Stmt - > Stmt Stmt [left] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool | String - - configuration - $PGM:Stmt - .Map - .Map - .List - .List - - -// AExp - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... [group(lookup)] - rule ++X => I +Int 1 ... - ... X |-> N ... - ... N |-> (I => I +Int 1) ... [group(increment)] - rule read() => I ... - ListItem(I:Int) => .List ... - rule I1 / I2 => I1 /Int I2 when I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I - rule Str1 + Str2 => Str1 +String Str2 -// BExp - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -// Block - rule {} => . - rule {S} => S -// Stmt - rule X = I:Int; => . ... - ... X |-> N ... - ... N |-> (_ => I) ... - rule S1:Stmt S2:Stmt => S1 ~> S2 - rule if (true) S else _ => S - rule if (false) _ else S => S - rule while (B) S => if (B) {S while (B) S} else {} - - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - rule int .Ids; => . - - syntax Printable ::= Int | String -/* currently it is necessary to subsort Printable to AExp, - but future K should be able to infer that automatically. */ - syntax AExp ::= Printable - context print(HOLE:AExp, _); - rule print(P:Printable,AEs => AEs); ... - ... .List => ListItem(P) - rule print(.AExps); => . -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/media.properties deleted file mode 100644 index 6bcbd78cbcf..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=a0qxV1GFR5s -video_length_secs=321 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp.out deleted file mode 100644 index dc290d687ba..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/div.imp.out +++ /dev/null @@ -1,83 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 1 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 2 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 3 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp.out deleted file mode 100644 index d09c847a63c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/locals.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 3 -Line 15: x = 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp.out deleted file mode 100644 index bd0c0d180a3..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp.out +++ /dev/null @@ -1 +0,0 @@ -x = \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/Makefile deleted file mode 100644 index 83e1c40228c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../lesson_4/Makefile diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/README.md deleted file mode 100644 index db644d5132c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/README.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Deleting, Saving and Restoring Cell Contents - -In this lesson we will see how easily we can delete, save and/or restore -contents of cells in order to achieve the desired semantics of language -constructs that involve abrupt changes of control or environments. We have -seen similar or related K features in the LAMBDA++ language in Part 3 of the -tutorial. - -Let us start by adding semantics to the `halt` statement. As its name says, -what we want is to abruptly terminate the execution of the program. Moreover, -we want the program configuration to look as if the program terminated -normally, with an empty computation cell. The simplest way to achieve that is -to simply empty the computation cell when `halt` is encountered: - - rule halt; ~> _ => . - -It is important to mention the entire `` cell here, with both its membranes -closed, to make sure that its entire contents is discarded. Note the -anonymous variable, which matches the rest of the computation. - -`kompile` and `krun` `sum-io.imp`. Note that unlike in Lesson 4, the program -terminates with an empty computation cell now. - -As mentioned earlier, the semantics of blocks that was inherited from IMP is -wrong. Program `locals.imp` shows it very clearly: the environments are not -correctly restored at block exits. One way to fix the problem is to take -a snapshot of the current environment when a block is entered and save it -somewhere, and then to restore it when the block is left. There are many -ways to do this, which you can explore on your own: for example you can add -a new list cell for this task where to push/pop the environment snapshots in -a stack style; or you can use the existing environment cell for this purpose, -but then you need to change the variable access rules to search through the -stacked environments for the variable. - -My preferred solution is to follow a style similar to how we saved/restored -LAMBDA++ environments in Part 3 of the Tutorial, namely to use the already -existing `` cell for such operations. More specifically, we place a -_reminder_ item in the computation whenever we need to take a snapshot of -some cell contents; the item simply consists of the entire contents of the cell. -Then, when the reminder item is reached, we restore the contents of the cell: - - rule {S} => S ~> Rho ... Rho - -The only thing left now is to give the definition of environment restore: - - rule Rho => . ... _ => Rho - -Done. `kompile` and `krun` `locals.imp`. Everything should work correctly now. -Note that the rule above is different from the one we had for LAMBDA++ in -Part 3 of the tutorial, in that here there is no value preceding the environment -restoration item in the computation; that's because IMP++ statements, -unlike LAMBDA++'s expressions, evaluate to nothing (`.`). - -In the next lesson we will give semantics to the `spawn S` construct, which -dynamically creates a concurrent shared-memory thread executing statement `S`. - -Go to [Lesson 6, IMP++: Adding/Deleting Cells Dynamically; Configuration Abstraction, Part 2](../lesson_6/README.md). - -[MOVIE (out of date) [04'30"]](https://youtu.be/Hr1yfcnee_c) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/README b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/README deleted file mode 100644 index 06a33407836..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/README +++ /dev/null @@ -1,29 +0,0 @@ -In the IMP tutorial, we had a check to prevent from declaring the same -(global) variable multiple times. However, this check has dissapeared -once we switched to local variables in IMP++, as we want to allow -redeclarations of a variable in a nested block (a.k.a. variable -shadowing). - -This exercise comes to alleviate this issue, by requiring you to -dynamically check (during the execution of the program) if a variable -is declared multiple times in the same block, and if so, to report an -error about that and halt the execution of the program. - -Specifically, the first time the redeclaration of the same variable, say -'var', is attempted in the same block, the message (without quotes) - - 'Error: variable var already declared in this block.' - -should be printed to the console and the program should halt. - ------------- - -Hint: use a new cell to keep a set of the variables declared in the -current block. You will need to empty it when entering a block and to -restore its prior contents when exiting the block. You can use the -env cell as a model. - -Note: To get the string corresponding to a variable name you need to -use the function Id2String. For example, if var is an identifier, -Id2String(var) would evaluate to the string "var". - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/collatz.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp.out deleted file mode 100644 index 7ed4c4eaf8f..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/div.imp.out +++ /dev/null @@ -1,95 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - SetItem ( x ) - SetItem ( y ) - - - 0 |-> 3 - 1 |-> 1 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - SetItem ( x ) - SetItem ( y ) - - - 0 |-> 3 - 1 |-> 2 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - SetItem ( x ) - SetItem ( y ) - - - 0 |-> 3 - 1 |-> 3 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.in deleted file mode 100644 index 654d526942a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.in +++ /dev/null @@ -1 +0,0 @@ -2 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.out deleted file mode 100644 index 863e2ef1a21..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/io.imp.out +++ /dev/null @@ -1 +0,0 @@ -Input two numbers: Their sum is: 5 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp.out deleted file mode 100644 index 9053d517a80..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-0.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 2 -Line 15: x = 1 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp deleted file mode 100644 index b092beea3db..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp +++ /dev/null @@ -1,2 +0,0 @@ -int x,x; -print("Bad if you see this!"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp.out deleted file mode 100644 index 53e38ee7232..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-1.imp.out +++ /dev/null @@ -1 +0,0 @@ -Error: Variable x already declared in this block. \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp deleted file mode 100644 index 66fbbabcf82..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp +++ /dev/null @@ -1,3 +0,0 @@ -int y; -int y; -print("Bad if you see this!"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp.out deleted file mode 100644 index fd4e22c5100..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-2.imp.out +++ /dev/null @@ -1 +0,0 @@ -Error: Variable y already declared in this block. \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp deleted file mode 100644 index b1d61bac86d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp +++ /dev/null @@ -1,12 +0,0 @@ -/* This test should only fail for 'z' as, although in program order the -redeclaration of 'x' is encountered first, it is not reachable in execution -order. */ - -int x,z; -if (false) { - int x,x; -} else { - int x,y; -} -int z; -print("Bad if you see this!"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp.out deleted file mode 100644 index f6bb0d47731..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-3.imp.out +++ /dev/null @@ -1 +0,0 @@ -Error: Variable z already declared in this block. \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp deleted file mode 100644 index ce99100b68a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp +++ /dev/null @@ -1,16 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); - int y,x; -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp.out deleted file mode 100644 index 79245337593..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/nodups-4.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 2 -Error: Variable x already declared in this block. \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/primes.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.in deleted file mode 100644 index 409940768f2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.in +++ /dev/null @@ -1 +0,0 @@ -23 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.out deleted file mode 100644 index bd0c0d180a3..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/spawn.imp.out +++ /dev/null @@ -1 +0,0 @@ -x = \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.in deleted file mode 100644 index 58d2fb64991..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 0 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.out deleted file mode 100644 index 0fc5f17aa09..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum-io.imp.out +++ /dev/null @@ -1,2 +0,0 @@ -Add numbers up to (<= 0 to quit)? Sum = 55 -Add numbers up to (<= 0 to quit)? \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/sum.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/imp.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/imp.k deleted file mode 100644 index 391b862388c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/imp.k +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" Int - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "spawn" Stmt - > Stmt Stmt [left] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool | String - - configuration - $PGM:Stmt - .Map - .Map - .List - .List - - -// AExp - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... [group(lookup)] - rule ++X => I +Int 1 ... - ... X |-> N ... - ... N |-> (I => I +Int 1) ... [group(increment)] - rule read() => I ... - ListItem(I:Int) => .List ... - rule I1 / I2 => I1 /Int I2 when I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I - rule Str1 + Str2 => Str1 +String Str2 -// BExp - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -// Block - rule {} => . - rule {S} => S ~> Rho ... Rho - rule Rho => . ... _ => Rho -// Stmt - rule X = I:Int; => . ... - ... X |-> N ... - ... N |-> (_ => I) ... - rule S1:Stmt S2:Stmt => S1 ~> S2 - rule if (true) S else _ => S - rule if (false) _ else S => S - rule while (B) S => if (B) {S while (B) S} else {} - - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - rule int .Ids; => . - - syntax Printable ::= Int | String -/* currently it is necessary to subsort Printable to AExp, - but future K should be able to infer that automatically. */ - syntax AExp ::= Printable - context print(HOLE:AExp, _AEs:AExps); - rule print(P:Printable,AEs => AEs); ... - ... .List => ListItem(P) - rule print(.AExps); => . - - rule halt; ~> _ => . -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/media.properties deleted file mode 100644 index 326dff8aac8..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=Hr1yfcnee_c -video_length_secs=270 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/collatz.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp.out deleted file mode 100644 index dc290d687ba..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/div.imp.out +++ /dev/null @@ -1,83 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 1 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 2 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - . - - - x |-> 0 - y |-> 1 - - - 0 |-> 3 - 1 |-> 3 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.in deleted file mode 100644 index 654d526942a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.in +++ /dev/null @@ -1 +0,0 @@ -2 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.out deleted file mode 100644 index 863e2ef1a21..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/io.imp.out +++ /dev/null @@ -1 +0,0 @@ -Input two numbers: Their sum is: 5 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp.out deleted file mode 100644 index 9053d517a80..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/locals.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 2 -Line 15: x = 1 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/primes.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.in deleted file mode 100644 index 409940768f2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.in +++ /dev/null @@ -1 +0,0 @@ -23 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.out deleted file mode 100644 index bd0c0d180a3..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/spawn.imp.out +++ /dev/null @@ -1 +0,0 @@ -x = \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.in deleted file mode 100644 index 58d2fb64991..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 0 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.out deleted file mode 100644 index 0fc5f17aa09..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum-io.imp.out +++ /dev/null @@ -1,2 +0,0 @@ -Add numbers up to (<= 0 to quit)? Sum = 55 -Add numbers up to (<= 0 to quit)? \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/tests/sum.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/Makefile deleted file mode 100644 index 4f4b17d9efe..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -DEF=imp -EXT=imp -KRUN_FLAGS=--output none -KOMPILE_FLAGS=--gen-glr-bison-parser --enable-search - -include ../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak - - -tests/div.imp: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled --search $(CHECK) $@.out - -tests/spawn.imp: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled --search --pattern " Store ListItem(_) ListItem(_) ListItem(#buffer(Out:String)) " $(CHECK) $@.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/README.md deleted file mode 100644 index 2a5692957d5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/README.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Adding/Deleting Cells Dynamically; Configuration Abstraction, Part 2 - -In this lesson we add dynamic thread creation and termination to IMP, and -while doing so we learn how to define and use configurations whose structure -can evolve dynamically. - -Recall that the intended semantics of `spawn S` is to spawn a new concurrent -thread that executes `S`. The new thread is being passed at creation time -its parent's environment, so it can share with its parent the memory -locations that its parent had access to at creation time. No other locations -can be shared, and no other memory sharing mechanism is available. -The parent and the child threads can evolve unrestricted, in particular they -can change their environments by declaring new variables or shadowing existing -ones, can create other threads, and so on. - -The above suggests that each thread should have its own computation and its -own environment. This can be elegantly achieved if we group the `` and -`` cells in a `` cell in the configuration. Since at any given -moment during the execution of a program there could be zero, one or more -instances of such a `` cell in the configuration, it is a good idea -to declare the `` cell with multiplicity `*` (i.e., zero, one or more): - - - $PGM:Stmt - .Map - - -This multiplicity declaration is not necessary, but it is a good idea to do -it for several reasons: - -1. it may help the configuration abstraction process, - which may in turn significantly increase the compactness and modularity of - your subsequent rules; -2. it may help various analysis and execution tools, - for example static analyzers to give you error messages when you create cells - where you should not, or K compilers to improve performance by starting - actual concurrent hardware threads or processes corresponding to each cell - instance; and -3. it may help you better understand and control the dynamics - of your configuration, and thus your overall semantics. - -For good encapsulation, I also prefer to put all thread cells into one cell, -``. This is technically unnecessary, though; to convince yourself -that this is indeed the case, you can remove this cell once we are done with -the semantics and everything will work without having to make any changes. - -Before we continue, let us `kompile` an `krun` some programs that used to -work, say `sum-io.imp`. In spite of the relatively radical configuration -reorganization, those programs execute just fine! How is that possible? -In particular, why do rules like the lookup and assignment still work, -unchanged, in spite of the fact that the `` and `` cells are not at -the same level with the `` cell in the configuration anymore? - -Welcome to configuration abstraction, part 2. Recall that the role of -configuration abstraction is to allow you to only write the relevant -information in each rule, and have the compiler fill-in the obvious and boring -details. According to the configuration that we declared for our new -language, there is only one reasonable way to complete rules like the lookup, -namely to place the `` and `` cells inside a `` cell, -inside a `` cell: - - rule ... - ... - X:Id => I ... - ... X |-> N ... - ... - ... - ... N |-> I ... [lookup] - -This is the most direct, compact and local way to complete the configuration -context of the lookup rule. If for some reason you wanted here to match the -`` cell of one thread and the `` cell of another thread, then you -would need to explicitly tell K so, by mentioning the two thread cells, -for example: - - rule ... - X:Id => I ... - ... - ... - ... X |-> N ... - ... - ... N |-> I ... [lookup] - -By default, K completes rules in a greedy style. Think this way: what is the -minimal number of changes to my rule to make it fit the declared -configuration? That's what the K tool will do. - -Configuration abstraction is technically unnecessary, but once you start -using it and get a feel for how it works, it will become your best friend. -It allows you to focus on the essentials of your semantics, and at the same -time gives you flexibility in changing the configuration later on without -having to touch the rules. For example, it allows you to remove the -`` cell from the configuration, if you don't like it, without -having to touch any rule. - -We are now ready to give the semantics of `spawn`: - - rule spawn S => . ... Rho - (. => ... S Rho ...) - -Note configuration abstraction at work, again. Taking into account -the declared configuration, and in particular the multiplicity information -`*` in the `` cell, the only reasonable way to complete the rule -above is to wrap the `` and `` cells on the first line within a -`` cell, and to fill-in the `...`s in the child thread with the -default contents of the other subcells in ``. In this case there -are no other cells, so we can get rid of those `...`s, but that would -decrease the modularity of this rule: indeed, we may later on add other -cells within `` as the language evolves, for example a function -or an exception stack, etc. - -In theory, we should be able to write the rule above even more compactly -and modularly, namely as - - rule spawn S => . ... Rho - (. => S Rho ) - -Unfortunately, this currently does not work in the K tool, due to some -known limitations of our current configuration abstraction algorithm. -This latter rule would be more modular, because it would not even depend -on the cell name `thread`. For example, we may later decide to change -`thread` into `agent`, and we would not have to touch this rule. -We hope this current limitation will be eliminated soon. - -Once a thread terminates, its computation cell becomes empty. When that -happens, we can go ahead and remove the useless `thread` cell: - - rule ... . ... => . - -Let's see what we've got. `kompile` and `krun` `spawn.imp`. -Note the following: - -- The `` cell is empty, so all threads terminated normally; -- The value printed is different from the value in the store; the store value - is not even the one obtained if the threads executed sequentially. - -Therefore, interesting behaviors may happen; we would like to see them all! - -Based on prior experience with `krun`'s search option, we would hope that - - krun spawn.imp --search - -shows all the behaviors. However, the above does not work, for two reasons. - -First, `spawn.imp` is an interactive program, which reads a number from the -standard input. When analyzing programs exhaustively using the search option, -`krun` has to disable the streaming capabilities (just think about it and you -will realize why). The best you can do in terms of interactivity with search -is to pipe some input to `krun`: `krun` will flush the standard input buffer -into the cells connected to it when creating the initial configuration (will -do that no matter whether you run it with or without the `--search` option). -For example: - - echo 23 | krun spawn.imp --search - -puts `23` in the standard input buffer, which is then transferred in the -`` cell as a list item, and then the exhaustive search procedure is -invoked. - -Second, even after piping some input, the `spawn.imp` program still manifests -only one behavior, which does not seem right. There should be many more. - -As explained in Lesson 3, by default `kompile` optimizes the generated -language model for execution. In particular, it does not insert any -backtracking markers where transition attempts should be made, so `krun` -lacks the information it needs to exhaustively search the generated language -model. Like we did in Lesson 3 with the language constructs, we also have -to explicitly tell `kompile` which rules should be considered as actual -transitions. A theoretically correct but practically unfeasible approach -to search all possible behaviors is to consider all rules as transitions. -Even more than with the non-deterministic strictness of language constructs -in Lesson 3, such a naive solution would make the number of behaviors, and -thus `krun`, explode. Remember that a two-thread program with 150 statements -each manifests more behaviors than particles in the known universe! -Consequently, unless your multi-threaded programs are very small, you will -most likely want to control which rules should be considered transitions and -which should not. - -A good rule of thumb is to include as transitions only those rules which -_compete for behaviors_. That is, those rules which may yield a different -behavior if we choose to apply them when other rules match as well. -The rule for addition, for example, is a clear example of a rule which -should not be a transition: indeed, `3+7` will rewrite to `10` now and also -later. On the other hand, the lookup rule should be a transition. Indeed, -if we delay the lookup of variable `x`, then other threads may write `x` in the -meanwhile (with an increment or an assignment rule) and thus yield a -different behavior. - -Let us discuss and tag those rules which should be transitions: lookup and -increment need to be transitions and we already tagged them in Lesson 3; -the read rule needs to also be a transition, because it may complete with -other instances of itself in other threads; assignment needs to also be a -transition, and so should be the first rule for `print`. - -Let us now `kompile` with the transition option set as desired: - - kompile imp --transition "lookup increment assignment read print" - -Now `echo 23 | krun spawn.imp --search` gives us all 12 behaviors of the -`spawn.imp` program. - -Like for non-deterministically strict operations which can be tagged as -transitions, it is highly non-trivial to say precisely which rules need -to be transitions. So `krun` makes no attempt to automatically detect it. -Instead, it provides the functionality to let you decide it. - -We currently have no mechanism for thread synchronization. In the next lesson -we add a `join` statement, which allows a thread to wait until another completes. - -Go to [Lesson 7, IMP++: Everything Changes: Syntax, Configuration, Semantics](../lesson_7/README.md). - -[MOVIE (out of date) [11'40"]](https://youtu.be/DpJPP3Qtqno) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/imp.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/imp.k deleted file mode 100644 index 34cf48a24a2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/imp.k +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" Int - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] - > AExp "+" AExp [left, strict] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" "}" - | "{" Stmt "}" - syntax Stmt ::= Block - | Id "=" AExp ";" [strict(2)] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "spawn" Stmt - > Stmt Stmt [left] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - syntax KResult ::= Int | Bool | String - - configuration - - - 0 - $PGM:Stmt - .Map - - - .Map - .List - .List - - -// AExp - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... [group(lookup)] - rule ++X => I +Int 1 ... - ... X |-> N ... - ... N |-> (I => I +Int 1) ... [group(increment)] - rule read() => I ... - ListItem(I:Int) => .List ... [group(read)] - rule I1 / I2 => I1 /Int I2 requires I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I - rule Str1 + Str2 => Str1 +String Str2 -// BExp - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -// Block - rule {} => . - rule {S} => S ~> Rho ... Rho - rule Rho => . ... _ => Rho -// Stmt - rule X = I:Int; => . ... - ... X |-> N ... - ... N |-> (_ => I) ... [group(assignment)] - rule S1:Stmt S2:Stmt => S1 ~> S2 - rule if (true) S else _ => S - rule if (false) _ else S => S - rule while (B) S => if (B) {S while (B) S} else {} - - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - rule int .Ids; => . - - syntax Printable ::= Int | String -/* currently it is necessary to subsort Printable to AExp, - but future K should be able to infer that automatically. */ - syntax AExp ::= Printable - context print(HOLE:AExp, _AEs:AExps); - rule print(P:Printable,AEs => AEs); ... - ... .List => ListItem(P) [group(print)] - rule print(.AExps); => . - - rule halt; ~> _ => . - - rule spawn S => . ... Rho - (.Bag => ... S Rho !_T:Int +Int 1 ...) - - rule ... . ... => .Bag -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/media.properties deleted file mode 100644 index e751509d137..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=DpJPP3Qtqno -video_length_secs=700 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/collatz.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp.out deleted file mode 100644 index 82e0047f624..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/div.imp.out +++ /dev/null @@ -1,71 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - 0 |-> 3 - 1 |-> 1 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - 0 |-> 3 - 1 |-> 2 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - 0 |-> 3 - 1 |-> 3 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.in deleted file mode 100644 index 654d526942a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.in +++ /dev/null @@ -1 +0,0 @@ -2 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.out deleted file mode 100644 index 863e2ef1a21..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/io.imp.out +++ /dev/null @@ -1 +0,0 @@ -Input two numbers: Their sum is: 5 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp.out deleted file mode 100644 index 9053d517a80..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/locals.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 2 -Line 15: x = 1 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/primes.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp deleted file mode 100644 index a68d78e4ede..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp +++ /dev/null @@ -1,6 +0,0 @@ -int x; -print("x = "); -x=read(); -spawn x=x/2; -spawn x=x+10; -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.in deleted file mode 100644 index 409940768f2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.in +++ /dev/null @@ -1 +0,0 @@ -23 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.out deleted file mode 100644 index eba23e61a03..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/spawn.imp.out +++ /dev/null @@ -1,143 +0,0 @@ - { - Out:String - #Equals - "x = 11\n" - } - #And - { - Store:Map - #Equals - 0 |-> 11 - } -#Or - { - Out:String - #Equals - "x = 11\n" - } - #And - { - Store:Map - #Equals - 0 |-> 21 - } -#Or - { - Out:String - #Equals - "x = 11\n" - } - #And - { - Store:Map - #Equals - 0 |-> 33 - } -#Or - { - Out:String - #Equals - "x = 16\n" - } - #And - { - Store:Map - #Equals - 0 |-> 16 - } -#Or - { - Out:String - #Equals - "x = 21\n" - } - #And - { - Store:Map - #Equals - 0 |-> 21 - } -#Or - { - Out:String - #Equals - "x = 23\n" - } - #And - { - Store:Map - #Equals - 0 |-> 11 - } -#Or - { - Out:String - #Equals - "x = 23\n" - } - #And - { - Store:Map - #Equals - 0 |-> 16 - } -#Or - { - Out:String - #Equals - "x = 23\n" - } - #And - { - Store:Map - #Equals - 0 |-> 21 - } -#Or - { - Out:String - #Equals - "x = 23\n" - } - #And - { - Store:Map - #Equals - 0 |-> 33 - } -#Or - { - Out:String - #Equals - "x = 33\n" - } - #And - { - Store:Map - #Equals - 0 |-> 11 - } -#Or - { - Out:String - #Equals - "x = 33\n" - } - #And - { - Store:Map - #Equals - 0 |-> 16 - } -#Or - { - Out:String - #Equals - "x = 33\n" - } - #And - { - Store:Map - #Equals - 0 |-> 33 - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.in deleted file mode 100644 index 58d2fb64991..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 0 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.out deleted file mode 100644 index 0fc5f17aa09..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum-io.imp.out +++ /dev/null @@ -1,2 +0,0 @@ -Add numbers up to (<= 0 to quit)? Sum = 55 -Add numbers up to (<= 0 to quit)? \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_6/tests/sum.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof deleted file mode 100644 index 5439ffccc0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof +++ /dev/null @@ -1,11 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=imp -DEFDIR=proof -EXT=imp -KOMPILE_BACKEND=haskell -KRUN_FLAGS=--output none -TESTDIR=tests/proofs - -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak -KPROVE_OR_LEGACY=$(KPROVE) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/README.md deleted file mode 100644 index ec25f1a5c3f..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/README.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Everything Changes: Syntax, Configuration, Semantics - -In this lesson we add thread joining, one of the simplest thread -synchronization mechanisms. In doing so, we need to add unique ids -to threads in the configuration, and to modify the syntax to allow `spawn` -to return the id of the newly created thread. This gives us an opportunity -to make several other small syntactic and semantics changes to the language, -which make it more powerful or more compact at a rather low cost. - -Before we start, let us first copy and modify the previous `spawn.imp` program -from Lesson 1 to make use of thread joining. Recall from Lesson 6 that in some -runs of this program the main thread completed before the child threads, -printing a possibly undesired value of `x`. What we want now is to assign -unique ids to the two spawned threads, and then to modify the main thread to -join the two child threads before printing. To avoid adding a new type to -the language, let's assume that thread ids are integer numbers. So we declare -two integers, `t1` and `t2`, and assign them the two spawn commands. In order -for this to parse, we will have to change the syntax of `spawn` to be an -arithmetic expression construct instead of a statement. Once we do that, -we have a slight syntactic annoyance: we need to put two consecutive `;` -after the spawn assignment, one for the assignment statement inside the spawn, -and another for the outer assignment. To avoid the two consecutive semicolons, -we can syntactically enforce spawn to take a block as argument, instead of a -statement. Now it looks better. The new `spawn.imp` program is still -non-deterministic, because the two threads can execute in any order and even -continue to have a data-race on the shared variable `x`, but we should see fewer -behaviors when we use the `join` statements. If we want to fully synchronize -this program, we can have the second thread start with a `join(t1)` statement. -Then we should only see one behavior for this program. - -Let us now modify the language semantics. First, we move the `spawn` -construct from statements to expressions, and make it take a block. -Second, we add one more sub-cell to the thread cell in the configuration, -``, to hold the unique identifier of the thread. We want the main -thread to have id `0`, so we initialize this cell with `0`. Third, we modify -the spawn rule to generate a fresh integer identifier, which is put in the -`` cell of the child thread and returned as a result of `spawn` in the -parent thread. Fourth, let us add the `join` statement to the language, -both syntactically and semantically. So in order for the `join(T)` statement -to execute, thread `T` must have its computation empty. However, in order -for this to work we have to get rid of the thread termination cleanup rule. -Indeed, we need to store somewhere the information that thread `T` terminated; -the simplest way to do it is to not remove the terminated threads. Feel free -to experiment with other possibilities, too, here. For example, you may add -another cell, ``, in which you can store all the thread ids of the -terminated and garbage-collected threads. - -Let us now `kompile imp.k` and convince ourselves that the new `spawn.imp` -with `join` statements indeed has fewer behaviors than its variant without -`join` statements. Also, let us convince ourselves that the fully synchronized -variant of it indeed has only one behavior. - -Note that now spawn, like variable increment, makes the evaluation of -expressions to have side effects. Many programming languages in fact allow -expressions to be evaluated only for their side effects, and not for their -value. This is typically done by simply adding a `;` after the expression -and thus turning it into a statement. For example, `++x;`. Let as also -allow arithmetic expressions in our language to be used as statements, by -simply adding the production `AExp ";"` to `Stmt`, with evaluation strategy -`strict` and with the expected semantics discarding the value of the `AExp`. - -Another simple change in syntax and semantics which gives our language more -power, is to remove the `;` from the syntax of variable assignments and to make -them expression instead of statement constructs. This change, combined with -the previous one, will still allow us to parse all the programs that we could -parse before, but will also allow us to parse more programs. For example, we -can now do sequence assignments like in C: `x = y = z = 0`. The semantics -of assignment now has to return the assigned value also to the computation, -because we want the assignment expression to evaluate to the assigned value. - -Let us also make another change, but this time one which only makes the -definition more compact. Instead of defining statement sequential -composition as a binary construct for statements, let us define a new -syntactic construct, `Stmts`, as whitespace-separated lists of `Stmt`. This -allows us to get rid of the empty blocks, because we can change the syntax of -blocks to `{Stmts}` and `Stmts` also allows the empty sequence of statements. -However, we do have to make sure that `.Stmts` dissolves. - -In general, unless you are defining a well-established programming language, -it is quite likely that your definitions will suffer lots of changes like the -ones seen in this lecture. You add a new construct, which suggests changes -in the existing syntax making in fact your language parse more programs, -which then requires corresponding changes in the semantics, and so on. -Also, compact definitions are desirable in general, because they are easier -to read and easier to change if needed later. - -In the next lesson we wrap up and document the definition of IMP++. - -Go to [Lesson 8, IMP++: Wrapping up Larger Languages](../lesson_8/README.md). diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/Makefile deleted file mode 100644 index 3895c51b886..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile.concrete -KRUN_FLAGS=--search --pattern ' _:List ListItem(\#buffer(S:String)) ' diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/README b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/README deleted file mode 100644 index 603ab79aaac..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/README +++ /dev/null @@ -1,2 +0,0 @@ -The current "halt;" statement of IMP++ only halts the current thread. -Define an "abort;" statement which halts the entire program. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp deleted file mode 100644 index efdf643656d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp +++ /dev/null @@ -1,5 +0,0 @@ -int x; -x=7; -print(x,"\n"); -abort; -print(x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp.out deleted file mode 100644 index 4f914dee03a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-01.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "7\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp deleted file mode 100644 index 66bdd62a101..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp +++ /dev/null @@ -1,5 +0,0 @@ -int x; -x=7; -print(x,"\n"); -join spawn {abort;}; -print("Reachable with halt, but not with abort.\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp.out deleted file mode 100644 index 4f914dee03a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-02.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "7\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp deleted file mode 100644 index 0202b679bc8..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp +++ /dev/null @@ -1,5 +0,0 @@ -int x; -x=7; -print(x,"\n"); -join spawn {halt;}; -print("Reachable with halt, but not with abort.\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp.out deleted file mode 100644 index 2ac15a9828b..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-03.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "7\nReachable with halt, but not with abort.\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp deleted file mode 100644 index 126ba9279f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp +++ /dev/null @@ -1,10 +0,0 @@ -int x,y,z; - -x=1; -y=2; -z=3; - -spawn {int y; x=10;abort;y=20;}; -spawn {z=30;}; - -print(z,x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp.out deleted file mode 100644 index 912f5d267ad..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-04.imp.out +++ /dev/null @@ -1,41 +0,0 @@ - { - S:String - #Equals - "3" - } -#Or - { - S:String - #Equals - "30" - } -#Or - { - S:String - #Equals - "31" - } -#Or - { - S:String - #Equals - "301" - } -#Or - { - S:String - #Equals - "310" - } -#Or - { - S:String - #Equals - "3010" - } -#Or - { - S:String - #Equals - "" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp deleted file mode 100644 index c4073cffda4..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp +++ /dev/null @@ -1,10 +0,0 @@ -int x,y,z; - -x=1; -y=2; -z=3; - -spawn {int y; x=10;halt;y=20;}; -spawn {z=30;}; - -print(z,x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp.out deleted file mode 100644 index 4aa116c2613..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-05.imp.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "31" - } -#Or - { - S:String - #Equals - "301" - } -#Or - { - S:String - #Equals - "310" - } -#Or - { - S:String - #Equals - "3010" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp deleted file mode 100644 index 09fa82418e6..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp +++ /dev/null @@ -1,8 +0,0 @@ -// This program prints 3 messages in a random order. There are 3! = 6 possible -// orders for the messages. If we replace the first halt with an abort, then -// only the first message is guaranteed to printed, and the number of possible -// messsage orders becomes 11. - -spawn { print("Hi from thread 1!\n"); halt; }; -spawn { print("Hi from thread 2!\n"); halt; }; -spawn { print("Hi from thread 3!\n"); halt; }; diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp.out deleted file mode 100644 index ce1ca38fb40..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-06.imp.out +++ /dev/null @@ -1,35 +0,0 @@ - { - S:String - #Equals - "Hi from thread 1!\nHi from thread 2!\nHi from thread 3!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 1!\nHi from thread 3!\nHi from thread 2!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 2!\nHi from thread 1!\nHi from thread 3!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 2!\nHi from thread 3!\nHi from thread 1!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 3!\nHi from thread 1!\nHi from thread 2!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 3!\nHi from thread 2!\nHi from thread 1!\n" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp deleted file mode 100644 index 09fa82418e6..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp +++ /dev/null @@ -1,8 +0,0 @@ -// This program prints 3 messages in a random order. There are 3! = 6 possible -// orders for the messages. If we replace the first halt with an abort, then -// only the first message is guaranteed to printed, and the number of possible -// messsage orders becomes 11. - -spawn { print("Hi from thread 1!\n"); halt; }; -spawn { print("Hi from thread 2!\n"); halt; }; -spawn { print("Hi from thread 3!\n"); halt; }; diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp.out deleted file mode 100644 index ce1ca38fb40..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-07.imp.out +++ /dev/null @@ -1,35 +0,0 @@ - { - S:String - #Equals - "Hi from thread 1!\nHi from thread 2!\nHi from thread 3!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 1!\nHi from thread 3!\nHi from thread 2!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 2!\nHi from thread 1!\nHi from thread 3!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 2!\nHi from thread 3!\nHi from thread 1!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 3!\nHi from thread 1!\nHi from thread 2!\n" - } -#Or - { - S:String - #Equals - "Hi from thread 3!\nHi from thread 2!\nHi from thread 1!\n" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp deleted file mode 100644 index ab484f89e4e..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp +++ /dev/null @@ -1,4 +0,0 @@ -int t; t = spawn {halt;}; -print("child spawned\n"); -join(t); -print("child halted\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp.out deleted file mode 100644 index e4197638cd7..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-08.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "child spawned\nchild halted\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp deleted file mode 100644 index b6179d5faa9..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp +++ /dev/null @@ -1,4 +0,0 @@ -int t; t = spawn {abort;}; -print("child spawned\n"); -join(t); -print("child halted\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp.out deleted file mode 100644 index a9de91cd5ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-09.imp.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "" - } -#Or - { - S:String - #Equals - "child spawned\n" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp deleted file mode 100644 index d1f378aa7d5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp +++ /dev/null @@ -1,4 +0,0 @@ -print("Start\n"); -int t1; t1 = spawn {print("In spawned thread\n");}; -halt; -print("Unreachable\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp.out deleted file mode 100644 index ac557276792..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-10.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "Start\nIn spawned thread\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp deleted file mode 100644 index d1f378aa7d5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp +++ /dev/null @@ -1,4 +0,0 @@ -print("Start\n"); -int t1; t1 = spawn {print("In spawned thread\n");}; -halt; -print("Unreachable\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp.out deleted file mode 100644 index ac557276792..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/abort-11.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "Start\nIn spawned thread\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp.out deleted file mode 100644 index 5096bbb89cc..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/collatz.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.in deleted file mode 100644 index 654d526942a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.in +++ /dev/null @@ -1 +0,0 @@ -2 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.out deleted file mode 100644 index df1af2e7ff1..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/io.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "Input two numbers: Their sum is: 5\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp.out deleted file mode 100644 index 73db8cea8ed..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/locals.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "Line 3: x = 1\nLine 7: x = 2\nLine 11: x = 3\nLine 13: x = 2\nLine 15: x = 1\n" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp.out deleted file mode 100644 index 5096bbb89cc..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/primes.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp.in deleted file mode 100644 index 409940768f2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp.in +++ /dev/null @@ -1 +0,0 @@ -23 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.in deleted file mode 100644 index 58d2fb64991..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 0 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.out deleted file mode 100644 index 6a955b2ceb4..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum-io.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "Add numbers up to (<= 0 to quit)? Sum = 55\nAdd numbers up to (<= 0 to quit)? " -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp.out deleted file mode 100644 index 5096bbb89cc..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/sum.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/Makefile deleted file mode 100644 index 3895c51b886..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile.concrete -KRUN_FLAGS=--search --pattern ' _:List ListItem(\#buffer(S:String)) ' diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/README b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/README deleted file mode 100644 index 59287e8bb4c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/README +++ /dev/null @@ -1,14 +0,0 @@ -This exercise tests your understanding of nondeterminism in language -definitions and how you can make use of K's features to explore it. - -Most of the programs in the tests directory exhibit nondeterministic -behavior. Your main task is to make that behavior manifest, such that -it matches the provided output files (if executed with the contents of -the provided input files as input). - -There is also a nondet-my.imp.out file with no corresponding program. -To make this test pass you will need to provide a nondet-my.imp file -containing a program which could produce any of the solutions in -nondet-my.imp.out as a possible result of the execution. - -Hint: Check lesson_3 and lesson_7 of the IMP++ tutorial. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp deleted file mode 100644 index 7cb1b4c12f4..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp +++ /dev/null @@ -1 +0,0 @@ -print(read() + read() + read()); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.in deleted file mode 100644 index e2cf4aeb464..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.in +++ /dev/null @@ -1,2 +0,0 @@ -10 20 30 - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.out deleted file mode 100644 index 77beb5259f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-0.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "60" -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp deleted file mode 100644 index 3a6abe5b373..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp +++ /dev/null @@ -1 +0,0 @@ -print(read() + read() / read()); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.in deleted file mode 100644 index e2cf4aeb464..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.in +++ /dev/null @@ -1,2 +0,0 @@ -10 20 30 - diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.out deleted file mode 100644 index 9720d9d7ca9..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-1.imp.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "10" - } -#Or - { - S:String - #Equals - "11" - } -#Or - { - S:String - #Equals - "30" - } -#Or - { - S:String - #Equals - "32" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp deleted file mode 100644 index 27e59ad2db2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp +++ /dev/null @@ -1,2 +0,0 @@ -int x; -print(++x,++x,++x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp.out deleted file mode 100644 index fc70b92fa61..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-2.imp.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "123" - } -#Or - { - S:String - #Equals - "132" - } -#Or - { - S:String - #Equals - "312" - } -#Or - { - S:String - #Equals - "321" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp deleted file mode 100644 index 3f2353fa50b..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp +++ /dev/null @@ -1,8 +0,0 @@ -int x; -print("x = "); -x=read(); -int t1; t1 = spawn {x=x/2;}; -int t2; t2 = spawn { /* join(t1); */ x=x+10;}; // uncomment for fully sync -join(t1); -join(t2); -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.out deleted file mode 100644 index d9a4dfed140..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-3.imp.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "x = 5\n" - } -#Or - { - S:String - #Equals - "x = 10\n" - } -#Or - { - S:String - #Equals - "x = 15\n" - } -#Or - { - S:String - #Equals - "x = 20\n" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-my.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-my.imp.out deleted file mode 100644 index 61445f570a0..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/non-determinism/tests/nondet-my.imp.out +++ /dev/null @@ -1,41 +0,0 @@ - { - S:String - #Equals - "1" - } -#Or - { - S:String - #Equals - "2" - } -#Or - { - S:String - #Equals - "3" - } -#Or - { - S:String - #Equals - "4" - } -#Or - { - S:String - #Equals - "5" - } -#Or - { - S:String - #Equals - "6" - } -#Or - { - S:String - #Equals - "7" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp.out deleted file mode 100644 index 7374ffea833..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp.out +++ /dev/null @@ -1,104 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - - - 0 - - - . - - - x |-> 0 - y |-> 1 - - - - - 0 |-> 3 - 1 |-> 1 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - - - 0 - - - . - - - x |-> 0 - y |-> 1 - - - - - 0 |-> 3 - 1 |-> 2 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - - - 0 - - - . - - - x |-> 0 - y |-> 1 - - - - - 0 |-> 3 - 1 |-> 3 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.in deleted file mode 100644 index 654d526942a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.in +++ /dev/null @@ -1 +0,0 @@ -2 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.out deleted file mode 100644 index 863e2ef1a21..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.out +++ /dev/null @@ -1 +0,0 @@ -Input two numbers: Their sum is: 5 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp.out deleted file mode 100644 index 9053d517a80..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 2 -Line 15: x = 1 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp deleted file mode 100644 index 3f2353fa50b..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp +++ /dev/null @@ -1,8 +0,0 @@ -int x; -print("x = "); -x=read(); -int t1; t1 = spawn {x=x/2;}; -int t2; t2 = spawn { /* join(t1); */ x=x+10;}; // uncomment for fully sync -join(t1); -join(t2); -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.in deleted file mode 100644 index 409940768f2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.in +++ /dev/null @@ -1 +0,0 @@ -23 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.out deleted file mode 100644 index 576aee71db3..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.out +++ /dev/null @@ -1,23 +0,0 @@ - { - Out:String - #Equals - "x = 11\n" - } -#Or - { - Out:String - #Equals - "x = 16\n" - } -#Or - { - Out:String - #Equals - "x = 21\n" - } -#Or - { - Out:String - #Equals - "x = 33\n" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.in deleted file mode 100644 index 58d2fb64991..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 0 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.out deleted file mode 100644 index 0fc5f17aa09..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.out +++ /dev/null @@ -1,2 +0,0 @@ -Add numbers up to (<= 0 to quit)? Sum = 55 -Add numbers up to (<= 0 to quit)? \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/Makefile b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/Makefile deleted file mode 100644 index 147543d56cb..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_7/Makefile diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/README.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/README.md deleted file mode 100644 index 1c199f9b67d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/README.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Wrapping up Larger Languages - -In this lesson we wrap up IMP++'s semantics and also generate its poster. -While doing so, we also learn how to display larger configurations in order -to make them easier to read and print. - -Note that we rearrange a bit the semantics, to group the semantics of old -IMP's constructs together, and separate it from the new IMP++'s semantics. - -There is a detailed discussion at the end of the document about the -`--transition` option of `kompile`, because that is important and we want -the poster to include everything we learned in this part of the tutorial. - -You can go even further and manually edit the generated Latex document. -You typically want to do that when you want to publish your language -definition, or parts of it, and you need to finely tune it to fit the -editing requirements. For example, you may want to insert some negative -spaces, etc. - -Part 4 of the tutorial is now complete. At this moment you should know most -of K framework's features and how to use the K tool. You can now define or -design your own programming languages, and then execute and analyze programs. - -[MOVIE (out of date) [06'26"]](https://youtu.be/QV1AGagktzk) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/imp.md b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/imp.md deleted file mode 100644 index c4522a17410..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/imp.md +++ /dev/null @@ -1,669 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -IMP++ -===== - -Author: Grigore Roșu (grosu@illinois.edu) -Organization: University of Illinois at Urbana-Champaign - -### Abstract -This is the **K** semantic definition of the IMP++ language. -IMP++ extends the IMP language with the features listed below. We -strongly recommend you to first familiarize yourself with the IMP -language and its **K** definition in Tutorial 2 before proceeding. - -__Strings and concatenation of strings.__ Strings are useful -for the `print` statement, which is discussed below. For -string concatenation, we use the same `+` construct that we use -for addition (so we overload it). - -__Variable increment.__ We only add a pre-increment construct: -`++x` increments variable `x` and evaluates to the -incremented value. Variable increment makes the evaluation of -expressions have side effects, and thus makes the evaluation strategies -of the various language constructs have an influence on the set -of possible program behaviors. - -__Input and output.__ IMP++ adds a `read()` expression -construct which reads an integer number and evaluates to it, and -a variadic (i.e., it has an arbitrary number of arguments) statement -construct `print(e1,e2,...,en)` which evaluates its arguments -and then outputs their values. Note that the **K** tool allows to -connect the input and output cells to the standard input and output -buffers, this way compiling the language definition into an -interactive interpreter. - -__Abrupt termination.__ The `halt` statement simply halts -the program. The **K** tool shows the resulting configuration, as if the -program terminated normally. We therefore assume that an external -observer does not care whether the program terminates normally or -abruptly, same like with `exit` statements in conventional -programming languages like C. - -__Dynamic threads.__ The expression construct `spawn s` -starts a new concurrent thread that executes statement `s`, -which is expected to be a block, and evaluates immediately to a fresh -thread identifier that is also assigned to the newly created thread. -The new thread is given at creation time the `environment` of its -parent, so it can access all its parent's variables. This allows for -the parent thread, and the child thread to communicate; it also allows -for races and "unexpected" behaviors, so be careful. -For thread synchronization, IMP++ provides a thread join statement -construct `join t;`, where `t` evaluates to a thread -identifier, which stalls the current thread until thread `t` -completes its computation. For simplicity, we here assume a -sequentially consistent shared memory model. To experiment with other -memory models, see the definition of KERNELC. - -__Blocks and local variables.__ IMP++ allows blocks enclosed by -curly brackets. Also, IMP's global variable declaration construct is -generalized to be used anywhere as a statement, not only at the -beginning of the program. As expected, the scope of the declared -variables is from their declaration point till the end of the most -nested enclosing block. - - -### What You Will Learn Here - - -* How to define a less trivial language in **K**, as explained above. -* How to use the `superheat` and `supercool` -options of the **K** tool `kompile` to exhaustively explore the -non-determinism due to underspecified evaluation strategies. -* How to use the `transition` option of the **K** tool to -exhaustively explore the non-determinism due to concurrency. -* How to connect certain cells in the configuration to the -standard input and standard output, and thus turn the `krun` -tool into an interactive interpreter for the defined language. -* How to exhaustively search for the non-deterministic behaviors -of a program using the `search` option of `krun`. - -```k -module IMP-SYNTAX - imports DOMAINS-SYNTAX -``` -### Syntax -IMP++ adds several syntactic constructs to IMP. Also, since the -variable declaration construct is generalized to be used anywhere a -statement can be used, not only at the beginning of the program, we -need to remove the previous global variable declaration of IMP and -instead add a variable declaration statement construct - -We do not re-discuss the constructs which are taken over from IMP, -except when their syntax has been subtly modified (such as, for -example, the syntax of the previous "statement" assignment which -is now obtained by composing the new assignment expression, and the -new expression statement constructs); go the last lesson of -Tutorial 2 if you are interested in IMP's constructs. For execution -purposes, we tag the addition and division operations as members of the -`addition` and `division` groups. These groups have no theoretical significance, -in that they do not affect the semantics of the language in any way. They only -have practical relevance, specific to our implementation of the **K** tool. -Specifically, we can tell the **K** tool (using its `superheat` and `supercool` -options) that we want to exhaustively explore all the non-deterministic -behaviors (due to strictness) of these language constructs. For performance -reasons, by default the **K** tool chooses an arbitrary but fixed order to -evaluate the arguments of the strict language constructs, thus possibly losing -behaviors due to missed interleavings. This aspect was irrelevant in IMP, -because its expressions had no side effects, but it becomes relevant in IMP++. - -The syntax of the IMP++ constructs is self-explanatory. Note that assignment -is now an expression construct. Also, `print` is variadic, taking a -list of expressions as argument. It is also strict, which means that the -entire list of expressions, that is, each expression in the list, will be -evaluated. Note also that we have now defined sequential composition -of statements as a whitespace-separated list of statements, aliased with -the nonterminal `Stmts`, and block as such a (possibly empty) sequence -of statements surrounded by curly brackets. - -```k - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" AExp [strict] - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] - > AExp "+" AExp [left, strict] - > "spawn" Block - > Id "=" AExp [strict(2)] - syntax BExp ::= Bool - | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict(1)] - syntax Block ::= "{" Stmts "}" - syntax Stmt ::= Block - | AExp ";" [strict] - | "if" "(" BExp ")" - Block "else" Block [strict(1)] - | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "join" AExp ";" [strict] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax Stmts ::= List{Stmt,""} - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS -``` - -### Semantics -We next give the semantics of IMP++. We start by first defining its -configuration. - -#### Configuration -The original configuration of IMP has been extended to include -all the various additional cells needed for IMP++. -To facilitate the semantics of threads, more specifically -to naturally give them access to their parent's variables, we prefer a -(rather conventional) split of the program state into an -`environment` and a `store`. An environment maps -variable names into `locations`, while a store maps locations -into values. Stores are also sometimes called `states`, or -`heaps`, or `memory`, in the literature. Like values, locations -can be anything. For simplicity, here we assume they are natural -numbers. Moreover, each thread has its own environment, so it knows -where all the variables that it has access to are located in the store -(that includes its locally declared variables as well as the variables -of its parent thread), and its own unique identifier. The store is -shared by all threads. For simplicity, we assume a sequentially consistent -memory model in IMP++. Note that the `thread` cell has multiplicity -`*`, meaning that there could be zero, one, or more instances of that cell -in the configuration at any given time. This multiplicity information -is important for **K**'s _configuration abstraction_ process: it tells -**K** how to complete rules which, in order to increase the modularity of the -definition, choose to not mention the entire configuration context. -The `in` and `out` cells hold the input and the output -buffers as lists of items. - -```k - configuration - - - 0 - $PGM:Stmts - .Map - - -//
- .Map -// .List -// .List - .List - .List -
-// Replace the and cells with the next two in order to -// initialize the input buffer through krun -// $IN:List -// .List -// Replace the and cells with the next two to connect the -// input/output buffers to stdin/stdout through krun -// .List -// .List -// Replace the and cells with the next two to connect the -// input/output buffers to stdin/stdout and also allow input through krun -// $IN:List -// .List -``` - -We can also use configuration variables to initialize -the configuration through `krun`. For example, we may want to -pass a few list items in the `in` cell when the program makes -use of `read()`, so that the semantics does not get stuck. -Recall from IMP that configuration variables start with a _$_ -character when used in the configuration (see, for example, -_$PGM_) and can be initialized with any string by -`krun`; or course, the string should parse to a term of the -corresponding sort, otherwise errors will be generated. -Moreover, **K** allows you to connect list cells to the standard input or -the standard output. For example, if you add the attribute -`stream="stdin"` to the `in` cell, then `krun` -will prompt the user to pass input when the `in` cell is empty -and any semantic rule needs at least one item to be present there in -order to match. Similarly but dually, if you add the attribute -`stream="stdout"` to the `out` cell, then any item -placed into this cell by any rule will be promptly sent to the -standard output. This way, `krun` can be used to obtain -interactive interpreters based directly on the **K** semantics of the -language. For example: - -```shell script -sh$ krun sum-io.imp --output none -Add numbers up to (<= 0 to quit)? 10 -Sum = 55 -Add numbers up to (<= 0 to quit)? 1000 -Sum = 500500 -Add numbers up to (<= 0 to quit)? 0 -sh$ -``` - -The option `--output none` instructs `krun` to not -display the resulting configuration after the program executes. The -input/output streaming works with or without this option, although -if you don't use the option then a configuration with empty -`in` and `out` cells will be displayed after the program -is executed. You can also initialize the configuration using -configuration variables and stream the contents of the cells to -standard input/output at the same time. For example, if you use a -configuration variable in the `in` cell and pass contents to it -through `krun`, then that contents will be first consumed and -then the user will be prompted to introduce additional input if the -program's execution encounters more `read()` constructs. - -### The old IMP constructs -The semantics of the old IMP constructs is almost identical to their -semantics in the original IMP language, except for those constructs -making use of the program state and for those whose syntax has slightly -changed. Indeed, the rules for variable lookup and assignment in IMP -accessed the `state` cell, but that cell is not available in IMP++ -anymore. Instead, we have to use the combination of environment and store -cells. Thanks to **K**'s implicit configuration abstraction, we do not have -to mention the `thread` and `threads` cells: these are -automatically inferred (and added by the **K** tool at compile time) from the -definition of the configuration above, as there is only one correct -way to complete the configuration context of these rules in order to -match the configuration declared above. In our case here, "correct way" -means that the `k` and `env` cells will be considered as -being part of the same `thread` cell, as opposed to each being part -of a different thread. Configuration abstraction is crucial for modularity, -because it gives us the possibility to write our definitions in a way that -may not require us to revisit existing rules when we change the configuration. -Changes in the configuration are quite frequent in practice, typically -needed in order to accommodate new language features. For example, -imagine that we initially did not have threads in IMP++. There -would be no need for the `thread` and `threads` cells in -the configuration then, the cells `k` and `env` being simply -placed at the top level in the `T` cell, together with the -already existing cells. Then the rules below would be exactly the -same. Thus, configuration abstraction allows you to not have to -modify your rules when you make structural changes in your language -configuration. - -Below we list the semantics of the old IMP constructs, referring the -reader to the **K** semantics of IMP for their meaning. Like we tagged the -addition and the division rules above in the syntax, we also tag the lookup -and the assignment rules below (as members of the groups `lookup` and -`assignment`), because we want to refer to them when we generate the -language model (with the `kompile` tool), basically to allow them to -generate (possibly non-deterministic) transitions. Indeed, these two rules, -unlike the other rules corresponding to old IMP constructs, can yield -non-deterministic behaviors when more threads are executed concurrently. -In terms of rewriting, these two rules can "compete" with each other on -some program configurations, in the sense that they can both match at the -same time and different behaviors may be obtained depending upon which of -them is chosen first. - -```k - syntax KResult ::= Int | Bool -``` -### Variable lookup - -```k - rule X:Id => I ... - ... X |-> N ... - ... N |-> I ... [group(lookup)] -``` - -### Arithmetic constructs - -```k - rule I1 / I2 => I1 /Int I2 when I2 =/=Int 0 - rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I -``` - -### Boolean constructs - -```k - rule I1 <= I2 => I1 <=Int I2 - rule ! T => notBool T - rule true && B => B - rule false && _ => false -``` - -### Variable assignment -Note that the old IMP assignment statement `X = I;` is now composed of two -constructs: an assignment expression construct `X = I`, followed by a -semicolon `;` turning the expression into a statement. The rationale behind -this syntactic restructuring has been explained in Lesson 7. Here is the -semantics of the two constructs: - -```k - rule _:Int; => . - rule X = I:Int => I ... - ... X |-> N ... - ... N |-> (_ => I) ... [group(assignment)] -``` - -### Sequential composition -Sequential composition has been defined as a whitespace-separated syntactic -list of statements. Recall that syntactic lists are actually syntactic -sugar for cons-lists. Therefore, the following two rules eventually -sequentialize a syntactic list of statements `s1 s2 ... sn..` into the -corresponding computation `s1 ~> s2 ~> ... ~> sn`. - -```k - rule .Stmts => . - rule S:Stmt Ss:Stmts => S ~> Ss -``` - -### Conditional statement - -```k - rule if (true) S else _ => S - rule if (false) _ else S => S -``` - -### While loop -The only thing to notice here is that the empty block has been replaced -with the block holding the explicit empty sequence. That's because in -the semantics all empty lists become explicit corresponding dots -(to avoid parsing ambiguities) - -```k - rule while (B) S => if (B) {S while (B) S} else {.Stmts} -``` - -### The new IMP++ constructs -We next discuss the semantics of the new IMP++ constructs. - -### Strings -First, we have to state that strings are also results. -Second, we give the semantics of IMP++ string concatenation (which -uses the already existing addition symbol `+` from IMP) by -reduction to the built-in string concatenation operation. - -```k - syntax KResult ::= String - rule Str1 + Str2 => Str1 +String Str2 -``` - -### Variable increment -Like variable lookup, this is also meant to be a supercool transition: we -want it to count both in the non-determinism due to strict operations above -it in the computation and in the non-determinism due to thread -interleavings. This rule also relies on **K**'s configuration abstraction. -Without abstraction, you would have to also include the `thread` and -`threads` cells. - -```k - rule ++X => I +Int 1 ... - ... X |-> N ... - ... N |-> (I => I +Int 1) ... [group(increment)] -``` - -### Read -The `read()` construct evaluates to the first integer in the -input buffer, which it consumes. Note that this rule is put in the group -`increment`. This is because we will include it in the set of -potentially non-deterministic transitions when we kompile the definition; -we want to do that because two or more threads can "compete" on -reading the next integer from the input buffer, and different choices -for the next transition can lead to different behaviors. - -```k - rule read() => I ... - ListItem(I:Int) => .List ... [group(read)] -``` - -### Print -The `print` statement is strict, so all its arguments are -eventually evaluated (recall that `print` is variadic). We -append each of its evaluated arguments, in order, to the output buffer, -and structurally discard the residual `print` statement with an -empty list of arguments. We only want to allow printing integers and -strings, so we define a `Printable` syntactic category including -only these and define the `print` statement to only print -`Printable` elements. Alternatively, we could have had two -similar rules, one for integers and one for strings. Recall that, -currently, **K**'s lists are cons-lists, so we cannot simply rewrite the -head of a list (`P`) into a list (`.`). The first rule below is tagged, -because we want to include it in the list of transitions when we kompile; -different threads may compete on the output buffer and we want to capture -all behaviors. - -```k - syntax Printable ::= Int | String - -/* currently it is necessary to subsort Printable to AExp, - but future K should be able to infer that automatically. */ - syntax AExp ::= Printable - - context print(HOLE:AExp, _AEs:AExps); - - rule print(P:Printable,AEs => AEs); ... - ... .List => ListItem(P) [group(print)] - rule print(.AExps); => . -``` - -### Halt -The `halt` statement empties the computation, so the rewriting process -simply terminates as if the program terminated normally. Interestingly, once -we add threads to the language, the `halt` statement as defined below -will terminate the current thread only. If you want an abrupt termination -statement that halts the entire program, then you need to discard the entire -contents of the `threads` cell, so the entire computation abruptly -terminates the entire program, no matter how many concurrent threads it has, -because there is nothing else to rewrite. - -```k - rule halt; ~> _ => . -``` - -### Spawn thread -A spawned thread is passed its parent's environment at creation time. -The `spawn` expression in the parent thread is immediately -replaced by the unique identifier of the newly created thread, so the -parent thread can continue its execution. We only consider a sequentially -consistent shared memory model for IMP++, but other memory models can also -be defined in **K**; see, for example, the definition of KERNELC. Note that -the rule below does not need to be tagged in order to make it a transition -when we kompile, because the creation of the thread itself does not interfere -with the execution of other threads. Also, note that **K**'s configuration -abstraction is at heavy work here, in two different places. First, the -parent thread's `k` and `env` cells are wrapped within a -`thread` cell. Second, the child thread's `k`, `env` -and `id` cells are also wrapped within a `thread` cell. Why -that way and not putting all these four cells together within the -same thread, or even create an additional `threads` cell at top -holding a `thread` cell with the new `k`, `env` -and `id`? Because in the original configuration we declared -the multiplicity of the `thread` cell to be `*`, which -effectively tells the **K** tool that zero, one or more such cells can -co-exist in a configuration at any moment. The other cells have the -default multiplicity `one`, so they are not allowed to multiply. -Thus, the only way to complete the rule below in a way consistent with -the declared configuration is to wrap the first two cells in a -`thread` cell, and the latter two cells under the `.` -also in a `thread` cell. Once the rule applies, the spawning -thread cell will add a new thread cell next to it, which is consistent -with the declared configuration cell multiplicity. The unique identifier -of the new thread is generated using the `fresh` side condition. - -```k - rule spawn S => !T:Int +Int 1 ... Rho - (.Bag => ... S Rho !T +Int 1 ...) -``` -### Join thread -A thread who wants to join another thread `T` has to wait until -the computation of `T` becomes empty. When that happens, the -join statement is simply dissolved. The terminated thread is not removed, -because we want to allow possible other join statements to also dissolve. - -```k - rule join(T); => . ... ... . T ... -``` - -### Blocks -The body statement of a block is executed normally, making sure -that the environment at the block entry point is saved in the computation, -in order to be recovered after the block body statement. This step is -necessary because blocks can declare new variables having the same -name as variables which already exist in the environment, and our -semantics of variable declarations is to update the environment map in -the declared variable with a fresh location. Thus, variables which -are shadowed lose their original binding, which is why we take a -snapshot of the environment at block entrance and place it after the -block body (see the semantics of environment recovery at the end of -this module). Note that any store updates through variables which are -not declared locally are kept at the end of the block, since the store -is not saved/restored. An alternative to this environment save/restore -approach is to actually maintain a stack of environments and to push a -new layer at block entrance and pop it at block exit. The variable -lookup/assign/increment operations then also need to change, so we do -not prefer that non-modular approach. Compilers solve this problem by -statically renaming all local variables into fresh ones, to completely -eliminate shadowing and thus environment saving/restoring. - -```k - rule {Ss} => Ss ~> Rho ... Rho -``` - -### Variable declaration -We allocate a fresh location for each newly declared variable and -initialize it with 0. - -```k - rule int (X,Xs => Xs); ... - Rho => Rho[X <- !N:Int] - ... .Map => !N |-> 0 ... - rule int .Ids; => . -``` - -### Auxiliary operations -We only have one auxiliary operation in IMP++, the environment -recovery. Its role is to discard the current environment in the -`env` cell and replace it with the environment that it holds. - -```k - rule Rho => . ... _ => Rho -``` - -If you want to avoid useless environment recovery steps and keep the size -of the computation structure smaller, then you can also add the rule -``` - rule (_:Map => .) ~> _:Map -``` -This rule acts like a ``tail recursion'' optimization, but for blocks. */ -```k -// verification ids - syntax Id ::= "n" [token] - | "sum" [token] - | "a" [token] - | "b" [token] - | "c" [token] -endmodule -``` -### On Kompilation Options - -We are done with the IMP++ semantics. The next step is to kompile the -definition using the `kompile` tool, this way generating a language -model. Depending upon for what you want to use the generated language model, -you may need to kompile the definition using various options. We here discuss -these options. - -To tell the **K** tool to exhaustively explore all the behaviors due to the -non-determinism of addition, division, and threads, we have to kompile -with the command: - -```shell script -kompile imp.k --transition="addition division lookup assignment increment read print" -``` - -As already mentioned, the syntax and rule groups play no theoretical or -foundational role in **K**. They are only a means to allow `kompile` to -refer to them in its options, like we did above. By default, `kompile`'s -transition option is empty, because this yields the fastest language model when -executed. Transitions may slow down the execution, but they instrument -the language model to allow for formal analysis of program behaviors, even for -exhaustive analysis. - -Theoretically, the heating/cooling rules in **K** are fully reversible and -unconstrained by side conditions as we showed in the semantics of IMP. -For example, the theoretical heating/cooling rules corresponding to the -`strict` attribute of division are the following: - -``` -E₁ / E₂ ⇒ E₁ ⤳ □ / E₂ -E₁ ⤳ □ / E₂ ⇒ E₁ / E₂ -E₁ / E₂ ⇒ E₂ ⤳ E₁ / □ -E₂ ⤳ E₁ / □ ⇒ E₁ / E₂ -``` - -The other semantic rules apply `modulo` such structural rules. -For example, using heating rules we can bring a redex (a subterm which -can be reduced with semantic rules) to the front of the computation, -then reduce it, then use cooling rules to reconstruct a term over the -original syntax of the language, then heat again and -non-deterministically pick another redex, and so on and so forth -without losing any opportunities to apply semantic rules. -Nevertheless, these unrestricted heating/cooling rules may create an -immense, often unfeasibly large space of possibilities to analyze. -The `--transition` option implements an optimization which works -well with other implementation choices made in the current **K** tool. -Recall from the detailed description of the IMP language semantics that -(theoretical) reversible rules like above are restricted by default -to complementary conditional rules of the form - -``` -E₁ / E₂ ⇒ E₁ ⤳ □ / E₂ - if E₁ not in KResult -E₁ ⤳ □ / E₂ ⇒ E₁ / E₂ - if E₁ in KResult -E₁ / E₂ ⇒ E₂ ⤳ E₁ / □ - if E₂ not in KResult -E₂ ⤳ E₁ / □ ⇒ E₁ / E₂ - if E₂ in KResult -``` - -Therefore, our tool eagerly heats and lazily cools the computation. -In other words, heating rules apply until a redex gets placed on the -top of the computation, then some semantic rule applies and rewrites -that into a result, then a cooling rule is applied to plug the -obtained result back into its context, then another argument may be -chosen and completely heated, and so on. This leads to efficient -execution, but it may and typically does hide program behaviors. -Using the `--transition` option allows you to interfere with this -process and to obtain all possible non-deterministic behaviors as if -the theoretical heating/cooling rules were applied. Optimizations -of course happen under the hood, but you need not be aware of them. -Used carefully, this mechanism allows us to efficiently explore more of -the non-deterministic behaviors of a program, even all of them (like here). -For example, with the semantics of IMP++ given above, the `krun` -command with the `--search` option detects all five behaviors -of the following IMP++ program (`x` can be 0, 1, 2, 3, or undefined -due to division-by-zero): -``` - int x,y; - x = 1; - y = ++x / (++x / x); -``` - -Besides non-determinism due to underspecified argument evaluation -orders, which the current **K** tool addresses as explained above, there -is another important source of non-determinism in programming languages: -non-determinism due to concurrency/parallelism. For example, when two -or more threads are about to access the same location in the store and at -least one of these accesses is a write (i.e., an instance of the variable -assignment rule), there is a high chance that different choices for -the next transition lead to different program behaviors. While in the -theory of **K** all the count as computational steps -and hereby as transitions in the transition system associated to the -program, in practice that may yield a tremendous number of step -interleavings to consider. Most of these interleavings are behaviorally -equivalent for most purposes. For example, the fact that a thread computes -a step `8+3 ⇒ 11` is likely irrelevant for the other -threads, so one may not want to consider it as an observable transition in -the space of interleavings. Since the K tool cannot know without help which -transitions need to be explored and which do not, our approach is to -let the user say so explicitly using the `transition` option of -`kompile`. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/media.properties b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/media.properties deleted file mode 100644 index 86f4b4e9c23..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=QV1AGagktzk -video_length_secs=386 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/collatz.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp.out deleted file mode 100644 index 7374ffea833..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/div.imp.out +++ /dev/null @@ -1,104 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - - - 0 - - - . - - - x |-> 0 - y |-> 1 - - - - - 0 |-> 3 - 1 |-> 1 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - - - 0 - - - . - - - x |-> 0 - y |-> 1 - - - - - 0 |-> 3 - 1 |-> 2 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - - - 0 - - - . - - - x |-> 0 - y |-> 1 - - - - - 0 |-> 3 - 1 |-> 3 - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.in deleted file mode 100644 index 654d526942a..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.in +++ /dev/null @@ -1 +0,0 @@ -2 3 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.out deleted file mode 100644 index 863e2ef1a21..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/io.imp.out +++ /dev/null @@ -1 +0,0 @@ -Input two numbers: Their sum is: 5 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp.out deleted file mode 100644 index 9053d517a80..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/locals.imp.out +++ /dev/null @@ -1,5 +0,0 @@ -Line 3: x = 1 -Line 7: x = 2 -Line 11: x = 3 -Line 13: x = 2 -Line 15: x = 1 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/primes.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k deleted file mode 100644 index c06a5d7961e..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module ABS-SPEC - imports IMP - -claim - ... - - if (0 <= a) { - b = a; - } else { - b = 0 + -a; - } - => - .K - ... - ... - a |-> LA:Int - b |-> LB:Int - ... - ... - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - ... - LA |-> A:Int - LB |-> (_ => absInt(A)) - ... - -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/abs-spec.k.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/max-spec.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/max-spec.k deleted file mode 100644 index bb3e430aa93..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/max-spec.k +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module MAX-SPEC - imports IMP - -claim - ... - - if (b <= a) { - c = a; - } else { - c = b; - } - => - .K - ... - ... - a |-> LA:Int - b |-> LB:Int - c |-> LC:Int - ... - ... - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - ... - LA |-> A:Int - LB |-> B:Int - LC |-> (_ => maxInt(A, B)) - ... - -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k deleted file mode 100644 index 892ac78fe80..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module MIN-SPEC - imports IMP - -claim - ... - - if (a <= b) { - c = a; - } else { - c = b; - } - => - .K - ... - ... - a |-> LA:Int - b |-> LB:Int - c |-> LC:Int - ... - ... - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - ... - LA |-> A:Int - LB |-> B:Int - LC |-> (_ => minInt(A, B)) - ... - -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/min-spec.k.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k deleted file mode 100644 index a9c9aca90df..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module SUM-INVARIANT - imports IMP - -claim - ... - - while (!(n <= 0)) { - sum = sum + n; - n = n + -1; - } - => - .K - ... - ... - n |-> LN:Int - sum |-> LSUM:Int - ... - ... - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - ... - LN |-> (N:Int => 0) - LSUM |-> (S:Int => S +Int ((N +Int 1) *Int N /Int 2)) - ... - _ -requires N >=Int 0 - -endmodule - -module SUM-SPEC - imports SUM-INVARIANT - -claim - ... - - int n, sum; - n = N:Int; - sum = 0; - while (!(n <= 0)) { - sum = sum + n; - n = n + -1; - } - => - .K - ... - - .Map - => - n |-> ?LN:Int - sum |-> ?LSUM:Int - - ... - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "" ~> . ) ) - - ... - .Map - => - ?LN |-> 0 - ?LSUM |-> ((N +Int 1) *Int N /Int 2) - ... - C => C +Int 2 -requires N >=Int 0 -endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/sum-spec.k.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp deleted file mode 100644 index 3f2353fa50b..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp +++ /dev/null @@ -1,8 +0,0 @@ -int x; -print("x = "); -x=read(); -int t1; t1 = spawn {x=x/2;}; -int t2; t2 = spawn { /* join(t1); */ x=x+10;}; // uncomment for fully sync -join(t1); -join(t2); -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.in deleted file mode 100644 index 409940768f2..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.in +++ /dev/null @@ -1 +0,0 @@ -23 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.out deleted file mode 100644 index 576aee71db3..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/spawn.imp.out +++ /dev/null @@ -1,23 +0,0 @@ - { - Out:String - #Equals - "x = 11\n" - } -#Or - { - Out:String - #Equals - "x = 16\n" - } -#Or - { - Out:String - #Equals - "x = 21\n" - } -#Or - { - Out:String - #Equals - "x = 33\n" - } diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.in b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.in deleted file mode 100644 index 58d2fb64991..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.in +++ /dev/null @@ -1 +0,0 @@ -10 0 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.out deleted file mode 100644 index 0fc5f17aa09..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum-io.imp.out +++ /dev/null @@ -1,2 +0,0 @@ -Add numbers up to (<= 0 to quit)? Sum = 55 -Add numbers up to (<= 0 to quit)? \ No newline at end of file diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/sum.imp.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/Makefile b/k-distribution/pl-tutorial/1_k/5_types/Makefile deleted file mode 100644 index 7364c174d0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=lesson_1 lesson_1.9 lesson_2 lesson_3 lesson_5 lesson_5.5 lesson_6 - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/README.md b/k-distribution/pl-tutorial/1_k/5_types/README.md deleted file mode 100644 index 69b5601e2bc..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/README.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Part 5: Defining Type Systems - -In this part of the tutorial we will show that defining type systems for -languages is essentially no different from defining semantics. The major -difference is that programs and fragments of programs now rewrite to their -types, instead of to concrete values. In terms of K, we will learn how -to use it for a certain particular but important kind of applications. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/Makefile deleted file mode 100644 index ae35bffef65..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -DEF=lambda -EXT=lambda -KOMPILE_FLAGS=--syntax-module LAMBDA --enable-search -KRUN_FLAGS=--search --pattern " V:K " - -include ../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/NOTES.md deleted file mode 100644 index 56293e475ca..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/NOTES.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -This currently does NOT work, because of the rules - - rule _:Int => int [anywhere] - rule _:Bool => bool [anywhere] - -which now rewrite ANY integer ANYWHERE to "int", including integers -that appear in the internal data-structures/functions of the builtins. -We will need to allow a strategy where "anywhere" means anywhere in one -or more computational cells. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/lambda.k deleted file mode 100644 index fdc3b242f0a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/lambda.k +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA - imports DOMAINS - imports SUBSTITUTION - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= KVar - | "lambda" KVar ":" Type "." Exp [binder] - | Exp Exp [left] - | "(" Exp ")" [bracket] - - syntax Exp ::= Type - - syntax KResult ::= Type - - syntax Exp ::= Exp "->" Exp [klabel(functionType)] - rule lambda X : T . E => T -> (E[T/X]) [anywhere] - rule (T1 -> T2) T1 => T2 [anywhere] - - syntax Exp ::= Int [klabel(intConst), prefer] - | Bool [klabel(boolConst), prefer] - | Exp "*" Exp [left] - | Exp "/" Exp - > Exp "+" Exp [left] - > Exp "<=" Exp - - rule _:Int => int [anywhere] - rule _:Bool => bool [anywhere] - rule int * int => int [anywhere] - rule int / int => int [anywhere] - rule int + int => int [anywhere] - rule int <= int => bool [anywhere] - - syntax Exp ::= "if" Exp "then" Exp "else" Exp - rule if bool then T:Type else T => T [anywhere] - - syntax Exp ::= "let" KVar ":" Type "=" Exp "in" Exp [macro] - rule let X : T = E in E' => (lambda X : T . E') E - - syntax Exp ::= "letrec" KVar ":" Type KVar ":" Type "=" Exp "in" Exp [macro] - | "mu" KVar ":" Type "." Exp [binder] - rule letrec F : T1 X : T2 = E in E' - => let F : T1 = mu F : T1 . lambda X : T2 . E in E' - rule mu X : T . E => (T -> T) (E[T/X]) [anywhere] -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda deleted file mode 100644 index 3af51edafac..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f:int->int x:int = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda.out deleted file mode 100644 index 24bfc83cbc6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - int ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda deleted file mode 100644 index 4a8159568e1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let x:bool = true in - let x:int = if x then 1 else 2 in - x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda.out deleted file mode 100644 index 24bfc83cbc6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1.9/tests/ll.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - int ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/Makefile deleted file mode 100644 index 8e0fbb4b6a1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -DEF=imp -EXT=imp - -include ../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/NOTES.md deleted file mode 100644 index 4c3e41aa4a6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/NOTES.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Explain the lack of tenv(...)? diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/README.md deleted file mode 100644 index a36aa24a168..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/README.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Imperative, Environment-Based Type Systems - -In this lesson you learn how to define a type system for an imperative -language (the IMP++ language defined in Part 4 of the tutorial), using a style -based on type environments. - -Let us copy the `imp.k` file from Part 4 of the tutorial, Lesson 7, which holds -the semantics of IMP++, and modify it into a type system. The resulting type -system, when executed, yields a type checker. - -We start by defining the new strictness attributes of the IMP++ syntax. -While doing so, remember that programs and fragments of programs now reduce -to their types. So types will be the new results of our new (type) semantics. -We also clean up the semantics by removing the unnecessary tags, and also -use `strict` instead of `seqstrict` wherever possible, because `strict` gives -implementations more freedom. Interestingly, note that `spawn` is strict now, -because the code of the child thread should type in the current parent's type -environment. Note that this is not always the case for threads, see for example -SIMPLE in the languages tutorial, but it works here for our simpler IMP++. - -From a typing perspective, the `&&` construct is strict in both its arguments; -its short-circuit (concrete) semantics is irrelevant for its (static) type -system. Similarly, both the conditional and the while loop are strict -constructs when regarded through the typing lenses. - -Finally, the sequential composition is now sequentially strict! Indeed, -statements are now going to reduce to their type, `stmt`, and it is critical -for sequential composition to type its argument statements left-to-right; -for example, imagine that the second argument is a variable declaration (whose -type semantics will modify the type environment). - -We continue by defining the new results of computations, that is, the actual -types. In this simple imperative language, we only have a few constant types: -`int`, `bool`, `string`, `block` and `stmt`. - -We next define the new configuration, which is actually quite simple. Besides -the `` cell, all we need is a type environment cell, ``, which will -hold a map from identifiers to their types. A type environment is therefore -like a state in the abstract domain of type values. - -Let us next modify the semantic rules, turning them into a type system. In -short, the idea is to reduce the basic values to their types, and then have a -rule for each language construct reducing it to its result type whenever its -arguments have the expected types. - -We write the rules in the order given by the syntax declarations, to make -sure we do not forget any construct. - -Integers reduce to their type, `int`. - -So do the strings. - -Variables are now looked up in the type environment and reduced to their type -there. Since we only declare integer variables in IMP++, their type in `tenv` -will always be `int`. Nevertheless, we write the rule generically, so that we -would not have to change it later if we add other type declarations to IMP++. -Note that we reject programs which lookup undeclared variables. Rejection, -in this case, means *rewriting getting stuck*. - -Variable increment types to `int`, provided the variable has type `int`. - -Read types to `int`, because we only allow integer input. - -Division is only allowed on integers, so it rewrites to `int` provided that its -arguments rewrite to `int`. Note, however, that in order to write `int / int`, -we have to explicitly add `int` to the syntax of arithmetic expressions. -Otherwise, the K parser rightfully complains, because `/` was declared on -arithmetic expressions, not on types. One simple and generic way to allow -types to appear anywhere, is to define `Type` as a syntactic subcategory of all -the other syntactic categories. Let's do it on a by-need basis, though. - -Addition is overloaded, so we add two typing rules for it: one for integers -and another for strings. - -As discussed, `spawn` types to `stmt` provided that its argument types to -`block`. - -The assignment construct was `strict(2)`; its typing policy is that the declared -type of `X` should be identical to the type of the assigned value. Like for -lookup, we define this rule more generically than needed for IMP++, for any -type, not only for `int`. - -The typing rules for Boolean expression constructs are in the same spirit. -Note that we need only one rule for `&&`. - -The typing of blocks is a bit trickier. First, note that we still need to -recover the environment after the block is typed, because we do not want the -block-local variables to be visible in the outer type environment. We recover -the type environment only after the block-enclosed statements type; moreover, -we also opportunistically yield a `block` type on the computation when we -discard the type environment recovery item. To account for the fact that the -block-enclosed statement can itself be a block (e.g., `{{S}}`), we would need an -additional rule. Since we do not like repetition, we instead group the types -`block` and `stmt` into one syntactic category, `BlockOrStmtType`, and now we -can have only one rule. We also include `BlockOrStmtType` in `Type`, as a -replacement for the two basic types. - -The expression statement types as expected. Recall that we only allow -arithmetic expressions, which type to `int`, to be used as statements in IMP++. - -The conditional was declared `strict` in all its arguments. Its typing policy -is that its first argument types to `bool` and its two branches to `block`. -If that is the case, then it yields a `stmt` type. - -For `while`, its first argument should type to `bool` and its second to `block`. - -Variable declarations add new bindings to the type environment. Recall that -we can only declare variables of integer type in IMP++. - -The typing policy of `print` is that it can only print integer or string values, -and in that case it types to `stmt`. Like for `BlockOrStmtType`, to avoid -having two similar rules, one for `int` and another for `string`, we prefer to -introduce an additional syntactic category, `PrintableType`, which includes both -`int` and `string` types. - -`halt` types to `stmt`; so its subsequent code is also typed. - -`join` types to `stmt`, provided that its argument types to `int`. - -Sequential composition was declared as a whitespace-separated sequentially -strict list. Its typing policy is that all the statements in the list should -type to `stmt` or `block` in order for the list to type to `stmt`. Since -lists are maintained internally as cons-lists, this is probably the simplest -way to do it: - - rule .Stmts => stmt - rule _:BlockOrStmtType Ss => Ss - -Note that the first rule, which types the empty sequence of statements to `stmt`, -is needed anyway, to type empty blocks `{}` (together with the block rule). - -`kompile` `imp.k` and `krun` all the programs in Part 4 of the tutorial. They -should all type to `stmt`. - -In the next lesson we will define a substitution-based type system for LAMBDA. - -Go to [Lesson 2, Type Systems: Substitution-Based Higher-Order Type Systems](../lesson_2/README.md). - -[MOVIE (out of date) [10'11"]](https://youtu.be/WyUxdo7GhtE) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/imp.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/imp.k deleted file mode 100644 index a01a5d7a687..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/imp.k +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module IMP-SYNTAX - imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - | "-" Int - | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict] - > AExp "+" AExp [left, strict] - > "spawn" Block [strict] - > Id "=" AExp [strict(2)] - syntax BExp ::= Bool - | AExp "<=" AExp [strict, latex({#1}\leq{#2})] - | "!" BExp [strict] - | "(" BExp ")" [bracket] - > BExp "&&" BExp [left, strict] - syntax Block ::= "{" Stmts "}" - syntax Stmt ::= Block - | AExp ";" [strict] - | "if" "(" BExp ")" - Block "else" Block [strict] - | "while" "(" BExp ")" Block [strict] - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "join" AExp ";" [strict] - - syntax Ids ::= List{Id,","} - syntax AExps ::= List{AExp,","} - syntax Stmts ::= List{Stmt,""} [strict(1)] - syntax AExps ::= Ids -endmodule - - -module IMP - imports IMP-SYNTAX - imports DOMAINS - - syntax BlockOrStmtType ::= "block" | "stmt" - syntax PrintableType ::= "int" | "string" - syntax Type ::= PrintableType | "bool" | BlockOrStmtType - - syntax KResult ::= Type - - configuration - $PGM:Stmts - .Map - - -// AExp - rule _:Int => int - rule _:String => string - rule X:Id => T ... ... X |-> T ... - rule ++X:Id => int ... ... X |-> int ... - rule read() => int - - syntax AExp ::= Type - rule int / int => int - rule int + int => int - rule - _ => int - rule string + string => string - - rule spawn block => int - rule X = T => T ... ... X |-> T ... - -// BExp - syntax BExp ::= Type - rule _:Bool => bool - rule int <= int => bool - rule ! bool => bool - rule bool && bool => bool - -// Block - rule {Ss} => Ss ~> Rho ... Rho - rule _:BlockOrStmtType ~> Rho => block ... - _ => Rho - -// Stmt - rule int; => stmt - - syntax Block ::= Type - rule if (bool) block else block => stmt - rule while (bool) block => stmt - - rule int (X:Id,Xs:Ids => Xs); ... M:Map => M [ X <- int ] - rule int .Ids; => stmt - - context print(HOLE:AExp, _); - rule print(_:PrintableType,AEs => AEs); - rule print(.AExps); => stmt - - rule halt; => stmt - - rule join int; => stmt - -// Stmts - rule .Stmts => stmt:KItem - rule _:BlockOrStmtType Ss => Ss -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/media.properties deleted file mode 100644 index bc22354c181..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=WyUxdo7GhtE -video_length_secs=611 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp deleted file mode 100644 index 49bef5c2a89..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp +++ /dev/null @@ -1,19 +0,0 @@ -// This program tests the Collatz conjecture for all numbers up to m -// and accumulates the total number of steps in s. - -int m, n, q, r, s; -m = 10; -while (!(m<=2)) { - n = m; - m = m + -1; - while (!(n<=1)) { - s = s+1; - q = n/2; - r = q+q+1; - if (r<=n) { - n = n+n+n+1; // n becomes 3*n+1 if odd - } else {n=q;} // or n/2 if even - } -} - -// s should be 66 when m is 10 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp.out deleted file mode 100644 index 8bbccd1bf45..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/collatz.imp.out +++ /dev/null @@ -1,12 +0,0 @@ - - - stmt ~> . - - - m |-> int - n |-> int - q |-> int - r |-> int - s |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp deleted file mode 100644 index 46da85aa150..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp +++ /dev/null @@ -1,3 +0,0 @@ -int x,y; -x = 1; -y = ++x / (++x / x); diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp.out deleted file mode 100644 index 34d0fe8770a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/div.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - stmt ~> . - - - x |-> int - y |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp deleted file mode 100644 index 20f11c0ca8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp +++ /dev/null @@ -1,5 +0,0 @@ -print("Input two numbers: "); -int x,y; -x = read(); -y = read(); -print("Their sum is: ", x+y, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp.out deleted file mode 100644 index 34d0fe8770a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/io.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - stmt ~> . - - - x |-> int - y |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp deleted file mode 100644 index 357c8e05992..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp +++ /dev/null @@ -1,15 +0,0 @@ -int x; -x=1; -print("Line 3: x = ", x, "\n"); -{ - int x; - x=2; - print("Line 7: x = ", x, "\n"); - { - int x; - x=3; - print("Line 11: x = ", x, "\n"); - } - print("Line 13: x = ", x, "\n"); -} -print("Line 15: x = ", x, "\n"); diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp.out deleted file mode 100644 index 74ddde6198b..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/locals.imp.out +++ /dev/null @@ -1,8 +0,0 @@ - - - stmt ~> . - - - x |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp deleted file mode 100644 index f5ff7e26c1c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp +++ /dev/null @@ -1,26 +0,0 @@ -// This program counts in s all the prime numbers up to m. - -int i, m, n, q, r, s, t, x, y, z; -m = 10; n = 2; -while (n <= m) { - // checking primality of n and writing t to 1 or 0 - i = 2; q = n/i; t = 1; - while (i<=q && 1<=t) { - x = i; - y = q; - // fast multiplication (base 2) algorithm - z = 0; - while (!(x <= 0)) { - q = x/2; - r = q+q+1; - if (r <= x) { z = z+y; } else {} - x = q; - y = y+y; - } // end fast multiplication - if (n <= z) { t = 0; } else { i = i+1; q = n/i; } - } // end checking primality - if (1 <= t) { s = s+1; } else {} - n = n+1; -} - -// s should be 4 when m = 10. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp.out deleted file mode 100644 index 94ac621032a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/primes.imp.out +++ /dev/null @@ -1,17 +0,0 @@ - - - stmt ~> . - - - i |-> int - m |-> int - n |-> int - q |-> int - r |-> int - s |-> int - t |-> int - x |-> int - y |-> int - z |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp deleted file mode 100644 index 3f2353fa50b..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp +++ /dev/null @@ -1,8 +0,0 @@ -int x; -print("x = "); -x=read(); -int t1; t1 = spawn {x=x/2;}; -int t2; t2 = spawn { /* join(t1); */ x=x+10;}; // uncomment for fully sync -join(t1); -join(t2); -print(x,"\n"); diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp.out deleted file mode 100644 index 96126dcf72f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/spawn.imp.out +++ /dev/null @@ -1,10 +0,0 @@ - - - stmt ~> . - - - t1 |-> int - t2 |-> int - x |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp deleted file mode 100644 index 7b86a9676aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp +++ /dev/null @@ -1,14 +0,0 @@ -int n, s; -while (true) { - print("Add numbers up to (<= 0 to quit)? "); - n = read(); - if (n <= 0) { halt; } - else { - s = 0; - while (!(n <= 0)) { - s = s + n; - n = n + -1; - } - print("Sum = ", s, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp.out deleted file mode 100644 index 38d56ba47a6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum-io.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - stmt ~> . - - - n |-> int - s |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp deleted file mode 100644 index 23e8bb6df0d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp +++ /dev/null @@ -1,12 +0,0 @@ -// This program calculates in sum -// the sum of numbers from 1 to n. - -int n, sum; -n = 100; -sum = 0; -while (!(n <= 0)) { - sum = sum + n; - n = n + -1; -} - -// sum should be 5050 when n is 100 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp.out deleted file mode 100644 index 12d51ccd1db..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_1/tests/sum.imp.out +++ /dev/null @@ -1,9 +0,0 @@ - - - stmt ~> . - - - n |-> int - sum |-> int - - diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/Makefile deleted file mode 100644 index ae35bffef65..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -DEF=lambda -EXT=lambda -KOMPILE_FLAGS=--syntax-module LAMBDA --enable-search -KRUN_FLAGS=--search --pattern " V:K " - -include ../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/NOTES.md deleted file mode 100644 index 66d5fc961d9..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Maybe we should define simply-typed lambda calculus in some earlier -lecture in tutorial 1, and then reuse its examples here. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/README.md deleted file mode 100644 index 7f37bfa54b3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/README.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Substitution-Based Higher-Order Type Systems - -In this lesson you learn how to define a substitution-based type system for -a higher-order language, namely the LAMBDA language defined in Part 1 of the -tutorial. - -Let us copy the definition of LAMBDA from Part 1 of the tutorial, Lesson 8. -We are going to modify it into a type systems for LAMBDA. - -Before we start, it is important to clarify an important detail, namely that -our type system will yield a type checker when executed, not a type -inferencer. In particular, we are going to change the LAMBDA syntax -to allow us to associate a type to each declared variable. The -constructs which declare variables are `lambda`, `let`, `letrec` and `mu`. -The syntax of all these will therefore change. - -Since here we are not interested in a LAMBDA semantics anymore, we take the -freedom to eliminate the `Val` syntactic category, our previous results. -Our new results are going to be the types, because programs will now reduce -to their types. - -As explained, the syntax of the `lambda` construct needs to change, to also -declare the type of the variable that it binds. We add the new syntactic -category `Type`, with the following constructs: `int`, `bool`, the function -type (which gives it its higher-order status), and parentheses as bracket. -Also, we make types our K results. - -We are now ready to define the typing rules. - -Let us start with the typing rule for lambda abstraction: `lambda X : T . E` -types to the function type `T -> T'`, where `T'` is the type obtained by further -typing `E[T/X]`. This can be elegantly achieved by reducing the lambda -abstraction to `T -> E[T/X]`, provided that we extend the function type construct -to take expressions, not only types, as arguments, and to be strict. -This can be easily achieved by redeclaring it as a strict expression construct -(strictness in the second argument would suffice in this example, but it is -more uniform to define it strict overall). - -The typing rule for application is as simple as it can get: `(T1->T2) T1 => T2`. - -Let us now give the typing rules of arithmetic and Boolean expression -constructs. First, let us get rid of `Val`. Second, rewrite each value to its -type, similarly to the type system for IMP++ in the previous lesson. Third, -replace each semantic rule by its typing rule. Fourth, make sure you -do not forget to subsort `Type` to `Exp`, so your rules above will parse. - -The typing policy of the conditional statement is that its first argument -should type to `bool` and its other two arguments should type to the same type -`T`, which will also be the result type of the conditional. So we make the -conditional construct `strict` in all its three arguments and we write the -obvious rule: `if bool then T:Type else T => T`. We want a runtime check that -the latter arguments are actually typed, so we write `T:Type`. - -There is nothing special about `let`, except that we have to make sure we -change its syntax to account for the type of the variable that it binds. -This rule is a macro, so the `let` is desugared statically. - -Similarly, the syntax of `letrec` and `mu` needs to change to account for the -type of the variable that they bind. The typing of `letrec` remains based on -its desugaring to `mu`; we have to make sure the types are also included now. - -The typing policy of `mu` is that its body should type to the same type `T` of -its variable, which is also the type of the entire `mu` expression. This can -be elegantly achieved by rewriting it to `(T -> T) E[T/X]`. Recall that -application is strict, so `E[T/X]` will be eventually reduced to its type. -Then the application types correctly only if that type is also `T`, and in -that case the result type will also be `T`. - -`kompile` and `krun` some programs. You can, for example, take the LAMBDA -programs from the first tutorial, modify them by adding types to their -variable declarations, and then type check them using `krun`. - -In the next lesson we will discuss an environment-based type system -for LAMBDA. - -Go to [Lesson 3, Type Systems: Environment-Based Higher-Order Type Systems](../lesson_3/README.md). - -[MOVIE (out of date) [6'52"]](https://youtu.be/7P2QtR9jM2o) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/lambda.k deleted file mode 100644 index a0e81eeb44c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/lambda.k +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -require "substitution.md" - -module LAMBDA - imports DOMAINS - imports SUBSTITUTION - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= KVar - | "lambda" KVar ":" Type "." Exp [binder] - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - syntax Exp ::= Type - - syntax KResult ::= Type - - syntax Exp ::= Exp "->" Exp [strict, klabel(functionType)] - - rule lambda X : T . E => T -> (E[T/X]) - rule (T1 -> T2) T1 => T2 - - syntax Exp ::= Int | Bool - | Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - - rule _:Int => int - rule _:Bool => bool - rule int * int => int - rule int / int => int - rule int + int => int - rule int <= int => bool - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict] - rule if bool then T:Type else T => T - - syntax Exp ::= "let" KVar ":" Type "=" Exp "in" Exp [macro] - rule let X : T = E in E' => (lambda X : T . E') E - - syntax Exp ::= "letrec" KVar ":" Type KVar ":" Type "=" Exp "in" Exp [macro] - | "mu" KVar ":" Type "." Exp [binder] - rule letrec F : T1 X : T2 = E in E' - => let F : T1 = mu F : T1 . lambda X : T2 . E in E' - rule mu X : T . E => (T -> T) (E[T/X]) -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/media.properties deleted file mode 100644 index 646de0bb314..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/media.properties +++ /dev/null @@ -1,2 +0,0 @@ -youtube_id=7P2QtR9jM2o -video_length_secs=412 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda deleted file mode 100644 index 3af51edafac..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f:int->int x:int = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda.out deleted file mode 100644 index 24bfc83cbc6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - int ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda deleted file mode 100644 index 4a8159568e1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let x:bool = true in - let x:int = if x then 1 else 2 in - x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda.out deleted file mode 100644 index 24bfc83cbc6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_2/tests/ll.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - int ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/Makefile deleted file mode 100644 index 46a572e4b12..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_2/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/README.md deleted file mode 100644 index e6330981291..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/README.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Environment-Based Higher-Order Type Systems - -In this lesson you learn how to define an environment-based type system for -a higher-order language, namely the LAMBDA language defined in Part 1 of the -tutorial. - -The simplest and fastest way to proceed is to copy the substitution-based -type system of LAMBDA from the previous lesson and modify it into an -environment-based one. A large portion of the substitution-based definition -will remain unchanged. We only have to modify the rules that use -substitution. - -We do not need the substitution anymore, so we can remove the require and -import statements. The syntax of types and expressions stays unchanged, but -we can now remove the `binder` tag of lambda. - -Like in the type system of IMP++ in Lesson 1, we need a configuration that -contains, besides the `` cell, a `` cell that will hold the type -environment. - -In an environment-based definition, unlike in a substitution-based one, we -need to lookup variables in the environment. So let us start with the -type lookup rule: - - rule X:Id => T ... ... X |-> T ... - -The type environment is populated by the semantic rule of `lambda`: - - rule lambda X : T . E => (T -> E) ~> Rho ... - Rho => Rho[X <- T] - -So `X` is bound to its type `T` in the type environment, and then `T -> E` -is scheduled for processing. Recall that the arrow type construct has been -extended into a strict expression construct, so `E` will be eventually reduced -to its type. Like in other environment-based definitions, we need to make -sure that we recover the type environment after the computation in the scope -of the declared variable terminates. - -The typing rule of application does not change, so it stays as elegant as it -was in the substitution-based definition: - - rule (T1 -> T2) T1 => T2 - -So do the rules for arithmetic and Boolean constructs, and those for the -`if`, and `let`, and `letrec`. - -The `mu` rule needs to change, because it was previously defined using -substitution. We modify it in the same spirit as we modified the `lambda` -rule: bind `X` to its type in the environment, schedule its body for typing -in its right context, and then recover the type environment. - -Finally, we give the semantics of environment recovery, making sure -the environment is recovered only after the preceding computation is -reduced to a type: - -rule _:Type ~> (Rho => .) ... _ => Rho - -The changes that we applied to the substitution-based definition were -therefore quite systematic: each substitution invocation was replaced with -an appropriate type environment update/recovery. - -Go to [Lesson 4, Type Systems: A Naive Substitution-Based Type Inferencer](../lesson_4/README.md). diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/lambda.k deleted file mode 100644 index cb0c80c7291..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/lambda.k +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA - imports DOMAINS - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Id - | "lambda" Id ":" Type "." Exp - | Exp Exp [strict, left] - | "(" Exp ")" [bracket] - - syntax Exp ::= Type - - syntax KResult ::= Type - - configuration - $PGM:Exp - .Map - - - syntax Exp ::= Exp "->" Exp [strict, klabel(functionType)] - rule lambda X : T . E => (T -> E) ~> Rho ... - Rho => Rho[X <- T] - - rule X:Id => T ... ... X |-> T ... - rule (T1 -> T2) T1 => T2 - - syntax Exp ::= Int | Bool - | Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - - rule _:Int => int - rule _:Bool => bool - rule int * int => int - rule int / int => int - rule int + int => int - rule int <= int => bool - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict] - rule if bool then T:Type else T => T - - syntax Exp ::= "let" Id ":" Type "=" Exp "in" Exp [macro] - rule let X : T = E in E' => (lambda X : T . E') E - - syntax Exp ::= "letrec" Id ":" Type Id ":" Type "=" Exp "in" Exp [macro] - | "mu" Id ":" Type "." Exp - rule letrec F : T1 X : T2 = E in E' - => let F : T1 = mu F : T1 . lambda X : T2 . E in E' - rule mu X : T . E => (T -> T) E ~> Rho ... - Rho => Rho[X <- T] - -// Auxiliary type environment recovery - rule _:Type ~> (Rho => .) ... _ => Rho -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda deleted file mode 100644 index 3af51edafac..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f:int->int x:int = if x <= 1 then 1 else (x * (f (x + -1))) -in (f 10) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda.out deleted file mode 100644 index 24bfc83cbc6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/factorial-letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - int ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda deleted file mode 100644 index 4a8159568e1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let x:bool = true in - let x:int = if x then 1 else 2 in - x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda.out deleted file mode 100644 index 24bfc83cbc6..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_3/tests/ll.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - int ~> . -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/Makefile deleted file mode 100644 index dc0d06879eb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -DEF=lambda -EXT=lambda -KOMPILE_FLAGS=--syntax-module LAMBDA -KOMPILE_BACKEND?=haskell -KRUN_FLAGS=--search --pattern " T:Type " --smt none - -include ../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/NOTES.md deleted file mode 100644 index 778b8ffef21..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/NOTES.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -The README needs to be changed to reflect the fact that we now have a builtin -unification procedure. We may even want to merge this lecture with the -next one, and eliminate the approach where we throw equalities on the computation. -This needs some more thinking, though, especialy on how to smoothly glue it -with Lesson 6, where we also use equalities. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/README.md deleted file mode 100644 index a57d322c7a9..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/README.md +++ /dev/null @@ -1,235 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# A Naive Substitution-Based Type Inferencer - -In this lesson you learn how to define a naive substitution-based type -inferencer for a higher-order language, namely the LAMBDA language -defined in Part 1 of the tutorial. - -Unlike in the type checker defined in Lessons 2 and 3, where we had to -associate a type with each declared variable, a type inferencer -attempts to infer the types of all the variables from the way those -variables are used. Let us take a look at this program, say `plus.lambda`: - - lambda x . lambda y . x + y - -Since `x` and `y` are used in an integer addition context, we can infer -that they must have the type `int` and the result of the addition is -also an `int`, so the type of the entire expression is `int -> int -> int`. -Similarly, the program `if.lambda` - - lambda x . lambda y . lambda z . - if x then y else z - -can only make sense when `x` has type `bool` and `y` and `z` have the same -type, say `t`, in which case the type of the entire expression is -`bool -> t -> t -> t`. Since the type `t` can be anything, we say that -the type of this expression is _polymorphic_. That means that the code -above can be used in different contexts, where `t` can be an `int`, a -`bool`, a function type `int -> int`, and so on. - -In the `identity.lambda` program - - let f = lambda x . x - in f 1 - -`f` has such a polymorphic type, which is then applied to an integer, -so this program is type-safe and its type is `int`. - -A typical polymorphic expression is the composition - - lambda f . lambda g . lambda x . - g (f x) - -which has the type `(t1 -> t2) -> (t2 -> t3) -> (t1 -> t3)`, polymorphic -in 3 types. - -Let us now define our naive type inferencer and then we discuss more -examples. The idea is quite simple: we conceptually do the same -operations like we did within the type checker defined in Lesson 2, -with two important differences: - -1. instead of declaring a type with each declared variable, we assume - a fresh type for that variable; and -2. instead of checking that the types of expressions satisfy the - type properties of the context in which they are used, we impose - those properties as type equality constraints. A general-purpose - unification-based constraint solving mechanism is then used to solve - the generated type constraints. - -Let us start with the syntax, which is essentially identical to that -of the type checker in Lesson 2, except that bound variables are not -declared a type anymore. Also, to keep things more compact, we put -all the `Exp` syntax declarations in one syntax declaration this time. - - - -Before we modify the rules, let us first define our machinery for -adding and solving constraints. First, we require and import the -unification procedure. We do not discuss unification here, but if you -are interested you can consult the `unification.k` files under -[k-distribution/include/kframework/builtin](../../../../include/kframework/builtin/README.md), which contains our current generic -definition of unification, which is written also in K. The generic unification -provides a sort, `Mgu`, for _most-general-unifier_, an operation -`updateMgu(Mgu,T1,T2)` which updates `Mgu` with additional constraints -generated by forcing the terms `T1` and `T2` to be equal, and an operation -`applyMgu(Mgu,T)` which applies `Mgu` to term `T`. For our use -of unification here, we do not even need to know how `Mgu` terms are -represented internally. - -We define a K item construct, `=`, which takes two `Type` terms and -enforces them to be equal by means of updating the current `Mgu`. -Once the constraints are added to the `Mgu`, the equality dissolves -itself. With this semantics of `=` in mind, we can now go ahead and -modify the rules of the type checker systematically into rules -for a type inferencer. The changes are self-explanatory and -mechanical: for example, the rule - - rule int * int => int - -changes into rule - - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - -generating the constraints that the two arguments of multiplication -have the type `int`, and the result type is `int`. Recall that each type -equality on the `` cell updates the current `Mgu` appropriately and -then dissolves itself; thus, the above says that after imposing the -constraints `T1=int` and `T2=int`, multiplication yields a type `int`. - -As mentioned above, since types of variables are not declared anymore, -but inferred, we have to generate a fresh type for each variable at its -declaration time, and then generate appropriately constraints for it. -For example, the type semantics of `lambda` and `mu` become: - - rule lambda X . E => T -> E[T/X] when fresh(T:Type) - rule mu X . E => (T -> T) E[T/X] when fresh(T:Type) - -that is, we add a condition stating that the previously declared type -is now a fresh one. This type will be further constrained by how the -variable `X` is being used within `E`. - -Interestingly, the previous typing rule for lambda application is not -powerful enough anymore. Indeed, since types are not given anymore, -it may very well be the case that the inferred type of the first -argument of the application construct is not yet a function type -(remember, for example, the program composition.lambda above). What -we have to do is to enforce it to be a function type, by means of -fresh types and constraints. We can introduce a fresh type for the -result of the application, and then write the expected rule as -follows: - - rule T1:Type T2:Type => T1 = (T2 -> T) ~> T when fresh(T:Type) - -The conditional requires that its first argument is a `bool` and its -second and third arguments have the same type, which is also the -result type. - -The macros do not change, in particular `let` is desugared into lambda -application. We will next see that this is a significant restriction, -because it limits the polymorphism of our type system. - -We are done. We have a working type inferencer for LAMBDA. - -Let's `kompile` it and `krun` the programs above. They all work as -expected. Let us also try some additional programs, to push it to its -limits. - -First, let us test `mu` by means of a `letrec` example: - - letrec f x = 3 - in f - -We can also try all the programs that we had in our first tutorial, on -lambda, for example the `factorial.imp` program: - - letrec f x = if x <= 1 then 1 else (x * (f (x + -1))) - in (f 10) - -Those programs are simple enough that they should all work as -expected with our naive type inferencer here. - -Let us next try to type some tricky programs, which involve more -complex and indirect type constraints. - -`tricky-1.lambda`: - - lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) - ) - -`tricky-2.lambda`: - - lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) - -`tricky-3.lambda`: - - lambda x . let f = lambda y . if true then x 7 else x y - in f - -`tricky-4.lambda`: - - lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x - -`tricky-5.lambda`: - - lambda x . let f = lambda y . x y - in let z = x 0 in f - -It is now time to see the limitations of this naive type inferencer. -Consider the program - - let id = lambda x . x - in if (id true) then (id 1) else (id 2) - -Our type inferencer fails graciously with a clash in the `` cell -between `int` and `bool`. Indeed, the desugaring macro of `let` turns it -into a `lambda` and an application, which further enforce `id` to have a -type of the form `t -> t` for some fresh type `t`. The first use of `id` -in the condition of `if` will then constrain `t` to be `bool`, while the -other uses in the two branches will enforce `t` to be `int`. Thus the -clash in the `` cell. - -Similarly, the program - - let id = lambda x . x - in id id - -yields a different kind of conflict: if `id` has type `t -> t`, in order -to apply `id` to itself it must be the case that its argument, `t`, equals -`t -> t`. These two type terms cannot be unified because there is a -circular dependence on `t`, so we get a cycle in the `` cell. - -Both limitations above will be solved when we change the semantics of -`let` later on, to account for the desired polymorphism. - -Before we conclude this lesson, let us see one more interesting -example, where the lack of let-polymorphism leads not to a type error, -but to a less generic type: - - let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 - -Our current type inferencer will infer the type `bool -> bool` for the -program above. Nevertheless, since all functions `f1`, `f2`, `f3`, `f4`, `f5` -are the identity function, which is polymorphic, we would expect the -entire program to type to the same polymorphic identity function type. - -This limitation will be also addressed when we define our -let-polymorphic type inferencer. - -Before that, in the next lesson we will show how easily we can turn -the naive substitution-based type inferencer discussed in this lesson -into a similarly naive, but environment-based type inferencer. - -Go to [Lesson 5, Type Systems: A Naive Environment-Based Type Inferencer](../lesson_5/README.md). diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/lambda.k deleted file mode 100644 index 929c2642616..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/lambda.k +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -// NOTE: this definition is not up to date with the latest version of K, as it -// uses both substitution and symbolic reasoning. -// It is intended for documentation and academic purposes only. - -require "substitution.md" - -module LAMBDA - imports DOMAINS - imports SUBSTITUTION - - syntax Exp ::= Int | Bool | KVar - | "(" Exp ")" [bracket] - | Exp Exp [strict, left] - > Exp "*" Exp [strict, left] - | Exp "/" Exp [strict] - > Exp "+" Exp [strict, left] - > Exp "<=" Exp [strict] - > "lambda" KVar "." Exp [binder] - | "if" Exp "then" Exp "else" Exp [strict] - | "let" KVar "=" Exp "in" Exp [macro, binder] - | "letrec" KVar KVar "=" Exp "in" Exp [macro, binder] - | "mu" KVar "." Exp [binder] - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - syntax KResult ::= Type - - configuration $PGM:Exp - - rule _I:Int => int - rule _B:Bool => bool - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type / T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type + T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type <= T2:Type => T1 = int ~> T2 = int ~> bool - - syntax Exp ::= Exp "->" Exp [strict, klabel(functionType)] - rule lambda X . E => ?T:Type -> (E[?T/X]) - - rule T1:Type T2:Type => T1 = (T2 -> ?T:Type) ~> ?T - rule if T:Type then T1:Type else T2:Type => T = bool ~> T1 = T2 ~> T1 - rule let X = E in E' => (lambda X . E') E - rule letrec F X = E in E' => let F = mu F . lambda X . E in E' - rule mu X . E => (?T:Type -> ?T) (E[?T/X]) - - syntax KItem ::= Type "=" Type - rule T = T => . -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/composition.lambda.out deleted file mode 100644 index cab0899aa4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/composition.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( ( V1 -> V2 ) -> ( V0 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/identity.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/identity.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/if.lambda.out deleted file mode 100644 index 34f260c548f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/if.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> ( V0 -> ( V0 -> V0 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/letrec.lambda.out deleted file mode 100644 index 14c870b36fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/letrec.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/nested-lets.lambda.out deleted file mode 100644 index 1e5b3159866..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/nested-lets.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> bool diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/plus.lambda.out deleted file mode 100644 index 8ddc7791d13..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/plus.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( int -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-1.lambda.out deleted file mode 100644 index 6877a5141f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-2.lambda.out deleted file mode 100644 index 0d92684163d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( V0 -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-3.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-3.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-4.lambda.out deleted file mode 100644 index 4805c97f5ed..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-4.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-5.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-5.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/Makefile deleted file mode 100644 index 95c8c907b8c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_4/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/lambda.k deleted file mode 100644 index 9824bdbe2aa..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/lambda.k +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA - imports DOMAINS - syntax Exp ::= Int | Bool | Id - | "(" Exp ")" [bracket] - | Exp Exp [left, seqstrict] - > Exp "*" Exp [left, seqstrict] - | Exp "/" Exp [left, seqstrict] - > Exp "+" Exp [left, seqstrict] - > Exp "-" Exp [left, seqstrict] - > Exp "<=" Exp [seqstrict] - > "if" Exp "then" Exp "else" Exp [seqstrict] - | "lambda" Id "." Exp - | "mu" Id "." Exp - | "let" Id "=" Exp "in" Exp [strict(2)] - | "letrec" Id Id "=" Exp "in" Exp - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - syntax KResult ::= Type - - // macro is not supported yet - // rule letrec F X = E in E' => let F = mu F . lambda X . E in E' [macro] - rule letrec F:Id X:Id = E:Exp in E':Exp => let F = mu F . lambda X . E in E' - - configuration - $PGM:Exp - .Map - - - rule _I:Int => int - rule _B:Bool => bool - rule X:Id => T ... ... X |-> T:Type ... - rule (T1:Type -> T2:Type) T1 => T2 - rule int * int => int - rule int / int => int - rule int + int => int - rule int - int => int - rule int <= int => bool - rule if bool then T:Type else T => T - syntax KItem ::= env(Map) - syntax Exp ::= Exp "->" Exp [seqstrict, klabel(functionType)] - rule lambda X:Id . E:Exp => ?T:Type -> E ~> env(TEnv) ... - TEnv:Map => TEnv[X <- ?T] - rule mu X:Id . E:Exp => (?T:Type -> ?T) E ~> env(TEnv) ... - TEnv:Map => TEnv[X <- ?T] - - rule let X = E in E' => (lambda X . E') E - - rule _T:Type ~> (env(TEnv:Map) => .) ... _:Map => TEnv -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda.out deleted file mode 100644 index 05361dc27be..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/composition.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( ?T1:Type -> T2:Type ) -> ( ( T2:Type -> T3:Type ) -> ( ?T1:Type -> T3:Type ) ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda.out deleted file mode 100644 index 5dd3d1af358..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/if.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - bool -> ( ?T1:Type -> ( ?T1:Type -> ?T1:Type ) ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda.out deleted file mode 100644 index 8b62f92b531..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/letrec.lambda.out +++ /dev/null @@ -1,11 +0,0 @@ - { - T:Type - #Equals - ?T0:Type -> int - } -#Or - { - T:Type - #Equals - ?T1:Type -> int - } diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda.out deleted file mode 100644 index 3bc92151a02..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-2.lambda.out +++ /dev/null @@ -1,11 +0,0 @@ - { - T:Type - #Equals - int -> ( ?T1:Type -> int ) - } -#Or - { - T:Type - #Equals - int -> ( ?T2:Type -> int ) - } diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda.out deleted file mode 100644 index 4f79aa7e2c2..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-3.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( int -> T2:Type ) -> ( int -> T2:Type ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda.out deleted file mode 100644 index 4f79aa7e2c2..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-5.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( int -> T2:Type ) -> ( int -> T2:Type ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/Makefile deleted file mode 100644 index 95c8c907b8c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_4/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/README.md deleted file mode 100644 index da6553caeb0..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/README.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# A Naive Environment-Based Type Inferencer - -In this lesson you learn how to define a naive environment-based type -inferencer for a higher-order language. Specifically, we take the -substitution-based type inferencer for LAMBDA defined in Lesson 4 and -turn it into an environment-based one. - -Recall from Lesson 3, where we defined an environment-based type -checker for LAMBDA based on the substitution-based one in Lesson 2, -that the transition from a substitution-based definition to an -environment-based one was quite systematic and mechanical: each -substitution occurrence `E[T/X]` is replaced by `E`, but at the same time -the variable `X` is bound to type `T` in the type environment. One benefit -of using type environments instead of substitution is that we replace -a linear complexity operation (the substitution) with a constant -complexity one (the variable lookup). - -There is not much left to say which has not been already said in -Lesson 3: we remove the unnecessary binder annotations for the -variable binding operations, then add a `` cell to the -configuration to hold the type environment, then add a new rule for -variable lookup, and finally apply the transformation of substitutions -`E[T/X]` into `E` as explained above. - -The resulting type inferencer should now work exactly the same way as -the substitution-based one, except, of course, that the resulting -configurations will contain a `` cell now. - -As sanity check, let us consider two more LAMBDA programs that test -the static scoping nature of the inferencer. We do that because -faulty environment-based definitions often have this problem. The -program - - let x = 1 - in let f = lambda a . x - in let x = true - in f 3 - -should type to `int`, not to `bool`, and so it does. Similarly, the -program - - let y = 0 - in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 - -should also type to `int`, not `bool`, and so it does, too. - -The type inferencer defined in this lesson has the same limitations, -in terms of polymorphism, as the one in Lesson 4. In the next -lesson we will see how it can be parallelized, and in further lessons -how to make it polymorphic. - -Go to [Lesson 6, Type Systems: Parallel Type Checkers/Inferencers](../lesson_6/README.md). diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/lambda.k deleted file mode 100644 index 04591db4fa1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/lambda.k +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -module LAMBDA - imports DOMAINS - - syntax Exp ::= Int | Bool | Id - | "(" Exp ")" [bracket] - | Exp Exp [seqstrict, left] - > Exp "*" Exp [seqstrict, left] - | Exp "/" Exp [seqstrict] - > Exp "+" Exp [seqstrict, left] - > Exp "<=" Exp [seqstrict] - > "lambda" Id "." Exp - | "if" Exp "then" Exp "else" Exp [seqstrict] - | "let" Id "=" Exp "in" Exp [macro] - | "letrec" Id Id "=" Exp "in" Exp [macro] - | "mu" Id "." Exp - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - syntax KResult ::= Type - - configuration $PGM:Exp - .Map - - rule _I:Int => int - rule _B:Bool => bool - rule X:Id => T ... ... X |-> T ... - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type / T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type + T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type <= T2:Type => T1 = int ~> T2 = int ~> bool - - syntax Exp ::= Exp "->" Exp [seqstrict, klabel(functionType)] - rule lambda X:Id . E => ?T:Type -> E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - rule T1:Type T2:Type => T1 = (T2 -> ?T:Type) ~> ?T - rule if T:Type then T1:Type else T2:Type => T = bool ~> T1 = T2 ~> T1 - rule let X = E in E' => (lambda X . E') E - rule letrec F X = E in E' => let F = mu F . lambda X . E in E' - rule mu X:Id . E:Exp => (?T:Type -> ?T) E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - syntax KItem ::= Type "=" Type - rule T = T => . - - syntax KItem ::= setTenv(Map) - rule _T:Type ~> (setTenv(TEnv) => .) ... _ => TEnv -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda.out deleted file mode 100644 index 250b02cd8c3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/composition.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( ?T1:Type -> ?T2:Type ) -> ( ( ?T2:Type -> ?T3:Type ) -> ( ?T1:Type -> ?T3:Type ) ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda.out deleted file mode 100644 index 69edbebff8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda.out deleted file mode 100644 index 5dd3d1af358..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/if.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - bool -> ( ?T1:Type -> ( ?T1:Type -> ?T1:Type ) ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda.out deleted file mode 100644 index 1ead2981e2b..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/letrec.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ?T1:Type -> int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda.out deleted file mode 100644 index af1189d50cc..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/nested-lets.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - bool -> bool -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda.out deleted file mode 100644 index 9a517a768bb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/plus.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -> ( int -> int ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda deleted file mode 100644 index e8307bf4b11..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 -in let f = lambda a . x - in let x = true - in f 3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda.out deleted file mode 100644 index 69edbebff8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-1.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda deleted file mode 100644 index a6f3061a091..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let y = 0 -in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda.out deleted file mode 100644 index 69edbebff8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/static-scoping-2.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda.out deleted file mode 100644 index ceb7058b162..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-1.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda.out deleted file mode 100644 index 3405664d26c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-2.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -> ( ?T1:Type -> int ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda.out deleted file mode 100644 index c05845158a4..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-3.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( int -> ?T3:Type ) -> ( int -> ?T3:Type ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda.out deleted file mode 100644 index 296beb950dc..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-4.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -> int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda.out deleted file mode 100644 index f081af4405d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_5/tests/tricky-5.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( int -> ?T5:Type ) -> ( int -> ?T5:Type ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/NOTES.md deleted file mode 100644 index 4d373edee0b..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -The README needs to be changed to reflect the fact that we now have a builtin -unification procedure. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/README.md deleted file mode 100644 index d7955b2fab3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/README.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Parallel Type Checkers/Inferencers - -In this lesson you learn how to define parallel type checkers or -inferencers. For the sake of a choice, we will parallelize the one in -the previous lesson, but the ideas are general. We are using the same -idea to define type checkers for other languages in the K tool -distribution, such as SIMPLE and KOOL. - -The idea is in fact quite simple. Instead of one monolithic typing -task, we generate many smaller tasks, which can be processed in -parallel. We use the same approach to define parallel semantics as we -used for threads in IMP++ in Part 4 of the tutorial, that is, we add a -cell holding all the parallel tasks, making sure we declare the cell -holding a task with multiplicity `*`. For the particular type -inferencer that we chose here, the one in Lesson 5, each task will -hold an expression to type together with a type environment (so it -knows where to lookup its free variables). We have the following -configuration then: - - configuration - - $PGM:Exp - .Map - - - .Mgu - -Now we have to take each typing rule we had before and change it to -yield parallel typing. For example, our rule for typing -multiplication was the following in Lesson 5: - - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - -Since `*` was strict, its two arguments eventually type, and once that -happens the rule above fires. Unfortunately, the strictness of -multiplication makes the typing of the two expressions sequential in -our previous definition. To avoid typing the two expressions -sequentially and instead generating two parallel tasks, we remove the -`strict` attribute of multiplication and replace the rule above with the -following: - - rule E1 * E2 => int ... Rho - (. => E1 = int Rho - E2 = int Rho ) - -Therefore, we generate two tasks for typing `E1` and `E2` in the same type -environment as the current task, and let the current task continue by -simply optimistically reducing `E1*E2` to its expected result type, `int`. -If `E1` or `E2` will not type to `int`, then either their corresponding -tasks will get stuck or the `` cell will result into a clash or cycle, -so the program will not type overall in spite of the fact that we -allowed the task containing the multiplication to continue. This is -how we get maximum of parallelism in this case. - -Before we continue, note that the new tasks hold equalities in them, -where one of its arguments is an expression, while previously the -equality construct was declared to take types. What we want now is -for the equality construct to possibly take any expressions, and first -type them and then generate the type constraint like before. This can -be done very easily by just extending the equality construct to -expressions and declaring it `strict`: - - syntax KItem ::= Exp "=" Exp [strict] - - - -Unlike before, where we only passed types to the equality construct, -we now need a runtime check that its arguments are indeed types before -we can generate the `updateMgu` command: - - rule T:Type = T':Type => . ... - Theta:Mgu => updateMgu(Theta,T,T') - -Like before, an equality will therefore update the `` cell and then -it dissolves itself, letting the `` cell in the corresponding task -empty. Such empty tasks are unnecessary, so they can be erased: - - rule ... . ... => . - -We can now follow the same style as for multiplication to write the -parallel typing rules of the other arithmetic constructs, and even for -the conditional. - -To parallelize the typing of lambda we generate two fresh types, one -for the variable and one for the body, and make sure that we generate -the correct type constraint and environment in the body task: - - rule lambda X . E => Tx -> Te ... TEnv - (. => E = Te TEnv[Tx/X] ) - when fresh(Tx:Type) andBool fresh(Te:Type) - -Note that the above also allows us to not need to change and then -recover the environment of the current cell. - -For function application we also need to generate two fresh types: - - rule E1 E2 => T ... Rho - (. => E1 = T2 -> T Rho - E2 = T2 Rho ) - when fresh(T2:Type) andBool fresh(T:Type) - -The only rule left is that of `mu X . E`. In this case we only need one -fresh type, because `X`, `E` and `mu X . E` have all the same type: - - rule mu X . E => T ... TEnv - (. => E = T TEnv[T/X] ) - when fresh(T:Type) - -We do not need the type environment recovery operation, so we delete it. - -We can now `kompile` and `krun` all the programs that we typed in Lesson 5. -Everything should work. - -In this lesson we only aimed at parallelizing the type inferencer in -Lesson 5, not to improve its expressiveness; it still has the same -limitations in terms of polymorphism. The next lessons are dedicated -to polymorphic type inferencers. - -Go to [Lesson 7, Type Systems: A Naive Substitution-based Polymorphic Type Inferencer](../lesson_7/README.md). diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda.out deleted file mode 100644 index 69edbebff8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda.out deleted file mode 100644 index af1189d50cc..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - bool -> bool -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda.out deleted file mode 100644 index 9a517a768bb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -> ( int -> int ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda deleted file mode 100644 index e8307bf4b11..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 -in let f = lambda a . x - in let x = true - in f 3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda.out deleted file mode 100644 index 69edbebff8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda deleted file mode 100644 index a6f3061a091..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let y = 0 -in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda.out deleted file mode 100644 index 69edbebff8d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda.out deleted file mode 100644 index ceb7058b162..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda.out deleted file mode 100644 index 296beb950dc..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - T:Type -#Equals - int -> int -} diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/Makefile deleted file mode 100644 index 95c8c907b8c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_4/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/NOTES.md deleted file mode 100644 index 7f4e3697d02..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/NOTES.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -This approach leads to an incorrect type checker, in that programs which -lead to a runtime error will type. See tricky-5 and/or variations of it. - -Discuss monomorphic vs. polymorphic types and type inferencers. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/README.md deleted file mode 100644 index 9a98c28ff24..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/README.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# A Naive Substitution-based Polymorphic Type Inferencer - -In this lesson you learn how little it takes to turn a naive monomorphic -type inferencer into a naive polymorphic one, basically only changing -a few characters. In terms of the K framework, you will learn that -you can have complex combinations of substitutions in K, both over -expressions and over types. - -Let us start directly with the change. All we have to do is to take -the LAMBDA type inferencer in Lesson 4 and only change the macro - - rule let X = E in E' => (lambda X . E') E [macro] - -as follows: - - rule let X = E in E' => E'[E/X] [macro] - -In other words, we are inlining the beta-reduction rule of -lambda-calculus within the original rule. In terms of typing, -the above forces the type inferencer to type `E` in place for each -occurrence of `X` in `E'`. Unlike in the first rule, where `X` had to get -one type only which satisfied the constrains of all `X`'s occurrences in -`E'`, we now never associate any type to `X` anymore. - -Let us `kompile` and `krun` some examples. Everything that worked with -the type inferencer in Lesson 4 should still work here, although the -types of some programs can now be more general. For example, reconsider -the `nested-lets.lambda` program - - let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 - -which was previously typed to `bool -> bool`. With the new rule above, -the sequence of lets is iteratively eliminated and we end up with the -program - - if (lambda x . x) true then (lambda x . x) else (lambda x . x) - -which now types (with both type inferencers) to a type of the form -`t -> t`, for some type variable `t`, which is more general than the -previous `bool -> bool` type that the program typed to in Lesson 4. - -We can also now type programs that were not typable before, such as - - let id = lambda x . x - in if (id true) then (id 1) else (id 2) - -and - - let id = lambda x . x - in id id - -Let us also test it on some trickier programs, also not typable -before, such as - - let f = lambda x . x - in let g = lambda y . f y - in g g - -which gives us a type of the form `t -> t` for some type variable `t`, -and as - - let f = let g = lambda x . x - in let h = lambda x . lambda x . (g g g g) - in h - in f - -which types to `t1 -> t2 -> t3 -> t3` for some type variables `t1`, `t2`, `t3`. - -Here is another program which was not typable before, which is -trickier than the others above in that a lambda-bound variable appears -free in a let-bound expression: - - lambda x . ( - let y = lambda z . x - in if (y true) then (y 1) else (y (lambda x . x)) - ) - -The above presents no problem now, because once `lambda z . x` gets -substituted for `y` we get a well-typed expression which yields that `x` -has the type `bool`, so the entire expression types to `bool -> bool`. - -The cheap type inferencer that we obtained above therefore works as -expected. However, it has two problems which justify a more advanced -solution. First, substitution is typically considered an elegant -mathematical instrument which is not too practical in implementations, -so an implementation of this type inferencer will likely be based on -type environments anyway. Additionally, we mix two kinds of -substitutions in this definition, one where we substitute types and -another where we substitute expressions, which can only make things -harder to implement efficiently. Second, our naive substitution of `E` -for `X` in `E'` can yield an exponential explosion in size of the original -program. Consider, for example, the following classic example which -is known to generate a type whose size is exponential in the size of -the program (and is thus used as an argument for why let-polymorphic -type inference is exponential in the worst-case): - - let f00 = lambda x . lambda y . x in - let f01 = lambda x . f00 (f00 x) in - let f02 = lambda x . f01 (f01 x) in - let f03 = lambda x . f02 (f02 x) in - let f04 = lambda x . f03 (f03 x) in - // ... you can add more nested lets here - f04 - -The particular instance of the pattern above generates a type which -has 17 type variables! The desugaring of each `let` doubles the size of -the program and of its resulting type. While such programs are little -likely to appear in practice, it is often the case that functions can -be quite complex and large while their type can be quite simple in the -end, so we should simply avoid retyping each function each time it is -used. - -This is precisely what we will do next. Before we present the classic -let-polymorphic type inferencer in Lesson 9, which is based on -environments, we first quickly discuss in Lesson 8 an intermediate -step, namely a naive environment-based variant of the inferencer -defined here. - -Go to [Lesson 8, Type Systems: A Naive Environment-based Polymorphic Type Inferencer](../lesson_8/README.md). diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/lambda.k deleted file mode 100644 index ea44b8e777f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/lambda.k +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -// NOTE: this definition is not up to date with the latest version of K, as it -// uses both substitution and symbolic reasoning. -// It is intended for documentation and academic purposes only. - -require "substitution.md" - -module LAMBDA - imports DOMAINS - imports SUBSTITUTION - - syntax Exp ::= Int | Bool | KVar - | "(" Exp ")" [bracket] - | Exp Exp [seqstrict, left] - > Exp "*" Exp [seqstrict, left] - | Exp "/" Exp [seqstrict] - > Exp "+" Exp [seqstrict, left] - > Exp "<=" Exp [seqstrict] - > "lambda" KVar "." Exp [binder] - | "if" Exp "then" Exp "else" Exp [seqstrict] - | "let" KVar "=" Exp "in" Exp [macro, binder] - | "letrec" KVar KVar "=" Exp "in" Exp [macro, binder] - | "mu" KVar "." Exp [binder] - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - syntax KResult ::= Type - - configuration $PGM:Exp - - rule _I:Int => int - rule _B:Bool => bool - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type / T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type + T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type <= T2:Type => T1 = int ~> T2 = int ~> bool - - syntax Exp ::= Exp "->" Exp [seqstrict, klabel(functionType)] - rule lambda X . E => ?T:Type -> (E[?T/X]) - - rule T1:Type T2:Type => T1 = (T2 -> ?T:Type) ~> ?T - rule if T:Type then T1:Type else T2:Type => T = bool ~> T1 = T2 ~> T1 - rule let X = E in E' => E'[E/X] - rule letrec F X = E in E' => let F = mu F . lambda X . E in E' - rule mu X . E => (?T:Type -> ?T) (E[?T/X]) - - syntax KItem ::= Type "=" Type - rule T = T => . -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda.out deleted file mode 100644 index cab0899aa4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/composition.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( ( V1 -> V2 ) -> ( V0 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda deleted file mode 100644 index 698290a8e35..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda +++ /dev/null @@ -1,13 +0,0 @@ -let f00 = lambda x . lambda y . x in - let f01 = lambda x . f00 (f00 x) in - let f02 = lambda x . f01 (f01 x) in - let f03 = lambda x . f02 (f02 x) in - let f04 = lambda x . f03 (f03 x) in -// let f05 = lambda x . f04 (f04 x) in -// let f06 = lambda x . f05 (f05 x) in -// let f07 = lambda x . f06 (f06 x) in -// let f08 = lambda x . f07 (f07 x) in -// let f09 = lambda x . f08 (f08 x) in -// let f10 = lambda x . f09 (f09 x) in -// let f11 = lambda x . f10 (f10 x) in - f04 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda.out deleted file mode 100644 index fc91ea863f3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/exponential-type.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> ( V3 -> ( V4 -> ( V5 -> ( V6 -> ( V7 -> ( V8 -> ( V9 -> ( V10 -> ( V11 -> ( V12 -> ( V13 -> ( V14 -> ( V15 -> ( V16 -> V0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda deleted file mode 100644 index bd3bf4aab34..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let f = lambda x . x -in let g = lambda y . f y - in g g diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda deleted file mode 100644 index 18999d56a67..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let f = let g = lambda x . x - in let h = lambda x . lambda x . (g g g g) - in h -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda.out deleted file mode 100644 index e6b163db9f8..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identities-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/identity.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda.out deleted file mode 100644 index 34f260c548f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/if.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> ( V0 -> ( V0 -> V0 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda.out deleted file mode 100644 index 14c870b36fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/letrec.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/nested-lets.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda.out deleted file mode 100644 index 8ddc7791d13..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/plus.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( int -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda deleted file mode 100644 index e8307bf4b11..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 -in let f = lambda a . x - in let x = true - in f 3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda deleted file mode 100644 index a6f3061a091..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let y = 0 -in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/static-scoping-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda.out deleted file mode 100644 index 6877a5141f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda.out deleted file mode 100644 index 0d92684163d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( V0 -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-3.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-4.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda.out deleted file mode 100644 index 072ead2a6e0..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky-5.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( V0 -> V1 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda deleted file mode 100644 index d28c500f06d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda +++ /dev/null @@ -1,4 +0,0 @@ -lambda x . ( - let y = lambda z . x - in if (y true) then (y 1) else (y (lambda x . x)) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda.out deleted file mode 100644 index 1e5b3159866..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_7/tests/tricky.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> bool diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/Makefile deleted file mode 100644 index 147543d56cb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_7/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/NOTES.md deleted file mode 100644 index e72b9f22360..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -We also have to redeclare lambda and mu as binders. Program -tricky-2.lambda shows why. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/README.md deleted file mode 100644 index 9097ee3411c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/README.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# A Naive Environment-based Polymorphic Type Inferencer - -In this short lesson we discuss how to quickly turn a naive -environment-based monomorphic type inferencer into a naive let-polymorphic -one. Like in the previous lesson, we only need to change a few -characters. In terms of the K framework, you will learn how to have -both environments and substitution in the same definition. - -Like in the previous lesson, all we have to do is to take the LAMBDA -type inferencer in Lesson 5 and only change the rule - - rule let X = E in E' => (lambda X . E') E - -as follows: - - rule let X = E in E' => E'[E/X] - -The reasons why this works have already been explained in the previous -lesson, so we do not repeat them here. - -Since our new let rule uses substitution, we have to require the -substitution module at the top and also import SUBSTITUTION in the -current module, besides the already existing UNIFICATION. - -Everything which worked with the type inferencer in Lesson 7 should -also work now. Let us only try the exponential type example, - - let f00 = lambda x . lambda y . x in - let f01 = lambda x . f00 (f00 x) in - let f02 = lambda x . f01 (f01 x) in - let f03 = lambda x . f02 (f02 x) in - let f04 = lambda x . f03 (f03 x) in - f04 - -As expected, this gives us precisely the same type as in Lesson 7. - -So the only difference between this type inferencer and the one in -Lesson 7 is that substitution is only used for LAMBDA-to-LAMBDA -transformations, but not for infusing types within LAMBDA programs. -Thus, the syntax of LAMBDA programs is preserved intact, which some -may prefer. Nevertheless, this type inferencer is still expensive and -wasteful, because the let-bound expression is typed over and over -again in each place where the let-bound variable occurs. - -In the next lesson we will discuss a type inferencer based on the -classic Damas-Hindley-Milner type system, which maximizes the reuse of -typing work by means of parametric types. - -Go to [Lesson 9, Type Systems: Let-Polymorphic Type Inferencer (Damas-Hindley-Milner)](../lesson_9/README.md). diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/lambda.k deleted file mode 100644 index cbfedb217eb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/lambda.k +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -// NOTE: this definition is not up to date with the latest version of K, as it -// uses both substitution and symbolic reasoning. -// It is intended for documentation and academic purposes only. - -require "substitution.md" - -module LAMBDA - imports DOMAINS - imports SUBSTITUTION - - syntax Exp ::= Int | Bool | KVar - | "(" Exp ")" [bracket] - | Exp Exp [seqstrict, left] - > Exp "*" Exp [seqstrict, left] - | Exp "/" Exp [seqstrict] - > Exp "+" Exp [seqstrict, left] - > Exp "<=" Exp [seqstrict] - > "lambda" KVar "." Exp [binder] - | "if" Exp "then" Exp "else" Exp [seqstrict] - | "let" KVar "=" Exp "in" Exp [macro] - | "letrec" KVar KVar "=" Exp "in" Exp [macro] - | "mu" KVar "." Exp [binder] - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - syntax KResult ::= Type - - configuration $PGM:Exp - .Map - - rule _I:Int => int - rule _B:Bool => bool - rule X:KVar => T ... ... X |-> T ... - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type / T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type + T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type <= T2:Type => T1 = int ~> T2 = int ~> bool - - syntax Exp ::= Exp "->" Exp [seqstrict, klabel(functionType)] - rule lambda X:KVar . E => ?T:Type -> E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - rule T1:Type T2:Type => T1 = (T2 -> ?T:Type) ~> ?T - rule if T:Type then T1:Type else T2:Type => T = bool ~> T1 = T2 ~> T1 - rule let X = E in E' => E'[E/X] - rule letrec F X = E in E' => let F = mu F . lambda X . E in E' - rule mu X:KVar . E:Exp => (?T:Type -> ?T) E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - syntax KItem ::= Type "=" Type - rule T = T => . - - syntax KItem ::= setTenv(Map) - rule _T:Type ~> (setTenv(TEnv) => .) ... _ => TEnv -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda.out deleted file mode 100644 index cab0899aa4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/composition.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( ( V1 -> V2 ) -> ( V0 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda deleted file mode 100644 index 698290a8e35..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda +++ /dev/null @@ -1,13 +0,0 @@ -let f00 = lambda x . lambda y . x in - let f01 = lambda x . f00 (f00 x) in - let f02 = lambda x . f01 (f01 x) in - let f03 = lambda x . f02 (f02 x) in - let f04 = lambda x . f03 (f03 x) in -// let f05 = lambda x . f04 (f04 x) in -// let f06 = lambda x . f05 (f05 x) in -// let f07 = lambda x . f06 (f06 x) in -// let f08 = lambda x . f07 (f07 x) in -// let f09 = lambda x . f08 (f08 x) in -// let f10 = lambda x . f09 (f09 x) in -// let f11 = lambda x . f10 (f10 x) in - f04 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda.out deleted file mode 100644 index fc91ea863f3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/exponential-type.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> ( V3 -> ( V4 -> ( V5 -> ( V6 -> ( V7 -> ( V8 -> ( V9 -> ( V10 -> ( V11 -> ( V12 -> ( V13 -> ( V14 -> ( V15 -> ( V16 -> V0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda deleted file mode 100644 index bd3bf4aab34..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let f = lambda x . x -in let g = lambda y . f y - in g g diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda deleted file mode 100644 index 18999d56a67..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let f = let g = lambda x . x - in let h = lambda x . lambda x . (g g g g) - in h -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda.out deleted file mode 100644 index e6b163db9f8..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identities-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/identity.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda.out deleted file mode 100644 index 34f260c548f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/if.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> ( V0 -> ( V0 -> V0 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda.out deleted file mode 100644 index 14c870b36fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/letrec.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/nested-lets.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda.out deleted file mode 100644 index 8ddc7791d13..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/plus.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( int -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda deleted file mode 100644 index e8307bf4b11..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 -in let f = lambda a . x - in let x = true - in f 3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda deleted file mode 100644 index a6f3061a091..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let y = 0 -in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/static-scoping-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda.out deleted file mode 100644 index 6877a5141f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda.out deleted file mode 100644 index 0d92684163d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( V0 -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-3.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-4.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda.out deleted file mode 100644 index 072ead2a6e0..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky-5.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( V0 -> V1 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda deleted file mode 100644 index d28c500f06d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda +++ /dev/null @@ -1,4 +0,0 @@ -lambda x . ( - let y = lambda z . x - in if (y true) then (y 1) else (y (lambda x . x)) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda.out deleted file mode 100644 index 1e5b3159866..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_8/tests/tricky.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> bool diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/Makefile deleted file mode 100644 index 147543d56cb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_7/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/NOTES.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/NOTES.md deleted file mode 100644 index aece8908e56..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/NOTES.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -We have to test this as well; we need a test folder with a config.xml. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/lambda.k deleted file mode 100644 index f73f01b031a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/lambda.k +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -// NOTE: this definition is not up to date with the latest version of K, as it -// uses substitution, unification and symbolic reasoning. -// It is intended for documentation and academic purposes only. - -require "unification.k" -require "substitution.md" - -module LAMBDA-SYNTAX - imports DOMAINS-SYNTAX - imports KVAR - syntax Exp ::= Int | Bool | KVar - | "(" Exp ")" [bracket] - | Exp Exp [seqstrict, left] - > Exp "*" Exp [seqstrict, left] - | Exp "/" Exp [seqstrict] - > Exp "+" Exp [seqstrict, left] - > Exp "<=" Exp [seqstrict] - > "lambda" KVar "." Exp - | "if" Exp "then" Exp "else" Exp [seqstrict] - | "let" KVar "=" Exp "in" Exp [strict(2)] - | "letrec" KVar KVar "=" Exp "in" Exp [macro] - | "mu" KVar "." Exp -endmodule - -module LAMBDA - imports LAMBDA-SYNTAX - imports DOMAINS - imports UNIFICATION - imports SUBSTITUTION - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - - syntax KResult ::= Type - - configuration $PGM:Exp - .Map - - rule _I:Int => int - rule _B:Bool => bool - rule X:KVar => T ... ... X |-> T:Type ... - rule int * int => int - rule int / int => int - rule int + int => int - rule int <= int => bool - - syntax Exp ::= Exp "->" Exp [seqstrict, klabel(functionType)] - rule lambda X:KVar . E => ?T:Type -> E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - rule (T1:Type -> T2:Type) T1 => T2 - rule if bool then T:Type else T => T - - syntax TypeSchema ::= "(" "forall" Set ")" Type - rule let X = T:Type in E => E ~> setTenv(TEnv) ... - TEnv - => TEnv[X <- (forall #metaKVariables(T) -Set #metaKVariables(setTenv(TEnv))) T] - - rule X:KVar => #renameMetaKVariables(T, Tvs) ... - ... X |-> (forall Tvs) T ... - - rule letrec F X = E in E' => let F = mu F . lambda X . E in E' - rule mu X:KVar . E:Exp => (?T:Type -> ?T) E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - syntax KItem ::= setTenv(Map) - rule T:Type ~> setTenv(TEnv) => T ... _ => TEnv -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/callCC-return.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/callCC-return.lambda.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda.out deleted file mode 100644 index cab0899aa4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/composition.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( ( V1 -> V2 ) -> ( V0 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda deleted file mode 100644 index 698290a8e35..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda +++ /dev/null @@ -1,13 +0,0 @@ -let f00 = lambda x . lambda y . x in - let f01 = lambda x . f00 (f00 x) in - let f02 = lambda x . f01 (f01 x) in - let f03 = lambda x . f02 (f02 x) in - let f04 = lambda x . f03 (f03 x) in -// let f05 = lambda x . f04 (f04 x) in -// let f06 = lambda x . f05 (f05 x) in -// let f07 = lambda x . f06 (f06 x) in -// let f08 = lambda x . f07 (f07 x) in -// let f09 = lambda x . f08 (f08 x) in -// let f10 = lambda x . f09 (f09 x) in -// let f11 = lambda x . f10 (f10 x) in - f04 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda.out deleted file mode 100644 index fc91ea863f3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/exponential-type.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> ( V3 -> ( V4 -> ( V5 -> ( V6 -> ( V7 -> ( V8 -> ( V9 -> ( V10 -> ( V11 -> ( V12 -> ( V13 -> ( V14 -> ( V15 -> ( V16 -> V0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda deleted file mode 100644 index bd3bf4aab34..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let f = lambda x . x -in let g = lambda y . f y - in g g diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda deleted file mode 100644 index 18999d56a67..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let f = let g = lambda x . x - in let h = lambda x . lambda x . (g g g g) - in h -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda.out deleted file mode 100644 index e6b163db9f8..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identities-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/identity.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda.out deleted file mode 100644 index 34f260c548f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/if.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> ( V0 -> ( V0 -> V0 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda.out deleted file mode 100644 index 14c870b36fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/letrec.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/nested-lets.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda.out deleted file mode 100644 index 8ddc7791d13..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/plus.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( int -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda deleted file mode 100644 index 9da0a84d289..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . x y - in if (f true) then (f 1) else (f 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/should-fail.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda deleted file mode 100644 index e8307bf4b11..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 -in let f = lambda a . x - in let x = true - in f 3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda deleted file mode 100644 index a6f3061a091..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let y = 0 -in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/static-scoping-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda.out deleted file mode 100644 index 6877a5141f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda.out deleted file mode 100644 index 0d92684163d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( V0 -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-3.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda.out deleted file mode 100644 index 4805c97f5ed..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-4.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky-5.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda deleted file mode 100644 index d28c500f06d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda +++ /dev/null @@ -1,4 +0,0 @@ -lambda x . ( - let y = lambda z . x - in if (y true) then (y 1) else (y (lambda x . x)) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda.out deleted file mode 100644 index 1e5b3159866..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9.5/tests/tricky.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> bool diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/Makefile b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/Makefile deleted file mode 100644 index 147543d56cb..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../lesson_7/Makefile diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/README.md b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/README.md deleted file mode 100644 index d67aff125c2..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/README.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Let-Polymorphic Type Inferencer (Damas-Hindley-Milner) - -In this lesson we discuss a type inferencer based on what we call today -_the Damas-Hindley-Milner type system_, which is at the core of many -modern functional programming languages. The first variant of it was -proposed by Hindley in 1969, then, interestingly, Milner rediscovered -it in 1978 in the context of the ML language. Damas formalized it as -a type system in his PhD thesis in 1985. More specifically, our type -inferencer here, like many others as well as many implementations of -it, follows more closely the syntax-driven variant proposed by Clement -in 1987. - -In terms of K, we will see how easily we can turn one definition which -is considered naive (our previous type inferencer in Lesson 8) into a -definition which is considered advanced. All we have to do is to -change one existing rule (the rule of the let binder) and to add a new -one. We will also learn some new predefined features of K, which make -the above possible. - -The main idea is to replace the rule - - rule let X = E in E' => E'[E/X] - -which creates potentially many copies of `E` within `E'` with a rule -which types `E` once and then reuses that type in each place where `X` -occurs free in `E'`. The simplest K way to type `E` is to declare the -let construct `strict(2)`. Now we cannot simply bind `X` to the type -of `E`, because we would obtain a variant of the naive type inferencer -we already discussed, together with its limitations, in Lesson 5 of this -tutorial. The trick here is to parameterize the type of `E` in all its -unconstrained fresh types, and then create fresh copies of those -parameters in each free occurrence of `X` in `E'`. - -Let us discuss some examples, before we go into the technical details. -Consider the first let-polymorphic example which failed to be typed -with our first naive type-inferencer: - - let id = lambda x . x - in if (id true) then (id 1) else (id 2) - -When typing `lambda x . x`, we get a type of the form `t -> t`, for some -fresh type `t`. Instead of assigning this type to `id` as we did in the -naive type inferencers, we now first parametrize this type in its -fresh variable `t`, written - - (forall t) t -> t - -and then bind `id` to this parametric type. The intuition for the -parameter is that it can be instantiated with any other type, so this -parametric type stands, in fact, for infinitely many non-parametric -types. This is similar to what happens in formal logic proof systems, -where _rule schemas_ stand for infinitely many concrete instances of -them. For this reason, parametric types are also called _type schemas_. - -Now each time `id` is looked up within the let-body, we create a fresh -copy of the parameter `t`, which can this way be independently -constrained by each local context. Let's suppose that the three `id` -lookups yield the types `t1 -> t1`, `t2 -> t2`, and respectively `t3 -> t3`. -Then `t1` will be constrained to be `bool`, and `t2` and `t3` to be `int`, -so we can now safely type the program above to `int`. - -Therefore, a type schema comprises a summary of all the typing work -that has been done for typing the corresponding expression, and an -instantiation of its parameters with fresh copies represents an -elegant way to reuse all that typing work. - -There are some subtleties regarding what fresh types can be made -parameters. Let us consider another example, discussed as part of -Lesson 7 on naive let-polymorphism: - - lambda x . ( - let y = lambda z . x - in if (y true) then (y 1) else (y (lambda x . x)) - ) - -This program should type to `bool -> bool`, as explained in Lesson 7. -The `lambda` construct will bind `x` to some fresh type `tx`. Then the -let-bound expression `lambda z . x` types to `tz -> tx` for some -additional fresh type `tz`. The question now is what should the -parameters of this type be when we generate the type schema? If we -naively parameterize in all fresh variables, that is in both `tz` and -`tx` obtaining the type schema `(forall tz,tx) tz -> tx`, then there will -be no way to infer that the type of `x`, `tx`, must be a `bool`! The -inferred type of this expression would then wrongly be `tx -> t` for -some fresh types `tx` and `t`. That's because the parameters are replaced -with fresh copies in each occurrence of `y`, and thus their relationship -to the original `x` is completely lost. This tells us that we cannot -parameterize in all fresh types that appear in the type of the -let-bound expression. In particular, we cannot parameterize in those -which some variables are already bound to in the current type -environment (like `x` is bound to `tx` in our example above). -In our example, the correct type schema is `(forall tz) tz -> tx`, -which now allows us to correctly infer that `tx` is `bool`. - -Let us now discuss another example, which should fail to type: - - lambda x . - let f = lambda y . x y - in if (f true) then (f 1) else (f 2) - -This should fail to type because `lambda y . x y` is equivalent to `x`, -so the conditional imposes the conflicting constraints that `x` should be -a function whose argument is either a `bool` or an `int`. Let us try to -type it using our currently informal procedure. Like in the previous -example, `x` will be bound to a fresh type `tx`. Then the let-bound -expression types to `ty -> tz` with `ty` and `tz` fresh types, adding also -the constraint `tx = ty -> tz`. What should the parameters of this type -be? If we ignore the type constraint and simply make both `ty` and `tz` -parameters because no variable is bound to them in the type -environment (indeed, the only variable `x` in the type environment is -bound to `tx`), then we can wrongly type this program to `tx -> tz` -following a reasoning similar to the one in the example above. -In fact, in this example, none of `ty` and `tz` can be parameters, because -they are constrained by `tx`. - -The examples above tell us two things: first, that we have to take the -type constraints into account when deciding the parameters of the -schema; second, that after applying the most-general-unifier solution -given by the type constraints everywhere, the remaining fresh types -appearing anywhere in the type environment are consequently constrained -and cannot be turned into parameters. Since the type environment can in -fact also hold type schemas, which already bind some types, we only need -to ensure that none of the fresh types appearing free anywhere in the -type environment are turned into parameters of type schemas. - -Thanks to generic support offered by the K tool, we can easily achieve -all the above as follows. - -First, add syntax for type schemas: - - syntax TypeSchema ::= "(" "forall" Set ")" Type [binder] - -The definition below will be given in such a way that the `Set` argument -of a type schema will always be a set of fresh types. We also declare -this construct to be a `binder`, so that we can make use of the generic -free variable function provided by the K tool. - -We now replace the old rule for `let` - - rule let X = E in E' => E'[E/X] - -with the following rule: - - rule let X = T:Type in E => E ~> tenv(TEnv) ... - Theta:Mgu - TEnv - => TEnv[(forall freeVariables(applyMgu(Theta, T)) -Set - freeVariables(applyMgu(Theta, values TEnv)) - ) applyMgu(Theta, T) / X] - - -So the type `T` of `E` is being parameterized and then bound to `X` in the -type environment. The current mgu `Theta`, which comprises all the type -constraints accumulated so far, is applied to both `T` and the types in -the type environment. The remaining fresh types in `T` which do not -appear free in the type environment are then turned into type parameters. -The function `freeVariables` returns, as expected, the free variables of -its argument as a `Set`; this is why we declared the type schema to be a -binder above. - -Now a LAMBDA variable in the type environment can be bound to either a -type or a type schema. In the first case, the previous rule we had -for variable lookup can be reused, but we have to make sure we check -that `T` there is of sort `Type` (adding a sort membership, for example). -In the second case, as explained above, we have to create fresh copies -of the parameters. This can be easily achieved with another -predefined K function, as follows: - - rule X:Id => freshVariables(Tvs,T) ... - ... X |-> (forall Tvs) T ... - -Indeed, `freshVariables` takes a set of variables and a term, and returns the -same term but with each of the given variables replaced by a fresh copy. - -The operations `freeVariables` and `freshVariables` are useful in many K -definitions, so they are predefined in module `substitution.k`. - -Our definition of this let-polymorphic type inferencer is now -complete. To test it, `kompile` it and then `krun` all the LAMBDA -programs discussed since Lesson 4. They should all work as expected. diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/lambda.k b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/lambda.k deleted file mode 100644 index d16780e5495..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/lambda.k +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -// NOTE: this definition is not up to date with the latest version of K, as it -// uses both unification and symbolic reasoning. -// It is intended for documentation and academic purposes only. - -require "unification.k" - -module LAMBDA - imports DOMAINS - imports UNIFICATION - - syntax Exp ::= Int | Bool | Id - | "(" Exp ")" [bracket] - | Exp Exp [seqstrict, left] - > Exp "*" Exp [seqstrict, left] - | Exp "/" Exp [seqstrict] - > Exp "+" Exp [seqstrict, left] - > Exp "<=" Exp [seqstrict] - > "lambda" Id "." Exp - | "if" Exp "then" Exp "else" Exp [seqstrict] - | "let" Id "=" Exp "in" Exp [strict(2)] - | "letrec" Id Id "=" Exp "in" Exp [macro] - | "mu" Id "." Exp - - syntax Type ::= "int" | "bool" - | Type "->" Type [klabel(functionType)] - | "(" Type ")" [bracket] - - syntax Exp ::= Type - syntax KResult ::= Type - - configuration $PGM:Exp - .Map - - rule _I:Int => int - rule _B:Bool => bool - rule X:Id => T ... ... X |-> T:Type ... - rule T1:Type * T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type / T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type + T2:Type => T1 = int ~> T2 = int ~> int - rule T1:Type <= T2:Type => T1 = int ~> T2 = int ~> bool - - syntax Exp ::= Exp "->" Exp [seqstrict, klabel(functionType)] - rule lambda X:Id . E => ?T:Type -> E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - rule T1:Type T2:Type => T1 = (T2 -> ?T:Type) ~> ?T - rule if T:Type then T1:Type else T2:Type => T = bool ~> T1 = T2 ~> T1 - - syntax TypeSchema ::= "(" "forall" Set ")" Type - syntax Type ::= MetaVariable - rule let X = T:Type in E => E ~> setTenv(TEnv) ... - TEnv - => TEnv[X <- (forall #metaKVariables(T) -Set #metaKVariables(setTenv(TEnv))) #freezeKVariables(T, setTenv(TEnv))] - - rule X:Id => #renameMetaKVariables(T, Tvs) ... - ... X |-> (forall Tvs) T ... - - rule letrec F X = E in E' => let F = mu F . lambda X . E in E' - rule mu X:Id . E:Exp => (?T:Type -> ?T) E ~> setTenv(TEnv) ... - TEnv => TEnv[X <- ?T] - - syntax KItem ::= Type "=" Type - rule T = T => . - - syntax KItem ::= setTenv(Map) - rule _T:Type ~> (setTenv(TEnv) => .) ... _ => TEnv -endmodule diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/media.properties b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/media.properties deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda deleted file mode 100644 index ba7492930ff..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda f . lambda g . lambda x . - g (f x) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda.out deleted file mode 100644 index cab0899aa4a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/composition.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( V0 -> V1 ) -> ( ( V1 -> V2 ) -> ( V0 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda deleted file mode 100644 index 698290a8e35..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda +++ /dev/null @@ -1,13 +0,0 @@ -let f00 = lambda x . lambda y . x in - let f01 = lambda x . f00 (f00 x) in - let f02 = lambda x . f01 (f01 x) in - let f03 = lambda x . f02 (f02 x) in - let f04 = lambda x . f03 (f03 x) in -// let f05 = lambda x . f04 (f04 x) in -// let f06 = lambda x . f05 (f05 x) in -// let f07 = lambda x . f06 (f06 x) in -// let f08 = lambda x . f07 (f07 x) in -// let f09 = lambda x . f08 (f08 x) in -// let f10 = lambda x . f09 (f09 x) in -// let f11 = lambda x . f10 (f10 x) in - f04 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda.out deleted file mode 100644 index fc91ea863f3..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/exponential-type.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> ( V3 -> ( V4 -> ( V5 -> ( V6 -> ( V7 -> ( V8 -> ( V9 -> ( V10 -> ( V11 -> ( V12 -> ( V13 -> ( V14 -> ( V15 -> ( V16 -> V0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda deleted file mode 100644 index bd3bf4aab34..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda +++ /dev/null @@ -1,3 +0,0 @@ -let f = lambda x . x -in let g = lambda y . f y - in g g diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda deleted file mode 100644 index 18999d56a67..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let f = let g = lambda x . x - in let h = lambda x . lambda x . (g g g g) - in h -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda.out deleted file mode 100644 index e6b163db9f8..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identities-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> ( V1 -> ( V2 -> V2 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda deleted file mode 100644 index fb7526f6008..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let f = lambda x . x -in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/identity.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda deleted file mode 100644 index e9552f6add1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . lambda y . lambda z . - if x then y else z diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda.out deleted file mode 100644 index 34f260c548f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/if.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> ( V0 -> ( V0 -> V0 ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda deleted file mode 100644 index 904c3605a25..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda +++ /dev/null @@ -1,2 +0,0 @@ -letrec f x = 3 -in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda.out deleted file mode 100644 index 14c870b36fd..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/letrec.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda deleted file mode 100644 index adcaed2d35d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let f1 = lambda x . x in - let f2 = f1 in - let f3 = f2 in - let f4 = f3 in - let f5 = f4 in - if (f5 true) then f2 else f3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/nested-lets.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda deleted file mode 100644 index 07a2ec99dbe..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda +++ /dev/null @@ -1 +0,0 @@ -lambda x . lambda y . x + y diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda.out deleted file mode 100644 index 8ddc7791d13..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/plus.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( int -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda deleted file mode 100644 index 317fe5f31de..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in if (id true) then (id 1) else (id 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-1-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda deleted file mode 100644 index 34495cd24ab..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda +++ /dev/null @@ -1,2 +0,0 @@ -let id = lambda x . x -in id id diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda.out deleted file mode 100644 index 9a143400c57..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/polymorphic-identity-2-fails.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K V0 -> V0 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda deleted file mode 100644 index 9da0a84d289..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . x y - in if (f true) then (f 1) else (f 2) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/should-fail.lambda.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda deleted file mode 100644 index e8307bf4b11..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda +++ /dev/null @@ -1,4 +0,0 @@ -let x = 1 -in let f = lambda a . x - in let x = true - in f 3 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda deleted file mode 100644 index a6f3061a091..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda +++ /dev/null @@ -1,6 +0,0 @@ -let y = 0 -in letrec f x = if x <= 0 - then y - else let y = true - in f (x + 1) - in f 1 diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda.out deleted file mode 100644 index 6140c71694f..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/static-scoping-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda deleted file mode 100644 index f15e7b2d4af..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda +++ /dev/null @@ -1,6 +0,0 @@ -// the parenthese around let should not be needed; -// i'll fix this as soon as the priorities work - -lambda f . lambda x . lambda y . ( - (f x y) + x + (let x = y in x) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda.out deleted file mode 100644 index 6877a5141f1..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-1.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> ( int -> int ) ) -> ( int -> ( int -> int ) ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda deleted file mode 100644 index f87649cf68d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . - let f = lambda y . if true then y else x - in (lambda x . f 0) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda.out deleted file mode 100644 index 0d92684163d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-2.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> ( V0 -> int ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda deleted file mode 100644 index 1e0632a2e7e..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . if true then x 7 else x y - in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-3.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda deleted file mode 100644 index eccee5178cf..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda +++ /dev/null @@ -1,3 +0,0 @@ -lambda x . let f = lambda x . x - in let d = (f x) + 1 - in x diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda.out deleted file mode 100644 index 4805c97f5ed..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-4.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K int -> int diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda deleted file mode 100644 index 1bf68eb4a6a..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda +++ /dev/null @@ -1,2 +0,0 @@ -lambda x . let f = lambda y . x y - in let z = x 0 in f diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda.out deleted file mode 100644 index 2b60afd0b0c..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky-5.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K ( int -> V0 ) -> ( int -> V0 ) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda deleted file mode 100644 index d28c500f06d..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda +++ /dev/null @@ -1,4 +0,0 @@ -lambda x . ( - let y = lambda z . x - in if (y true) then (y 1) else (y (lambda x . x)) -) diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda.out b/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda.out deleted file mode 100644 index 1e5b3159866..00000000000 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_9/tests/tricky.lambda.out +++ /dev/null @@ -1 +0,0 @@ -T ==K bool -> bool diff --git a/k-distribution/pl-tutorial/1_k/6_extras/README b/k-distribution/pl-tutorial/1_k/6_extras/README deleted file mode 100644 index 8752b1e13c0..00000000000 --- a/k-distribution/pl-tutorial/1_k/6_extras/README +++ /dev/null @@ -1,51 +0,0 @@ -Here we will learn several other features of K, such as: - -- how to properly use syntactic lists -- how to define arbitrary evaluation contexts -- how to define heating/cooling rules manually -- how to make use of freezers in your rules -- more details about how configuration abstraction really works -- how to define arbitrary partial orders over syntactic constructs -etc. -- how to add the freshness capability to sorts, which allows us to generate -fresh elements of that sort (using `!` variables). - -Similar heating/cooling rules are also automatically -associated to \K (evaluation) context declarations in more complex -languages. - - - Sometimes we want to customize the initial -configuration before executing a program. Then we can use -custom configuration variables, whose name starts with {\em \$} like -that of {\em \$PGM}. For example, we can replace the -$\kdot$ contents of the \textsf{state} cell with configuration -map variable {\em \$STATE}. This allows you to pass your desired -initial state to \texttt{krun} in addition to the program, such as in -the following command requesting \texttt{krun} to execute -a program in a state binding $n$ to 0 and $s$ to 10: -\begin{verbatim} -krun programs/sum-novars.imp --STATE="n|->0 s|->10" -\end{verbatim} - - -You can manually edit the generated .tex and remove the poster option -from \documentclass -If you do that, it tries to format your definition for printing. you -can also use the thight option there to generate tighter bubbles. - -if you hover over the rule keyword, it displays a -tooltip with the label. - -Configuration variables: -// Moreover, since the purpose of the tutorial is to teach you K, the -// language definition below may not be configured optimally as is. -// For example, the initial configuration has no configuration variables. -// Thus, some example programs may not run well with the provided -// configuration. You will be required to configure the K definition -// appropriately and then rekompile it in order to run those programs. -... -// Replace the above cell with the following when you want to pass -// an initial state through krun; see program programs/sum-novars.imp. -// $STATE:Map -// Make sure you rekompile the definition before calling krun. diff --git a/k-distribution/pl-tutorial/1_k/Makefile b/k-distribution/pl-tutorial/1_k/Makefile deleted file mode 100644 index 6a116d7a65b..00000000000 --- a/k-distribution/pl-tutorial/1_k/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=1_lambda 2_imp 3_lambda++ 4_imp++ 5_types - -include ../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/README.md b/k-distribution/pl-tutorial/1_k/README.md deleted file mode 100644 index bafab7b7dc7..00000000000 --- a/k-distribution/pl-tutorial/1_k/README.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# Learning K - -We start by introducing the basic features of K by means of a series -of very simple languages. The objective here is neither to learn those -languages nor to study their underlying paradigm, but simply to learn K. - -- [LAMBDA](1_lambda/README.md): Lambda calculus defined. -- [IMP](2_imp/README.md): A simple imperative language. -- [LAMBDA++](3_lambda++/README.md): LAMBDA extended with control flow. -- [IMP++](4_imp++/README.md): IMP extended with threads and IO. -- [TYPES](5_types/README.md): LAMBDA type system. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/NOTES.md b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/NOTES.md deleted file mode 100644 index 341e679572d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/NOTES.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -This is not well tested now, and it was not well tested in v3.6 either. -We should add some rules as transitions, too, and then use search on all -the examples. - -Exercises not revised yet. - -.Bag should be . throughout this definition #1772 - -There seems to be a problem with defining auxiliary constructs of sort -KItem when we want to use them as a particular sort in rule. We had to -declare them as construct for that sort instead. May want to explain -this a bit in the Latex discussion (related to #1803): -+ syntax Exp ::= lookup(Int) -- syntax KItem ::= lookup(Int) - -We currently add Vals to KResult, but we should have a better pattern for -List{Sort} and in general for any collections, where we make them hybrid -(they become KResults when their elements become KResults) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/README b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/README deleted file mode 100644 index 0218afccd1c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/README +++ /dev/null @@ -1,24 +0,0 @@ -Add "break;" and "continue;" to untyped SIMPLE. Just take the -semantics of these from C/C++/Java, if uncertain. Do only the simple, -unlabeled ones, which only break/continue the innermost loop. One -thing to think about: do you still want to desugar the for-loop into a -while-loop as we do it now? - -Notes: -*) Make sure you add the syntax of break and continue to the SYNTAX -module, and not where the semantics is. That's because the parser for -programs is generated from the SYNTAX module only, so if you define -break and continue in the semantics module then "break;" and -"continue;" will be parsed as expression statements! (i.e., lookup -variable "break" followed by ";"). - -*) If you decide to keep the for and to desugar while into for, then -make sure that you extend the syntax of for to take Stmts instead of -Stmt as first argument, because inplace declarations of the form - for(var i=1; i<=y; ++i) ... -macro expand to - for((var i; i=1;) i<=y; ++i) ... -Otherwise, the resulting statements with such for loops as above will -not parse as Stmt, so nothing will match; not even the lookup rule. -So the syntax of for should be - "for" "(" Stmts Exp ";" Exp ")" Block diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple deleted file mode 100644 index e61aa8b1962..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple +++ /dev/null @@ -1,19 +0,0 @@ -function main() { - var i=0; - while(true) { - print("i = ", ++i, "\n"); - try { - if(i%2==0) { - var i=100; - continue; - } else { - throw i; - } - } catch(i) { - i=-i; - print(i,"\n"); - if(i==-17) {break;} - } - } - print("final i = ", i, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple.out deleted file mode 100644 index b1f93a271bc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-exception.simple.out +++ /dev/null @@ -1,27 +0,0 @@ -i = 1 --1 -i = 2 -i = 3 --3 -i = 4 -i = 5 --5 -i = 6 -i = 7 --7 -i = 8 -i = 9 --9 -i = 10 -i = 11 --11 -i = 12 -i = 13 --13 -i = 14 -i = 15 --15 -i = 16 -i = 17 --17 -final i = 17 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple deleted file mode 100644 index 4996bf19e52..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple +++ /dev/null @@ -1,19 +0,0 @@ -function f() { - print("Trying to break from within a function ...\n"); - break; // normally, this should not be allowed -} - -function main() { - while(true) { - f(); - print("Should never reach this point.\n"); - } - print("... and, wrongly, succeeding.\n"); - /* One way to solve this problem dynamically is to empty the loop stack - when calling a function, but that is expensive, non-modular, and not - really justified. Indeed, the clean solution here is to reject such - programs statically, but we have no static checker for untyped SIMPLE - (it can be done as part of the static semantics of the typed SIMPLE, - though). For now, we can assume that programs do not have such uncaught - break/continue statements in functions. */ -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple.out deleted file mode 100644 index 8cb9d48a3aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/break-from-function.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -Trying to break from within a function ... -... and, wrongly, succeeding. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple deleted file mode 100644 index f7922db3ba7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple +++ /dev/null @@ -1,17 +0,0 @@ -function collatz(n) { - var s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - ++s; - if (n == (n/2)*2) { n = n/2; continue;} - n = 3*n+1; - } - print("Done! It took ",s," steps.\n"); -} - -function main() { - print("Testing Collatz' conjecture up to what number? "); - var m = read(), i=1; - for (var i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.out deleted file mode 100644 index 5be199e0e74..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/collatz-continue.simple.out +++ /dev/null @@ -1,11 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Testing Collatz' conjecture for n = 6 ... Done! It took 8 steps. -Testing Collatz' conjecture for n = 7 ... Done! It took 16 steps. -Testing Collatz' conjecture for n = 8 ... Done! It took 3 steps. -Testing Collatz' conjecture for n = 9 ... Done! It took 19 steps. -Testing Collatz' conjecture for n = 10 ... Done! It took 6 steps. -Done. It appears to hold. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple deleted file mode 100644 index 233a9572675..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple +++ /dev/null @@ -1,14 +0,0 @@ -function factorial(y) { - print("Factorial of ", y, " is: "); - var t=1, i=0; - while(true) { - if(++i<=y) {t = t*i; continue;} - break; - } - return t; -} - -function main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.out deleted file mode 100644 index dc0d88db4fc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/factorial-continue.simple.out +++ /dev/null @@ -1 +0,0 @@ -Input a natural number: Factorial of 10 is: 3628800 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple deleted file mode 100644 index c2fe96f1224..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple +++ /dev/null @@ -1,7 +0,0 @@ -function main() { - var i=10; - for(var i=0; i<=10; ++i) { - break; - } - print(i, "\n"); // should be 10 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple.out deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-break.simple.out +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple deleted file mode 100644 index f1909ddf00e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - var j=0; - for(var i=0; i<=5; ++i) { - print(i, "\n"); // should print a different i at each iteration - if(++j==10) {break;} - continue; - print("Wrong!\n"); - } - print(j, "\n"); // if j is 10 here, then continue does NOT work well -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple.out deleted file mode 100644 index 09c277aa668..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/for-with-continue.simple.out +++ /dev/null @@ -1,7 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple deleted file mode 100644 index 0b5e76cb39f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple +++ /dev/null @@ -1,27 +0,0 @@ -function main() { - var i=0, j=0; - while(++j<=100) { - if(j%3==0) { - print("continue outter loop\n"); - continue; - } - while(++i<=j) { - if(i%2==0) { - print("continue inner loop\n"); - continue; - } - if(i==7) { - print("break inner loop\n"); - break; - } - print("i = ", i, "\n"); - } - print("i = ", i, "\n"); - if(j>8) { - print("break outter loop\n"); - break; - } - print("j = ", j, "\n"); - } - print("j = ", j, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple.out deleted file mode 100644 index 77a3c6fd7b8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/nested-loops.simple.out +++ /dev/null @@ -1,23 +0,0 @@ -i = 1 -i = 2 -j = 1 -i = 3 -j = 2 -continue outter loop -continue inner loop -i = 5 -j = 4 -i = 6 -j = 5 -continue outter loop -break inner loop -i = 7 -j = 7 -continue inner loop -i = 9 -j = 8 -continue outter loop -continue inner loop -i = 11 -break outter loop -j = 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple deleted file mode 100644 index 1f20b179d22..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple +++ /dev/null @@ -1,9 +0,0 @@ -function main() { - var i=0; - while(++i<=10) { - if(i%2==0) {continue;} - if(i==7) {break;} - print(i,"\n"); - } - print(i,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple.out deleted file mode 100644 index 9b4237ab173..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break-and-continue.simple.out +++ /dev/null @@ -1,4 +0,0 @@ -1 -3 -5 -7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple deleted file mode 100644 index adc1e976bde..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple +++ /dev/null @@ -1,6 +0,0 @@ -function main() { - while(true) { - break; - } - print("OK\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple.out deleted file mode 100644 index d86bac9de59..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-break.simple.out +++ /dev/null @@ -1 +0,0 @@ -OK diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple deleted file mode 100644 index 9b3fcc5182f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple +++ /dev/null @@ -1,9 +0,0 @@ -function main() { - var i=0; - while(++i<=10) { - print(i,"\n"); - continue; - print("Not OK!\n"); - } - print("OK\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple.out deleted file mode 100644 index d2b246f8246..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-continue.simple.out +++ /dev/null @@ -1,11 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -OK diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple deleted file mode 100644 index 2306527821f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple +++ /dev/null @@ -1,8 +0,0 @@ -function main() { - var i=0, j=0; - while(true) { - var j=1; - break; - } - print(j,"\n"); // should print 0, not 1 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple.out deleted file mode 100644 index 573541ac970..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/break-continue/while-with-locals.simple.out +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_05.simple.out deleted file mode 100644 index e1d2bbf8b3d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_05.simple.out +++ /dev/null @@ -1,199 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 0 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; for ( { } 1 <= x ; 0 ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "0\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 1 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; for ( { } 1 <= x ; 0 ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "1\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 2 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; for ( { } 1 <= x ; 0 ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "2\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 3 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; for ( { } 1 <= x ; 0 ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "3\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 4 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; for ( { } 1 <= x ; 0 ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "4\n" ~> . ) ) - - - 3 - - - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/README b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/README deleted file mode 100644 index 3311ce099b7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/README +++ /dev/null @@ -1,21 +0,0 @@ -Parameter passing styles in SIMPLE - -Currently, data is only passed by value in function calls. -Your task is to extend this behavior to allow call-by-reference and -"call-by-address". - -"Call-by-address" is actually improperly called this way, as it is just a -passing by value of location values (obtained through the address operator) -which is combined with the power of dereferencing these location values. -Therefore, to extend the language with call-by-address, you are required to add -(1) a taking of address operator ("&") which expects an l-value expression as - its argument and evaluates to the location corresponding to that l-value. -(2) a dereferencing operator ("*") which expects its argument to evaluate to a - location value and evaluates to the object represented by that value. - -"Call-by-reference" passing style requires that the expression to be passed -by-reference evaluates to an l-value, in which case the variable to which the -expression must be bound is bound to the same location as that pointed to by -the expression. To identify the arguments which are to be passed by -reference, we will prefix them with the "&" operator. - diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple deleted file mode 100644 index 1acb1a9d80a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple +++ /dev/null @@ -1,19 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -function collatz(n) { - var s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - print("Done! It took ",s," steps.\n"); -} - -function main() { - print("Testing Collatz' conjecture up to what number? "); - var m = read(); - for (var i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/div-nondet.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/div-nondet.simple deleted file mode 100644 index 69bb70ce725..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/div-nondet.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Program manifesting several behaviors, including an undefined one. -// However, to make it generate all those behaviors, you need to add -// the "superheat" tag to the division and the "supercool" tag to the -// variable lookup and increment rules. - -function main() { - var x = 1 ; - print(++ x / (++ x / x),"\n"); -} - -// 0 -// 1 -// 2 -// 3 -// undefined (gets stuck with division-by-zero at top of computation) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple deleted file mode 100644 index 3ca915e8409..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple +++ /dev/null @@ -1,15 +0,0 @@ -// The following program calculates the factorial of a user-provided number. - -function factorial(y) { - print("Factorial of ", y, " is: "); - var t=1; - for(var i=1; i<=y; ++i) { - t = t*i; - } - return t; -} - -function main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/higher-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/higher-order.simple deleted file mode 100644 index f172974e120..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/higher-order.simple +++ /dev/null @@ -1,77 +0,0 @@ -var x, a[10]; - -function incx() { - ++x; -} - -function zero() { - return 0; -} - -function id(x) { - return x; -} - -function double(x) { - return 2*x; -} - -function hoincx() { - return incx; -} - -function hozero() { - return zero; -} - -function hoid() { - return id; -} - -function hodouble() { - return double; -} - -function app0(f) { - f(); -} - -function app1(f) { - return f(); -} - -function app2(f,x) { - return f(x); -} - -function map(f,x) { - for (var i = 0; i <= sizeOf(x) - 1; ++i) { - x[i] = app2(f,x[i]); - } -} - -function printall() { - print("x = ",x, "; a[] = "); - for (var i = 0; i <= sizeOf(a) - 1; ++i) { - print(a[i], " "); - } - print("\n"); -} - -function main() { - x = 0; var i; - for (var i=0; i <= sizeOf(a) - 1; ++i) { - a[i]=i; - } - printall(); - hoincx()(); - print(x," ", hozero()()," ", hoid()(7)," ", hodouble()(7),"\n"); - id(hoincx())(); - print(x," ", id(hozero())()," ", - id(hoid())(7)," ", id(hodouble())(7),"\n"); - app0(id(hoincx())); - print(x," ", app1(id(hozero()))," ", - app2(id(hoid()),7)," ", app2(id(hodouble()),7),"\n"); - map(double,a); - printall(); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple deleted file mode 100644 index 9074c56a620..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple +++ /dev/null @@ -1,57 +0,0 @@ -// This program tests multi-dimensional arrays. - -function readArray(a) { - var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(var i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements): "); - for(var j=0; j<=n; ++j) { a[i][j] = read(); } - } -} - -function printArray(a) { - var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(var i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements):"); - for(var j=0; j<=n; ++j) { print(" ",a[i,j]); } - print("\n"); - } -} - -function transArray(a) { - var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1]; - for (var i=0; i<=m; ++i) { - for (var j=0; j<=n; ++j) { - b[j,i] = a[i,j]; - } - } - return b; -} - -function mulArray(a,b) { - var m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1]; - for (var i=0; i<=m; ++i) { - for (var j=0; j<=p; ++j) { - c[i,j] = 0; - for (var k=0; k<=n; ++k) { - c[i,j] = c[i,j] + a[i,k] * b[k,j]; - } - } - } - return c; -} - -function main() { - print("Input the number of lines and columns (two natural numbers): "); - var x = read(), y = read(), a[x,y]; - readArray(a); - print("Your matrix is:\n"); - printArray(a); - print("The transpose of your matrix is:\n"); - printArray(transArray(a)); - print("You matrix multiplied with its transpose is:\n"); - printArray(mulArray(a,transArray(a))); - print("The transpose of your matrix multiplied with your matrix is:\n"); - printArray(mulArray(transArray(a),a)); -} - -// Should output what it says. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple.in deleted file mode 100644 index a025221804f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple.in +++ /dev/null @@ -1,4 +0,0 @@ -2 4 1 -5 7 8 27 - -1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple deleted file mode 100644 index cd27913971c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple +++ /dev/null @@ -1,133 +0,0 @@ -function init(n) { - var x[n]; - print("Type ",n," numbers: "); - for (var i = 0; i <= n - 1; ++i) { - x[i] = read(); - } - print("Finished reading the ",n," numbers\n"); - return x; -} - -function printArray(x) { - print("\n"); - for (var i = 0; i <= sizeOf(x) - 1; ++i) { - print(x[i]," "); - } - print("\n"); -} - -function reverse(x) { - var n = sizeOf(x); - for (var i = 0; i <= n/2 - 1; ++i) { - var t = x[i]; - x[i] = x[n - i - 1]; - x[n - i - 1] = t; - } -} - -function map(m,f,x) { - for (var i = 0; i <= sizeOf(f) - 1; ++i) { - print(m[i]); - f[i](x); - } -} - -function insertionSort(x) { - for (var i = 1; i <= sizeOf(x) - 1; ++i) { - var v = x[i], j = i - 1; - while (j > 0 && x[j] > v) { // doing the loop only up to 1 - x[j + 1] = x[j]; - j = j - 1; - } - if (x[0] > v) { - x[1] = x[0]; - x[0] = v; - } - else { - x[j+1] = v; - } - } -} - -function bubbleSort(v) { - var n = sizeOf(v); - for (var i = 0; i <= n - 1; ++i) { - for (var j = 0; j <= n - 2; ++j) { - if (v[j] > v[j+1]) { - var t = v[j+1]; - v[j+1] = v[j]; - v[j] = t; - } - } - } -} - -function siftDown(x, root, bottom) { - var done = false, maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (x[root*2] > x[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (x[root] < x[maxChild]) { - var t = x[root]; - x[root] = x[maxChild]; - x[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } -} - -function heapSort(x) { - var n = sizeOf(x), i = n/2 - 1; - while (i >= 0) { - siftDown(x, i, n - 1); - i = i - 1; - } - i = n - 1; - while (i >= 1 ) { - var t = x[0]; - x[0] = x[i] ; - x[i] = t; - siftDown(x, 0, i - 1); - i = i - 1; - } -} - -function main() { - print("Size of the array to sort = "); - var x = init(read()), m[11], f[11]; - m[ 0] = "The original unsorted array is:"; - f[ 0] = printArray; - m[ 1] = "Reversing the array ... "; - f[ 1] = reverse; - m[ 2] = "Done!\nThe reversed array is:"; - f[ 2] = printArray; - m[ 3] = "Sorting the array using insertion sort ... "; - f[ 3] = insertionSort; - m[ 4] = "Done!\nThe resulting array is:"; - f[ 4] = printArray; - m[ 5] = "Reversing the array ... "; - f[ 5] = reverse; - m[ 6] = "Done!\nSorting the array using bubble sort ... "; - f[ 6] = bubbleSort; - m[ 7] = "Done!\nThe resulting array is:"; - f[ 7] = printArray; - m[ 8] = "Reversing the array ... "; - f[ 8] = reverse; - m[ 9] = "Done!\nSorting the array using heap sort ... "; - f[ 9] = heapSort; - m[10] = "Done!\nThe resulting array is:"; - f[10] = printArray; - map(m,f,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_01.simple deleted file mode 100644 index 286310542ef..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_01.simple +++ /dev/null @@ -1,16 +0,0 @@ -function main() { - var e = 100; - try { - var x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 - print(10,"\n"); -} - -// 7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_02.simple deleted file mode 100644 index 7db057348c8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_02.simple +++ /dev/null @@ -1,20 +0,0 @@ -function main() { - try { - foo(); - } - catch(e) { - print(e,"\n"); // should print 7 - } -} - -function foo() { - try { - throw 5; - print(17); // should not be printed - } catch(e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_03.simple deleted file mode 100644 index 48afe1c2142..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_03.simple +++ /dev/null @@ -1,8 +0,0 @@ -function main() { - var x = 1; - try { x = x + 1; throw x; x = x/0;} // division by zero unreachable - catch(y) {x = y+1;} - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_04.simple deleted file mode 100644 index 7a61fb7ab1e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_04.simple +++ /dev/null @@ -1,8 +0,0 @@ -function main() { - var x = 1; - try { var x = 5; throw x; var y = x/0;} // division by zero unreachable - catch(y) {y = y + 2; print(y," ");} // new y here, the one declared by catch - print(x,"\n"); -} - -// 7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_05.simple deleted file mode 100644 index cfc04f1988f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_05.simple +++ /dev/null @@ -1,23 +0,0 @@ -var x; - -function f(y) { - var t = 1; - try{ - print(t," "); - throw 5; - print(8); // not reachable - } catch(p) { - print(p+10," "); - } - for (var i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -function main() { - x = 5; - print(f(x),"\n"); -} - -// 1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_06.simple deleted file mode 100644 index a9c638d522a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_06.simple +++ /dev/null @@ -1,22 +0,0 @@ -var x; - -function f(y) { - var t = 1; - try { - print(t," "); - print(8," "); - } catch(p) { - print(p+10); // not reachable - } - for (var i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -function main() { - x = 5; - print(f(x),"\n"); -} - -// 1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple deleted file mode 100644 index 525e6624878..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -function main() { - var e; - try { - var x = 2; - print(x," "); - throw ++x + x; - } - catch(e) { - print(e,"\n"); - } -} - -// 2 6 or 2 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple.out deleted file mode 100644 index dc9481f15aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_07.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "2 5\n" - } -#Or - { - S:String - #Equals - "2 6\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_08.simple deleted file mode 100644 index fffe4e19933..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_08.simple +++ /dev/null @@ -1,27 +0,0 @@ -function main() { - var e; - try { - try { - try { - try { - var x = 1; - print(x," "); - throw ++x; - } catch(e) { - print(e," "); - throw ++e; - } - } catch(e) { - print(e," "); - throw ++e; - } - } catch(e) { - print(e," "); - throw ++e; - } - } catch(e) { - print(e,"\n"); - } -} - -// 1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_09.simple deleted file mode 100644 index a8cf116fd9b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_09.simple +++ /dev/null @@ -1,24 +0,0 @@ -var x, y, z; - -function g() { - throw 15; -} - -function f() { - g(); -} - -function main() { - x = 5; - y = 10; - - try { - f(); - } catch(y) { - print(y," "); - } - print(x," "); - print(y,"\n"); -} - -// 15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_10.simple deleted file mode 100644 index 9ea38f082a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_10.simple +++ /dev/null @@ -1,13 +0,0 @@ -var x; - -function main() { - x = 5; - try { - throw 3; - print(x); // should not print this - } catch(y) { - print(y,"\n"); // should print this - } -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_11.simple deleted file mode 100644 index 00231715c3c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_11.simple +++ /dev/null @@ -1,20 +0,0 @@ -var i, j; - -function main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - throw j=1; - i = 10; - print(i); // should not print this - } catch(j) { - i = 20; - print(i," "); // should print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_12.simple deleted file mode 100644 index 0b7e2a3130f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_12.simple +++ /dev/null @@ -1,19 +0,0 @@ -var i, j; - -function main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - i = 10; - print(i," "); - } catch(j) { - i = 20; - print(i); // should not print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_13.simple deleted file mode 100644 index 8cb5312f439..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_13.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - try { - throw 4; - } catch (e) { - print(e," "); - } - print(42,"\n"); -} - -// 4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_14.simple deleted file mode 100644 index cc9af929c9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_14.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - try { - 15; - } catch(e) { - print(e); // should not print this - } - print(42,"\n"); -} - -// 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_15.simple deleted file mode 100644 index bc3d09beb0d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_15.simple +++ /dev/null @@ -1,15 +0,0 @@ -function main() { - try { - 1; - try { - 2; - } catch(a) { - print(2); // should not print this - } - throw 1; - } catch(b) { - print(1,"\n"); // should print this - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple deleted file mode 100644 index af6815e712e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple +++ /dev/null @@ -1,9 +0,0 @@ -function increment(x) { - return x + 1; -} - -function main() { - var x = 0; - x = increment(x); - print("x = ", x, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple.out deleted file mode 100644 index 7d4290a117a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/0-basic.simple.out +++ /dev/null @@ -1 +0,0 @@ -x = 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple deleted file mode 100644 index defbd99ae91..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple +++ /dev/null @@ -1,8 +0,0 @@ -function f(x,y,z,t) { - print("f(", x, ", ", y, ", ", z, ", ", t, ")\n"); -} - -function main() { - var x = 1, y = 2, z = 3, t = 4; - f(t,z,y,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple.out deleted file mode 100644 index e9125e2e9a3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/binding-order.simple.out +++ /dev/null @@ -1 +0,0 @@ -f(4, 3, 2, 1) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple deleted file mode 100644 index af6815e712e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple +++ /dev/null @@ -1,9 +0,0 @@ -function increment(x) { - return x + 1; -} - -function main() { - var x = 0; - x = increment(x); - print("x = ", x, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple.out deleted file mode 100644 index 7d4290a117a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-0.simple.out +++ /dev/null @@ -1 +0,0 @@ -x = 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple deleted file mode 100644 index e73b4c0e4dd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple +++ /dev/null @@ -1,15 +0,0 @@ -function swap(& x,t, & y) { - t = x; - x = y; - y = t; -} - -function main() { - var a[3]; - a[0] = 7; a[1] = 8; a[2] = 9; - print("Before swap: a = (", a[0],", ",a[1],", ",a[2],")\n"); - swap(a[0],a[1],a[2]); - print("After swap: a = (", a[0],", ",a[1],", ",a[2],")\n"); - swap(a[0],a[0],a[0]); - print("After swap: a = (", a[0],", ",a[1],", ",a[2],")\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple.out deleted file mode 100644 index fc0a985e007..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-3.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -Before swap: a = (7, 8, 9) -After swap: a = (9, 8, 7) -After swap: a = (9, 8, 7) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple deleted file mode 100644 index 64d31f32487..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple +++ /dev/null @@ -1,13 +0,0 @@ -function swap(x,y) { - *x = *x + *y; - *y = *x - *y; - *x = *x - *y; -} - -function main() { - var x = 7; - var y = 10; - print("Before swap: x = ", x, " and y = ", y, "\n"); - swap(&x,&y); - print("After swap: x = ", x, " and y = ", y, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple.out deleted file mode 100644 index 94da21c076a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-4.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -Before swap: x = 7 and y = 10 -After swap: x = 10 and y = 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple deleted file mode 100644 index 99d16c04d55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple +++ /dev/null @@ -1,27 +0,0 @@ -function swapRef(& x, t, & y) { - t = x; x = y; y = t; -} - -function swapPtr(x,y) { - *x = *x + *y; - *y = *x - *y; - *x = *x - *y; -} - -function swapPtrRef(x,y) { - swapRef(*x,0,*y); -} - -function swapRefPtr(& x, & y) { - swapPtr(&x, &y); -} - -function main() { - var x = 7; - var y[2]; y[1] = 10; - print(" Initially: x = ", x, " and y[1] = ", y[1], "\n"); - swapRefPtr(x,y[1]); - print("After swapRefPtr: x = ", x, " and y[1] = ", y[1], "\n"); - swapPtrRef(&x,&(y[1])); - print("After swapPtrRef: x = ", x, " and y[1] = ", y[1], "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple.out deleted file mode 100644 index 52037323094..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/call-by-ref-5.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - Initially: x = 7 and y[1] = 10 -After swapRefPtr: x = 10 and y[1] = 7 -After swapPtrRef: x = 7 and y[1] = 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple deleted file mode 100644 index 59b7eade0f7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple +++ /dev/null @@ -1,13 +0,0 @@ -function increment(& x) { - ++x; -} - -function main() { - var x = 0; - var a[3]; - a[1] = 1; - increment(x); - increment(a[x]); - print("x = ", x, "\n"); - print("a[x] = ", a[x], "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple.out deleted file mode 100644 index ea4414e9afa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/increment-by-ref.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -x = 1 -a[x] = 2 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple deleted file mode 100644 index 67dff5b8243..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple +++ /dev/null @@ -1,6 +0,0 @@ -function f(&x, y, &z) { -} - -function main() { - print("OK!"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple.out deleted file mode 100644 index e4f96a10f26..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/parsing-refs.simple.out +++ /dev/null @@ -1 +0,0 @@ -OK! \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple deleted file mode 100644 index fc3d55b3f11..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple +++ /dev/null @@ -1,15 +0,0 @@ -function main() { - var a[3], x, y = &x, z = &a[2], t = &z; - x = 5; - print("* y = ", * y, "\n"); - * y = * y + 1; - print("x = ", x, "\n"); - - a[2] = 7; - print("* z = ", * z, "\n"); - * z = * z + 1; - print("a[2]=", a[2], "\n"); - - **t = 4; - print("a[2] = ", a[2], "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple.out deleted file mode 100644 index 4bf7d67735d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/pointers.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -* y = 5 -x = 6 -* z = 7 -a[2]=8 -a[2] = 4 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple deleted file mode 100644 index 0f5613a55cc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple +++ /dev/null @@ -1,8 +0,0 @@ -function main() { - var x, y = & x, z = & x; - if (y == z) { - print("OK!\n"); - } else { - print("Not OK!\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple.out deleted file mode 100644 index d64066171aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/same-address.simple.out +++ /dev/null @@ -1 +0,0 @@ -OK! diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple deleted file mode 100644 index e73b4c0e4dd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple +++ /dev/null @@ -1,15 +0,0 @@ -function swap(& x,t, & y) { - t = x; - x = y; - y = t; -} - -function main() { - var a[3]; - a[0] = 7; a[1] = 8; a[2] = 9; - print("Before swap: a = (", a[0],", ",a[1],", ",a[2],")\n"); - swap(a[0],a[1],a[2]); - print("After swap: a = (", a[0],", ",a[1],", ",a[2],")\n"); - swap(a[0],a[0],a[0]); - print("After swap: a = (", a[0],", ",a[1],", ",a[2],")\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple.out deleted file mode 100644 index fc0a985e007..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-3.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -Before swap: a = (7, 8, 9) -After swap: a = (9, 8, 7) -After swap: a = (9, 8, 7) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple deleted file mode 100644 index 99d16c04d55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple +++ /dev/null @@ -1,27 +0,0 @@ -function swapRef(& x, t, & y) { - t = x; x = y; y = t; -} - -function swapPtr(x,y) { - *x = *x + *y; - *y = *x - *y; - *x = *x - *y; -} - -function swapPtrRef(x,y) { - swapRef(*x,0,*y); -} - -function swapRefPtr(& x, & y) { - swapPtr(&x, &y); -} - -function main() { - var x = 7; - var y[2]; y[1] = 10; - print(" Initially: x = ", x, " and y[1] = ", y[1], "\n"); - swapRefPtr(x,y[1]); - print("After swapRefPtr: x = ", x, " and y[1] = ", y[1], "\n"); - swapPtrRef(&x,&(y[1])); - print("After swapPtrRef: x = ", x, " and y[1] = ", y[1], "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple.out deleted file mode 100644 index 52037323094..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-both.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - Initially: x = 7 and y[1] = 10 -After swapRefPtr: x = 10 and y[1] = 7 -After swapPtrRef: x = 7 and y[1] = 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple deleted file mode 100644 index d860af553a3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple +++ /dev/null @@ -1,15 +0,0 @@ -function swap(x,y) { - *x = *x + *y; - *y = *x - *y; - *x = *x - *y; -} - -function main() { - var x = 7; - var y = 10; - print("Before swap: x = ", x, " and y = ", y, "\n"); - swap(&x,&y); - print("After swap(&x,&y): x = ", x, " and y = ", y, "\n"); - swap(&x,&x); - print("After swap(&x,&x): x = ", x, " and y = ", y, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple.out deleted file mode 100644 index 2d6f1b29e12..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ptr.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -Before swap: x = 7 and y = 10 -After swap(&x,&y): x = 10 and y = 7 -After swap(&x,&x): x = 0 and y = 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple deleted file mode 100644 index 09247e9fcb5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple +++ /dev/null @@ -1,15 +0,0 @@ -function swap(& x,& y) { - x = x + y; - y = x - y; - x = x - y; -} - -function main() { - var x = 7; - var y = 10; - print("Before swap(x,y): x = ", x, " and y = ", y, "\n"); - swap(x,y); - print("After swap(x,y): x = ", x, " and y = ", y, "\n"); - swap(x,x); - print("After swap(x,x): x = ", x, " and y = ", y, "\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple.out deleted file mode 100644 index 3b347f5f6de..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/parameter-passing-styles/swap-by-ref.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -Before swap(x,y): x = 7 and y = 10 -After swap(x,y): x = 10 and y = 7 -After swap(x,x): x = 0 and y = 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple deleted file mode 100644 index 37784f02796..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple +++ /dev/null @@ -1,10 +0,0 @@ -// Simple multithreaded program with two behaviors. - -function main() { - var x = 5; - spawn { x = 7; }; - print(x,"\n"); -} - -// 5 -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple.out deleted file mode 100644 index 5cf1e3bfbf0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_01.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "5\n" - } -#Or - { - S:String - #Equals - "7\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple deleted file mode 100644 index ec0ac2ae68e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple +++ /dev/null @@ -1,14 +0,0 @@ -// Simple multithreaded program with two output behaviors -// but with three overall behaviors - -function main() { - var x; - spawn { x = 7; }; - x = 5; - print(x,"\n"); -} - -// 5 -// 5 (yes, it admits two behaviors where the output is 5, one in which the -// store ends up with value 5 and another with value 7 at the location of x) -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple.out deleted file mode 100644 index 5cf1e3bfbf0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_02.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "5\n" - } -#Or - { - S:String - #Equals - "7\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple deleted file mode 100644 index a821db514bb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Normally, one would think that the program below has only two behaviors. -// However, it has four, due to the race on the output buffer. - -function main() { - spawn { - var x = 2; - print(x," "); - }; - spawn { - var x = 3; - print(x," "); - }; -} - -// 4 solutions, namely all interleavings of "2_" and "3_", where "_" is space diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple.out deleted file mode 100644 index 84487b38466..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_04.simple.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "2 3 " - } -#Or - { - S:String - #Equals - "3 2 " - } -#Or - { - S:String - #Equals - "23 " - } -#Or - { - S:String - #Equals - "32 " - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_05.simple deleted file mode 100644 index 8ef0ac36460..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_05.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Program which has infinitely many bahaviors. - -var x, y; - -function main() { - x = 1; - y = 0; - spawn { x = 0; }; - while (1 <= x) { - y = y+1; - } - print(y,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple deleted file mode 100644 index b06d874697a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - var x; - print("x = "); - x=read(); - var t1 = spawn {x=x/2;}; - var t2 = spawn {x=x+10;}; - join(t1); // comment out for more behaviors - join(t2); // comment out for more behaviors - print(x,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple.out deleted file mode 100644 index d9a4dfed140..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "x = 5\n" - } -#Or - { - S:String - #Equals - "x = 10\n" - } -#Or - { - S:String - #Equals - "x = 15\n" - } -#Or - { - S:String - #Equals - "x = 20\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple deleted file mode 100644 index 2963a17410e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Fully synchronized - -function main() { - var x; - print("x = "); - x=read(); - var t1 = spawn {x=x/2;}; - var t2 = spawn {join(t1); x=x+10;}; - join(t2); - print(x,"\n"); -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple deleted file mode 100644 index 00e78e89792..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Poorly synchronized program which has two behaviors. - -function main() { - var x = 1; - spawn { - x=x+1; - rendezvous 1; - }; - x=x+1; - rendezvous 1; - print(x,"\n"); -} - -// 2 -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple.out deleted file mode 100644 index 7c95a880074..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_09.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "2\n" - } -#Or - { - S:String - #Equals - "3\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_10.simple deleted file mode 100644 index db879a35bfc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_10.simple +++ /dev/null @@ -1,18 +0,0 @@ -// Well-synchronized program which has only one behavior. - -function main() { - var x = 1; - spawn { - acquire 1; - x=x+1; - release 1; - rendezvous 1; - }; - acquire 1; - x=x+1; - release 1; - rendezvous 1; - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_11.simple deleted file mode 100644 index 39bcd8809ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_11.simple +++ /dev/null @@ -1,22 +0,0 @@ -// This is a well-synchronized program, which has only one behavior. - -function main() { - var x = 1; - spawn { - rendezvous 1; - print(x," "); - rendezvous 2; - }; - spawn { - rendezvous 3; - print(x,"\n"); - rendezvous 4; - }; - print(x," "); - x = x+1; - rendezvous 1; rendezvous 2; - x = x+1; - rendezvous 3; rendezvous 4; -} - -// 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_12.simple deleted file mode 100644 index fb586e471fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_12.simple +++ /dev/null @@ -1,46 +0,0 @@ -// This program shows an interesting situation which can happen in many -// language designs: something which looks correct is actually wrong: - -var x; - -function main() { - var n = 5; - x = 1; - for (var i = 1; i <= n; ++i) { - var t=i; - spawn { - multX(t); - }; - } - for (var i=1; i<=n; ++i) { - rendezvous i; - } - print(x,"\n"); -} - -function multX(v) { - acquire 0; - x = x*v; - release 0; - rendezvous v; -} - -// 120, but also many many other behaviors ... - -// The problem is that "spawn multX(i);" does not evaluate the "i" argument, -// it only spawns a thread calculating the expression statement "multX(i);". -// It can be possible that the loop counter "i" is incremented right after the -// spawning but before the evaluation of the expression "multX(i)". In fact, -// it can be the case that all the spawned "multX(i);" statements will evaluate -// their "multX(i)" function calls after the main loop terminates. The threads -// will still see the "i" counter in their environments, but that will hold -// the value 6. Thus, in this case, all threads compute "multX(6)"! You can -// see all these "unexpected" behaviors if you use the search option in krun. -// (please make n smaller, e.g. 2, because theare are LOTS of behaviors here!) -// -// To fix this problem , replace loop "for(i=1;i<=n;++i) {spawn {multX(i);};}" -// with "for(i=1;i<=n;++i) {var t=i; spawn {multX(t);};}". Now, each thread -// sees its own local "t", which has the right value and does not change. -// Now the search option in krun only shows you solutions which output the -// correct factorial. (like before, please make n smaller (2?) when running -// the search option in krun, because theare are LOTS of behaviors here!) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple deleted file mode 100644 index 1acb1a9d80a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple +++ /dev/null @@ -1,19 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -function collatz(n) { - var s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - print("Done! It took ",s," steps.\n"); -} - -function main() { - print("Testing Collatz' conjecture up to what number? "); - var m = read(); - for (var i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.out deleted file mode 100644 index 36f5bb94345..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.out +++ /dev/null @@ -1,6 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Done. It appears to hold. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple deleted file mode 100644 index 69bb70ce725..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Program manifesting several behaviors, including an undefined one. -// However, to make it generate all those behaviors, you need to add -// the "superheat" tag to the division and the "supercool" tag to the -// variable lookup and increment rules. - -function main() { - var x = 1 ; - print(++ x / (++ x / x),"\n"); -} - -// 0 -// 1 -// 2 -// 3 -// undefined (gets stuck with division-by-zero at top of computation) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple.out deleted file mode 100644 index 4de9334ab45..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple.out +++ /dev/null @@ -1,17 +0,0 @@ - { - S:String - #Equals - "1\n" - } -#Or - { - S:String - #Equals - "2\n" - } -#Or - { - S:String - #Equals - "3\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple deleted file mode 100644 index 3ca915e8409..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple +++ /dev/null @@ -1,15 +0,0 @@ -// The following program calculates the factorial of a user-provided number. - -function factorial(y) { - print("Factorial of ", y, " is: "); - var t=1; - for(var i=1; i<=y; ++i) { - t = t*i; - } - return t; -} - -function main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.out deleted file mode 100644 index 3755534a6a4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.out +++ /dev/null @@ -1 +0,0 @@ -Input a natural number: Factorial of 5 is: 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple deleted file mode 100644 index f172974e120..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple +++ /dev/null @@ -1,77 +0,0 @@ -var x, a[10]; - -function incx() { - ++x; -} - -function zero() { - return 0; -} - -function id(x) { - return x; -} - -function double(x) { - return 2*x; -} - -function hoincx() { - return incx; -} - -function hozero() { - return zero; -} - -function hoid() { - return id; -} - -function hodouble() { - return double; -} - -function app0(f) { - f(); -} - -function app1(f) { - return f(); -} - -function app2(f,x) { - return f(x); -} - -function map(f,x) { - for (var i = 0; i <= sizeOf(x) - 1; ++i) { - x[i] = app2(f,x[i]); - } -} - -function printall() { - print("x = ",x, "; a[] = "); - for (var i = 0; i <= sizeOf(a) - 1; ++i) { - print(a[i], " "); - } - print("\n"); -} - -function main() { - x = 0; var i; - for (var i=0; i <= sizeOf(a) - 1; ++i) { - a[i]=i; - } - printall(); - hoincx()(); - print(x," ", hozero()()," ", hoid()(7)," ", hodouble()(7),"\n"); - id(hoincx())(); - print(x," ", id(hozero())()," ", - id(hoid())(7)," ", id(hodouble())(7),"\n"); - app0(id(hoincx())); - print(x," ", app1(id(hozero()))," ", - app2(id(hoid()),7)," ", app2(id(hodouble()),7),"\n"); - map(double,a); - printall(); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple.out deleted file mode 100644 index 5cf2aefc9d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -x = 0; a[] = 0 1 2 3 4 5 6 7 8 9 -1 0 7 14 -2 0 7 14 -3 0 7 14 -x = 3; a[] = 0 2 4 6 8 10 12 14 16 18 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple deleted file mode 100644 index 9074c56a620..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple +++ /dev/null @@ -1,57 +0,0 @@ -// This program tests multi-dimensional arrays. - -function readArray(a) { - var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(var i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements): "); - for(var j=0; j<=n; ++j) { a[i][j] = read(); } - } -} - -function printArray(a) { - var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(var i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements):"); - for(var j=0; j<=n; ++j) { print(" ",a[i,j]); } - print("\n"); - } -} - -function transArray(a) { - var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1]; - for (var i=0; i<=m; ++i) { - for (var j=0; j<=n; ++j) { - b[j,i] = a[i,j]; - } - } - return b; -} - -function mulArray(a,b) { - var m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1]; - for (var i=0; i<=m; ++i) { - for (var j=0; j<=p; ++j) { - c[i,j] = 0; - for (var k=0; k<=n; ++k) { - c[i,j] = c[i,j] + a[i,k] * b[k,j]; - } - } - } - return c; -} - -function main() { - print("Input the number of lines and columns (two natural numbers): "); - var x = read(), y = read(), a[x,y]; - readArray(a); - print("Your matrix is:\n"); - printArray(a); - print("The transpose of your matrix is:\n"); - printArray(transArray(a)); - print("You matrix multiplied with its transpose is:\n"); - printArray(mulArray(a,transArray(a))); - print("The transpose of your matrix multiplied with your matrix is:\n"); - printArray(mulArray(transArray(a),a)); -} - -// Should output what it says. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.in deleted file mode 100644 index a025221804f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.in +++ /dev/null @@ -1,4 +0,0 @@ -2 4 1 -5 7 8 27 - -1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.out deleted file mode 100644 index cfa7774db49..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.out +++ /dev/null @@ -1,16 +0,0 @@ -Input the number of lines and columns (two natural numbers): Line 1 (4 elements): Line 2 (4 elements): Your matrix is: -Line 1 (4 elements): 1 5 7 8 -Line 2 (4 elements): 27 1 2 3 -The transpose of your matrix is: -Line 1 (2 elements): 1 27 -Line 2 (2 elements): 5 1 -Line 3 (2 elements): 7 2 -Line 4 (2 elements): 8 3 -You matrix multiplied with its transpose is: -Line 1 (2 elements): 139 70 -Line 2 (2 elements): 70 743 -The transpose of your matrix multiplied with your matrix is: -Line 1 (4 elements): 730 32 61 89 -Line 2 (4 elements): 32 26 37 43 -Line 3 (4 elements): 61 37 53 62 -Line 4 (4 elements): 89 43 62 73 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/nonterminating/dekker.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/nonterminating/dekker.simple deleted file mode 100644 index dfcd79d2e3d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/nonterminating/dekker.simple +++ /dev/null @@ -1,31 +0,0 @@ -// This is Dekker's algorithm for mutual exclusion. -// This program is not meant to be executed, it is meant to be model checked. - -var flag1=false, flag2=false, critical1=false, critical2=false, turn=1; - -function dekker1() { - flag1 = true; turn = 2; - while (flag2 && turn==2) { } - // Enter critical section - critical1 = true; - // Critical stuff ... - // Leave critical section - critical1 = false; - flag1 = false; -} - -function dekker2() { - flag2 = true; turn = 1; - while(flag1 && turn==1) { } - // Enter critical section - critical2 = true; - // Critical stuff ... - // Leave critical section - critical2 = false; - flag2 = false; -} - -function main() { - spawn { while(true) { dekker1(); } }; - spawn { while(true) { dekker2(); } }; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple deleted file mode 100644 index cd27913971c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple +++ /dev/null @@ -1,133 +0,0 @@ -function init(n) { - var x[n]; - print("Type ",n," numbers: "); - for (var i = 0; i <= n - 1; ++i) { - x[i] = read(); - } - print("Finished reading the ",n," numbers\n"); - return x; -} - -function printArray(x) { - print("\n"); - for (var i = 0; i <= sizeOf(x) - 1; ++i) { - print(x[i]," "); - } - print("\n"); -} - -function reverse(x) { - var n = sizeOf(x); - for (var i = 0; i <= n/2 - 1; ++i) { - var t = x[i]; - x[i] = x[n - i - 1]; - x[n - i - 1] = t; - } -} - -function map(m,f,x) { - for (var i = 0; i <= sizeOf(f) - 1; ++i) { - print(m[i]); - f[i](x); - } -} - -function insertionSort(x) { - for (var i = 1; i <= sizeOf(x) - 1; ++i) { - var v = x[i], j = i - 1; - while (j > 0 && x[j] > v) { // doing the loop only up to 1 - x[j + 1] = x[j]; - j = j - 1; - } - if (x[0] > v) { - x[1] = x[0]; - x[0] = v; - } - else { - x[j+1] = v; - } - } -} - -function bubbleSort(v) { - var n = sizeOf(v); - for (var i = 0; i <= n - 1; ++i) { - for (var j = 0; j <= n - 2; ++j) { - if (v[j] > v[j+1]) { - var t = v[j+1]; - v[j+1] = v[j]; - v[j] = t; - } - } - } -} - -function siftDown(x, root, bottom) { - var done = false, maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (x[root*2] > x[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (x[root] < x[maxChild]) { - var t = x[root]; - x[root] = x[maxChild]; - x[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } -} - -function heapSort(x) { - var n = sizeOf(x), i = n/2 - 1; - while (i >= 0) { - siftDown(x, i, n - 1); - i = i - 1; - } - i = n - 1; - while (i >= 1 ) { - var t = x[0]; - x[0] = x[i] ; - x[i] = t; - siftDown(x, 0, i - 1); - i = i - 1; - } -} - -function main() { - print("Size of the array to sort = "); - var x = init(read()), m[11], f[11]; - m[ 0] = "The original unsorted array is:"; - f[ 0] = printArray; - m[ 1] = "Reversing the array ... "; - f[ 1] = reverse; - m[ 2] = "Done!\nThe reversed array is:"; - f[ 2] = printArray; - m[ 3] = "Sorting the array using insertion sort ... "; - f[ 3] = insertionSort; - m[ 4] = "Done!\nThe resulting array is:"; - f[ 4] = printArray; - m[ 5] = "Reversing the array ... "; - f[ 5] = reverse; - m[ 6] = "Done!\nSorting the array using bubble sort ... "; - f[ 6] = bubbleSort; - m[ 7] = "Done!\nThe resulting array is:"; - f[ 7] = printArray; - m[ 8] = "Reversing the array ... "; - f[ 8] = reverse; - m[ 9] = "Done!\nSorting the array using heap sort ... "; - f[ 9] = heapSort; - m[10] = "Done!\nThe resulting array is:"; - f[10] = printArray; - map(m,f,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.in deleted file mode 100644 index affeff1b77d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 71 23 43 23 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.out deleted file mode 100644 index 33d6eab60b1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.out +++ /dev/null @@ -1,17 +0,0 @@ -Size of the array to sort = Type 5 numbers: Finished reading the 5 numbers -The original unsorted array is: -71 23 43 23 91 -Reversing the array ... Done! -The reversed array is: -91 23 43 23 71 -Sorting the array using insertion sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using bubble sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using heap sort ... Done! -The resulting array is: -23 23 43 71 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple deleted file mode 100644 index 286310542ef..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple +++ /dev/null @@ -1,16 +0,0 @@ -function main() { - var e = 100; - try { - var x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 - print(10,"\n"); -} - -// 7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple.out deleted file mode 100644 index 7b132801145..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple deleted file mode 100644 index 7db057348c8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple +++ /dev/null @@ -1,20 +0,0 @@ -function main() { - try { - foo(); - } - catch(e) { - print(e,"\n"); // should print 7 - } -} - -function foo() { - try { - throw 5; - print(17); // should not be printed - } catch(e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple.out deleted file mode 100644 index 7f8f011eb73..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple deleted file mode 100644 index 48afe1c2142..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple +++ /dev/null @@ -1,8 +0,0 @@ -function main() { - var x = 1; - try { x = x + 1; throw x; x = x/0;} // division by zero unreachable - catch(y) {x = y+1;} - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple deleted file mode 100644 index 7a61fb7ab1e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple +++ /dev/null @@ -1,8 +0,0 @@ -function main() { - var x = 1; - try { var x = 5; throw x; var y = x/0;} // division by zero unreachable - catch(y) {y = y + 2; print(y," ");} // new y here, the one declared by catch - print(x,"\n"); -} - -// 7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple.out deleted file mode 100644 index ddcbc88bbd9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple deleted file mode 100644 index cfc04f1988f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple +++ /dev/null @@ -1,23 +0,0 @@ -var x; - -function f(y) { - var t = 1; - try{ - print(t," "); - throw 5; - print(8); // not reachable - } catch(p) { - print(p+10," "); - } - for (var i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -function main() { - x = 5; - print(f(x),"\n"); -} - -// 1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple.out deleted file mode 100644 index fbf9c69a420..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple deleted file mode 100644 index a9c638d522a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple +++ /dev/null @@ -1,22 +0,0 @@ -var x; - -function f(y) { - var t = 1; - try { - print(t," "); - print(8," "); - } catch(p) { - print(p+10); // not reachable - } - for (var i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -function main() { - x = 5; - print(f(x),"\n"); -} - -// 1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple.out deleted file mode 100644 index c870614bb54..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple deleted file mode 100644 index 525e6624878..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -function main() { - var e; - try { - var x = 2; - print(x," "); - throw ++x + x; - } - catch(e) { - print(e,"\n"); - } -} - -// 2 6 or 2 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple.out deleted file mode 100644 index dc9481f15aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "2 5\n" - } -#Or - { - S:String - #Equals - "2 6\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple deleted file mode 100644 index fffe4e19933..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple +++ /dev/null @@ -1,27 +0,0 @@ -function main() { - var e; - try { - try { - try { - try { - var x = 1; - print(x," "); - throw ++x; - } catch(e) { - print(e," "); - throw ++e; - } - } catch(e) { - print(e," "); - throw ++e; - } - } catch(e) { - print(e," "); - throw ++e; - } - } catch(e) { - print(e,"\n"); - } -} - -// 1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple.out deleted file mode 100644 index aacb59525ae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple deleted file mode 100644 index a8cf116fd9b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple +++ /dev/null @@ -1,24 +0,0 @@ -var x, y, z; - -function g() { - throw 15; -} - -function f() { - g(); -} - -function main() { - x = 5; - y = 10; - - try { - f(); - } catch(y) { - print(y," "); - } - print(x," "); - print(y,"\n"); -} - -// 15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple.out deleted file mode 100644 index 122f99335df..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple deleted file mode 100644 index 9ea38f082a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple +++ /dev/null @@ -1,13 +0,0 @@ -var x; - -function main() { - x = 5; - try { - throw 3; - print(x); // should not print this - } catch(y) { - print(y,"\n"); // should print this - } -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple deleted file mode 100644 index 00231715c3c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple +++ /dev/null @@ -1,20 +0,0 @@ -var i, j; - -function main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - throw j=1; - i = 10; - print(i); // should not print this - } catch(j) { - i = 20; - print(i," "); // should print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple.out deleted file mode 100644 index 9c355295cd4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple deleted file mode 100644 index 0b7e2a3130f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple +++ /dev/null @@ -1,19 +0,0 @@ -var i, j; - -function main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - i = 10; - print(i," "); - } catch(j) { - i = 20; - print(i); // should not print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple.out deleted file mode 100644 index 6c235065269..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple deleted file mode 100644 index 8cb5312f439..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - try { - throw 4; - } catch (e) { - print(e," "); - } - print(42,"\n"); -} - -// 4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple.out deleted file mode 100644 index 2efb20f3379..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple.out +++ /dev/null @@ -1 +0,0 @@ -4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple deleted file mode 100644 index cc9af929c9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - try { - 15; - } catch(e) { - print(e); // should not print this - } - print(42,"\n"); -} - -// 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple.out deleted file mode 100644 index d81cc0710eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple.out +++ /dev/null @@ -1 +0,0 @@ -42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple deleted file mode 100644 index bc3d09beb0d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple +++ /dev/null @@ -1,15 +0,0 @@ -function main() { - try { - 1; - try { - 2; - } catch(a) { - print(2); // should not print this - } - throw 1; - } catch(b) { - print(1,"\n"); // should print this - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple deleted file mode 100644 index 37784f02796..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple +++ /dev/null @@ -1,10 +0,0 @@ -// Simple multithreaded program with two behaviors. - -function main() { - var x = 5; - spawn { x = 7; }; - print(x,"\n"); -} - -// 5 -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple.out deleted file mode 100644 index 5cf1e3bfbf0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "5\n" - } -#Or - { - S:String - #Equals - "7\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple deleted file mode 100644 index ec0ac2ae68e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple +++ /dev/null @@ -1,14 +0,0 @@ -// Simple multithreaded program with two output behaviors -// but with three overall behaviors - -function main() { - var x; - spawn { x = 7; }; - x = 5; - print(x,"\n"); -} - -// 5 -// 5 (yes, it admits two behaviors where the output is 5, one in which the -// store ends up with value 5 and another with value 7 at the location of x) -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple.out deleted file mode 100644 index 5cf1e3bfbf0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "5\n" - } -#Or - { - S:String - #Equals - "7\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple deleted file mode 100644 index a821db514bb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Normally, one would think that the program below has only two behaviors. -// However, it has four, due to the race on the output buffer. - -function main() { - spawn { - var x = 2; - print(x," "); - }; - spawn { - var x = 3; - print(x," "); - }; -} - -// 4 solutions, namely all interleavings of "2_" and "3_", where "_" is space diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple.out deleted file mode 100644 index 84487b38466..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "2 3 " - } -#Or - { - S:String - #Equals - "3 2 " - } -#Or - { - S:String - #Equals - "23 " - } -#Or - { - S:String - #Equals - "32 " - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple deleted file mode 100644 index 8ef0ac36460..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Program which has infinitely many bahaviors. - -var x, y; - -function main() { - x = 1; - y = 0; - spawn { x = 0; }; - while (1 <= x) { - y = y+1; - } - print(y,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple.out deleted file mode 100644 index c73e3be1162..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple.out +++ /dev/null @@ -1,199 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 0 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "0\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 1 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "1\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 2 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "2\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 3 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "3\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 4 - 2 |-> lambda ( .Bottoms , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Bottoms ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( -1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "4\n" ~> . ) ) - - - 3 - - - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple deleted file mode 100644 index b06d874697a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple +++ /dev/null @@ -1,10 +0,0 @@ -function main() { - var x; - print("x = "); - x=read(); - var t1 = spawn {x=x/2;}; - var t2 = spawn {x=x+10;}; - join(t1); // comment out for more behaviors - join(t2); // comment out for more behaviors - print(x,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.out deleted file mode 100644 index d9a4dfed140..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "x = 5\n" - } -#Or - { - S:String - #Equals - "x = 10\n" - } -#Or - { - S:String - #Equals - "x = 15\n" - } -#Or - { - S:String - #Equals - "x = 20\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple deleted file mode 100644 index 2963a17410e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Fully synchronized - -function main() { - var x; - print("x = "); - x=read(); - var t1 = spawn {x=x/2;}; - var t2 = spawn {join(t1); x=x+10;}; - join(t2); - print(x,"\n"); -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.out deleted file mode 100644 index 7d95b26c089..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -x = 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple deleted file mode 100644 index 00e78e89792..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Poorly synchronized program which has two behaviors. - -function main() { - var x = 1; - spawn { - x=x+1; - rendezvous 1; - }; - x=x+1; - rendezvous 1; - print(x,"\n"); -} - -// 2 -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple.out deleted file mode 100644 index 7c95a880074..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "2\n" - } -#Or - { - S:String - #Equals - "3\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple deleted file mode 100644 index db879a35bfc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple +++ /dev/null @@ -1,18 +0,0 @@ -// Well-synchronized program which has only one behavior. - -function main() { - var x = 1; - spawn { - acquire 1; - x=x+1; - release 1; - rendezvous 1; - }; - acquire 1; - x=x+1; - release 1; - rendezvous 1; - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple deleted file mode 100644 index 39bcd8809ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple +++ /dev/null @@ -1,22 +0,0 @@ -// This is a well-synchronized program, which has only one behavior. - -function main() { - var x = 1; - spawn { - rendezvous 1; - print(x," "); - rendezvous 2; - }; - spawn { - rendezvous 3; - print(x,"\n"); - rendezvous 4; - }; - print(x," "); - x = x+1; - rendezvous 1; rendezvous 2; - x = x+1; - rendezvous 3; rendezvous 4; -} - -// 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple.out deleted file mode 100644 index b85905ec0b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple deleted file mode 100644 index fb586e471fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple +++ /dev/null @@ -1,46 +0,0 @@ -// This program shows an interesting situation which can happen in many -// language designs: something which looks correct is actually wrong: - -var x; - -function main() { - var n = 5; - x = 1; - for (var i = 1; i <= n; ++i) { - var t=i; - spawn { - multX(t); - }; - } - for (var i=1; i<=n; ++i) { - rendezvous i; - } - print(x,"\n"); -} - -function multX(v) { - acquire 0; - x = x*v; - release 0; - rendezvous v; -} - -// 120, but also many many other behaviors ... - -// The problem is that "spawn multX(i);" does not evaluate the "i" argument, -// it only spawns a thread calculating the expression statement "multX(i);". -// It can be possible that the loop counter "i" is incremented right after the -// spawning but before the evaluation of the expression "multX(i)". In fact, -// it can be the case that all the spawned "multX(i);" statements will evaluate -// their "multX(i)" function calls after the main loop terminates. The threads -// will still see the "i" counter in their environments, but that will hold -// the value 6. Thus, in this case, all threads compute "multX(6)"! You can -// see all these "unexpected" behaviors if you use the search option in krun. -// (please make n smaller, e.g. 2, because theare are LOTS of behaviors here!) -// -// To fix this problem , replace loop "for(i=1;i<=n;++i) {spawn {multX(i);};}" -// with "for(i=1;i<=n;++i) {var t=i; spawn {multX(t);};}". Now, each thread -// sees its own local "t", which has the right value and does not change. -// Now the search option in krun only shows you solutions which output the -// correct factorial. (like before, please make n smaller (2?) when running -// the search option in krun, because theare are LOTS of behaviors here!) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple.out deleted file mode 100644 index 52bd8e43afb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/NOTES.md b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/NOTES.md deleted file mode 100644 index d467cf8cb07..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/NOTES.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -While we disallow global variables with the same name, and that includes -vector variables, we currently do not check that function names are distinct -from each other and from other global variables. Since we can pass functions -around through their names, this can be problematic. May want to make this -into an exercise in the future. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/Makefile deleted file mode 100644 index 634e3785bb8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests/* -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/README b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/README deleted file mode 100644 index bafd52e6361..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/README +++ /dev/null @@ -1,12 +0,0 @@ -Same as the "functions-with-throws" exercise of the dynamically typed -SIMPLE, but for statically typed SIMPLE. In other words, extend the -syntax of statically typed SIMPLE to allow "throws" clauses as part of -function declarations, and then define a static semantics for them. -When type checking a function call, assume that the function can throw -any of the exception types declared as part of its throw clause. To -test your static semantics, use the programs provided as part of -exercise 2 in dynamically typed SIMPLE. - -Note for instructor: next time, may want to either move those -exercises here, or otherwise switch the 1_static and 2_dynamic folders -all together (and update the documentation). diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/README.md b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/README.md deleted file mode 100644 index 0173b9c27c4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -The programs in this folder are typed variants of the SIMPLE untyped programs. -These programs will be executed both with the dynamic and with the static -semantics of the typed SIMPLE language. Each of the semantics contains its -own results folder showing the expected results of executing these programs. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex01.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex01.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex02.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex02.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex03.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex03.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex04.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex04.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex05.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex05.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex06.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex06.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex07.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex07.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex08.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex08.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex09.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex09.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex10.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex10.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex11.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex11.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex12.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex12.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex13.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex13.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex14.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex14.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex15.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex15.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex16.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex16.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex16.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex17.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex17.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/ex17.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_02.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_09.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple deleted file mode 100644 index 6ba2799a480..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple +++ /dev/null @@ -1,13 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple deleted file mode 100644 index 37edf078be2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple +++ /dev/null @@ -1,17 +0,0 @@ -void main() { - int e = 100; - try { - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20, "\n"); // should not be printed - } catch(string e) { - print(e," as a string\n"); // should not be printed - } - } catch(int e) { - print(e, " as an int\n"); // should print 7 - } - print(e," as in the top declaration\n"); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple deleted file mode 100644 index 4eebf5375d4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple +++ /dev/null @@ -1,19 +0,0 @@ -void main() { - int e = 100; - try { - try { - try { - throw "error"; - } catch(int e) { - print(e," as an int\n"); // unreachable - } - } catch(bool e) { - print(e, " as a bool\n"); // unreachable, although the type - // checker will reject it because - // print cannot take booleans - } - } catch(string e) { - print(e, " as a string\n"); // should print error - } - print(e," as in the top declaration\n"); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple deleted file mode 100644 index 655dd9df043..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple +++ /dev/null @@ -1,22 +0,0 @@ -void main() { - int e = 100; - try { - try { - try { - try { - throw -1; - } catch(string e) { - print("Wrong\n"); - } - } catch(int e) { - print("OK, int\n"); - throw false; - } - } catch(int->bool e) { - print("Wrong\n"); - } - } catch(bool e) { - print("OK, bool\n"); - } - print(e," as in the top declaration\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple deleted file mode 100644 index 83fdccdf61a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - return 1; -} - -void main() { - try { - try { - try { - throw inc; - } catch(void->int f) { - print("Wrong\n"); - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(bool->int f) { - f(true); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple deleted file mode 100644 index 8b5acab7874..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple +++ /dev/null @@ -1,28 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - return 1; -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - throw inc; - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(bool->int f) { - f(true); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple deleted file mode 100644 index c754424773f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple +++ /dev/null @@ -1,29 +0,0 @@ -int x = 10; - -int inc(bool b) { // throws clause needed for type checking - print(++x, "\n"); - throw -1; // type checker will reject it - return 1; // never reaches this -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - inc(true); - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(int f) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple deleted file mode 100644 index c5592c4b5ef..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple +++ /dev/null @@ -1,22 +0,0 @@ -void f(int x) { // throws clause needed for type checking - try { - print(x, "\n"); - if(x >=3) { - throw -1; // static semantics should reject this - } else { - f(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple deleted file mode 100644 index 28933c5ef65..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple +++ /dev/null @@ -1,31 +0,0 @@ -void f(int x) { - try { - print(x, "\n"); - if(x >=3) { - throw -1; // type checker will reject this - } else { - g(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void g(int x) { - try { - f(x); - } catch(string s) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple deleted file mode 100644 index 44224c72de4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple +++ /dev/null @@ -1,29 +0,0 @@ -int x = 10; - -int inc(bool b) throws int { - print(++x, "\n"); - throw -1; - return 1; // never reaches this -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - inc(true); - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(int f) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple deleted file mode 100644 index 1510c51c371..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple +++ /dev/null @@ -1,22 +0,0 @@ -void f(int x) throws int { - try { - print(x, "\n"); - if(x >=3) { - throw -1; - } else { - f(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple deleted file mode 100644 index 24e509e9943..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple +++ /dev/null @@ -1,31 +0,0 @@ -void f(int x) throws int { - try { - print(x, "\n"); - if(x >=3) { - throw -1; - } else { - g(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void g(int x) throws int { - try { - f(x); - } catch(string s) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple deleted file mode 100644 index 098b40ef3fb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple +++ /dev/null @@ -1,46 +0,0 @@ -int inc(int x) { - return x+1; -} - -void f(int x) throws int, string, (int->int) { - try { - if(x==0) { - throw -1; - } else { - if(x==1) { - throw false; - } else { - if(x==2) { - throw "error"; - } else { - throw inc; - } - } - } - } catch(bool b) { - throw "false"; - } -} - -void main() { - try { - f(0); // rejected by type checker - } catch(int x) { - print(x,"\n"); - } - try { - f(1); // rejected by type checker - } catch(string x) { - print(x,"\n"); - } - try { - f(2); // rejected by type checker - } catch(string x) { - print(x,"\n"); - } - try { - f(3); // rejected by type checker - } catch(int->int x) { - print(x(7),"\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple deleted file mode 100644 index e45a5509003..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int f) { - print("Wrong! Type of f is \"int->int throws bool\"\n"); - try { f(10); } - catch (int i) { print("Wrong! f throws a bool, not an int!\n"); } - } - print("Wrong! Should not reach this!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple deleted file mode 100644 index d7ac8e9e246..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int throws bool f) { - print("OK so far.\n"); - try { f(10); } - catch (int i) { print("Wrong! f throws a bool, not an int!\n"); } - } - print("Wrong! Should not reach this!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple deleted file mode 100644 index 26c59f29bf6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int throws bool f) { - print("OK so far.\n"); - try { f(10); } - catch (bool i) { print("OK\n",i,"Wrong! We cannot print booleans!\n"); } - } - print("Wrong! Should not reach this!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple deleted file mode 100644 index c90a0c9005e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int throws bool f) { - print("OK so far.\n"); - try { f(10); } - catch (bool i) { print("OK\n"); } - } - print("OK!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/Makefile deleted file mode 100644 index 634e3785bb8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests/* -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/README b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/README deleted file mode 100644 index ea31e999d1e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/README +++ /dev/null @@ -1,20 +0,0 @@ -Compilers typically collect all the variables declared in a block and -move them all in one place, renaming them appropriately everywhere to -avoid name conflicts. Consequently, they do not like you to declare a -variable twice in the same block. Modify the static semantics of -SIMPLE to reject programs which declare the same variable twice in a -block. Your resulting type system should get stuck when a variable is -declared the second time. - -Note that the existing static semantics of SIMPLE already checks that -global variables are not redeclared. Also, there is no distinction -between array variables and other variables, so you cannot declare -an integer variable and a vector variable with the same name. -Finally, function parameters are considered outside the block defining -the function body, so you are allowed to declare a variable in the -function body having the same name as a function parameter. Similarly -for the parameter of catch. - -Note to instructor: This exercise also makes sense for IMP++. It may -be instructive to also propose it as an exercise in the K tutorial for -IMP++. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/collatz.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/collatz.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/collatz.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/dekker.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/dekker.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/dekker.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/div-nondet.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/div-nondet.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/div-nondet.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/collatz.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/collatz.simple deleted file mode 100644 index dc0920800ce..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/collatz.simple +++ /dev/null @@ -1,19 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -void collatz(int n) { - int s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - print("Done! It took ",s," steps.\n"); -} - -void main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(); - for (int i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/dekker.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/dekker.simple deleted file mode 100644 index fa4ff9fa902..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/dekker.simple +++ /dev/null @@ -1,32 +0,0 @@ -// This is Dekker's algorithm for mutual exclusion. -// This program is not meant to be executed, it is meant to be model checked. - -bool flag1 = false, flag2 = false, critical1 = false, critical2 = false; -int turn = 1; - -void dekker1() { - flag1 = true; turn = 2; - while (flag2 && turn==2) { } - // Enter critical section - critical1 = true; - // Critical stuff ... - // Leave critical section - critical1 = false; - flag1 = false; -} - -void dekker2() { - flag2 = true; turn = 1; - while(flag1 && turn==1) { } - // Enter critical section - critical2 = true; - // Critical stuff ... - // Leave critical section - critical2 = false; - flag2 = false; -} - -void main() { - spawn { while(true) { dekker1(); } }; - spawn { while(true) { dekker2(); } }; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/div-nondet.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/div-nondet.simple deleted file mode 100644 index 20a98665511..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/div-nondet.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Program manifesting several behaviors, including an undefined one. -// However, to make it generate all those behaviors, you need to add -// the "superheat" tag to the division and the "supercool" tag to the -// variable lookup and increment rules. - -void main() { - int x = 1 ; - print(++ x / (++ x / x),"\n"); -} - -// 0 -// 1 -// 2 -// 3 -// undefined (gets stuck with division-by-zero at top of computation) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/factorial.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/factorial.simple deleted file mode 100644 index 0ba95243e9d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/factorial.simple +++ /dev/null @@ -1,15 +0,0 @@ -// The following program calculates the factorial of a user-provided number. - -int factorial(int y) { - print("Factorial of ", y, " is: "); - int t=1; - for(int i=1; i<=y; ++i) { - t = t*i; - } - return t; -} - -void main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/higher-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/higher-order.simple deleted file mode 100644 index 026e52f9d14..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/higher-order.simple +++ /dev/null @@ -1,89 +0,0 @@ -int x, a[10]; - -void incx() { - ++x; -} - -int zero() { - return 0; -} - -int id(int x) { - return x; -} - -void->void id0(void->void f) { - return f; -} - -void->int id1(void->int f) { - return f; -} - -int->int id2(int->int f) { - return f; -} - -int double(int x) { - return 2*x; -} - -void->void hoincx() { - return incx; -} - -void->int hozero() { - return zero; -} - -int->int hoid() { - return id; -} - -int->int hodouble() { - return double; -} - -void app0(void->void f) { - f(); -} - -int app1(void->int f) { - return f(); -} - -int app2(int->int f, int x) { - return f(x); -} - -void map(int->int f, int[] x) { - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - x[i] = app2(f,x[i]); - } -} - -void printall() { - print("x = ",x, "; a[] = "); - for (int i = 0; i <= sizeOf(a) - 1; ++i) { - print(a[i], " "); - } - print("\n"); -} - -void main() { - x = 0; - for (int i=0; i <= sizeOf(a) - 1; ++i) { - a[i]=i; - } - printall(); - hoincx()(); - print(x," ", hozero()()," ", hoid()(7)," ", hodouble()(7),"\n"); - id0(hoincx())(); - print(x," ", id1(hozero())()," ", - id2(hoid())(7)," ", id2(hodouble())(7),"\n"); - app0(id0(hoincx())); - print(x," ", app1(id1(hozero()))," ", - app2(id2(hoid()),7)," ", app2(id2(hodouble()),7),"\n"); - map(double,a); - printall(); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/matrix.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/matrix.simple deleted file mode 100644 index c77830219a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/matrix.simple +++ /dev/null @@ -1,57 +0,0 @@ -// This program tests multi-dimensional arrays. - -void readArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements): "); - for(int j=0; j<=n; ++j) { a[i][j] = read(); } - } -} - -void printArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements):"); - for(int j=0; j<=n; ++j) { print(" ",a[i,j]); } - print("\n"); - } -} - -int[][] transArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=n; ++j) { - b[j,i] = a[i,j]; - } - } - return b; -} - -int[][] mulArray(int[][] a, int[][] b) { - int m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=p; ++j) { - c[i,j] = 0; - for (int k=0; k<=n; ++k) { - c[i,j] = c[i,j] + a[i,k] * b[k,j]; - } - } - } - return c; -} - -void main() { - print("Input the number of lines and columns (two natural numbers): "); - int x = read(), y = read(), a[x,y]; - readArray(a); - print("Your matrix is:\n"); - printArray(a); - print("The transpose of your matrix is:\n"); - printArray(transArray(a)); - print("You matrix multiplied with its transpose is:\n"); - printArray(mulArray(a,transArray(a))); - print("The transpose of your matrix multiplied with your matrix is:\n"); - printArray(mulArray(transArray(a),a)); -} - -// Should output what it says. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/sortings.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/sortings.simple deleted file mode 100644 index 86c857c303a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/diverse/sortings.simple +++ /dev/null @@ -1,136 +0,0 @@ -int[] init(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i = 0; i <= n - 1; ++i) { - x[i] = read(); - } - print("Finished reading the ",n," numbers\n"); - return x; -} - -void printArray(int[] x) { - print("\n"); - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - print(x[i]," "); - } - print("\n"); -} - -void reverse(int[] x) { - int n = sizeOf(x); - for (int i = 0; i <= n/2 - 1; ++i) { - int t = x[i]; - x[i] = x[n - i - 1]; - x[n - i - 1] = t; - } -} - -void map(string[] m, (int[] -> void)[] f, int[] x) { - for (int i = 0; i <= sizeOf(f) - 1; ++i) { - print(m[i]); - f[i](x); - } -} - -void insertionSort(int[] x) { - for (int i = 1; i <= sizeOf(x) - 1; ++i) { - int v = x[i], j = i - 1; - while (j > 0 && x[j] > v) { // doing the loop only up to 1 - x[j + 1] = x[j]; - j = j - 1; - } - if (x[0] > v) { - x[1] = x[0]; - x[0] = v; - } - else { - x[j+1] = v; - } - } -} - -void bubbleSort(int[] v) { - int n = sizeOf(v); - for (int i = 0; i <= n - 1; ++i) { - for (int j = 0; j <= n - 2; ++j) { - if (v[j] > v[j+1]) { - int t = v[j+1]; - v[j+1] = v[j]; - v[j] = t; - } - } - } -} - -void siftDown(int[] x, int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (x[root*2] > x[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (x[root] < x[maxChild]) { - int t = x[root]; - x[root] = x[maxChild]; - x[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } -} - -void heapSort(int[] x) { - int n = sizeOf(x), i = n/2 - 1; - while (i >= 0) { - siftDown(x, i, n - 1); - i = i - 1; - } - i = n - 1; - while (i >= 1 ) { - int t = x[0]; - x[0] = x[i] ; - x[i] = t; - siftDown(x, 0, i - 1); - i = i - 1; - } -} - -void main() { - print("Size of the array to sort = "); - int[] x = init(read()); - string m[11]; - int[] -> void f[11]; - m[ 0] = "The original unsorted array is:"; - f[ 0] = printArray; - m[ 1] = "Reversing the array ... "; - f[ 1] = reverse; - m[ 2] = "Done!\nThe reversed array is:"; - f[ 2] = printArray; - m[ 3] = "Sorting the array using insertion sort ... "; - f[ 3] = insertionSort; - m[ 4] = "Done!\nThe resulting array is:"; - f[ 4] = printArray; - m[ 5] = "Reversing the array ... "; - f[ 5] = reverse; - m[ 6] = "Done!\nSorting the array using bubble sort ... "; - f[ 6] = bubbleSort; - m[ 7] = "Done!\nThe resulting array is:"; - f[ 7] = printArray; - m[ 8] = "Reversing the array ... "; - f[ 8] = reverse; - m[ 9] = "Done!\nSorting the array using heap sort ... "; - f[ 9] = heapSort; - m[10] = "Done!\nThe resulting array is:"; - f[10] = printArray; - map(m,f,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex01.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex01.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex02.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex02.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex03.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex03.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex04.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex04.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex05.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex05.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex06.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex06.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex07.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex07.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex08.simple.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex08.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex09.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/ex09.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_01.simple deleted file mode 100644 index 2a4ad4f1db7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_01.simple +++ /dev/null @@ -1,16 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 - print(10,"\n"); -} - -// 7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_02.simple deleted file mode 100644 index dd31ec99c12..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_02.simple +++ /dev/null @@ -1,20 +0,0 @@ -void main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } -} - -void foo() { - try { - throw 5; - print(17); // should not be printed - } catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_03.simple deleted file mode 100644 index 4ec65e3ad2e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_03.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { x = x + 1; throw x; x = x/0;} // division by zero unreachable - catch(int y) {x = y+1;} - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_04.simple deleted file mode 100644 index 3bd10418881..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_04.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { int x = 5; throw x; int y = x/0;} // division by zero unreachable - catch(int y) {y = y + 2; print(y," ");} // new y here, the one declared by catch - print(x,"\n"); -} - -// 7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_05.simple deleted file mode 100644 index 1edf149735a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try{ - print(t," "); - throw 5; - print(8); // not reachable - } catch(int p) { - print(p+10," "); - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_06.simple deleted file mode 100644 index 023dc5feefa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_06.simple +++ /dev/null @@ -1,22 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try { - print(t," "); - print(8," "); - } catch(int p) { - print(p+10); // not reachable - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_07.simple deleted file mode 100644 index 5a17ae9a370..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_07.simple +++ /dev/null @@ -1,12 +0,0 @@ -void main() { - try { - int x = 2; - print(x," "); - throw ++x + x; - } - catch(int e) { - print(e,"\n"); - } -} - -// 2 6 or 2 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_08.simple deleted file mode 100644 index 676afff660c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_08.simple +++ /dev/null @@ -1,26 +0,0 @@ -void main() { - try { - try { - try { - try { - int x = 1; - print(x," "); - throw ++x; - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e,"\n"); - } -} - -// 1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_09.simple deleted file mode 100644 index d4fb88eaf6a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_09.simple +++ /dev/null @@ -1,24 +0,0 @@ -int x, y, z; - -void g() { - throw 15; -} - -void f() { - g(); -} - -void main() { - x = 5; - y = 10; - - try { - f(); - } catch(int y) { - print(y," "); - } - print(x," "); - print(y,"\n"); -} - -// 15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_10.simple deleted file mode 100644 index 3a1b0bef3da..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_10.simple +++ /dev/null @@ -1,13 +0,0 @@ -int x; - -void main() { - x = 5; - try { - throw 3; - print(x); // should not print this - } catch(int y) { - print(y,"\n"); // should print this - } -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_11.simple deleted file mode 100644 index 8b3df6ebc2d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_11.simple +++ /dev/null @@ -1,20 +0,0 @@ -int i, j; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - throw j=1; - i = 10; - print(i); // should not print this - } catch(int j) { - i = 20; - print(i," "); // should print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_12.simple deleted file mode 100644 index 288b94d9f8f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_12.simple +++ /dev/null @@ -1,19 +0,0 @@ -int i; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - i = 10; - print(i," "); - } catch(int j) { - i = 20; - print(i); // should not print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_13.simple deleted file mode 100644 index 795ef15af0a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_13.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - throw 4; - } catch (int e) { - print(e," "); - } - print(42,"\n"); -} - -// 4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_14.simple deleted file mode 100644 index b430dd1bf84..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_14.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - 15; - } catch(int e) { - print(e); // should not print this - } - print(42,"\n"); -} - -// 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_15.simple deleted file mode 100644 index 9cf0e41a427..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions/exceptions_15.simple +++ /dev/null @@ -1,15 +0,0 @@ -void main() { - try { - 1; - try { - 2; - } catch(int a) { - print(2); // should not print this - } - throw 1; - } catch(int b) { - print(1,"\n"); // should print this - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_01.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_03.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_04.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_05.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_06.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_07.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_08.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_10.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_11.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_12.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_13.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_13.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_14.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_14.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_15.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_15.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/factorial.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/factorial.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/factorial.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/higher-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/higher-order.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/higher-order.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/matrix.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/matrix.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/matrix.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex01.simple deleted file mode 100644 index 3f63be06154..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex01.simple +++ /dev/null @@ -1,4 +0,0 @@ -void main() { - int x=0; - int x=1; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex02.simple deleted file mode 100644 index b5bc0683c97..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex02.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x=0; - int a=0; - int b=0; - int c=0; - int d=0; - int x=1; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex03.simple deleted file mode 100644 index ac66a32ec7e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex03.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x=0; -{ - int a=0; - int b=0; - int c=0; - int d=0; -} - int x=1; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex04.simple deleted file mode 100644 index 274e3b4a425..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex04.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x=0; -{ - int x=0; - int b=0; - int c=0; - int d=0; -} - int a=1; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex05.simple deleted file mode 100644 index f385f711498..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex05.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x=0; -{ - int x=0; - int b=0; - int c=0; - int d=0; -} - int x=1; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex06.simple deleted file mode 100644 index d01a4a5dad0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex06.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x=0; - try { - int x=0; - } catch(int x) { - int x=1; - } -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex07.simple deleted file mode 100644 index 699c3fdf5c9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex07.simple +++ /dev/null @@ -1,13 +0,0 @@ -void f(int x) { - int x=0; - try { - int x=0; - } catch(int x) { - int x=1; - } -} - -void main() { - int x=2; - f(x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex08.simple deleted file mode 100644 index eb868d833d6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex08.simple +++ /dev/null @@ -1,14 +0,0 @@ -void f(int x) { - int x=0; - try { - int x=0; - } catch(int x) { - int x=1; - } - int x[10,20,30]; -} - -void main() { - int x=2; - f(x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex09.simple deleted file mode 100644 index 0a1c6105981..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/no-duplicate-declarations/ex09.simple +++ /dev/null @@ -1,14 +0,0 @@ -void f(int x) { - int x=0; - try { - int x=0; - } catch(int x) { - int x=1; - } - {int x[10,20,30];} -} - -void main() { - int x=2; - f(x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/sortings.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/sortings.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/sortings.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_01.simple deleted file mode 100644 index 9e275aafb0c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_01.simple +++ /dev/null @@ -1,10 +0,0 @@ -// Simple multithreaded program with two behaviors. - -void main() { - int x = 5; - spawn { x = 7; }; - print(x,"\n"); -} - -// 5 -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_02.simple deleted file mode 100644 index 85c775b56d3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_02.simple +++ /dev/null @@ -1,14 +0,0 @@ -// Simple multithreaded program with two output behaviors -// but with three overall behaviors - -void main() { - int x; - spawn { x = 7; }; - x = 5; - print(x,"\n"); -} - -// 5 -// 5 (yes, it admits two behaviors where the output is 5, one in which the -// store ends up with value 5 and another with value 7 at the location of x) -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_03.simple deleted file mode 100644 index 1951cdaf0c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_03.simple +++ /dev/null @@ -1,11 +0,0 @@ -// This is a poorly synchronized program, which has lots of behaviors. - -void main() { - int x = 5; - spawn {x=x+2;}; - spawn {x=x*2;}; - spawn {x=11;}; - spawn {print(x,"\n");}; -} - -// The search option of krun finds 42 solutions in total! diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_04.simple deleted file mode 100644 index 2215b97b381..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_04.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Normally, one would think that the program below has only two behaviors. -// However, it has four, due to the race on the output buffer. - -void main() { - spawn { - int x = 2; - print(x," "); - }; - spawn { - int x = 3; - print(x," "); - }; -} - -// 4 solutions, namely all interleavings of "2_" and "3_", where "_" is space diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_05.simple deleted file mode 100644 index 73f4c380e3f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_05.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Program which has infinitely many bahaviors. - -int x, y; - -void main() { - x=1; - y=0; - spawn { x=0; }; - while (1<=x) { - y = y+1; - } - print(y,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_06.simple deleted file mode 100644 index 24a3a5fcadf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_06.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {x=x+10;}; - join(t1); // comment out for more behaviors - join(t2); // comment out for more behaviors - print(x,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_07.simple deleted file mode 100644 index 8e45c3d6dff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Fully synchronized - -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {join(t1); x=x+10;}; - join(t2); - print(x,"\n"); -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_08.simple deleted file mode 100644 index b773d45a555..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_08.simple +++ /dev/null @@ -1,57 +0,0 @@ -// Program that tests both exceptions and threads. The threads are not -// synchronized and indeed manifest into lots of different behaviors. - -void main() { - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; -} - -// 221 solutions, each outputing two 1, two 2, two 3, two 4 and two 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_09.simple deleted file mode 100644 index 452783fedd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_09.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Poorly synchronized program which has two behaviors. - -void main() { - int x = 1; - spawn { - x=x+1; - rendezvous 1; - }; - x=x+1; - rendezvous 1; - print(x,"\n"); -} - -// 2 -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_10.simple deleted file mode 100644 index 6cbfab7a133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_10.simple +++ /dev/null @@ -1,18 +0,0 @@ -// Well-synchronized program which has only one behavior. - -void main() { - int x = 1; - spawn { - acquire 1; - x=x+1; - release 1; - rendezvous 1; - }; - acquire 1; - x=x+1; - release 1; - rendezvous 1; - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_11.simple deleted file mode 100644 index 6b861169bc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_11.simple +++ /dev/null @@ -1,22 +0,0 @@ -// This is a well-synchronized program, which has only one behavior. - -void main() { - int x = 1; - spawn { - rendezvous 1; - print(x," "); - rendezvous 2; - }; - spawn { - rendezvous 3; - print(x,"\n"); - rendezvous 4; - }; - print(x," "); - x = x+1; - rendezvous 1; rendezvous 2; - x = x+1; - rendezvous 3; rendezvous 4; -} - -// 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_12.simple deleted file mode 100644 index 5ecd55fba97..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads/threads_12.simple +++ /dev/null @@ -1,46 +0,0 @@ -// This program shows an interesting situation which can happen in many -// language designs: something which looks correct is actually wrong: - -int x; - -void main() { - int n = 5; - x = 1; - for (int i=1; i<=n; ++i) { - int t=i; - spawn { - multX(t); - }; - } - for (int i=1; i<=n; ++i) { - rendezvous i; - } - print(x,"\n"); -} - -void multX(int v) { - acquire 0; - x = x*v; - release 0; - rendezvous v; -} - -// 120, but also many many other behaviors ... - -// The problem is that "spawn multX(i);" does not evaluate the "i" argument, -// it only spawns a thread calculating the expression statement "multX(i);". -// It can be possible that the loop counter "i" is incremented right after the -// spawning but before the evaluation of the expression "multX(i)". In fact, -// it can be the case that all the spawned "multX(i);" statements will evaluate -// their "multX(i)" function calls after the main loop terminates. The threads -// will still see the "i" counter in their environments, but that will hold -// the value 6. Thus, in this case, all threads compute "multX(6)"! You can -// see all these "unexpected" behaviors if you use the search option in krun. -// (please make n smaller, e.g. 2, because theare are LOTS of behaviors here!) -// -// To fix this problem , replace loop "for(i=1;i<=n;++i) {spawn {multX(i);};}" -// with "for(i=1;i<=n;++i) {var t=i; spawn {multX(t);};}". Now, each thread -// sees its own local "t", which has the right value and does not change. -// Now the search option in krun only shows you solutions which output the -// correct factorial. (like before, please make n smaller (2?) when running -// the search option in krun, because theare are LOTS of behaviors here!) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_01.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_02.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_03.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_04.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_05.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_06.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_07.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_08.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_09.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_10.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_11.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_12.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/threads_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/collatz.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/collatz.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/collatz.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/dekker.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/dekker.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/dekker.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/div-nondet.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/div-nondet.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/div-nondet.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_01.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_02.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_03.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_04.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_05.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_06.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_07.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_08.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_09.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_10.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_11.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_12.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_13.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_13.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_14.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_14.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_15.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_15.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/factorial.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/factorial.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/factorial.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/higher-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/higher-order.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/higher-order.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/matrix.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/matrix.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/matrix.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/sortings.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/sortings.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/sortings.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_01.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_02.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_03.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_04.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_05.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_06.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_07.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_08.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_09.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_10.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_11.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_12.simple.out deleted file mode 100644 index 17a1d4510e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/Makefile deleted file mode 100644 index 634e3785bb8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests/* -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/README b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/README deleted file mode 100644 index 4bd0ff6f550..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/README +++ /dev/null @@ -1,30 +0,0 @@ -Exercise "typed-exceptions" asked to correctly define typed -exceptions, where a thrown value is caught by the innermost catch -clause in the exception stack which has the appropriate type. This -was quite simple to define and works fine if we are only concerned -with dynamic semantics. However, modern languages check the correct -use of exceptions statically, and in order to do this more easily (as -well as for other reasons) they require functions to explicitly -declare the exceptions that they may throw during their -execution. This exercise requires you to change the syntax and the -semantics of the dynamically typed SIMPLE to optionally include with -each function a list of exception types that the function can throw -and not catch itself. For example: - -void f(int x) throws int, string { - try { - print(x, "\n"); - if(x >= 3) { - throw -1; - } else { - if(x <= 1) { - throw "error"; - } else { - throw true; - } - } - } catch(bool b) { - print("Bool thrown.\n"); - } - print("Wrong.\n"); // should never reach this -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.out deleted file mode 100644 index 36f5bb94345..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/collatz.simple.out +++ /dev/null @@ -1,6 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Done. It appears to hold. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/div-nondet.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/div-nondet.simple.out deleted file mode 100644 index 4de9334ab45..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/div-nondet.simple.out +++ /dev/null @@ -1,17 +0,0 @@ - { - S:String - #Equals - "1\n" - } -#Or - { - S:String - #Equals - "2\n" - } -#Or - { - S:String - #Equals - "3\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/collatz.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/collatz.simple deleted file mode 100644 index dc0920800ce..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/collatz.simple +++ /dev/null @@ -1,19 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -void collatz(int n) { - int s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - print("Done! It took ",s," steps.\n"); -} - -void main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(); - for (int i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/dekker.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/dekker.simple deleted file mode 100644 index fa4ff9fa902..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/dekker.simple +++ /dev/null @@ -1,32 +0,0 @@ -// This is Dekker's algorithm for mutual exclusion. -// This program is not meant to be executed, it is meant to be model checked. - -bool flag1 = false, flag2 = false, critical1 = false, critical2 = false; -int turn = 1; - -void dekker1() { - flag1 = true; turn = 2; - while (flag2 && turn==2) { } - // Enter critical section - critical1 = true; - // Critical stuff ... - // Leave critical section - critical1 = false; - flag1 = false; -} - -void dekker2() { - flag2 = true; turn = 1; - while(flag1 && turn==1) { } - // Enter critical section - critical2 = true; - // Critical stuff ... - // Leave critical section - critical2 = false; - flag2 = false; -} - -void main() { - spawn { while(true) { dekker1(); } }; - spawn { while(true) { dekker2(); } }; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/div-nondet.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/div-nondet.simple deleted file mode 100644 index 20a98665511..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/div-nondet.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Program manifesting several behaviors, including an undefined one. -// However, to make it generate all those behaviors, you need to add -// the "superheat" tag to the division and the "supercool" tag to the -// variable lookup and increment rules. - -void main() { - int x = 1 ; - print(++ x / (++ x / x),"\n"); -} - -// 0 -// 1 -// 2 -// 3 -// undefined (gets stuck with division-by-zero at top of computation) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/factorial.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/factorial.simple deleted file mode 100644 index 0ba95243e9d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/factorial.simple +++ /dev/null @@ -1,15 +0,0 @@ -// The following program calculates the factorial of a user-provided number. - -int factorial(int y) { - print("Factorial of ", y, " is: "); - int t=1; - for(int i=1; i<=y; ++i) { - t = t*i; - } - return t; -} - -void main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/higher-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/higher-order.simple deleted file mode 100644 index 026e52f9d14..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/higher-order.simple +++ /dev/null @@ -1,89 +0,0 @@ -int x, a[10]; - -void incx() { - ++x; -} - -int zero() { - return 0; -} - -int id(int x) { - return x; -} - -void->void id0(void->void f) { - return f; -} - -void->int id1(void->int f) { - return f; -} - -int->int id2(int->int f) { - return f; -} - -int double(int x) { - return 2*x; -} - -void->void hoincx() { - return incx; -} - -void->int hozero() { - return zero; -} - -int->int hoid() { - return id; -} - -int->int hodouble() { - return double; -} - -void app0(void->void f) { - f(); -} - -int app1(void->int f) { - return f(); -} - -int app2(int->int f, int x) { - return f(x); -} - -void map(int->int f, int[] x) { - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - x[i] = app2(f,x[i]); - } -} - -void printall() { - print("x = ",x, "; a[] = "); - for (int i = 0; i <= sizeOf(a) - 1; ++i) { - print(a[i], " "); - } - print("\n"); -} - -void main() { - x = 0; - for (int i=0; i <= sizeOf(a) - 1; ++i) { - a[i]=i; - } - printall(); - hoincx()(); - print(x," ", hozero()()," ", hoid()(7)," ", hodouble()(7),"\n"); - id0(hoincx())(); - print(x," ", id1(hozero())()," ", - id2(hoid())(7)," ", id2(hodouble())(7),"\n"); - app0(id0(hoincx())); - print(x," ", app1(id1(hozero()))," ", - app2(id2(hoid()),7)," ", app2(id2(hodouble()),7),"\n"); - map(double,a); - printall(); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/matrix.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/matrix.simple deleted file mode 100644 index c77830219a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/matrix.simple +++ /dev/null @@ -1,57 +0,0 @@ -// This program tests multi-dimensional arrays. - -void readArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements): "); - for(int j=0; j<=n; ++j) { a[i][j] = read(); } - } -} - -void printArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements):"); - for(int j=0; j<=n; ++j) { print(" ",a[i,j]); } - print("\n"); - } -} - -int[][] transArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=n; ++j) { - b[j,i] = a[i,j]; - } - } - return b; -} - -int[][] mulArray(int[][] a, int[][] b) { - int m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=p; ++j) { - c[i,j] = 0; - for (int k=0; k<=n; ++k) { - c[i,j] = c[i,j] + a[i,k] * b[k,j]; - } - } - } - return c; -} - -void main() { - print("Input the number of lines and columns (two natural numbers): "); - int x = read(), y = read(), a[x,y]; - readArray(a); - print("Your matrix is:\n"); - printArray(a); - print("The transpose of your matrix is:\n"); - printArray(transArray(a)); - print("You matrix multiplied with its transpose is:\n"); - printArray(mulArray(a,transArray(a))); - print("The transpose of your matrix multiplied with your matrix is:\n"); - printArray(mulArray(transArray(a),a)); -} - -// Should output what it says. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/sortings.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/sortings.simple deleted file mode 100644 index 86c857c303a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/diverse/sortings.simple +++ /dev/null @@ -1,136 +0,0 @@ -int[] init(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i = 0; i <= n - 1; ++i) { - x[i] = read(); - } - print("Finished reading the ",n," numbers\n"); - return x; -} - -void printArray(int[] x) { - print("\n"); - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - print(x[i]," "); - } - print("\n"); -} - -void reverse(int[] x) { - int n = sizeOf(x); - for (int i = 0; i <= n/2 - 1; ++i) { - int t = x[i]; - x[i] = x[n - i - 1]; - x[n - i - 1] = t; - } -} - -void map(string[] m, (int[] -> void)[] f, int[] x) { - for (int i = 0; i <= sizeOf(f) - 1; ++i) { - print(m[i]); - f[i](x); - } -} - -void insertionSort(int[] x) { - for (int i = 1; i <= sizeOf(x) - 1; ++i) { - int v = x[i], j = i - 1; - while (j > 0 && x[j] > v) { // doing the loop only up to 1 - x[j + 1] = x[j]; - j = j - 1; - } - if (x[0] > v) { - x[1] = x[0]; - x[0] = v; - } - else { - x[j+1] = v; - } - } -} - -void bubbleSort(int[] v) { - int n = sizeOf(v); - for (int i = 0; i <= n - 1; ++i) { - for (int j = 0; j <= n - 2; ++j) { - if (v[j] > v[j+1]) { - int t = v[j+1]; - v[j+1] = v[j]; - v[j] = t; - } - } - } -} - -void siftDown(int[] x, int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (x[root*2] > x[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (x[root] < x[maxChild]) { - int t = x[root]; - x[root] = x[maxChild]; - x[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } -} - -void heapSort(int[] x) { - int n = sizeOf(x), i = n/2 - 1; - while (i >= 0) { - siftDown(x, i, n - 1); - i = i - 1; - } - i = n - 1; - while (i >= 1 ) { - int t = x[0]; - x[0] = x[i] ; - x[i] = t; - siftDown(x, 0, i - 1); - i = i - 1; - } -} - -void main() { - print("Size of the array to sort = "); - int[] x = init(read()); - string m[11]; - int[] -> void f[11]; - m[ 0] = "The original unsorted array is:"; - f[ 0] = printArray; - m[ 1] = "Reversing the array ... "; - f[ 1] = reverse; - m[ 2] = "Done!\nThe reversed array is:"; - f[ 2] = printArray; - m[ 3] = "Sorting the array using insertion sort ... "; - f[ 3] = insertionSort; - m[ 4] = "Done!\nThe resulting array is:"; - f[ 4] = printArray; - m[ 5] = "Reversing the array ... "; - f[ 5] = reverse; - m[ 6] = "Done!\nSorting the array using bubble sort ... "; - f[ 6] = bubbleSort; - m[ 7] = "Done!\nThe resulting array is:"; - f[ 7] = printArray; - m[ 8] = "Reversing the array ... "; - f[ 8] = reverse; - m[ 9] = "Done!\nSorting the array using heap sort ... "; - f[ 9] = heapSort; - m[10] = "Done!\nThe resulting array is:"; - f[10] = printArray; - map(m,f,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex01.simple.out deleted file mode 100644 index f31f2d3fa80..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex01.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 100 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex02.simple.out deleted file mode 100644 index 8d7a64ac9a5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex02.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -7 as an int -100 as in the top declaration diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex03.simple.out deleted file mode 100644 index 112acab3c4b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex03.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -error as a string -100 as in the top declaration diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex04.simple.out deleted file mode 100644 index b228c55922b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex04.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -OK, int -OK, bool -100 as in the top declaration diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex05.simple.out deleted file mode 100644 index 0dc275172e0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex05.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -11 -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex06.simple.out deleted file mode 100644 index 1a46a1fb6a2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex06.simple.out +++ /dev/null @@ -1,11 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -11 -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex07.simple.out deleted file mode 100644 index ef1dd14ce81..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex07.simple.out +++ /dev/null @@ -1,10 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -11 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex08.simple.out deleted file mode 100644 index 01e79c32a8c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex08.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -1 -2 -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex09.simple.out deleted file mode 100644 index 01e79c32a8c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex09.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -1 -2 -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex10.simple.out deleted file mode 100644 index 72893e09739..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex10.simple.out +++ /dev/null @@ -1,12 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -11 -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex11.simple.out deleted file mode 100644 index eb892666587..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex11.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -1 -2 -3 -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex12.simple.out deleted file mode 100644 index eb892666587..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex12.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -1 -2 -3 -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex13.simple.out deleted file mode 100644 index ff681ba87e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex13.simple.out +++ /dev/null @@ -1,4 +0,0 @@ --1 -false -error -8 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex14.simple.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex15.simple.out deleted file mode 100644 index 229b7e970a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex15.simple.out +++ /dev/null @@ -1 +0,0 @@ -OK so far. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex16.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex16.simple.out deleted file mode 100644 index 2f59af5baa0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex16.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -OK so far. -OK diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex17.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex17.simple.out deleted file mode 100644 index 021f7c4be52..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/ex17.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -OK so far. -OK -OK! diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_01.simple deleted file mode 100644 index 2a4ad4f1db7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_01.simple +++ /dev/null @@ -1,16 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 - print(10,"\n"); -} - -// 7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_02.simple deleted file mode 100644 index dd31ec99c12..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_02.simple +++ /dev/null @@ -1,20 +0,0 @@ -void main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } -} - -void foo() { - try { - throw 5; - print(17); // should not be printed - } catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_03.simple deleted file mode 100644 index 4ec65e3ad2e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_03.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { x = x + 1; throw x; x = x/0;} // division by zero unreachable - catch(int y) {x = y+1;} - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_04.simple deleted file mode 100644 index 3bd10418881..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_04.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { int x = 5; throw x; int y = x/0;} // division by zero unreachable - catch(int y) {y = y + 2; print(y," ");} // new y here, the one declared by catch - print(x,"\n"); -} - -// 7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_05.simple deleted file mode 100644 index 1edf149735a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try{ - print(t," "); - throw 5; - print(8); // not reachable - } catch(int p) { - print(p+10," "); - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_06.simple deleted file mode 100644 index 023dc5feefa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_06.simple +++ /dev/null @@ -1,22 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try { - print(t," "); - print(8," "); - } catch(int p) { - print(p+10); // not reachable - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_07.simple deleted file mode 100644 index 5a17ae9a370..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_07.simple +++ /dev/null @@ -1,12 +0,0 @@ -void main() { - try { - int x = 2; - print(x," "); - throw ++x + x; - } - catch(int e) { - print(e,"\n"); - } -} - -// 2 6 or 2 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_08.simple deleted file mode 100644 index 676afff660c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_08.simple +++ /dev/null @@ -1,26 +0,0 @@ -void main() { - try { - try { - try { - try { - int x = 1; - print(x," "); - throw ++x; - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e,"\n"); - } -} - -// 1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_09.simple deleted file mode 100644 index d4fb88eaf6a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_09.simple +++ /dev/null @@ -1,24 +0,0 @@ -int x, y, z; - -void g() { - throw 15; -} - -void f() { - g(); -} - -void main() { - x = 5; - y = 10; - - try { - f(); - } catch(int y) { - print(y," "); - } - print(x," "); - print(y,"\n"); -} - -// 15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_10.simple deleted file mode 100644 index 3a1b0bef3da..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_10.simple +++ /dev/null @@ -1,13 +0,0 @@ -int x; - -void main() { - x = 5; - try { - throw 3; - print(x); // should not print this - } catch(int y) { - print(y,"\n"); // should print this - } -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_11.simple deleted file mode 100644 index 8b3df6ebc2d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_11.simple +++ /dev/null @@ -1,20 +0,0 @@ -int i, j; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - throw j=1; - i = 10; - print(i); // should not print this - } catch(int j) { - i = 20; - print(i," "); // should print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_12.simple deleted file mode 100644 index 288b94d9f8f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_12.simple +++ /dev/null @@ -1,19 +0,0 @@ -int i; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - i = 10; - print(i," "); - } catch(int j) { - i = 20; - print(i); // should not print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_13.simple deleted file mode 100644 index 795ef15af0a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_13.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - throw 4; - } catch (int e) { - print(e," "); - } - print(42,"\n"); -} - -// 4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_14.simple deleted file mode 100644 index b430dd1bf84..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_14.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - 15; - } catch(int e) { - print(e); // should not print this - } - print(42,"\n"); -} - -// 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_15.simple deleted file mode 100644 index 9cf0e41a427..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions/exceptions_15.simple +++ /dev/null @@ -1,15 +0,0 @@ -void main() { - try { - 1; - try { - 2; - } catch(int a) { - print(2); // should not print this - } - throw 1; - } catch(int b) { - print(1,"\n"); // should print this - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_01.simple.out deleted file mode 100644 index 7b132801145..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_02.simple.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_03.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_04.simple.out deleted file mode 100644 index ddcbc88bbd9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_05.simple.out deleted file mode 100644 index fbf9c69a420..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_06.simple.out deleted file mode 100644 index c870614bb54..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_08.simple.out deleted file mode 100644 index aacb59525ae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_09.simple.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_11.simple.out deleted file mode 100644 index 9c355295cd4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_12.simple.out deleted file mode 100644 index 6c235065269..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_13.simple.out deleted file mode 100644 index 2efb20f3379..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_13.simple.out +++ /dev/null @@ -1 +0,0 @@ -4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_14.simple.out deleted file mode 100644 index d81cc0710eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_14.simple.out +++ /dev/null @@ -1 +0,0 @@ -42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_15.simple.out deleted file mode 100644 index d00491fd7e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_15.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.out deleted file mode 100644 index 3755534a6a4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/factorial.simple.out +++ /dev/null @@ -1 +0,0 @@ -Input a natural number: Factorial of 5 is: 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple deleted file mode 100644 index 6ba2799a480..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex01.simple +++ /dev/null @@ -1,13 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple deleted file mode 100644 index 37edf078be2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex02.simple +++ /dev/null @@ -1,17 +0,0 @@ -void main() { - int e = 100; - try { - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20, "\n"); // should not be printed - } catch(string e) { - print(e," as a string\n"); // should not be printed - } - } catch(int e) { - print(e, " as an int\n"); // should print 7 - } - print(e," as in the top declaration\n"); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple deleted file mode 100644 index 4eebf5375d4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex03.simple +++ /dev/null @@ -1,19 +0,0 @@ -void main() { - int e = 100; - try { - try { - try { - throw "error"; - } catch(int e) { - print(e," as an int\n"); // unreachable - } - } catch(bool e) { - print(e, " as a bool\n"); // unreachable, although the type - // checker will reject it because - // print cannot take booleans - } - } catch(string e) { - print(e, " as a string\n"); // should print error - } - print(e," as in the top declaration\n"); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple deleted file mode 100644 index 655dd9df043..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex04.simple +++ /dev/null @@ -1,22 +0,0 @@ -void main() { - int e = 100; - try { - try { - try { - try { - throw -1; - } catch(string e) { - print("Wrong\n"); - } - } catch(int e) { - print("OK, int\n"); - throw false; - } - } catch(int->bool e) { - print("Wrong\n"); - } - } catch(bool e) { - print("OK, bool\n"); - } - print(e," as in the top declaration\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple deleted file mode 100644 index 83fdccdf61a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - return 1; -} - -void main() { - try { - try { - try { - throw inc; - } catch(void->int f) { - print("Wrong\n"); - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(bool->int f) { - f(true); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple deleted file mode 100644 index 8b5acab7874..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex06.simple +++ /dev/null @@ -1,28 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - return 1; -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - throw inc; - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(bool->int f) { - f(true); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple deleted file mode 100644 index c754424773f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex07.simple +++ /dev/null @@ -1,29 +0,0 @@ -int x = 10; - -int inc(bool b) { // throws clause needed for type checking - print(++x, "\n"); - throw -1; // type checker will reject it - return 1; // never reaches this -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - inc(true); - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(int f) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple deleted file mode 100644 index c5592c4b5ef..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex08.simple +++ /dev/null @@ -1,22 +0,0 @@ -void f(int x) { // throws clause needed for type checking - try { - print(x, "\n"); - if(x >=3) { - throw -1; // static semantics should reject this - } else { - f(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple deleted file mode 100644 index 28933c5ef65..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex09.simple +++ /dev/null @@ -1,31 +0,0 @@ -void f(int x) { - try { - print(x, "\n"); - if(x >=3) { - throw -1; // type checker will reject this - } else { - g(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void g(int x) { - try { - f(x); - } catch(string s) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple deleted file mode 100644 index 44224c72de4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex10.simple +++ /dev/null @@ -1,29 +0,0 @@ -int x = 10; - -int inc(bool b) throws int { - print(++x, "\n"); - throw -1; - return 1; // never reaches this -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - inc(true); - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(int f) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple deleted file mode 100644 index 1510c51c371..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex11.simple +++ /dev/null @@ -1,22 +0,0 @@ -void f(int x) throws int { - try { - print(x, "\n"); - if(x >=3) { - throw -1; - } else { - f(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple deleted file mode 100644 index 24e509e9943..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex12.simple +++ /dev/null @@ -1,31 +0,0 @@ -void f(int x) throws int { - try { - print(x, "\n"); - if(x >=3) { - throw -1; - } else { - g(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void g(int x) throws int { - try { - f(x); - } catch(string s) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple deleted file mode 100644 index 098b40ef3fb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex13.simple +++ /dev/null @@ -1,46 +0,0 @@ -int inc(int x) { - return x+1; -} - -void f(int x) throws int, string, (int->int) { - try { - if(x==0) { - throw -1; - } else { - if(x==1) { - throw false; - } else { - if(x==2) { - throw "error"; - } else { - throw inc; - } - } - } - } catch(bool b) { - throw "false"; - } -} - -void main() { - try { - f(0); // rejected by type checker - } catch(int x) { - print(x,"\n"); - } - try { - f(1); // rejected by type checker - } catch(string x) { - print(x,"\n"); - } - try { - f(2); // rejected by type checker - } catch(string x) { - print(x,"\n"); - } - try { - f(3); // rejected by type checker - } catch(int->int x) { - print(x(7),"\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple deleted file mode 100644 index e45a5509003..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex14.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int f) { - print("Wrong! Type of f is \"int->int throws bool\"\n"); - try { f(10); } - catch (int i) { print("Wrong! f throws a bool, not an int!\n"); } - } - print("Wrong! Should not reach this!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple deleted file mode 100644 index d7ac8e9e246..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex15.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int throws bool f) { - print("OK so far.\n"); - try { f(10); } - catch (int i) { print("Wrong! f throws a bool, not an int!\n"); } - } - print("Wrong! Should not reach this!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple deleted file mode 100644 index 26c59f29bf6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex16.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int throws bool f) { - print("OK so far.\n"); - try { f(10); } - catch (bool i) { print("OK\n",i,"Wrong! We cannot print booleans!\n"); } - } - print("Wrong! Should not reach this!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple deleted file mode 100644 index c90a0c9005e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/functions-with-throws/ex17.simple +++ /dev/null @@ -1,17 +0,0 @@ -int foo(int x) throws bool { - - if (x > 0) { throw false; } else { return x; } - -} - -void main() { - - try { throw foo; } - catch (int->int throws bool f) { - print("OK so far.\n"); - try { f(10); } - catch (bool i) { print("OK\n"); } - } - print("OK!\n"); - -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/higher-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/higher-order.simple.out deleted file mode 100644 index 5cf2aefc9d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/higher-order.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -x = 0; a[] = 0 1 2 3 4 5 6 7 8 9 -1 0 7 14 -2 0 7 14 -3 0 7 14 -x = 3; a[] = 0 2 4 6 8 10 12 14 16 18 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/matrix.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/matrix.simple.out deleted file mode 100644 index cfa7774db49..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/matrix.simple.out +++ /dev/null @@ -1,16 +0,0 @@ -Input the number of lines and columns (two natural numbers): Line 1 (4 elements): Line 2 (4 elements): Your matrix is: -Line 1 (4 elements): 1 5 7 8 -Line 2 (4 elements): 27 1 2 3 -The transpose of your matrix is: -Line 1 (2 elements): 1 27 -Line 2 (2 elements): 5 1 -Line 3 (2 elements): 7 2 -Line 4 (2 elements): 8 3 -You matrix multiplied with its transpose is: -Line 1 (2 elements): 139 70 -Line 2 (2 elements): 70 743 -The transpose of your matrix multiplied with your matrix is: -Line 1 (4 elements): 730 32 61 89 -Line 2 (4 elements): 32 26 37 43 -Line 3 (4 elements): 61 37 53 62 -Line 4 (4 elements): 89 43 62 73 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.in deleted file mode 100644 index affeff1b77d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 71 23 43 23 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.out deleted file mode 100644 index 33d6eab60b1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/sortings.simple.out +++ /dev/null @@ -1,17 +0,0 @@ -Size of the array to sort = Type 5 numbers: Finished reading the 5 numbers -The original unsorted array is: -71 23 43 23 91 -Reversing the array ... Done! -The reversed array is: -91 23 43 23 71 -Sorting the array using insertion sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using bubble sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using heap sort ... Done! -The resulting array is: -23 23 43 71 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_01.simple deleted file mode 100644 index 9e275aafb0c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_01.simple +++ /dev/null @@ -1,10 +0,0 @@ -// Simple multithreaded program with two behaviors. - -void main() { - int x = 5; - spawn { x = 7; }; - print(x,"\n"); -} - -// 5 -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_02.simple deleted file mode 100644 index 85c775b56d3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_02.simple +++ /dev/null @@ -1,14 +0,0 @@ -// Simple multithreaded program with two output behaviors -// but with three overall behaviors - -void main() { - int x; - spawn { x = 7; }; - x = 5; - print(x,"\n"); -} - -// 5 -// 5 (yes, it admits two behaviors where the output is 5, one in which the -// store ends up with value 5 and another with value 7 at the location of x) -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_03.simple deleted file mode 100644 index 1951cdaf0c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_03.simple +++ /dev/null @@ -1,11 +0,0 @@ -// This is a poorly synchronized program, which has lots of behaviors. - -void main() { - int x = 5; - spawn {x=x+2;}; - spawn {x=x*2;}; - spawn {x=11;}; - spawn {print(x,"\n");}; -} - -// The search option of krun finds 42 solutions in total! diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_04.simple deleted file mode 100644 index 2215b97b381..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_04.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Normally, one would think that the program below has only two behaviors. -// However, it has four, due to the race on the output buffer. - -void main() { - spawn { - int x = 2; - print(x," "); - }; - spawn { - int x = 3; - print(x," "); - }; -} - -// 4 solutions, namely all interleavings of "2_" and "3_", where "_" is space diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_05.simple deleted file mode 100644 index 73f4c380e3f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_05.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Program which has infinitely many bahaviors. - -int x, y; - -void main() { - x=1; - y=0; - spawn { x=0; }; - while (1<=x) { - y = y+1; - } - print(y,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_06.simple deleted file mode 100644 index 24a3a5fcadf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_06.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {x=x+10;}; - join(t1); // comment out for more behaviors - join(t2); // comment out for more behaviors - print(x,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_07.simple deleted file mode 100644 index 8e45c3d6dff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Fully synchronized - -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {join(t1); x=x+10;}; - join(t2); - print(x,"\n"); -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_08.simple deleted file mode 100644 index b773d45a555..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_08.simple +++ /dev/null @@ -1,57 +0,0 @@ -// Program that tests both exceptions and threads. The threads are not -// synchronized and indeed manifest into lots of different behaviors. - -void main() { - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; -} - -// 221 solutions, each outputing two 1, two 2, two 3, two 4 and two 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_09.simple deleted file mode 100644 index 452783fedd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_09.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Poorly synchronized program which has two behaviors. - -void main() { - int x = 1; - spawn { - x=x+1; - rendezvous 1; - }; - x=x+1; - rendezvous 1; - print(x,"\n"); -} - -// 2 -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_10.simple deleted file mode 100644 index 6cbfab7a133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_10.simple +++ /dev/null @@ -1,18 +0,0 @@ -// Well-synchronized program which has only one behavior. - -void main() { - int x = 1; - spawn { - acquire 1; - x=x+1; - release 1; - rendezvous 1; - }; - acquire 1; - x=x+1; - release 1; - rendezvous 1; - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_11.simple deleted file mode 100644 index 6b861169bc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_11.simple +++ /dev/null @@ -1,22 +0,0 @@ -// This is a well-synchronized program, which has only one behavior. - -void main() { - int x = 1; - spawn { - rendezvous 1; - print(x," "); - rendezvous 2; - }; - spawn { - rendezvous 3; - print(x,"\n"); - rendezvous 4; - }; - print(x," "); - x = x+1; - rendezvous 1; rendezvous 2; - x = x+1; - rendezvous 3; rendezvous 4; -} - -// 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_12.simple deleted file mode 100644 index 5ecd55fba97..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads/threads_12.simple +++ /dev/null @@ -1,46 +0,0 @@ -// This program shows an interesting situation which can happen in many -// language designs: something which looks correct is actually wrong: - -int x; - -void main() { - int n = 5; - x = 1; - for (int i=1; i<=n; ++i) { - int t=i; - spawn { - multX(t); - }; - } - for (int i=1; i<=n; ++i) { - rendezvous i; - } - print(x,"\n"); -} - -void multX(int v) { - acquire 0; - x = x*v; - release 0; - rendezvous v; -} - -// 120, but also many many other behaviors ... - -// The problem is that "spawn multX(i);" does not evaluate the "i" argument, -// it only spawns a thread calculating the expression statement "multX(i);". -// It can be possible that the loop counter "i" is incremented right after the -// spawning but before the evaluation of the expression "multX(i)". In fact, -// it can be the case that all the spawned "multX(i);" statements will evaluate -// their "multX(i)" function calls after the main loop terminates. The threads -// will still see the "i" counter in their environments, but that will hold -// the value 6. Thus, in this case, all threads compute "multX(6)"! You can -// see all these "unexpected" behaviors if you use the search option in krun. -// (please make n smaller, e.g. 2, because theare are LOTS of behaviors here!) -// -// To fix this problem , replace loop "for(i=1;i<=n;++i) {spawn {multX(i);};}" -// with "for(i=1;i<=n;++i) {var t=i; spawn {multX(t);};}". Now, each thread -// sees its own local "t", which has the right value and does not change. -// Now the search option in krun only shows you solutions which output the -// correct factorial. (like before, please make n smaller (2?) when running -// the search option in krun, because theare are LOTS of behaviors here!) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_05.simple.out deleted file mode 100644 index 0d07c8984f6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_05.simple.out +++ /dev/null @@ -1,199 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 0 - 2 |-> lambda ( void , .Params , .Types , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "0\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 1 - 2 |-> lambda ( void , .Params , .Types , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "1\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 2 - 2 |-> lambda ( void , .Params , .Types , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "2\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 3 - 2 |-> lambda ( void , .Params , .Types , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "3\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 4 - 2 |-> lambda ( void , .Params , .Types , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "4\n" ~> . ) ) - - - 3 - - - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_06.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_06.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_06.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.out deleted file mode 100644 index 7d95b26c089..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -x = 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_11.simple.out deleted file mode 100644 index b85905ec0b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_12.simple.out deleted file mode 100644 index 52bd8e43afb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/Makefile deleted file mode 100644 index 634e3785bb8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests/* -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/README b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/README deleted file mode 100644 index e162d6f5696..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/README +++ /dev/null @@ -1,12 +0,0 @@ -Our current exceptions in SIMPLE are quite simplistic: the thrown -exceptional value is caught by the innermost try-catch statement, and -you get a runtime error (stuck) if the type of the thrown value is not -the same as the type of the exception's parameter. They work fine if -you restrict them to only throw and catch integer values, like we did -in the static semantics, but modern languages do not like this -limitation. Change the existing dynamic semantics of typed SIMPLE to -propagate a thrown exception to the outer try-catch statement when the -inner one cannot handle the exception due to a type mismatch. For -example, -"try { try { throw 7; } catch(bool x) {print(1};} } catch{int x) {print(2);}" -should print 2, and not get stuck as it currently happens. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.out deleted file mode 100644 index 36f5bb94345..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/collatz.simple.out +++ /dev/null @@ -1,6 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Done. It appears to hold. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/div-nondet.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/div-nondet.simple.out deleted file mode 100644 index 4de9334ab45..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/div-nondet.simple.out +++ /dev/null @@ -1,17 +0,0 @@ - { - S:String - #Equals - "1\n" - } -#Or - { - S:String - #Equals - "2\n" - } -#Or - { - S:String - #Equals - "3\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/collatz.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/collatz.simple deleted file mode 100644 index dc0920800ce..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/collatz.simple +++ /dev/null @@ -1,19 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -void collatz(int n) { - int s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - print("Done! It took ",s," steps.\n"); -} - -void main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(); - for (int i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/dekker.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/dekker.simple deleted file mode 100644 index fa4ff9fa902..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/dekker.simple +++ /dev/null @@ -1,32 +0,0 @@ -// This is Dekker's algorithm for mutual exclusion. -// This program is not meant to be executed, it is meant to be model checked. - -bool flag1 = false, flag2 = false, critical1 = false, critical2 = false; -int turn = 1; - -void dekker1() { - flag1 = true; turn = 2; - while (flag2 && turn==2) { } - // Enter critical section - critical1 = true; - // Critical stuff ... - // Leave critical section - critical1 = false; - flag1 = false; -} - -void dekker2() { - flag2 = true; turn = 1; - while(flag1 && turn==1) { } - // Enter critical section - critical2 = true; - // Critical stuff ... - // Leave critical section - critical2 = false; - flag2 = false; -} - -void main() { - spawn { while(true) { dekker1(); } }; - spawn { while(true) { dekker2(); } }; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/div-nondet.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/div-nondet.simple deleted file mode 100644 index 20a98665511..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/div-nondet.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Program manifesting several behaviors, including an undefined one. -// However, to make it generate all those behaviors, you need to add -// the "superheat" tag to the division and the "supercool" tag to the -// variable lookup and increment rules. - -void main() { - int x = 1 ; - print(++ x / (++ x / x),"\n"); -} - -// 0 -// 1 -// 2 -// 3 -// undefined (gets stuck with division-by-zero at top of computation) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/factorial.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/factorial.simple deleted file mode 100644 index 0ba95243e9d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/factorial.simple +++ /dev/null @@ -1,15 +0,0 @@ -// The following program calculates the factorial of a user-provided number. - -int factorial(int y) { - print("Factorial of ", y, " is: "); - int t=1; - for(int i=1; i<=y; ++i) { - t = t*i; - } - return t; -} - -void main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/higher-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/higher-order.simple deleted file mode 100644 index 026e52f9d14..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/higher-order.simple +++ /dev/null @@ -1,89 +0,0 @@ -int x, a[10]; - -void incx() { - ++x; -} - -int zero() { - return 0; -} - -int id(int x) { - return x; -} - -void->void id0(void->void f) { - return f; -} - -void->int id1(void->int f) { - return f; -} - -int->int id2(int->int f) { - return f; -} - -int double(int x) { - return 2*x; -} - -void->void hoincx() { - return incx; -} - -void->int hozero() { - return zero; -} - -int->int hoid() { - return id; -} - -int->int hodouble() { - return double; -} - -void app0(void->void f) { - f(); -} - -int app1(void->int f) { - return f(); -} - -int app2(int->int f, int x) { - return f(x); -} - -void map(int->int f, int[] x) { - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - x[i] = app2(f,x[i]); - } -} - -void printall() { - print("x = ",x, "; a[] = "); - for (int i = 0; i <= sizeOf(a) - 1; ++i) { - print(a[i], " "); - } - print("\n"); -} - -void main() { - x = 0; - for (int i=0; i <= sizeOf(a) - 1; ++i) { - a[i]=i; - } - printall(); - hoincx()(); - print(x," ", hozero()()," ", hoid()(7)," ", hodouble()(7),"\n"); - id0(hoincx())(); - print(x," ", id1(hozero())()," ", - id2(hoid())(7)," ", id2(hodouble())(7),"\n"); - app0(id0(hoincx())); - print(x," ", app1(id1(hozero()))," ", - app2(id2(hoid()),7)," ", app2(id2(hodouble()),7),"\n"); - map(double,a); - printall(); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/matrix.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/matrix.simple deleted file mode 100644 index c77830219a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/matrix.simple +++ /dev/null @@ -1,57 +0,0 @@ -// This program tests multi-dimensional arrays. - -void readArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements): "); - for(int j=0; j<=n; ++j) { a[i][j] = read(); } - } -} - -void printArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements):"); - for(int j=0; j<=n; ++j) { print(" ",a[i,j]); } - print("\n"); - } -} - -int[][] transArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=n; ++j) { - b[j,i] = a[i,j]; - } - } - return b; -} - -int[][] mulArray(int[][] a, int[][] b) { - int m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=p; ++j) { - c[i,j] = 0; - for (int k=0; k<=n; ++k) { - c[i,j] = c[i,j] + a[i,k] * b[k,j]; - } - } - } - return c; -} - -void main() { - print("Input the number of lines and columns (two natural numbers): "); - int x = read(), y = read(), a[x,y]; - readArray(a); - print("Your matrix is:\n"); - printArray(a); - print("The transpose of your matrix is:\n"); - printArray(transArray(a)); - print("You matrix multiplied with its transpose is:\n"); - printArray(mulArray(a,transArray(a))); - print("The transpose of your matrix multiplied with your matrix is:\n"); - printArray(mulArray(transArray(a),a)); -} - -// Should output what it says. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/sortings.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/sortings.simple deleted file mode 100644 index 86c857c303a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/diverse/sortings.simple +++ /dev/null @@ -1,136 +0,0 @@ -int[] init(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i = 0; i <= n - 1; ++i) { - x[i] = read(); - } - print("Finished reading the ",n," numbers\n"); - return x; -} - -void printArray(int[] x) { - print("\n"); - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - print(x[i]," "); - } - print("\n"); -} - -void reverse(int[] x) { - int n = sizeOf(x); - for (int i = 0; i <= n/2 - 1; ++i) { - int t = x[i]; - x[i] = x[n - i - 1]; - x[n - i - 1] = t; - } -} - -void map(string[] m, (int[] -> void)[] f, int[] x) { - for (int i = 0; i <= sizeOf(f) - 1; ++i) { - print(m[i]); - f[i](x); - } -} - -void insertionSort(int[] x) { - for (int i = 1; i <= sizeOf(x) - 1; ++i) { - int v = x[i], j = i - 1; - while (j > 0 && x[j] > v) { // doing the loop only up to 1 - x[j + 1] = x[j]; - j = j - 1; - } - if (x[0] > v) { - x[1] = x[0]; - x[0] = v; - } - else { - x[j+1] = v; - } - } -} - -void bubbleSort(int[] v) { - int n = sizeOf(v); - for (int i = 0; i <= n - 1; ++i) { - for (int j = 0; j <= n - 2; ++j) { - if (v[j] > v[j+1]) { - int t = v[j+1]; - v[j+1] = v[j]; - v[j] = t; - } - } - } -} - -void siftDown(int[] x, int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (x[root*2] > x[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (x[root] < x[maxChild]) { - int t = x[root]; - x[root] = x[maxChild]; - x[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } -} - -void heapSort(int[] x) { - int n = sizeOf(x), i = n/2 - 1; - while (i >= 0) { - siftDown(x, i, n - 1); - i = i - 1; - } - i = n - 1; - while (i >= 1 ) { - int t = x[0]; - x[0] = x[i] ; - x[i] = t; - siftDown(x, 0, i - 1); - i = i - 1; - } -} - -void main() { - print("Size of the array to sort = "); - int[] x = init(read()); - string m[11]; - int[] -> void f[11]; - m[ 0] = "The original unsorted array is:"; - f[ 0] = printArray; - m[ 1] = "Reversing the array ... "; - f[ 1] = reverse; - m[ 2] = "Done!\nThe reversed array is:"; - f[ 2] = printArray; - m[ 3] = "Sorting the array using insertion sort ... "; - f[ 3] = insertionSort; - m[ 4] = "Done!\nThe resulting array is:"; - f[ 4] = printArray; - m[ 5] = "Reversing the array ... "; - f[ 5] = reverse; - m[ 6] = "Done!\nSorting the array using bubble sort ... "; - f[ 6] = bubbleSort; - m[ 7] = "Done!\nThe resulting array is:"; - f[ 7] = printArray; - m[ 8] = "Reversing the array ... "; - f[ 8] = reverse; - m[ 9] = "Done!\nSorting the array using heap sort ... "; - f[ 9] = heapSort; - m[10] = "Done!\nThe resulting array is:"; - f[10] = printArray; - map(m,f,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex01.simple.out deleted file mode 100644 index f31f2d3fa80..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex01.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 100 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex02.simple.out deleted file mode 100644 index 8d7a64ac9a5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex02.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -7 as an int -100 as in the top declaration diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex03.simple.out deleted file mode 100644 index 112acab3c4b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex03.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -error as a string -100 as in the top declaration diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex04.simple.out deleted file mode 100644 index b228c55922b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex04.simple.out +++ /dev/null @@ -1,3 +0,0 @@ -OK, int -OK, bool -100 as in the top declaration diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex05.simple.out deleted file mode 100644 index 0dc275172e0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex05.simple.out +++ /dev/null @@ -1,2 +0,0 @@ -11 -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex06.simple.out deleted file mode 100644 index 1a46a1fb6a2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex06.simple.out +++ /dev/null @@ -1,11 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -11 -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex07.simple.out deleted file mode 100644 index 72893e09739..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex07.simple.out +++ /dev/null @@ -1,12 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -11 -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex08.simple.out deleted file mode 100644 index 5880a04a0de..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex08.simple.out +++ /dev/null @@ -1,12 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex09.simple.out deleted file mode 100644 index eb892666587..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/ex09.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -1 -2 -3 -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_01.simple deleted file mode 100644 index 2a4ad4f1db7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_01.simple +++ /dev/null @@ -1,16 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 - print(10,"\n"); -} - -// 7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_02.simple deleted file mode 100644 index dd31ec99c12..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_02.simple +++ /dev/null @@ -1,20 +0,0 @@ -void main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } -} - -void foo() { - try { - throw 5; - print(17); // should not be printed - } catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_03.simple deleted file mode 100644 index 4ec65e3ad2e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_03.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { x = x + 1; throw x; x = x/0;} // division by zero unreachable - catch(int y) {x = y+1;} - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_04.simple deleted file mode 100644 index 3bd10418881..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_04.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { int x = 5; throw x; int y = x/0;} // division by zero unreachable - catch(int y) {y = y + 2; print(y," ");} // new y here, the one declared by catch - print(x,"\n"); -} - -// 7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_05.simple deleted file mode 100644 index 1edf149735a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try{ - print(t," "); - throw 5; - print(8); // not reachable - } catch(int p) { - print(p+10," "); - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_06.simple deleted file mode 100644 index 023dc5feefa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_06.simple +++ /dev/null @@ -1,22 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try { - print(t," "); - print(8," "); - } catch(int p) { - print(p+10); // not reachable - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_07.simple deleted file mode 100644 index 5a17ae9a370..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_07.simple +++ /dev/null @@ -1,12 +0,0 @@ -void main() { - try { - int x = 2; - print(x," "); - throw ++x + x; - } - catch(int e) { - print(e,"\n"); - } -} - -// 2 6 or 2 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_08.simple deleted file mode 100644 index 676afff660c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_08.simple +++ /dev/null @@ -1,26 +0,0 @@ -void main() { - try { - try { - try { - try { - int x = 1; - print(x," "); - throw ++x; - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e,"\n"); - } -} - -// 1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_09.simple deleted file mode 100644 index d4fb88eaf6a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_09.simple +++ /dev/null @@ -1,24 +0,0 @@ -int x, y, z; - -void g() { - throw 15; -} - -void f() { - g(); -} - -void main() { - x = 5; - y = 10; - - try { - f(); - } catch(int y) { - print(y," "); - } - print(x," "); - print(y,"\n"); -} - -// 15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_10.simple deleted file mode 100644 index 3a1b0bef3da..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_10.simple +++ /dev/null @@ -1,13 +0,0 @@ -int x; - -void main() { - x = 5; - try { - throw 3; - print(x); // should not print this - } catch(int y) { - print(y,"\n"); // should print this - } -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_11.simple deleted file mode 100644 index 8b3df6ebc2d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_11.simple +++ /dev/null @@ -1,20 +0,0 @@ -int i, j; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - throw j=1; - i = 10; - print(i); // should not print this - } catch(int j) { - i = 20; - print(i," "); // should print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_12.simple deleted file mode 100644 index 288b94d9f8f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_12.simple +++ /dev/null @@ -1,19 +0,0 @@ -int i; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - i = 10; - print(i," "); - } catch(int j) { - i = 20; - print(i); // should not print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_13.simple deleted file mode 100644 index 795ef15af0a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_13.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - throw 4; - } catch (int e) { - print(e," "); - } - print(42,"\n"); -} - -// 4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_14.simple deleted file mode 100644 index b430dd1bf84..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_14.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - 15; - } catch(int e) { - print(e); // should not print this - } - print(42,"\n"); -} - -// 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_15.simple deleted file mode 100644 index 9cf0e41a427..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions/exceptions_15.simple +++ /dev/null @@ -1,15 +0,0 @@ -void main() { - try { - 1; - try { - 2; - } catch(int a) { - print(2); // should not print this - } - throw 1; - } catch(int b) { - print(1,"\n"); // should print this - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_01.simple.out deleted file mode 100644 index 7b132801145..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_02.simple.out deleted file mode 100644 index 7f8f011eb73..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_03.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_04.simple.out deleted file mode 100644 index ddcbc88bbd9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_05.simple.out deleted file mode 100644 index fbf9c69a420..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_06.simple.out deleted file mode 100644 index c870614bb54..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_07.simple.out deleted file mode 100644 index 020bb1522ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_07.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "2 5\n" -#Or - S ==K "2 6\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_08.simple.out deleted file mode 100644 index aacb59525ae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_09.simple.out deleted file mode 100644 index 122f99335df..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_11.simple.out deleted file mode 100644 index 9c355295cd4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_12.simple.out deleted file mode 100644 index 6c235065269..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_13.simple.out deleted file mode 100644 index 2efb20f3379..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_13.simple.out +++ /dev/null @@ -1 +0,0 @@ -4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_14.simple.out deleted file mode 100644 index d81cc0710eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_14.simple.out +++ /dev/null @@ -1 +0,0 @@ -42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_15.simple.out deleted file mode 100644 index d00491fd7e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/exceptions_15.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.out deleted file mode 100644 index 3755534a6a4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/factorial.simple.out +++ /dev/null @@ -1 +0,0 @@ -Input a natural number: Factorial of 5 is: 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/higher-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/higher-order.simple.out deleted file mode 100644 index 5cf2aefc9d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/higher-order.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -x = 0; a[] = 0 1 2 3 4 5 6 7 8 9 -1 0 7 14 -2 0 7 14 -3 0 7 14 -x = 3; a[] = 0 2 4 6 8 10 12 14 16 18 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.in deleted file mode 100644 index 0dad15c60ac..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.in +++ /dev/null @@ -1 +0,0 @@ -2 4 1 5 7 8 27 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.out deleted file mode 100644 index cfa7774db49..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/matrix.simple.out +++ /dev/null @@ -1,16 +0,0 @@ -Input the number of lines and columns (two natural numbers): Line 1 (4 elements): Line 2 (4 elements): Your matrix is: -Line 1 (4 elements): 1 5 7 8 -Line 2 (4 elements): 27 1 2 3 -The transpose of your matrix is: -Line 1 (2 elements): 1 27 -Line 2 (2 elements): 5 1 -Line 3 (2 elements): 7 2 -Line 4 (2 elements): 8 3 -You matrix multiplied with its transpose is: -Line 1 (2 elements): 139 70 -Line 2 (2 elements): 70 743 -The transpose of your matrix multiplied with your matrix is: -Line 1 (4 elements): 730 32 61 89 -Line 2 (4 elements): 32 26 37 43 -Line 3 (4 elements): 61 37 53 62 -Line 4 (4 elements): 89 43 62 73 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.in deleted file mode 100644 index affeff1b77d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 71 23 43 23 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.out deleted file mode 100644 index 33d6eab60b1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/sortings.simple.out +++ /dev/null @@ -1,17 +0,0 @@ -Size of the array to sort = Type 5 numbers: Finished reading the 5 numbers -The original unsorted array is: -71 23 43 23 91 -Reversing the array ... Done! -The reversed array is: -91 23 43 23 71 -Sorting the array using insertion sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using bubble sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using heap sort ... Done! -The resulting array is: -23 23 43 71 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_01.simple deleted file mode 100644 index 9e275aafb0c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_01.simple +++ /dev/null @@ -1,10 +0,0 @@ -// Simple multithreaded program with two behaviors. - -void main() { - int x = 5; - spawn { x = 7; }; - print(x,"\n"); -} - -// 5 -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_02.simple deleted file mode 100644 index 85c775b56d3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_02.simple +++ /dev/null @@ -1,14 +0,0 @@ -// Simple multithreaded program with two output behaviors -// but with three overall behaviors - -void main() { - int x; - spawn { x = 7; }; - x = 5; - print(x,"\n"); -} - -// 5 -// 5 (yes, it admits two behaviors where the output is 5, one in which the -// store ends up with value 5 and another with value 7 at the location of x) -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_03.simple deleted file mode 100644 index 1951cdaf0c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_03.simple +++ /dev/null @@ -1,11 +0,0 @@ -// This is a poorly synchronized program, which has lots of behaviors. - -void main() { - int x = 5; - spawn {x=x+2;}; - spawn {x=x*2;}; - spawn {x=11;}; - spawn {print(x,"\n");}; -} - -// The search option of krun finds 42 solutions in total! diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_04.simple deleted file mode 100644 index 2215b97b381..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_04.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Normally, one would think that the program below has only two behaviors. -// However, it has four, due to the race on the output buffer. - -void main() { - spawn { - int x = 2; - print(x," "); - }; - spawn { - int x = 3; - print(x," "); - }; -} - -// 4 solutions, namely all interleavings of "2_" and "3_", where "_" is space diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_05.simple deleted file mode 100644 index 73f4c380e3f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_05.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Program which has infinitely many bahaviors. - -int x, y; - -void main() { - x=1; - y=0; - spawn { x=0; }; - while (1<=x) { - y = y+1; - } - print(y,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_06.simple deleted file mode 100644 index 24a3a5fcadf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_06.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {x=x+10;}; - join(t1); // comment out for more behaviors - join(t2); // comment out for more behaviors - print(x,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_07.simple deleted file mode 100644 index 8e45c3d6dff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Fully synchronized - -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {join(t1); x=x+10;}; - join(t2); - print(x,"\n"); -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_08.simple deleted file mode 100644 index b773d45a555..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_08.simple +++ /dev/null @@ -1,57 +0,0 @@ -// Program that tests both exceptions and threads. The threads are not -// synchronized and indeed manifest into lots of different behaviors. - -void main() { - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; -} - -// 221 solutions, each outputing two 1, two 2, two 3, two 4 and two 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_09.simple deleted file mode 100644 index 452783fedd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_09.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Poorly synchronized program which has two behaviors. - -void main() { - int x = 1; - spawn { - x=x+1; - rendezvous 1; - }; - x=x+1; - rendezvous 1; - print(x,"\n"); -} - -// 2 -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_10.simple deleted file mode 100644 index 6cbfab7a133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_10.simple +++ /dev/null @@ -1,18 +0,0 @@ -// Well-synchronized program which has only one behavior. - -void main() { - int x = 1; - spawn { - acquire 1; - x=x+1; - release 1; - rendezvous 1; - }; - acquire 1; - x=x+1; - release 1; - rendezvous 1; - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_11.simple deleted file mode 100644 index 6b861169bc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_11.simple +++ /dev/null @@ -1,22 +0,0 @@ -// This is a well-synchronized program, which has only one behavior. - -void main() { - int x = 1; - spawn { - rendezvous 1; - print(x," "); - rendezvous 2; - }; - spawn { - rendezvous 3; - print(x,"\n"); - rendezvous 4; - }; - print(x," "); - x = x+1; - rendezvous 1; rendezvous 2; - x = x+1; - rendezvous 3; rendezvous 4; -} - -// 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_12.simple deleted file mode 100644 index 5ecd55fba97..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads/threads_12.simple +++ /dev/null @@ -1,46 +0,0 @@ -// This program shows an interesting situation which can happen in many -// language designs: something which looks correct is actually wrong: - -int x; - -void main() { - int n = 5; - x = 1; - for (int i=1; i<=n; ++i) { - int t=i; - spawn { - multX(t); - }; - } - for (int i=1; i<=n; ++i) { - rendezvous i; - } - print(x,"\n"); -} - -void multX(int v) { - acquire 0; - x = x*v; - release 0; - rendezvous v; -} - -// 120, but also many many other behaviors ... - -// The problem is that "spawn multX(i);" does not evaluate the "i" argument, -// it only spawns a thread calculating the expression statement "multX(i);". -// It can be possible that the loop counter "i" is incremented right after the -// spawning but before the evaluation of the expression "multX(i)". In fact, -// it can be the case that all the spawned "multX(i);" statements will evaluate -// their "multX(i)" function calls after the main loop terminates. The threads -// will still see the "i" counter in their environments, but that will hold -// the value 6. Thus, in this case, all threads compute "multX(6)"! You can -// see all these "unexpected" behaviors if you use the search option in krun. -// (please make n smaller, e.g. 2, because theare are LOTS of behaviors here!) -// -// To fix this problem , replace loop "for(i=1;i<=n;++i) {spawn {multX(i);};}" -// with "for(i=1;i<=n;++i) {var t=i; spawn {multX(t);};}". Now, each thread -// sees its own local "t", which has the right value and does not change. -// Now the search option in krun only shows you solutions which output the -// correct factorial. (like before, please make n smaller (2?) when running -// the search option in krun, because theare are LOTS of behaviors here!) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_01.simple.out deleted file mode 100644 index fb9711a9300..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_01.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "5\n" -#Or - S ==K "7\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_02.simple.out deleted file mode 100644 index fb9711a9300..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_02.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "5\n" -#Or - S ==K "7\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_03.simple.out deleted file mode 100644 index b1bd38b62a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -13 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_04.simple.out deleted file mode 100644 index f15d02b5969..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_04.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "2 3 " -#Or - S ==K "3 2 " diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.out deleted file mode 100644 index 675f219355a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_06.simple.out +++ /dev/null @@ -1,7 +0,0 @@ - S ==K "x = 5\n" -#Or - S ==K "x = 10\n" -#Or - S ==K "x = 15\n" -#Or - S ==K "x = 20\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.out deleted file mode 100644 index 7d95b26c089..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -x = 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_08.simple.out deleted file mode 100644 index 2bd6132359a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -1123452345 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_09.simple.out deleted file mode 100644 index d5356378afe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_09.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "2\n" -#Or - S ==K "3\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_11.simple.out deleted file mode 100644 index b85905ec0b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_12.simple.out deleted file mode 100644 index 52bd8e43afb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex01.simple deleted file mode 100644 index 6ba2799a480..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex01.simple +++ /dev/null @@ -1,13 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex02.simple deleted file mode 100644 index 37edf078be2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex02.simple +++ /dev/null @@ -1,17 +0,0 @@ -void main() { - int e = 100; - try { - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20, "\n"); // should not be printed - } catch(string e) { - print(e," as a string\n"); // should not be printed - } - } catch(int e) { - print(e, " as an int\n"); // should print 7 - } - print(e," as in the top declaration\n"); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex03.simple deleted file mode 100644 index 467f6d382b4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex03.simple +++ /dev/null @@ -1,17 +0,0 @@ -void main() { - int e = 100; - try { - try { - try { - throw "error"; - } catch(int e) { - print(e," as an int\n"); // should not be printed - } - } catch(bool e) { - print(e, " as a bool\n"); // should not be printed - } - } catch(string e) { - print(e, " as a string\n"); // should print error - } - print(e," as in the top declaration\n"); // should print 100 -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex04.simple deleted file mode 100644 index 655dd9df043..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex04.simple +++ /dev/null @@ -1,22 +0,0 @@ -void main() { - int e = 100; - try { - try { - try { - try { - throw -1; - } catch(string e) { - print("Wrong\n"); - } - } catch(int e) { - print("OK, int\n"); - throw false; - } - } catch(int->bool e) { - print("Wrong\n"); - } - } catch(bool e) { - print("OK, bool\n"); - } - print(e," as in the top declaration\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex05.simple deleted file mode 100644 index 83fdccdf61a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - return 1; -} - -void main() { - try { - try { - try { - throw inc; - } catch(void->int f) { - print("Wrong\n"); - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(bool->int f) { - f(true); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex06.simple deleted file mode 100644 index 8b5acab7874..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex06.simple +++ /dev/null @@ -1,28 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - return 1; -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - throw inc; - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(bool->int f) { - f(true); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex07.simple deleted file mode 100644 index 05a6153f7ed..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex07.simple +++ /dev/null @@ -1,29 +0,0 @@ -int x = 10; - -int inc(bool b) { - print(++x, "\n"); - throw -1; - return 1; // never reaches this -} - -void main() { - try { - try { - for(int i=0; i<=10; ++i) { - print(i,"\n"); - if(i>7) { - try { - inc(true); - } catch(void->int f) { - print("Wrong\n"); - } - } - } - } catch(bool->void f) { - print("Wrong\n"); - } - } catch(int f) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex08.simple deleted file mode 100644 index e6fee9bfaac..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex08.simple +++ /dev/null @@ -1,22 +0,0 @@ -void f(int x) { - try { - print(x, "\n"); - if(x >=10) { - throw -1; - } else { - f(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex09.simple deleted file mode 100644 index 931fd14fc3c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/typed-exceptions/ex09.simple +++ /dev/null @@ -1,31 +0,0 @@ -void f(int x) { - try { - print(x, "\n"); - if(x >=3) { - throw -1; - } else { - g(x+1); - } - } catch(bool b) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void g(int x) { - try { - f(x); - } catch(string s) { - print("Wrong\n"); // never reaches this - } - print("Wrong\n"); // never reaches this -} - -void main() { - try { - f(1); - } catch(int x) { - print("OK\n"); - } - print("Done\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.out deleted file mode 100644 index 36f5bb94345..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.out +++ /dev/null @@ -1,6 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Done. It appears to hold. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/div-nondet.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/div-nondet.simple.out deleted file mode 100644 index 4de9334ab45..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/div-nondet.simple.out +++ /dev/null @@ -1,17 +0,0 @@ - { - S:String - #Equals - "1\n" - } -#Or - { - S:String - #Equals - "2\n" - } -#Or - { - S:String - #Equals - "3\n" - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_01.simple.out deleted file mode 100644 index 7b132801145..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_01.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_02.simple.out deleted file mode 100644 index 7f8f011eb73..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_02.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_03.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_04.simple.out deleted file mode 100644 index ddcbc88bbd9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_04.simple.out +++ /dev/null @@ -1 +0,0 @@ -7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_05.simple.out deleted file mode 100644 index fbf9c69a420..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_05.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_06.simple.out deleted file mode 100644 index c870614bb54..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_06.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_07.simple.out deleted file mode 100644 index 020bb1522ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_07.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "2 5\n" -#Or - S ==K "2 6\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_08.simple.out deleted file mode 100644 index aacb59525ae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_09.simple.out deleted file mode 100644 index 122f99335df..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_09.simple.out +++ /dev/null @@ -1 +0,0 @@ -15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_11.simple.out deleted file mode 100644 index 9c355295cd4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_12.simple.out deleted file mode 100644 index 6c235065269..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_13.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_13.simple.out deleted file mode 100644 index 2efb20f3379..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_13.simple.out +++ /dev/null @@ -1 +0,0 @@ -4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_14.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_14.simple.out deleted file mode 100644 index d81cc0710eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_14.simple.out +++ /dev/null @@ -1 +0,0 @@ -42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_15.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_15.simple.out deleted file mode 100644 index d00491fd7e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_15.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.out deleted file mode 100644 index 3755534a6a4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.out +++ /dev/null @@ -1 +0,0 @@ -Input a natural number: Factorial of 5 is: 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/higher-order.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/higher-order.simple.out deleted file mode 100644 index 5cf2aefc9d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/higher-order.simple.out +++ /dev/null @@ -1,5 +0,0 @@ -x = 0; a[] = 0 1 2 3 4 5 6 7 8 9 -1 0 7 14 -2 0 7 14 -3 0 7 14 -x = 3; a[] = 0 2 4 6 8 10 12 14 16 18 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.in deleted file mode 100644 index 0dad15c60ac..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.in +++ /dev/null @@ -1 +0,0 @@ -2 4 1 5 7 8 27 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.out deleted file mode 100644 index cfa7774db49..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.out +++ /dev/null @@ -1,16 +0,0 @@ -Input the number of lines and columns (two natural numbers): Line 1 (4 elements): Line 2 (4 elements): Your matrix is: -Line 1 (4 elements): 1 5 7 8 -Line 2 (4 elements): 27 1 2 3 -The transpose of your matrix is: -Line 1 (2 elements): 1 27 -Line 2 (2 elements): 5 1 -Line 3 (2 elements): 7 2 -Line 4 (2 elements): 8 3 -You matrix multiplied with its transpose is: -Line 1 (2 elements): 139 70 -Line 2 (2 elements): 70 743 -The transpose of your matrix multiplied with your matrix is: -Line 1 (4 elements): 730 32 61 89 -Line 2 (4 elements): 32 26 37 43 -Line 3 (4 elements): 61 37 53 62 -Line 4 (4 elements): 89 43 62 73 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.in deleted file mode 100644 index affeff1b77d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.in +++ /dev/null @@ -1 +0,0 @@ -5 71 23 43 23 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.out deleted file mode 100644 index 33d6eab60b1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.out +++ /dev/null @@ -1,17 +0,0 @@ -Size of the array to sort = Type 5 numbers: Finished reading the 5 numbers -The original unsorted array is: -71 23 43 23 91 -Reversing the array ... Done! -The reversed array is: -91 23 43 23 71 -Sorting the array using insertion sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using bubble sort ... Done! -The resulting array is: -23 23 43 71 91 -Reversing the array ... Done! -Sorting the array using heap sort ... Done! -The resulting array is: -23 23 43 71 91 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_01.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_01.simple.out deleted file mode 100644 index fb9711a9300..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_01.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "5\n" -#Or - S ==K "7\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_02.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_02.simple.out deleted file mode 100644 index fb9711a9300..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_02.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "5\n" -#Or - S ==K "7\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_03.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_03.simple.out deleted file mode 100644 index b1bd38b62a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_03.simple.out +++ /dev/null @@ -1 +0,0 @@ -13 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_04.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_04.simple.out deleted file mode 100644 index f15d02b5969..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_04.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "2 3 " -#Or - S ==K "3 2 " diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_05.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_05.simple.out deleted file mode 100644 index 65e9f585018..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_05.simple.out +++ /dev/null @@ -1,199 +0,0 @@ - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 0 - 2 |-> lambda ( void , .Params , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "0\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 1 - 2 |-> lambda ( void , .Params , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "1\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 2 - 2 |-> lambda ( void , .Params , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "2\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 3 - 2 |-> lambda ( void , .Params , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "3\n" ~> . ) ) - - - 3 - - - } -#Or - { - Result:GeneratedTopCell - #Equals - - - .ThreadCellMap - - - main |-> 2 - x |-> 0 - y |-> 1 - - - 0 |-> 0 - 1 |-> 4 - 2 |-> lambda ( void , .Params , { x = 1 ; y = 0 ; spawn { x = 0 ; } ; while ( 1 <= x ) { y = y + 1 ; } print ( y , "\n" , .Vals ) ; } ) - - - .Set - - - SetItem ( 0 ) - SetItem ( 1 ) - - - ListItem ( #buffer ( "\n" ~> . ) ) - ListItem ( "off" ) - ListItem ( #istream ( 0 ) ) - - - ListItem ( #ostream ( 1 ) ) - ListItem ( "off" ) - ListItem ( #buffer ( "4\n" ~> . ) ) - - - 3 - - - } diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.out deleted file mode 100644 index 675f219355a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.out +++ /dev/null @@ -1,7 +0,0 @@ - S ==K "x = 5\n" -#Or - S ==K "x = 10\n" -#Or - S ==K "x = 15\n" -#Or - S ==K "x = 20\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.in b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.out deleted file mode 100644 index 7d95b26c089..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.out +++ /dev/null @@ -1 +0,0 @@ -x = 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_08.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_08.simple.out deleted file mode 100644 index 2bd6132359a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_08.simple.out +++ /dev/null @@ -1 +0,0 @@ -1123452345 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_09.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_09.simple.out deleted file mode 100644 index d5356378afe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_09.simple.out +++ /dev/null @@ -1,3 +0,0 @@ - S ==K "2\n" -#Or - S ==K "3\n" diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_10.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_10.simple.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_10.simple.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_11.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_11.simple.out deleted file mode 100644 index b85905ec0b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_11.simple.out +++ /dev/null @@ -1 +0,0 @@ -1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_12.simple.out b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_12.simple.out deleted file mode 100644 index 52bd8e43afb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_12.simple.out +++ /dev/null @@ -1 +0,0 @@ -120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/README.md b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/README.md deleted file mode 100644 index 0173b9c27c4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -The programs in this folder are typed variants of the SIMPLE untyped programs. -These programs will be executed both with the dynamic and with the static -semantics of the typed SIMPLE language. Each of the semantics contains its -own results folder showing the expected results of executing these programs. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/collatz.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/collatz.simple deleted file mode 100644 index dc0920800ce..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/collatz.simple +++ /dev/null @@ -1,19 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -void collatz(int n) { - int s=0; - print("Testing Collatz' conjecture for n = ",n," ... "); - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - print("Done! It took ",s," steps.\n"); -} - -void main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(); - for (int i=1; i<=m; ++i) { collatz(i); } - print("Done. It appears to hold.\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/dekker.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/dekker.simple deleted file mode 100644 index fa4ff9fa902..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/dekker.simple +++ /dev/null @@ -1,32 +0,0 @@ -// This is Dekker's algorithm for mutual exclusion. -// This program is not meant to be executed, it is meant to be model checked. - -bool flag1 = false, flag2 = false, critical1 = false, critical2 = false; -int turn = 1; - -void dekker1() { - flag1 = true; turn = 2; - while (flag2 && turn==2) { } - // Enter critical section - critical1 = true; - // Critical stuff ... - // Leave critical section - critical1 = false; - flag1 = false; -} - -void dekker2() { - flag2 = true; turn = 1; - while(flag1 && turn==1) { } - // Enter critical section - critical2 = true; - // Critical stuff ... - // Leave critical section - critical2 = false; - flag2 = false; -} - -void main() { - spawn { while(true) { dekker1(); } }; - spawn { while(true) { dekker2(); } }; -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/div-nondet.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/div-nondet.simple deleted file mode 100644 index 20a98665511..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/div-nondet.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Program manifesting several behaviors, including an undefined one. -// However, to make it generate all those behaviors, you need to add -// the "superheat" tag to the division and the "supercool" tag to the -// variable lookup and increment rules. - -void main() { - int x = 1 ; - print(++ x / (++ x / x),"\n"); -} - -// 0 -// 1 -// 2 -// 3 -// undefined (gets stuck with division-by-zero at top of computation) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/factorial.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/factorial.simple deleted file mode 100644 index 0ba95243e9d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/factorial.simple +++ /dev/null @@ -1,15 +0,0 @@ -// The following program calculates the factorial of a user-provided number. - -int factorial(int y) { - print("Factorial of ", y, " is: "); - int t=1; - for(int i=1; i<=y; ++i) { - t = t*i; - } - return t; -} - -void main() { - print("Input a natural number: "); - print(factorial(read()),"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/higher-order.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/higher-order.simple deleted file mode 100644 index 026e52f9d14..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/higher-order.simple +++ /dev/null @@ -1,89 +0,0 @@ -int x, a[10]; - -void incx() { - ++x; -} - -int zero() { - return 0; -} - -int id(int x) { - return x; -} - -void->void id0(void->void f) { - return f; -} - -void->int id1(void->int f) { - return f; -} - -int->int id2(int->int f) { - return f; -} - -int double(int x) { - return 2*x; -} - -void->void hoincx() { - return incx; -} - -void->int hozero() { - return zero; -} - -int->int hoid() { - return id; -} - -int->int hodouble() { - return double; -} - -void app0(void->void f) { - f(); -} - -int app1(void->int f) { - return f(); -} - -int app2(int->int f, int x) { - return f(x); -} - -void map(int->int f, int[] x) { - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - x[i] = app2(f,x[i]); - } -} - -void printall() { - print("x = ",x, "; a[] = "); - for (int i = 0; i <= sizeOf(a) - 1; ++i) { - print(a[i], " "); - } - print("\n"); -} - -void main() { - x = 0; - for (int i=0; i <= sizeOf(a) - 1; ++i) { - a[i]=i; - } - printall(); - hoincx()(); - print(x," ", hozero()()," ", hoid()(7)," ", hodouble()(7),"\n"); - id0(hoincx())(); - print(x," ", id1(hozero())()," ", - id2(hoid())(7)," ", id2(hodouble())(7),"\n"); - app0(id0(hoincx())); - print(x," ", app1(id1(hozero()))," ", - app2(id2(hoid()),7)," ", app2(id2(hodouble()),7),"\n"); - map(double,a); - printall(); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/matrix.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/matrix.simple deleted file mode 100644 index c77830219a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/matrix.simple +++ /dev/null @@ -1,57 +0,0 @@ -// This program tests multi-dimensional arrays. - -void readArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements): "); - for(int j=0; j<=n; ++j) { a[i][j] = read(); } - } -} - -void printArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1; - for(int i=0; i<=m; ++i) { - print("Line ",i+1," (",n+1," elements):"); - for(int j=0; j<=n; ++j) { print(" ",a[i,j]); } - print("\n"); - } -} - -int[][] transArray(int[][] a) { - int m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=n; ++j) { - b[j,i] = a[i,j]; - } - } - return b; -} - -int[][] mulArray(int[][] a, int[][] b) { - int m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1]; - for (int i=0; i<=m; ++i) { - for (int j=0; j<=p; ++j) { - c[i,j] = 0; - for (int k=0; k<=n; ++k) { - c[i,j] = c[i,j] + a[i,k] * b[k,j]; - } - } - } - return c; -} - -void main() { - print("Input the number of lines and columns (two natural numbers): "); - int x = read(), y = read(), a[x,y]; - readArray(a); - print("Your matrix is:\n"); - printArray(a); - print("The transpose of your matrix is:\n"); - printArray(transArray(a)); - print("You matrix multiplied with its transpose is:\n"); - printArray(mulArray(a,transArray(a))); - print("The transpose of your matrix multiplied with your matrix is:\n"); - printArray(mulArray(transArray(a),a)); -} - -// Should output what it says. diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/sortings.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/sortings.simple deleted file mode 100644 index 86c857c303a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/sortings.simple +++ /dev/null @@ -1,136 +0,0 @@ -int[] init(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i = 0; i <= n - 1; ++i) { - x[i] = read(); - } - print("Finished reading the ",n," numbers\n"); - return x; -} - -void printArray(int[] x) { - print("\n"); - for (int i = 0; i <= sizeOf(x) - 1; ++i) { - print(x[i]," "); - } - print("\n"); -} - -void reverse(int[] x) { - int n = sizeOf(x); - for (int i = 0; i <= n/2 - 1; ++i) { - int t = x[i]; - x[i] = x[n - i - 1]; - x[n - i - 1] = t; - } -} - -void map(string[] m, (int[] -> void)[] f, int[] x) { - for (int i = 0; i <= sizeOf(f) - 1; ++i) { - print(m[i]); - f[i](x); - } -} - -void insertionSort(int[] x) { - for (int i = 1; i <= sizeOf(x) - 1; ++i) { - int v = x[i], j = i - 1; - while (j > 0 && x[j] > v) { // doing the loop only up to 1 - x[j + 1] = x[j]; - j = j - 1; - } - if (x[0] > v) { - x[1] = x[0]; - x[0] = v; - } - else { - x[j+1] = v; - } - } -} - -void bubbleSort(int[] v) { - int n = sizeOf(v); - for (int i = 0; i <= n - 1; ++i) { - for (int j = 0; j <= n - 2; ++j) { - if (v[j] > v[j+1]) { - int t = v[j+1]; - v[j+1] = v[j]; - v[j] = t; - } - } - } -} - -void siftDown(int[] x, int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (x[root*2] > x[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (x[root] < x[maxChild]) { - int t = x[root]; - x[root] = x[maxChild]; - x[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } -} - -void heapSort(int[] x) { - int n = sizeOf(x), i = n/2 - 1; - while (i >= 0) { - siftDown(x, i, n - 1); - i = i - 1; - } - i = n - 1; - while (i >= 1 ) { - int t = x[0]; - x[0] = x[i] ; - x[i] = t; - siftDown(x, 0, i - 1); - i = i - 1; - } -} - -void main() { - print("Size of the array to sort = "); - int[] x = init(read()); - string m[11]; - int[] -> void f[11]; - m[ 0] = "The original unsorted array is:"; - f[ 0] = printArray; - m[ 1] = "Reversing the array ... "; - f[ 1] = reverse; - m[ 2] = "Done!\nThe reversed array is:"; - f[ 2] = printArray; - m[ 3] = "Sorting the array using insertion sort ... "; - f[ 3] = insertionSort; - m[ 4] = "Done!\nThe resulting array is:"; - f[ 4] = printArray; - m[ 5] = "Reversing the array ... "; - f[ 5] = reverse; - m[ 6] = "Done!\nSorting the array using bubble sort ... "; - f[ 6] = bubbleSort; - m[ 7] = "Done!\nThe resulting array is:"; - f[ 7] = printArray; - m[ 8] = "Reversing the array ... "; - f[ 8] = reverse; - m[ 9] = "Done!\nSorting the array using heap sort ... "; - f[ 9] = heapSort; - m[10] = "Done!\nThe resulting array is:"; - f[10] = printArray; - map(m,f,x); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_01.simple deleted file mode 100644 index 2a4ad4f1db7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_01.simple +++ /dev/null @@ -1,16 +0,0 @@ -void main() { - int e = 100; - try { - int x = 5; - if (x >= 0) { - throw x+2; - } - print(20); // should not be printed - } catch(int e) { - print(e," "); // should print 7 - } - print(e," "); // should print 100 - print(10,"\n"); -} - -// 7 100 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_02.simple deleted file mode 100644 index dd31ec99c12..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_02.simple +++ /dev/null @@ -1,20 +0,0 @@ -void main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } -} - -void foo() { - try { - throw 5; - print(17); // should not be printed - } catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_03.simple deleted file mode 100644 index 4ec65e3ad2e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_03.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { x = x + 1; throw x; x = x/0;} // division by zero unreachable - catch(int y) {x = y+1;} - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_04.simple deleted file mode 100644 index 3bd10418881..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_04.simple +++ /dev/null @@ -1,8 +0,0 @@ -void main() { - int x = 1; - try { int x = 5; throw x; int y = x/0;} // division by zero unreachable - catch(int y) {y = y + 2; print(y," ");} // new y here, the one declared by catch - print(x,"\n"); -} - -// 7 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_05.simple deleted file mode 100644 index 1edf149735a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_05.simple +++ /dev/null @@ -1,23 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try{ - print(t," "); - throw 5; - print(8); // not reachable - } catch(int p) { - print(p+10," "); - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 15 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_06.simple deleted file mode 100644 index 023dc5feefa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_06.simple +++ /dev/null @@ -1,22 +0,0 @@ -int x; - -int f(int y) { - int t = 1; - try { - print(t," "); - print(8," "); - } catch(int p) { - print(p+10); // not reachable - } - for (int i = 1; i <= y; ++i) { - t = t*i; - } - return t; -} - -void main() { - x = 5; - print(f(x),"\n"); -} - -// 1 8 120 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_07.simple deleted file mode 100644 index 5a17ae9a370..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_07.simple +++ /dev/null @@ -1,12 +0,0 @@ -void main() { - try { - int x = 2; - print(x," "); - throw ++x + x; - } - catch(int e) { - print(e,"\n"); - } -} - -// 2 6 or 2 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_08.simple deleted file mode 100644 index 676afff660c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_08.simple +++ /dev/null @@ -1,26 +0,0 @@ -void main() { - try { - try { - try { - try { - int x = 1; - print(x," "); - throw ++x; - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e," "); - throw ++e; - } - } catch(int e) { - print(e,"\n"); - } -} - -// 1 2 3 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_09.simple deleted file mode 100644 index d4fb88eaf6a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_09.simple +++ /dev/null @@ -1,24 +0,0 @@ -int x, y, z; - -void g() { - throw 15; -} - -void f() { - g(); -} - -void main() { - x = 5; - y = 10; - - try { - f(); - } catch(int y) { - print(y," "); - } - print(x," "); - print(y,"\n"); -} - -// 15 5 10 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_10.simple deleted file mode 100644 index 3a1b0bef3da..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_10.simple +++ /dev/null @@ -1,13 +0,0 @@ -int x; - -void main() { - x = 5; - try { - throw 3; - print(x); // should not print this - } catch(int y) { - print(y,"\n"); // should print this - } -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_11.simple deleted file mode 100644 index 8b3df6ebc2d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_11.simple +++ /dev/null @@ -1,20 +0,0 @@ -int i, j; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - throw j=1; - i = 10; - print(i); // should not print this - } catch(int j) { - i = 20; - print(i," "); // should print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 20 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_12.simple deleted file mode 100644 index 288b94d9f8f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_12.simple +++ /dev/null @@ -1,19 +0,0 @@ -int i; - -void main() { - i = 0; - while (++i <= 3) { - print(i," "); - } - try { - i = 10; - print(i," "); - } catch(int j) { - i = 20; - print(i); // should not print this - } - i = 15; - print(i,"\n"); -} - -// 1 2 3 10 15 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_13.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_13.simple deleted file mode 100644 index 795ef15af0a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_13.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - throw 4; - } catch (int e) { - print(e," "); - } - print(42,"\n"); -} - -// 4 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_14.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_14.simple deleted file mode 100644 index b430dd1bf84..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_14.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - try { - 15; - } catch(int e) { - print(e); // should not print this - } - print(42,"\n"); -} - -// 42 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_15.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_15.simple deleted file mode 100644 index 9cf0e41a427..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_15.simple +++ /dev/null @@ -1,15 +0,0 @@ -void main() { - try { - 1; - try { - 2; - } catch(int a) { - print(2); // should not print this - } - throw 1; - } catch(int b) { - print(1,"\n"); // should print this - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_01.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_01.simple deleted file mode 100644 index 9e275aafb0c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_01.simple +++ /dev/null @@ -1,10 +0,0 @@ -// Simple multithreaded program with two behaviors. - -void main() { - int x = 5; - spawn { x = 7; }; - print(x,"\n"); -} - -// 5 -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_02.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_02.simple deleted file mode 100644 index 85c775b56d3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_02.simple +++ /dev/null @@ -1,14 +0,0 @@ -// Simple multithreaded program with two output behaviors -// but with three overall behaviors - -void main() { - int x; - spawn { x = 7; }; - x = 5; - print(x,"\n"); -} - -// 5 -// 5 (yes, it admits two behaviors where the output is 5, one in which the -// store ends up with value 5 and another with value 7 at the location of x) -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_03.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_03.simple deleted file mode 100644 index 1951cdaf0c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_03.simple +++ /dev/null @@ -1,11 +0,0 @@ -// This is a poorly synchronized program, which has lots of behaviors. - -void main() { - int x = 5; - spawn {x=x+2;}; - spawn {x=x*2;}; - spawn {x=11;}; - spawn {print(x,"\n");}; -} - -// The search option of krun finds 42 solutions in total! diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_04.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_04.simple deleted file mode 100644 index 2215b97b381..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_04.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Normally, one would think that the program below has only two behaviors. -// However, it has four, due to the race on the output buffer. - -void main() { - spawn { - int x = 2; - print(x," "); - }; - spawn { - int x = 3; - print(x," "); - }; -} - -// 4 solutions, namely all interleavings of "2_" and "3_", where "_" is space diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_05.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_05.simple deleted file mode 100644 index 73f4c380e3f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_05.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Program which has infinitely many bahaviors. - -int x, y; - -void main() { - x=1; - y=0; - spawn { x=0; }; - while (1<=x) { - y = y+1; - } - print(y,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_06.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_06.simple deleted file mode 100644 index 24a3a5fcadf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_06.simple +++ /dev/null @@ -1,10 +0,0 @@ -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {x=x+10;}; - join(t1); // comment out for more behaviors - join(t2); // comment out for more behaviors - print(x,"\n"); -} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_07.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_07.simple deleted file mode 100644 index 8e45c3d6dff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_07.simple +++ /dev/null @@ -1,13 +0,0 @@ -// Fully synchronized - -void main() { - int x; - print("x = "); - x=read(); - int t1 = spawn {x=x/2;}; - int t2 = spawn {join(t1); x=x+10;}; - join(t2); - print(x,"\n"); -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_08.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_08.simple deleted file mode 100644 index b773d45a555..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_08.simple +++ /dev/null @@ -1,57 +0,0 @@ -// Program that tests both exceptions and threads. The threads are not -// synchronized and indeed manifest into lots of different behaviors. - -void main() { - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; - spawn { - int e; - try { - try { - try { - try { - int x = 1; - print(x); - throw ++x; - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - throw ++e; - } - } catch(int e) { - print(e); - } - }; -} - -// 221 solutions, each outputing two 1, two 2, two 3, two 4 and two 5 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_09.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_09.simple deleted file mode 100644 index 452783fedd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_09.simple +++ /dev/null @@ -1,15 +0,0 @@ -// Poorly synchronized program which has two behaviors. - -void main() { - int x = 1; - spawn { - x=x+1; - rendezvous 1; - }; - x=x+1; - rendezvous 1; - print(x,"\n"); -} - -// 2 -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_10.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_10.simple deleted file mode 100644 index 6cbfab7a133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_10.simple +++ /dev/null @@ -1,18 +0,0 @@ -// Well-synchronized program which has only one behavior. - -void main() { - int x = 1; - spawn { - acquire 1; - x=x+1; - release 1; - rendezvous 1; - }; - acquire 1; - x=x+1; - release 1; - rendezvous 1; - print(x,"\n"); -} - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_11.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_11.simple deleted file mode 100644 index 6b861169bc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_11.simple +++ /dev/null @@ -1,22 +0,0 @@ -// This is a well-synchronized program, which has only one behavior. - -void main() { - int x = 1; - spawn { - rendezvous 1; - print(x," "); - rendezvous 2; - }; - spawn { - rendezvous 3; - print(x,"\n"); - rendezvous 4; - }; - print(x," "); - x = x+1; - rendezvous 1; rendezvous 2; - x = x+1; - rendezvous 3; rendezvous 4; -} - -// 1 2 3 diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_12.simple b/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_12.simple deleted file mode 100644 index 5ecd55fba97..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_12.simple +++ /dev/null @@ -1,46 +0,0 @@ -// This program shows an interesting situation which can happen in many -// language designs: something which looks correct is actually wrong: - -int x; - -void main() { - int n = 5; - x = 1; - for (int i=1; i<=n; ++i) { - int t=i; - spawn { - multX(t); - }; - } - for (int i=1; i<=n; ++i) { - rendezvous i; - } - print(x,"\n"); -} - -void multX(int v) { - acquire 0; - x = x*v; - release 0; - rendezvous v; -} - -// 120, but also many many other behaviors ... - -// The problem is that "spawn multX(i);" does not evaluate the "i" argument, -// it only spawns a thread calculating the expression statement "multX(i);". -// It can be possible that the loop counter "i" is incremented right after the -// spawning but before the evaluation of the expression "multX(i)". In fact, -// it can be the case that all the spawned "multX(i);" statements will evaluate -// their "multX(i)" function calls after the main loop terminates. The threads -// will still see the "i" counter in their environments, but that will hold -// the value 6. Thus, in this case, all threads compute "multX(6)"! You can -// see all these "unexpected" behaviors if you use the search option in krun. -// (please make n smaller, e.g. 2, because theare are LOTS of behaviors here!) -// -// To fix this problem , replace loop "for(i=1;i<=n;++i) {spawn {multX(i);};}" -// with "for(i=1;i<=n;++i) {var t=i; spawn {multX(t);};}". Now, each thread -// sees its own local "t", which has the right value and does not change. -// Now the search option in krun only shows you solutions which output the -// correct factorial. (like before, please make n smaller (2?) when running -// the search option in krun, because theare are LOTS of behaviors here!) diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/Makefile b/k-distribution/pl-tutorial/2_languages/1_simple/Makefile deleted file mode 100644 index 347d72d15aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/1_simple/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=1_untyped 2_typed/1_static 2_typed/2_dynamic - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/Makefile b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/Makefile deleted file mode 100644 index 937fb60232b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=kool-untyped -EXT=kool -KRUN_FLAGS=--output none - -%/threads.kool: kompile - true - -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/NOTES b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/NOTES deleted file mode 100644 index 35258295241..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/NOTES +++ /dev/null @@ -1,4 +0,0 @@ -Check whether multidimensional multinested arrays work well: -x[2,3][4,5][6][7,8]. - -This could also be an issue in SIMPLE. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/Makefile b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/Makefile deleted file mode 100644 index 7fd5dff6ae3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/README b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/README deleted file mode 100644 index e6449df5ac8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/README +++ /dev/null @@ -1,49 +0,0 @@ -Currently, all class members (fields and/or methods) are public in KOOL. -Sometimes we want to keep members of a class private, in the sense that -subclasses do not have direct access to those members. This exercise asks -you to add private members to untyped KOOL. Syntactically, you should -allow a new keyword, "private", to optionally precede member -declarations. For example, "private var x=10, y=10;" or "private -method f(x,y) {...}". - -There is no full agreement among programming language designers on -what the precise semantics of private members should be, with or -without types around, or whether private members should be allowed at -all in an OO language. For example, the overall attitude in the -Smalltalk community is that private members should not be used or even -allowed (indeed, Smalltalk does not have them), because they work -against the OO philosophy. Consequently, we will here make it clear -what the desired semantics of private members is in untyped KOOL. - -Our high-level semantics of private members is the usual one: they can -be directly accessed only by members of the same class. In untyped -KOOL, we keep the above semantics as general as possible, in that we -impose no apriori restriction on how private members are declared or -accessed. For example, we allow a non-private method to be overridden -by a private method, and viceversa. The only check we perform is a -dynamic one, namely that a private member (field or method) can only -be accessed from code in the same class (but possibly in a different -object instance). We let the program execute normally, including -dynamic method dispatch, and only check at access time whether the -accessed member is private and, if it is, then whether it was accessed -from the same class. - -Note that our semantics above is controversial. Specifically, the fact -that we allow to override private methods and do not treat private -method invocations differently, can lead to strange situations. For -example, a class A may declare a private method f and a public method -g that invokes f, and a class B may extend A and override f with a -public method. Now if we create an instance of class B and invoke g -on it, then the f called by g is the B's f, not A's, so the private -nature of the A's f has been somewhat lost. We say "somewhat", because -A's f can still only be accessed by code that appears in A. A similar -exercise for KOOL typed requires you to fix this problem, in that the -f called by A's g will always be A's f. - -For simplicity, we assume that all members defined in a class, private -or public, are distinct. Also, like before we assume that methods are -identified, for overriding purposes, only by their name (and not by -their result or arguments type). - -The sample programs and their expected results should fully clarify -the desired semantics of private members in untyped KOOL. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/README b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/README deleted file mode 100644 index 106294130a5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/README +++ /dev/null @@ -1,34 +0,0 @@ -To get a feel for the KOOL language through programs, we recommend to -check out the programs in this directory in the following order (of -increasing complexity): - -hello-world.kool -field.kool -factorial.kool -new.kool -constructor.kool -odd-even.kool -field-shadowing-1.kool -field-shadowing-2.kool -dynamic-dispatch-1.kool -dynamic-dispatch-2.kool -dynamic-dispatch-3.kool -new-in-field.kool -point.kool -tree-sum.kool -sorting.kool -matrix.kool -return-object.kool -this-explicit.kool -this-implicit.kool -method-sharing.kool -super-1.kool -super-2.kool -super-3.kool -exceptions-1.kool -exceptions-2.kool -threads.kool -cast-1.kool -cast-2.kool -cycle.kool -instanceOf.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool deleted file mode 100644 index 37bd5c0a609..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool +++ /dev/null @@ -1,12 +0,0 @@ -class A { - private var x = 7; - method A() {} -} - -class Main { - method Main() { - var a = new A(); - print("Accessing a private field: a.x = "); - print(a.x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool.out deleted file mode 100644 index 40191fdea72..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex01.kool.out +++ /dev/null @@ -1 +0,0 @@ -Accessing a private field: a.x = \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool deleted file mode 100644 index d9734b2df7f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool +++ /dev/null @@ -1,15 +0,0 @@ -class A { - var x = 7; - private method A() { - x = 10; - } -} - -class Main { - method Main() { - var a = new A(); - print("This is reached: the constructor is called after the current class is set\n"); - a.A(); - print("But this should not be reachaed, because method A() is private.\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool.out deleted file mode 100644 index b45c357a7e7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex02.kool.out +++ /dev/null @@ -1 +0,0 @@ -This is reached: the constructor is called after the current class is set diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool deleted file mode 100644 index 51a0237b10b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool +++ /dev/null @@ -1,17 +0,0 @@ -class A { - private var x = 7; - - method A() { - x = 10; - } - - method getx() { - return x; - } -} - -class Main { - method Main() { - print((new A()).getx()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool.out deleted file mode 100644 index 9a037142aa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex03.kool.out +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool deleted file mode 100644 index 5435bf8cd2c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool +++ /dev/null @@ -1,20 +0,0 @@ -class B { - var x = 3; - method B() { - x = 5; - } -} - -class A extends B { - private var x = 7; - method A() { - x = 10; - } -} - -class Main { - method Main() { - print("Next should not be printed, because x is private in A\nand we do not default to B.\n"); - print((new A()).x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool.out deleted file mode 100644 index d1c7310e7e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex04.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -Next should not be printed, because x is private in A -and we do not default to B. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool deleted file mode 100644 index bcd5f4039f2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool +++ /dev/null @@ -1,21 +0,0 @@ -class B { - var x = 3; - method B() { - x = 5; - } -} - -class A extends B { - private var y = 7; - method A() { - super.B(); // KOOL doesn't automatically call the superclass constructor - y = 10; - } -} - -class Main { - method Main() { - print("The next should be printed now: "); - print((new A()).x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool.out deleted file mode 100644 index fcd86a7167c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex05.kool.out +++ /dev/null @@ -1 +0,0 @@ -The next should be printed now: 5 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool deleted file mode 100644 index 68a77765b00..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool +++ /dev/null @@ -1,21 +0,0 @@ -class B { - private var x = 3; - method B() { - x = 5; - } -} - -class A extends B { - private var y = 7; - method A() { - super.B(); - y = 10; - } -} - -class Main { - method Main() { - print("The next should not be printed.\n"); - print((new A()).x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool.out deleted file mode 100644 index 0050a229e71..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex06.kool.out +++ /dev/null @@ -1 +0,0 @@ -The next should not be printed. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool deleted file mode 100644 index 00f5952d4aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool +++ /dev/null @@ -1,26 +0,0 @@ -class B { - private var x = 3; - method B() { - x = 5; - } - method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool.out deleted file mode 100644 index 9a037142aa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex07.kool.out +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool deleted file mode 100644 index 3f15b65a2ca..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool +++ /dev/null @@ -1,28 +0,0 @@ -class B { - private var x = 3; - method B() { - x = 5; - } - method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return super.x; - } -} - -class Main { - method Main() { - print("The next should not be printed.\n"); - print((new A()).get()); - } -} - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool.out deleted file mode 100644 index 0050a229e71..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex08.kool.out +++ /dev/null @@ -1 +0,0 @@ -The next should not be printed. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool deleted file mode 100644 index 62d2513a9a8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - var x = 3; - method B() { - x = 5; - } - method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return super.x; - } -} - -class Main { - method Main() { - print("The next should be printed now:\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool.out deleted file mode 100644 index 9b884580e2b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex09.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed now: -5 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool deleted file mode 100644 index 554eccc773a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - private var x = 3; - method B() { - x = 5; - } - method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should be printed:\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool.out deleted file mode 100644 index fe69d3cddf4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex10.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed: -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool deleted file mode 100644 index c1e2dff004e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - private var x = 3; - method B() { - x = 5; - } - private method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - private method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should not be printed.\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool.out deleted file mode 100644 index 0050a229e71..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex11.kool.out +++ /dev/null @@ -1 +0,0 @@ -The next should not be printed. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool deleted file mode 100644 index 3d850360a6a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - private var x = 3; - method B() { - x = 5; - } - private method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should be printed:\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool.out deleted file mode 100644 index fe69d3cddf4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex12.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed: -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool deleted file mode 100644 index 49301f397f2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool +++ /dev/null @@ -1,34 +0,0 @@ -// This example works differently than in Java. Unlike in Java, the get() -// method called by f() is dynamically dispatched here. That is because -// we do not do any static analysis in untyped KOOL. - -class B { - private var x = 3; - method B() { - x = 5; - } - private method get() { - return x; - } - method f() { - return get(); - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool.out deleted file mode 100644 index fe69d3cddf4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex13.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed: -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool deleted file mode 100644 index 2b375e2d230..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool +++ /dev/null @@ -1,32 +0,0 @@ -// The call to get() in f() is now dynamically dispatched also in Java. - -class B { - private var x = 3; - method B() { - x = 5; - } - method get() { - return x; - } - method f() { - return get(); - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool.out deleted file mode 100644 index fe69d3cddf4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex14.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed: -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool deleted file mode 100644 index 76bb16487b3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool +++ /dev/null @@ -1,41 +0,0 @@ -class C { - private var x = 1; - method C() { - x = 2; - } - method get() { - return x; - } -} - -class B extends C { - private var x = 3; - method B() { - super.C(); - x = 5; - } - method get() { - return x; - } - method f() { - return get(); - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool.out deleted file mode 100644 index fe69d3cddf4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex15.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed: -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool deleted file mode 100644 index 443ad6b552b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool +++ /dev/null @@ -1,41 +0,0 @@ -// This does not work in Java, because the method get() called in f() is -// not found. - -class C { - private var x = 1; - method C() { - x = 2; - } - private method get() { - return x; - } -} - -class B extends C { - private var x = 3; - method B() { - super.C(); - x = 5; - } - method f() { - return get(); - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool.out deleted file mode 100644 index fe69d3cddf4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex16.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The next should be printed: -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool deleted file mode 100644 index 8b9089581c3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool +++ /dev/null @@ -1,21 +0,0 @@ -class A { - private var x = 7; - method A(v) { - x = v; - } - method init(a){ - x=a.x; - } - method get() { - return x; - } -} - -class Main { - method Main(){ - var a = new A(10); - var b = new A(20); - a.init(b); - print(a.get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool.out deleted file mode 100644 index 2edeafb09db..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex17.kool.out +++ /dev/null @@ -1 +0,0 @@ -20 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool deleted file mode 100644 index de160780826..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool +++ /dev/null @@ -1,23 +0,0 @@ -class A { - private var x = 7; - method A() { - } - method init(a){ - x=a.x; - } -} - -class B extends A { - private var x = 17; - method B() { - } -} - -class Main { - method Main() { - var a = new A(); - var b = new B(); - a.init(b); - print("This should not be reached.\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex18.kool.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool deleted file mode 100644 index 24d912d2a4b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool +++ /dev/null @@ -1,39 +0,0 @@ -// This example would work in Java, because the get() in f() is chosen to -// be the private one of B. In our case, it is dynamically dispatched -// and ends up being the one of A, which is private to A, so we get stuck. - -class B { - private var x = 3; - method B() { - x = 5; - } - private method get() { - return x; - } - method f() { - return get(); - } -} - -class A extends B { - private var x = 7; - method A() { - super.B(); - x = 10; - } - private method get(){ - return x; - } - method g() { - return get(); - } -} - -class Main { - method Main() { - print("The following should work: "); - print((new A()).g()); - print("\nBut the following should not."); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool.out deleted file mode 100644 index 33ea4638d8c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex19.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -The following should work: 10 -But the following should not. \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool deleted file mode 100644 index b7707fbe76b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool +++ /dev/null @@ -1,26 +0,0 @@ -// This example shows that we can shadow a public field with a private one. -// This works in Java, too. - -class B { - var x = 3; - method B() { - } - method get() { - return x; - } -} - -class A extends B { - private var x = 7; - method A() { - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool.out deleted file mode 100644 index c7930257dfe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex20.kool.out +++ /dev/null @@ -1 +0,0 @@ -7 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool deleted file mode 100644 index 4451c765120..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool +++ /dev/null @@ -1,25 +0,0 @@ -// This example shows that a subclass does not have access to superclass' -// private fields. Java does not allow this, either. - -class B { - private var x = 3; - method B() { - } - method get() { - return x; - } -} - -class A extends B { - method A() { - } - method get(){ - return x; - } -} - -class Main { - method Main() { - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/ex21.kool.out deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/README b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/README deleted file mode 100644 index 106294130a5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/README +++ /dev/null @@ -1,34 +0,0 @@ -To get a feel for the KOOL language through programs, we recommend to -check out the programs in this directory in the following order (of -increasing complexity): - -hello-world.kool -field.kool -factorial.kool -new.kool -constructor.kool -odd-even.kool -field-shadowing-1.kool -field-shadowing-2.kool -dynamic-dispatch-1.kool -dynamic-dispatch-2.kool -dynamic-dispatch-3.kool -new-in-field.kool -point.kool -tree-sum.kool -sorting.kool -matrix.kool -return-object.kool -this-explicit.kool -this-implicit.kool -method-sharing.kool -super-1.kool -super-2.kool -super-3.kool -exceptions-1.kool -exceptions-2.kool -threads.kool -cast-1.kool -cast-2.kool -cycle.kool -instanceOf.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool deleted file mode 100644 index 211a2c6aa68..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool +++ /dev/null @@ -1,39 +0,0 @@ -// Testing cast -// This program is OK in untyped KOOL, but it will be statically rejected -// by the type system of typed KOOL. - -class A { - var x; - method A() { - x=10; - } - method getA() { - return x; - } -} - -class B extends A { - var x; - method B() { - super.A(); - x=20; - } - method getB() { - return x; - } -} - -class Main { - method Main() { - var b = new B(), a = (A) b; - print("b.x = ", b.x, "\n"); - print("a.x = ", a.x, "\n"); - print("a.getB() = ", a.getB(), "\n"); // this should not type check. why? - print("a.getA() = ", a.getA(), "\n"); - } -} - -// b.x = 20 -// a.x = 10 -// a.getB() = 20 -// a.getA() = 10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool deleted file mode 100644 index a009faba7c9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool +++ /dev/null @@ -1,34 +0,0 @@ -// This program is correct here in the untyped version of KOOL, but -// it will be rejected by the type checker and will get stuck for -// various reasons in typed KOOL. See the same program there for more -// details. For now, imagine that each variable starting with letter -// x (or y, or z) will have the type X (or Y, or Z), and follow the -// comments on the right. - -class X { method X() {} } -class Y extends X { method Y() {} } -class Z extends X { method Z() {} } - -class Main { - method Main() { - var x = new X(); - var y = new Y(); - var z = new Z(); - var xy = new Y(); // "var" is "X" in typed KOOL; ok (Y subclass of X) - var xz = new Z(); // ok (Z is a subclass of X) - var yz = new Z(); // incompatible types; typed KOOL will get stuck - var y1 = new X(); // X is not a Y - var z1 = new X(); // X is not a Z - var x1 = y; // ok (Y is subclass of X) - var x2 = z; // ok (Z is subclass of X) - var y1 = (Y) x; // types ok but produces runtime error in typed KOOL - var z1 = (Z) x; // types ok but produces runtime error in typed KOOL - var y2 = (Y) x1; // types and runs ok (x1 is type Y) - var z2 = (Z) x2; // types and runs ok (x2 is type Z) - var y3 = (Y) z; // inconvertible types - var z3 = (Z) y; // inconvertible types - var o = z; // "o" declared of type "Object" in typed KOOL - var o1 = (Y) o; // types ok but produces runtime error in typed KOOL - print("OK\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool deleted file mode 100644 index 5e7040c0f05..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool +++ /dev/null @@ -1,31 +0,0 @@ -// Testing new, constructor, method invocation. - -class C { - var i,j; - method C(x) { - i = x; - j = ++x; - } - method add(d) { - i = i+d; - j = j-d; - } - method print2() { - print(i, " ", j, "\n"); - } -} - -class Main { - var a,b,o; - method Main(){ - a = b = 5; - o = new C(a); - o.print2(); - o.add(++b); - o.print2(); - } -} - - -// 5 6 -// 11 0 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool deleted file mode 100644 index 8d0dc600a1a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool +++ /dev/null @@ -1,21 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - method C1() {} - method m1() { return 1; } - method m2() { return m1(); } -} - -class C2 extends C1 { - method C2() {} - method m1() { return 2; } -} - -class Main { - method Main() { - var o1 = new C1(), o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o2.m1(), " ", o2.m2(), "\n"); - } -} - -// 1 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool deleted file mode 100644 index 21a7811d86b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool +++ /dev/null @@ -1,23 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - method C1() {} - method m1() { return 1; } - method m2() { return 100; } - method m3() { return m2(); } -} - -class C2 extends C1 { - method C2() {} - method m2() { return 2; } -} - -class Main { - method Main() { - var o1 = new C1(), o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o1.m3(), " ", - o2.m1(), " ", o2.m2(), " ", o2.m3(), "\n"); - } -} - -// 1 100 100 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool deleted file mode 100644 index 9eb457970b7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool +++ /dev/null @@ -1,57 +0,0 @@ -// This program illustrates a very interesting aspect of the typed version of -// KOOL, namely that if a method of type t1 -> t2 is overridden with -// one of type t1' -> t2', then it should be the case that t2' is a -// subtype of t2 and that t1 is a subtype of t1'. See the same -// program in typed KOOL for more comments in this. For now, just -// follow the control flow of this program keeping in mind that in the -// typed version of KOOL the variables a, b and c will have the types A, -// B, and C, respectively, and note how the type of method m1 is being -// made more concrete when overridden in class C. - -class A { - var x; - method A() { - x = 1; - } - method m1(b) { // meant to have type B->B - b.y = 10; - return b; - } -} - -class B extends A { - var y; - method B() { - super.A(); - y = 100; - } - method m2(b) { - return m1(b); // HOT-SPOT! If we override m1 into one of type C1->C2, - // then it should be the case that C1 <= B and B >= C2. - } -} - -class C extends B { - var z; - method C() { - super.B(); - z = 1000; - } - method m1(a) { - z = a.x; - return this; - } -} - -class Main { - method Main() { - var a = new A(), b = new B(), c = new C(); - print(b.y, " ", c.z, "\n"); - print((b.m2(b)).y, " ", (c.m2(b)).y, "\n"); - print(b.y, " ", c.z, "\n"); - } -} - -// 100 100 -// 10 100 -// 10 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool deleted file mode 100644 index b376873d08e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool +++ /dev/null @@ -1,27 +0,0 @@ -// This program tests the basic functionality of exceptions. - -class Main { - - method foo() { - try { - throw 5; - print(17); // should not be printed - } - catch(e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached - } - - method Main() { - try { - foo(); - } - catch(e) { - print(e,"\n"); // should print 7 - } - } - -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool deleted file mode 100644 index f8c52dc4b06..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool +++ /dev/null @@ -1,45 +0,0 @@ -// This tests throwing and catching objects. This is, in fact, how exceptions -// are expected to be handled in object-oriented languages. - -class Exception { - var v; - method Exception(v) { - print("Exception ", v, " thrown!\n"); - this.v = v; - } - method get() { - return v; - } -} - -class Exception2 extends Exception { - method Exception2(v) { - Exception(v); - } -} - -class Main { - - method foo() { - try { - throw new Exception(5); - print(17); // should not be printed - } catch(e) { // "Exception2 e" in typed KOOL - throw new Exception2(e.get() + 2); // unreachable in typed KOOl! - } - throw new Exception(-1); // should not be reached - } - - method Main() { - try { - foo(); - } catch(e) { - print(e.get(),"\n"); // should print 7 (5 in typed KOOL) - } - } - -} - -// Exception 5 thrown! -// Exception 7 thrown! -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool.out deleted file mode 100644 index 3d6918359da..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool.out +++ /dev/null @@ -1,3 +0,0 @@ -Exception 5 thrown! -Exception 7 thrown! -7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool deleted file mode 100644 index a74eb8f7b60..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool +++ /dev/null @@ -1,15 +0,0 @@ -// Testing recursion - -class Main { - method f(x) { - if (x <= 1) { return 1; } - else { return x * f(x - 1); } - } - method Main() { - print(f(f(5)), "\n"); - } -} - -// (5!)! - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool deleted file mode 100644 index 5f917dce2ed..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing shadowing of a field by another field and -// whether the object stack environment works. - -class C1 { - var x, y; - method C1() {} - method setx1(v) { x = v; } - method sety1(v) { y = v; } - method getx1() { return x; } - method gety1() { return y; } -} - -class C2 extends C1 { - var y; - method C2() {} - method sety2(v) { y = v; } - method getx2() { return x; } - method gety2() { return y; } -} - -class Main { - method Main() { - var o2 = new C2(); - o2.setx1(11); - o2.sety1(12); - o2.sety2(99); - print(o2.getx1(), " "); - print(o2.gety1(), " "); - print(o2.getx2(), " "); - print(o2.gety2(), "\n"); - } -} - -// 11 12 11 99 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool deleted file mode 100644 index 76da636ba59..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool +++ /dev/null @@ -1,29 +0,0 @@ -// Testing local variable shadowing a field - -class C { - var f; - method C(v) { - f = v; - } - method get() { return f; } -} - -class G { - var o; - method G(o) { - this.o = o; - } - method d() { - var f = 9; - return (o.get()); - } -} - -class Main { - method Main() { - var t = new C(1), y = new G(t); - print(y.d(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool deleted file mode 100644 index 4e269e70756..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool +++ /dev/null @@ -1,10 +0,0 @@ -// Testing field initialization and access. - -class Main { - var a=3; - method Main() { - print("a = ", a, "\n"); - } -} - -// a = 3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool deleted file mode 100644 index 7500409c703..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool +++ /dev/null @@ -1,9 +0,0 @@ -// Testing main - -class Main { - method Main() { - print("Hello world!\n"); - } -} - -// Hello world! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool deleted file mode 100644 index 13852aef426..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool +++ /dev/null @@ -1,38 +0,0 @@ -// Testing instance of - -class C { - method C() {} - method test() { - print("Instance of class C"); - if (this instanceOf C1) { print(1); } - if (this instanceOf C2) { print(2); } - if (this instanceOf C3) { print(3); } - print("\n"); - } -} - -class C1 extends C { - method C1() {} -} - -class C2 extends C { - method C2() {} -} - -class C3 extends C { - method C3() {} -} - -class Main { - method Main() { - (new C()).test(); - (new C1()).test(); - (new C2()).test(); - (new C3()).test(); - } -} - -// Instance of class C -// Instance of class C1 -// Instance of class C2 -// Instance of class C3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool b/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool deleted file mode 100644 index f45071ac15a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool +++ /dev/null @@ -1,99 +0,0 @@ -// This program tests multi-dimensional arrays. - -class Matrix { - var lines, columns, matrix; - - method Matrix(x,y) { - lines = x; - columns = y; - var a[x,y]; - matrix = a; - } - - method readMatrix() { - for (var i=0; i 0 && array[j] > v) { // doing the loop only up to 1 - array[j + 1] = array[j]; - j = j - 1; - } - if (array[0] > v) { - array[1] = array[0]; - array[0] = v; - } else { array[j+1] = v; } - } - } - - method bubbleSort() { - for (var i=0; i array[j + 1]) { - var t = array[j + 1]; - array[j + 1] = array[j]; - array[j] = t; - } - } - } - } - - method siftDown(root, bottom) { - var done = false, maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (array[root*2] > array[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (array[root] < array[maxChild]) { - var t = array[root]; - array[root] = array[maxChild]; - array[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } - } - - method heapSort() { - var i = size/2 - 1; - while (i >= 0) { - siftDown(i, size - 1); - i = i - 1; - } - i = size - 1; - while (i >= 1 ) { - var t = array[0]; - array[0] = array[i] ; - array[i] = t; - siftDown(0, i - 1); - i = i - 1; - } - } - -} - - -class Main { - - method map(m,f) { - for (var i=0; i 1 - C1 |-> 1 - C2 |-> 1 - -Methods invoked: - Main.Main |-> 1 - C1.C1 |-> 1 - C1.m1 |-> 2 - C1.m2 |-> 2 - C2.C2 |-> 1 - C2.m1 |-> 2 - -The tests folder contains the new outputs of all the KOOL programs -considered so far, plus more. The order in which you output the classes -or the methods in the two statistics is irrelevant, so do not worry about it. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool deleted file mode 100644 index 3ef184c1eaa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool +++ /dev/null @@ -1,39 +0,0 @@ -// Testing cast -// This program should execute but should not type check - -class A { - int x; - void A() { - x=10; - } - int getA() { - return x; - } -} - -class B extends A { - int x; - void B() { - super.A(); - x=20; - } - int getB() { - return x; - } -} - -class Main { - void Main() { - B b = new B(); - A a = (A) b; - print("b.x = ", b.x, "\n"); - print("a.x = ", a.x, "\n"); - print("a.getB() = ", a.getB(), "\n"); // this should not type check. why? - print("a.getA() = ", a.getA(), "\n"); - } -} - -// b.x = 20 -// a.x = 10 -// a.getB() = 20 -// a.getA() = 10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool.out deleted file mode 100644 index 5bccfcd542f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-1.kool.out +++ /dev/null @@ -1,20 +0,0 @@ -b.x = 20 -a.x = 10 -a.getB() = 20 -a.getA() = 10 - - .TCell - - - B |-> 1 - Main |-> 1 - - - A . A |-> 1 - A . getA |-> 1 - B . B |-> 1 - B . getB |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool deleted file mode 100644 index 439626d3e9d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool +++ /dev/null @@ -1,27 +0,0 @@ -class X { void X() {} } -class Y extends X { void Y() {} } -class Z extends X { void Z() {} } - -class Main { - void Main() { - X x = new X(); - Y y = new Y(); - Z z = new Z(); - X xy = new Y(); // ok (y is subclass of X) - X xz = new Z(); // ok (Z is subclass of X) -// Y yz = new Z(); // incompatible types -// Y y1 = new X(); // X is not a Y -// Z z1 = new X(); // X is not a Z - X x1 = y; // ok (y is subclass of X) - X x2 = z; // ok (z is subclass of X) -// Y y1 = (Y) x; // types ok but produces runtime error -// Z z1 = (Z) x; // types ok but produces runtime error - Y y2 = (Y) x1; // types and runs ok (x1 is type Y) - Z z2 = (Z) x2; // types and runs ok (x2 is type Z) -// Y y3 = (Y) z; // inconvertible types -// Z z3 = (Z) y; // inconvertible types - Object o = z; -// Object o1 = (Y) o; // types ok but produces runtime error - print("OK\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool.out deleted file mode 100644 index 513bc2580a5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cast-2.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -OK - - .TCell - - - Main |-> 1 - X |-> 1 - Y |-> 2 - Z |-> 2 - - - Main . Main |-> 1 - X . X |-> 1 - Y . Y |-> 2 - Z . Z |-> 2 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool deleted file mode 100644 index fb850a9ee5e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool +++ /dev/null @@ -1,24 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -class Main { - int collatz(int n) { - int s=0; - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - return s; - } - - void Main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(), s; - for (int i=1; i<=m; ++i) { - print("Testing Collatz' conjecture for n = ",i," ... "); - s = collatz(i); - print("Done! It took ",s," steps.\n"); - } - print("Done. It appears to hold.\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.in b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.out deleted file mode 100644 index 519afc20ac2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/collatz.kool.out +++ /dev/null @@ -1,23 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Testing Collatz' conjecture for n = 6 ... Done! It took 8 steps. -Testing Collatz' conjecture for n = 7 ... Done! It took 16 steps. -Testing Collatz' conjecture for n = 8 ... Done! It took 3 steps. -Testing Collatz' conjecture for n = 9 ... Done! It took 19 steps. -Testing Collatz' conjecture for n = 10 ... Done! It took 6 steps. -Done. It appears to hold. - - .TCell - - - Main |-> 1 - - - Main . Main |-> 1 - Main . collatz |-> 10 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool deleted file mode 100644 index 3990c6be83d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool +++ /dev/null @@ -1,32 +0,0 @@ -// Testing new, constructor, method invocation. - -class C { - int i,j; - void C(int x) { - i = x; - j = ++x; - } - void add(int d) { - i = i+d; - j = j-d; - } - void print2() { - print(i, " ", j, "\n"); - } -} - -class Main { - int a,b; - C o; - void Main(){ - a = b = 5; - o = new C(a); - o.print2(); - o.add(++b); - o.print2(); - } -} - - -// 5 6 -// 11 0 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool.out deleted file mode 100644 index eaf127f366f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/constructor.kool.out +++ /dev/null @@ -1,17 +0,0 @@ -5 6 -11 0 - - .TCell - - - C |-> 1 - Main |-> 1 - - - C . C |-> 1 - C . add |-> 1 - C . print2 |-> 2 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cycle.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cycle.kool deleted file mode 100644 index c70b3118edf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/cycle.kool +++ /dev/null @@ -1,19 +0,0 @@ -// This program shows a cycle in the class hierachy. None of the -// dynamic semantics catches it, both of them hanging on creating a -// new object. The program should run if you don't create any new object. - -class C1 extends C2 { - void C1() { } -} - -class C2 extends C1 { - void C2() { } -} - -class Main { - void Main() { -// Should work if you comment next line - new C1(); - print("No cycle detected\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool deleted file mode 100644 index 81c2e84e462..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool +++ /dev/null @@ -1,22 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - void C1() {} - int m1() { return 1; } - int m2() { return m1(); } -} - -class C2 extends C1 { - void C2() {} - int m1() { return 2; } -} - -class Main { - void Main() { - C1 o1 = new C1(); - C2 o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o2.m1(), " ", o2.m2(), "\n"); - } -} - -// 1 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool.out deleted file mode 100644 index 458165c52b0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-1.kool.out +++ /dev/null @@ -1,19 +0,0 @@ -1 1 2 2 - - .TCell - - - C1 |-> 1 - C2 |-> 1 - Main |-> 1 - - - C1 . C1 |-> 1 - C1 . m1 |-> 2 - C1 . m2 |-> 2 - C2 . C2 |-> 1 - C2 . m1 |-> 2 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool deleted file mode 100644 index 973c829d35c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool +++ /dev/null @@ -1,24 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - void C1() {} - int m1() { return 1; } - int m2() { return 100; } - int m3() { return m2(); } -} - -class C2 extends C1 { - void C2() {} - int m2() { return 2; } -} - -class Main { - void Main() { - C1 o1 = new C1(); - C2 o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o1.m3(), " ", - o2.m1(), " ", o2.m2(), " ", o2.m3(), "\n"); - } -} - -// 1 100 100 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool.out deleted file mode 100644 index c04af062584..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-2.kool.out +++ /dev/null @@ -1,20 +0,0 @@ -1 100 100 1 2 2 - - .TCell - - - C1 |-> 1 - C2 |-> 1 - Main |-> 1 - - - C1 . C1 |-> 1 - C1 . m1 |-> 2 - C1 . m2 |-> 2 - C1 . m3 |-> 2 - C2 . C2 |-> 1 - C2 . m2 |-> 2 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool deleted file mode 100644 index 6cb76c9d133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool +++ /dev/null @@ -1,74 +0,0 @@ -// This program illustrates that if a method of type t1 -> t2 is -// overridden with one of type t1' -> t2', then it should be the case -// that t2' is a subtype of t2 and that t1 is a subtype of t1'. This is -// consistent with the type ordering over function types, namely: -// -// t1 -> t2 >= t1' -> t2' iff t1 <= t1' and t2 >= t2' -// -// We say that function types are co-variant with their codomains and are -// contra-variant with their domains. A simple way to remember this is -// that constants are particular functions (with no arguments), so the -// function and its codomain must vary the same way. - -class A { - int x; - void A() { - x = 1; - } - B m1(B b) { - b.y = 10; - return b; - } -} - -class B extends A { - int y; - void B() { - super.A(); - y = 100; - } - B m2(B b) { - return m1(b); // HOT-SPOT -// If m1 gets overridden in an extension of B, then the following must hold: -// (1) The new m1 should not get stuck when called above, so B must be -// a subtype of its new argument's type. -// (2) The type of the value returned by the new m1 should be a subtype -// of B, so it can serve as a value returned by m2(). -// Hence, if we override m1 into one of type C1 -> C2, then it should be -// the case that C1 <= B and B >= C2. This is precisely what we do next. - } -} - -class C extends B { - int z; - void C() { - super.B(); - z = 1000; - } - C m1(A a) { - z = a.x; - return this; - } -// To see how the program gets stuck under dynamic type checking, you -// can do the following changes on the method m1 above: -// (1) Change the class of its argument into C. Then the -// program will get stuck trying to show, at the HOT-SPOT, that the type -// B of b is a subtype of the new C. Or -// (2) Change the class of its result into A, and return -// "new A()" instead of "this". Then the program will get stuck -// trying to show that the returned value at HOT-SPOT, of type A, -// has the expected return type of m2, namely B. -// The static semantics should also catch these errors (even when you -// don't return "new A()" instead of "this"). -} - -class Main { - void Main() { - A a = new A(); - B b = new B(); - C c = new C(); - print(b.y, " ", c.z, "\n"); - print((b.m2(b)).y, " ", (c.m2(b)).y, "\n"); - print(b.y, " ", c.z, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool.out deleted file mode 100644 index 8dbf0530648..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/dynamic-dispatch-3.kool.out +++ /dev/null @@ -1,23 +0,0 @@ -100 1000 -10 100 -10 1 - - .TCell - - - A |-> 1 - B |-> 1 - C |-> 1 - Main |-> 1 - - - A . A |-> 3 - A . m1 |-> 1 - B . B |-> 2 - B . m2 |-> 2 - C . C |-> 1 - C . m1 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool deleted file mode 100644 index d91d78edb55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool +++ /dev/null @@ -1,27 +0,0 @@ -// This program tests the basic functionality of exceptions - -class Main { - - void foo() { - try { - throw 5; - print(17); // should not be printed - } - catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached - } - - void Main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } - } - -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool.out deleted file mode 100644 index 133fb607c51..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-1.kool.out +++ /dev/null @@ -1,13 +0,0 @@ -7 - - .TCell - - - Main |-> 1 - - - Main . Main |-> 1 - Main . foo |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool deleted file mode 100644 index f8df6bc248b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool +++ /dev/null @@ -1,44 +0,0 @@ -class Exception { - int v; - void Exception(int v) { - print("Exception ", v, " thrown!\n"); - this.v = v; - } - int get() { - return v; - } -} - -class Exception2 extends Exception { - void Exception2(int v) { - (Exception(v)); // Parentheses tell the parser this is not a type decl. - // Alternatively, use super.Exception or this.Exception. - // This is an artifact of our "too generous" grammar, - // allowing declarations like "int (v);". Java doesn't. - } -} - -class Main { - - void foo() { - try { - throw new Exception(5); - print(17); // should not be printed - } catch(Exception2 e) { - throw new Exception2(e.get() + 2); // should not be reached - } - throw new Exception(-1); // should not be reached - } - - - void Main() { - try { - foo(); - } catch(Exception e) { - print(e.get(),"\n"); // should print 5 - } - } - -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool.out deleted file mode 100644 index d3428dfe636..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/exceptions-2.kool.out +++ /dev/null @@ -1,17 +0,0 @@ -Exception 5 thrown! -5 - - .TCell - - - Exception |-> 1 - Main |-> 1 - - - Exception . Exception |-> 1 - Exception . get |-> 1 - Main . Main |-> 1 - Main . foo |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool deleted file mode 100644 index e88fde2dfa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool +++ /dev/null @@ -1,13 +0,0 @@ -// Testing recursion - -class Main { - int f(int x) { - if (x <= 1) { return 1; } - else { return x * f(x - 1); } - } - void Main() { - print(f(f(5)), "\n"); - } -} - -// (5!)! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool.out deleted file mode 100644 index 58f2715dc9e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/factorial.kool.out +++ /dev/null @@ -1,13 +0,0 @@ -6689502913449127057588118054090372586752746333138029810295671352301633557244962989366874165271984981308157637893214090552534408589408121859898481114389650005964960521256960000000000000000000000000000 - - .TCell - - - Main |-> 1 - - - Main . Main |-> 1 - Main . f |-> 125 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool deleted file mode 100644 index a416212aabf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing shadowing of a field by another field and -// whether the object stack environment works. - -class C1 { - int x, y; - void C1() {} - void setx1(int v) { x = v; } - void sety1(int v) { y = v; } - int getx1() { return x; } - int gety1() { return y; } -} - -class C2 extends C1 { - int y; - void C2() {} - void sety2(int v) { y = v; } - int getx2() { return x; } - int gety2() { return y; } -} - -class Main { - void Main() { - C2 o2 = new C2(); - o2.setx1(11); - o2.sety1(12); - o2.sety2(99); - print(o2.getx1(), " "); - print(o2.gety1(), " "); - print(o2.getx2(), " "); - print(o2.gety2(), "\n"); - } -} - -// 11 12 11 99 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool.out deleted file mode 100644 index bfde6176918..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-1.kool.out +++ /dev/null @@ -1,21 +0,0 @@ -11 12 11 99 - - .TCell - - - C2 |-> 1 - Main |-> 1 - - - C1 . getx1 |-> 1 - C1 . gety1 |-> 1 - C1 . setx1 |-> 1 - C1 . sety1 |-> 1 - C2 . C2 |-> 1 - C2 . getx2 |-> 1 - C2 . gety2 |-> 1 - C2 . sety2 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool deleted file mode 100644 index fc192a55f91..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool +++ /dev/null @@ -1,30 +0,0 @@ -// Testing local variable shadowing a field - -class C { - int f; - void C(int v) { - f = v; - } - int get() { return f; } -} - -class G { - C o; - void G(C o) { - this.o = o; - } - int d() { - int f = 9; - return (o.get()); - } -} - -class Main { - void Main() { - C t = new C(1); - G y = new G(t); - print(y.d(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool.out deleted file mode 100644 index 287a3818491..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field-shadowing-2.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -1 - - .TCell - - - C |-> 1 - G |-> 1 - Main |-> 1 - - - C . C |-> 1 - C . get |-> 1 - G . G |-> 1 - G . d |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool deleted file mode 100644 index 1baf17f679f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool +++ /dev/null @@ -1,10 +0,0 @@ -// Testing field initialization and access. - -class Main { - int a=3; - void Main() { - print("a = ", a, "\n"); - } -} - -// a = 3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool.out deleted file mode 100644 index 014874b13db..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/field.kool.out +++ /dev/null @@ -1,12 +0,0 @@ -a = 3 - - .TCell - - - Main |-> 1 - - - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool deleted file mode 100644 index 56f5cbed3c1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool +++ /dev/null @@ -1,45 +0,0 @@ -// This program tests the subtyping of function types - -class A { - void A() {} -} - -class B extends A { - void B() {} -} - -class C extends B { - void C() {} - A AA(A a) {} - B AB(A a) {} - C AC(A a) {} - A BA(B b) {} - B BB(B b) {} - C BC(B b) {} - A CA(C c) {} - B CB(C c) {} - C CC(C c) {} -} - -class Main extends C { - void Main() { - C c = new C(); - A->A aa = c.AA; - A->B ab = c.AB; - A->C ac = c.AC; - B->A ba = c.BA; - B->B bb = c.BB; - B->C bc = c.BC; - C->A ca = c.CA; - C->B cb = c.CB; - C->C cc = c.CC; - ca = ba = aa = ab = ac; // OK: C->A > B->A > A->A > A->B > A->C - ca = cb = cc = bc = ac; // OK: C->A > C->B > C->C > B->C > A->C - ba = bb = ab; // OK: B->A > B->B > A->B - cb = bb = bc; // OK: C->B > B->B > B->C - print("OK\n"); -// ac = bc; print("Wrong! A->C < B->C\n"); -// bb = cc; print("Wrong! Incompatible types.\n"); - print("Done\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool.out deleted file mode 100644 index 1abb1f28b65..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/function-types.kool.out +++ /dev/null @@ -1,15 +0,0 @@ -OK -Done - - .TCell - - - C |-> 1 - Main |-> 1 - - - C . C |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool deleted file mode 100644 index 7077ea05cd0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool +++ /dev/null @@ -1,9 +0,0 @@ -// Testing main - -class Main { - void Main() { - print("Hello world!\n"); - } -} - -// Hello world! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool.out deleted file mode 100644 index 9fd07e00628..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/hello-world.kool.out +++ /dev/null @@ -1,12 +0,0 @@ -Hello world! - - .TCell - - - Main |-> 1 - - - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool deleted file mode 100644 index e533429e937..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool +++ /dev/null @@ -1,38 +0,0 @@ -// Testing instance of - -class C { - void C() {} - void test() { - print("Instance of class C"); - if (this instanceOf C1) { print(1); } - if (this instanceOf C2) { print(2); } - if (this instanceOf C3) { print(3); } - print("\n"); - } -} - -class C1 extends C { - void C1() {} -} - -class C2 extends C { - void C2() {} -} - -class C3 extends C { - void C3() {} -} - -class Main { - void Main() { - (new C()).test(); - (new C1()).test(); - (new C2()).test(); - (new C3()).test(); - } -} - -// Instance of class C -// Instance of class C1 -// Instance of class C2 -// Instance of class C3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool.out deleted file mode 100644 index f90bfd42694..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/instanceOf.kool.out +++ /dev/null @@ -1,24 +0,0 @@ -Instance of class C -Instance of class C1 -Instance of class C2 -Instance of class C3 - - .TCell - - - C1 |-> 1 - C2 |-> 1 - C3 |-> 1 - C |-> 1 - Main |-> 1 - - - C1 . C1 |-> 1 - C2 . C2 |-> 1 - C3 . C3 |-> 1 - C . C |-> 1 - C . test |-> 4 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool deleted file mode 100644 index a1fa7832a99..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool +++ /dev/null @@ -1,41 +0,0 @@ -class A { - int x; - void A(int x) { - this.x = x; - } -} - -class B { - A a; - int x; - void B(int x) { - if(x<7) { - a = new A(x); - } - this.x = x; - } -} - -class C { - A a; - B b; - int c; - void C(int x) { - if(x>0) { - a = new A(x); - if(x>1) { - b = new B(x); - } - } - c = x; - } -} - -class Main { - void Main() { - for(int i=0; i<10; ++i) { - print((new C(i)).c," "); - } - print("\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool.out deleted file mode 100644 index d00163cdabf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/many-objects.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -0 1 2 3 4 5 6 7 8 9 - - .TCell - - - A |-> 14 - B |-> 8 - C |-> 10 - Main |-> 1 - - - A . A |-> 14 - B . B |-> 8 - C . C |-> 10 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/matrix.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/matrix.kool deleted file mode 100644 index 2bd41ac5a75..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/matrix.kool +++ /dev/null @@ -1,101 +0,0 @@ -// This program tests multi-dimensional arrays. - -class Matrix { - int lines, columns; - int[][] matrix; - - void Matrix(int x, int y) { - lines = x; - columns = y; - int a[x,y]; - matrix = a; - } - - void readMatrix() { - for (int i=0; i - .TCell - - - Main |-> 1 - Matrix |-> 3 - - - Main . Main |-> 1 - Matrix . Matrix |-> 3 - Matrix . copy |-> 2 - Matrix . multiply |-> 2 - Matrix . printMatrix |-> 5 - Matrix . readMatrix |-> 1 - Matrix . transpose |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool deleted file mode 100644 index b0242ee866f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool +++ /dev/null @@ -1,42 +0,0 @@ -// This program shows how method closures can be returned by other -// methods, bound to local variables, and then invoked. - -class A { - int c; - void A() { - c = 0; - } - void inc() { - ++c; - } -} - -class B { - A a = new A(); - void->void m = a.inc; - int x = 0; - void B() { - print(a.c, " "); - m(); - print(a.c, " "); - } - void->void getM() { - return m; - } -} - -class Main { - void->void f; - void Main() { - B b = new B(); - void->void t = f = b.getM(); - f(); - print(b.a.c, " "); - t(); - print(b.a.c, " "); - (b.getM())(); // shows the higher-order aspect of KOOL - print(b.a.c, "\n"); - } -} - -// 0 1 2 3 4 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool.out deleted file mode 100644 index 2045aa7d1e1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/method-sharing.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -0 1 2 3 4 - - .TCell - - - A |-> 1 - B |-> 1 - Main |-> 1 - - - A . A |-> 1 - A . inc |-> 4 - B . B |-> 1 - B . getM |-> 2 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool deleted file mode 100644 index d71a0ce5ee8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool +++ /dev/null @@ -1,15 +0,0 @@ -// Testing new and method invocation. - -class C { - int a=5; - void C() {} - int g() { return a; } -} - -class Main { - void Main() { - print("a = ", (new C()).g(), "\n"); - } -} - -// a = 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool.out deleted file mode 100644 index bb39019b108..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/new.kool.out +++ /dev/null @@ -1,15 +0,0 @@ -a = 5 - - .TCell - - - C |-> 1 - Main |-> 1 - - - C . C |-> 1 - C . g |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool deleted file mode 100644 index 2c01343cdcf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing mutually recursive uses of this.method - -class OddEven { - int n; - void OddEven(int x) { - n = x; - } - int even() { - if (n == 0) { - return 1; - } - else { - n = n - 1; - return this.odd(); - } - } - int odd() { - if (n == 0) { - return 0; - } - else { - n = n - 1; - return this.even(); - } - } -} - -class Main { - void Main() { - print((new OddEven(17)).odd(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool.out deleted file mode 100644 index 4747e861d7b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/odd-even.kool.out +++ /dev/null @@ -1,16 +0,0 @@ -1 - - .TCell - - - Main |-> 1 - OddEven |-> 1 - - - Main . Main |-> 1 - OddEven . OddEven |-> 1 - OddEven . even |-> 9 - OddEven . odd |-> 9 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool deleted file mode 100644 index 9d8903bf0f0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool +++ /dev/null @@ -1,44 +0,0 @@ -class Point { - int x, y; - void Point(int initx, int inity) { - x = initx; - y = inity; - } - void move(int dx, int dy) { - x = x+dx; - y = y+dy; - } - void printLocation() { - print("x = ", x, ", ", "y = ", y, "\n"); - } -} - -class ColorPoint extends Point { - int color; - void ColorPoint(int initx, int inity, int initcolor) { - this.Point(initx, inity); - color = initcolor; - } - void setColor(int c) { - color = c; - } - void printColor() { - print("color = ", color, "\n"); - } -} - -class Main { - void Main() { - Point p = new Point(3,4); - ColorPoint cp = new ColorPoint(10,20,87); - p.move(1,2); - p.printLocation(); - cp.move(7, 8); - cp.printLocation(); - cp.printColor(); - } -} - -// x = 4, y = 6 -// x = 17, y = 28 -// color = 87 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool.out deleted file mode 100644 index 1a1fe79c270..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/point.kool.out +++ /dev/null @@ -1,21 +0,0 @@ -x = 4, y = 6 -x = 17, y = 28 -color = 87 - - .TCell - - - ColorPoint |-> 1 - Main |-> 1 - Point |-> 1 - - - ColorPoint . ColorPoint |-> 1 - ColorPoint . printColor |-> 1 - Main . Main |-> 1 - Point . Point |-> 2 - Point . move |-> 2 - Point . printLocation |-> 2 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool deleted file mode 100644 index 728cb518c62..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool +++ /dev/null @@ -1,29 +0,0 @@ -// Test returning objects in methods and then invoking methods on them - -class C { - int val; - void C(int v) { - val = v; - } - G m1() { - return (new G(val + 9)); - } -} - -class G { - int a; - void G(int t) { - a = t; - } - void print2() { print(a, "\n"); } -} - -class Main { - void Main() { - ((new C(1)).m1()).print2(); - } -} - -// 10 - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool.out deleted file mode 100644 index b5451663e3a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/return-object.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -10 - - .TCell - - - C |-> 1 - G |-> 1 - Main |-> 1 - - - C . C |-> 1 - C . m1 |-> 1 - G . G |-> 1 - G . print2 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/sorting.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/sorting.kool deleted file mode 100644 index 8ef5970228b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/sorting.kool +++ /dev/null @@ -1,146 +0,0 @@ -// This program defines a class Sorting which includes several sorting -// algorithms. It also illustrates how method closures can be stored -// in an array and then executed one by one (see method map in main). - -class Sorting { - int[] array; - int size; - - void Sorting(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i=0; i 0 && array[j] > v) { // doing the loop only up to 1 - array[j + 1] = array[j]; - j = j - 1; - } - if (array[0] > v) { - array[1] = array[0]; - array[0] = v; - } else { array[j+1] = v; } - } - } - - void bubbleSort() { - for (int i=0; i array[j + 1]) { - int t = array[j + 1]; - array[j + 1] = array[j]; - array[j] = t; - } - } - } - } - - void siftDown(int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (array[root*2] > array[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (array[root] < array[maxChild]) { - int t = array[root]; - array[root] = array[maxChild]; - array[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } - } - - void heapSort() { - int i = size/2 - 1; - while (i >= 0) { - siftDown(i, size - 1); - i = i - 1; - } - i = size - 1; - while (i >= 1 ) { - int t = array[0]; - array[0] = array[i] ; - array[i] = t; - siftDown(0, i - 1); - i = i - 1; - } - } - -} - - -class Main { - - void map(string[] m, (void -> void)[] f) { - for (int i=0; i - .TCell - - - Main |-> 1 - Sorting |-> 1 - - - Main . Main |-> 1 - Main . map |-> 1 - Sorting . Sorting |-> 1 - Sorting . bubbleSort |-> 1 - Sorting . heapSort |-> 1 - Sorting . insertionSort |-> 1 - Sorting . printArray |-> 5 - Sorting . reverse |-> 3 - Sorting . siftDown |-> 5 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool deleted file mode 100644 index 9651678a4f0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool +++ /dev/null @@ -1,33 +0,0 @@ -// Testing dynamic method dispatch and super - -class C1 { - void C1() {} - int m1() { - return(m2()); - } - int m2() { return 13; } -} - -class C2 extends C1 { - void C2() {} - int m1() { return 22; } - int m2() { return 23; } - int m3() { - return(super.m1()); - } -} - -class C3 extends C2 { - void C3() {} - int m1() { return 32; } - int m2() { return 33; } -} - -class Main { - void Main() { - C3 o3 = new C3(); - print(o3.m3(), "\n"); - } -} - -// 33 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool.out deleted file mode 100644 index 43e5f0d8b65..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-1.kool.out +++ /dev/null @@ -1,17 +0,0 @@ -33 - - .TCell - - - C3 |-> 1 - Main |-> 1 - - - C1 . m1 |-> 1 - C2 . m3 |-> 1 - C3 . C3 |-> 1 - C3 . m2 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool deleted file mode 100644 index 42223780f35..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool +++ /dev/null @@ -1,75 +0,0 @@ -// Testing super in combination with dynamic method dispatch - -class A { - int i; - int j; - int A() { - i = 1; - j = i + 1; - return j; - } - int f() { - return A(); - } - int g() { - return f(); - } - int h() { - return (i + j); - } -} - -class B extends A { - int j; - int k; - int A() { - return this.B(); - } - int B() { - super.A(); - j = 10; - k = j + 1; - return k; - } - int g() { - return super.h(); - } - int h() { - return g(); - } -} - -class C extends B { - int A() { - return super.A(); - } - int B() { - return super.B(); - } - int C() { - i = 100; - j = i + 1; - k = j + 1; - return k; - } - int g() { - return (i + k * j); - } -} - -class Main { - void p(A o) { - print(o.f(), " "); - print(o.g(), " "); - print(o.h(), "\n"); - } - void Main() { - this.p(new A()); - this.p(new B()); - this.p(new C()); - } -} - -// 2 2 3 -// 11 3 3 -// 11 111 111 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool.out deleted file mode 100644 index bcbc919d853..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-2.kool.out +++ /dev/null @@ -1,30 +0,0 @@ -2 2 3 -11 3 3 -11 111 111 - - .TCell - - - A |-> 1 - B |-> 1 - C |-> 1 - Main |-> 1 - - - A . A |-> 6 - A . f |-> 4 - A . g |-> 1 - A . h |-> 3 - B . A |-> 2 - B . B |-> 3 - B . g |-> 2 - B . h |-> 2 - C . A |-> 1 - C . B |-> 1 - C . C |-> 1 - C . g |-> 2 - Main . Main |-> 1 - Main . p |-> 3 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool deleted file mode 100644 index 7feb715fa93..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool +++ /dev/null @@ -1,39 +0,0 @@ -// Testing field shadowing and super. - -class C1 { - int x, y; - void C1() { - x=1; - y=2; - } -} - -class C2 extends C1 { - int y, z; - void C2() { - C1(); - y=20; - z=super.y; - } -} - -class C3 extends C2 { - int x, y, z, u, w; - void C3() { - C2(); - x=100; - y=200; - z=super.x; - u=super.y; - w=super.z; - } -} - -class Main { - void Main() { - C3 o = new C3(); - print(o.x, " ", o.y, " ", o.z, " ", o.u, " ", o.w, "\n"); - } -} - -// 100 200 1 20 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool.out deleted file mode 100644 index 9e2d10c3f8b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/super-3.kool.out +++ /dev/null @@ -1,16 +0,0 @@ -100 200 1 20 2 - - .TCell - - - C3 |-> 1 - Main |-> 1 - - - C1 . C1 |-> 1 - C2 . C2 |-> 1 - C3 . C3 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool deleted file mode 100644 index 23e9033d01b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool +++ /dev/null @@ -1,19 +0,0 @@ -// Testing the explicit use of "this" - -class C { - void C() {} - int m1() { - return this.m2(); - } - int m2() { - return 13; - } -} - -class Main { - void Main() { - print((new C()).m1(), "\n"); - } -} - -// 13 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool.out deleted file mode 100644 index 3594387c1cc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-explicit.kool.out +++ /dev/null @@ -1,16 +0,0 @@ -13 - - .TCell - - - C |-> 1 - Main |-> 1 - - - C . C |-> 1 - C . m1 |-> 1 - C . m2 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool deleted file mode 100644 index 3649d9c76b1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool +++ /dev/null @@ -1,19 +0,0 @@ -// Testing the implicit use of "this" - -class C { - void C() {} - int m1() { - return m2(); - } - int m2() { - return 13; - } -} - -class Main { - void Main() { - print((new C()).m1(), "\n"); - } -} - -// 13 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool.out deleted file mode 100644 index 3594387c1cc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/this-implicit.kool.out +++ /dev/null @@ -1,16 +0,0 @@ -13 - - .TCell - - - C |-> 1 - Main |-> 1 - - - C . C |-> 1 - C . m1 |-> 1 - C . m2 |-> 1 - Main . Main |-> 1 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool deleted file mode 100644 index bb54a00cedc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool +++ /dev/null @@ -1,58 +0,0 @@ -// Testing threads, making sure that the newly created threads share -// the object environment with their parent threads. If that were not -// the case, then the newly created threads below would get stuck on -// looking up run(), as run is a member in their parent thread's object. - -class Thread { - void Thread() { } - - void run() { } // you are supposed to override this method - - void start() { - spawn { run(); }; - } -} - - -class Cell { - int v; - - void Cell(int v) { - this.v = v; - } - - void inc() { - ++v; - } - -} - - -class MyThread extends Thread { - Cell c; - - void MyThread(Cell c) { - this.c = c; - } - - void run() { - c.inc(); - } - -} - - -class Main { - - void Main() { - Cell c = new Cell(7); - MyThread t1 = new MyThread(c); - MyThread t2 = new MyThread(c); - t1.start(); - t2.start(); - print(c.v,"\n"); - } - -} - -// 7, 8, or 9. Use the "--search" option to see all three behaviors diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool.out deleted file mode 100644 index be282613f5c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/threads.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -9 - -========== -Statistics -========== - -Objects created: - Cell |-> 1 - Main |-> 1 - MyThread |-> 2 - -Methods invoked: - Cell.Cell |-> 1 - Cell.inc |-> 2 - Main.Main |-> 1 - MyThread.MyThread |-> 2 - MyThread.run |-> 2 - Thread.start |-> 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool deleted file mode 100644 index abf5aa5f034..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool +++ /dev/null @@ -1,37 +0,0 @@ -// Building and traversing a tree. - -class Summable { // Class Summable is not needed in dynamically typed KOOL - void Summable() {} // Needed in statically typed KOOL; moreover, it needs - int sum() {} // to be consistently typed in extensions. -} - -class Node extends Summable { - Summable left, right; - void Node(Summable left, Summable right) { - this.left = left; - this.right = right; - } - int sum() { - return (left.sum() + right.sum()); - } -} - -class Leaf extends Summable { - int val; - void Leaf(int val) { - this.val = val; - } - int sum() { - return val; - } -} - -class Main { - void Main() { - Node o; - o = new Node(new Node(new Leaf(3), new Leaf(4)), new Leaf(5)); - print(o.sum(), "\n"); - } -} - -// 12 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool.out deleted file mode 100644 index 92e1354675b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/profiling/tests/tree-sum.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -12 - - .TCell - - - Leaf |-> 3 - Main |-> 1 - Node |-> 2 - - - Leaf . Leaf |-> 3 - Leaf . sum |-> 3 - Main . Main |-> 1 - Node . Node |-> 2 - Node . sum |-> 2 - - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-1.kool.out deleted file mode 100644 index f1cc7fec100..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-1.kool.out +++ /dev/null @@ -1,4 +0,0 @@ -b.x = 20 -a.x = 10 -a.getB() = 20 -a.getA() = 10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-2.kool.out deleted file mode 100644 index d86bac9de59..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-2.kool.out +++ /dev/null @@ -1 +0,0 @@ -OK diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.in b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.out deleted file mode 100644 index 5be199e0e74..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.out +++ /dev/null @@ -1,11 +0,0 @@ -Testing Collatz' conjecture up to what number? Testing Collatz' conjecture for n = 1 ... Done! It took 0 steps. -Testing Collatz' conjecture for n = 2 ... Done! It took 1 steps. -Testing Collatz' conjecture for n = 3 ... Done! It took 7 steps. -Testing Collatz' conjecture for n = 4 ... Done! It took 2 steps. -Testing Collatz' conjecture for n = 5 ... Done! It took 5 steps. -Testing Collatz' conjecture for n = 6 ... Done! It took 8 steps. -Testing Collatz' conjecture for n = 7 ... Done! It took 16 steps. -Testing Collatz' conjecture for n = 8 ... Done! It took 3 steps. -Testing Collatz' conjecture for n = 9 ... Done! It took 19 steps. -Testing Collatz' conjecture for n = 10 ... Done! It took 6 steps. -Done. It appears to hold. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/constructor.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/constructor.kool.out deleted file mode 100644 index fec2f75c9e7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/constructor.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -5 6 -11 0 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-1.kool.out deleted file mode 100644 index 1409b1c7c80..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-1.kool.out +++ /dev/null @@ -1 +0,0 @@ -1 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-2.kool.out deleted file mode 100644 index fc18a986b58..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-2.kool.out +++ /dev/null @@ -1 +0,0 @@ -1 100 100 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-3.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-3.kool.out deleted file mode 100644 index 7d443857d52..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-3.kool.out +++ /dev/null @@ -1,3 +0,0 @@ -100 1000 -10 100 -10 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-1.kool.out deleted file mode 100644 index 7f8f011eb73..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-1.kool.out +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-2.kool.out deleted file mode 100644 index 829309fe17c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-2.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -Exception 5 thrown! -5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/factorial.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/factorial.kool.out deleted file mode 100644 index 02041646d6c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/factorial.kool.out +++ /dev/null @@ -1 +0,0 @@ -6689502913449127057588118054090372586752746333138029810295671352301633557244962989366874165271984981308157637893214090552534408589408121859898481114389650005964960521256960000000000000000000000000000 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-1.kool.out deleted file mode 100644 index f5d5226a299..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-1.kool.out +++ /dev/null @@ -1 +0,0 @@ -11 12 11 99 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-2.kool.out deleted file mode 100644 index d00491fd7e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-2.kool.out +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field.kool.out deleted file mode 100644 index 367805cb8ae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field.kool.out +++ /dev/null @@ -1 +0,0 @@ -a = 3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/function-types.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/function-types.kool.out deleted file mode 100644 index 89954484f4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/function-types.kool.out +++ /dev/null @@ -1,2 +0,0 @@ -OK -Done diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/hello-world.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/hello-world.kool.out deleted file mode 100644 index cd0875583aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/hello-world.kool.out +++ /dev/null @@ -1 +0,0 @@ -Hello world! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/instanceOf.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/instanceOf.kool.out deleted file mode 100644 index 0ca66380ed7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/instanceOf.kool.out +++ /dev/null @@ -1,4 +0,0 @@ -Instance of class C -Instance of class C1 -Instance of class C2 -Instance of class C3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.in b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.in deleted file mode 100644 index 74ab2a5ced3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.in +++ /dev/null @@ -1,3 +0,0 @@ -2 3 -1 2 3 -4 5 6 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.out deleted file mode 100644 index e6bf3faa79a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.out +++ /dev/null @@ -1,18 +0,0 @@ -Input the number of lines and columns (two natural numbers): Line 1 (3 elements): Line 2 (3 elements): Your matrix is: -Line 1 (3 elements): 1 2 3 -Line 2 (3 elements): 4 5 6 -Here is a copy of your matrix: -Line 1 (3 elements): 1 2 3 -Line 2 (3 elements): 4 5 6 -The transpose of your matrix is: -Line 1 (2 elements): 1 4 -Line 2 (2 elements): 2 5 -Line 3 (2 elements): 3 6 -You matrix multiplied with its transpose is: -Line 1 (2 elements): 14 32 -Line 2 (2 elements): 32 77 -The transpose of your matrix multiplied with your matrix is: -Line 1 (3 elements): 17 22 27 -Line 2 (3 elements): 22 29 36 -Line 3 (3 elements): 27 36 45 -Done. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/method-sharing.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/method-sharing.kool.out deleted file mode 100644 index 926717b11de..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/method-sharing.kool.out +++ /dev/null @@ -1 +0,0 @@ -0 1 2 3 4 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/new.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/new.kool.out deleted file mode 100644 index 6f4c91b65a3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/new.kool.out +++ /dev/null @@ -1 +0,0 @@ -a = 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/odd-even.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/odd-even.kool.out deleted file mode 100644 index d00491fd7e5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/odd-even.kool.out +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/point.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/point.kool.out deleted file mode 100644 index df74d13dc53..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/point.kool.out +++ /dev/null @@ -1,3 +0,0 @@ -x = 4, y = 6 -x = 17, y = 28 -color = 87 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/return-object.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/return-object.kool.out deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/return-object.kool.out +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.in b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.in deleted file mode 100644 index 2e4e2cbc91e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.in +++ /dev/null @@ -1,2 +0,0 @@ -4 -5 1 4 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.out deleted file mode 100644 index 06c1dbc21f2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.out +++ /dev/null @@ -1,17 +0,0 @@ -Size of the array to sort = Type 4 numbers: Finished reading the 4 numbers -The original unsorted array is: -5 1 4 2 -Reversing the array ... Done! -The reversed array is: -2 4 1 5 -Sorting the array using insertion sort ... Done! -The resulting array is: -1 2 4 5 -Reversing the array ... Done! -Sorting the array using bubble sort ... Done! -The resulting array is: -1 2 4 5 -Reversing the array ... Done! -Sorting the array using heap sort ... Done! -The resulting array is: -1 2 4 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-1.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-1.kool.out deleted file mode 100644 index bb95160cb6e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-1.kool.out +++ /dev/null @@ -1 +0,0 @@ -33 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-2.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-2.kool.out deleted file mode 100644 index af636789f04..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-2.kool.out +++ /dev/null @@ -1,3 +0,0 @@ -2 2 3 -11 3 3 -11 111 111 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-3.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-3.kool.out deleted file mode 100644 index 48f16b831de..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-3.kool.out +++ /dev/null @@ -1 +0,0 @@ -100 200 1 20 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-explicit.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-explicit.kool.out deleted file mode 100644 index b1bd38b62a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-explicit.kool.out +++ /dev/null @@ -1 +0,0 @@ -13 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-implicit.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-implicit.kool.out deleted file mode 100644 index b1bd38b62a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-implicit.kool.out +++ /dev/null @@ -1 +0,0 @@ -13 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/threads.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/threads.kool.out deleted file mode 100644 index ec635144f60..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/threads.kool.out +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/tree-sum.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/tree-sum.kool.out deleted file mode 100644 index 48082f72f08..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/tree-sum.kool.out +++ /dev/null @@ -1 +0,0 @@ -12 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/NOTES.md b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/NOTES.md deleted file mode 100644 index 1ac6512ecc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/NOTES.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -Why is the following happening at line 347? It should infer the sort Stmts for S: - - rule {S} => block ... Rho R - (.Bag => S Rho R ) - - [Error] Critical: Could not infer a sort for variable 'S' to match every location. - -Similarly at line 517. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/Makefile b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/Makefile deleted file mode 100644 index f6a3ba02c78..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/README b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/README deleted file mode 100644 index ca865b94170..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/README +++ /dev/null @@ -1,32 +0,0 @@ -Extend the static semantics of typed KOOL with private members. See -also the exercise "private-members" of the dynamic semantics of typed -KOOL, because our objective here is to type precisely all the correct -programs of that exercise (in addition to the programs of the original -typed KOOL). - -Recall that the role of a static semantics, or type checker, is to -reject programs which may yield runtime errors ("may", because type -checkers typically also reject programs which would otherwise execute -correctly with the dynamic semantics). There are two runtime problems -that the addition of private members generate: - -1) A method from a subclass accesses a private member of a superclass. -In this case, a runtime error is generated by the dynamically typed -KOOL, so want our type checker to reject such programs. To do it, -like in Java we consevatively reject those programs in which a method -statically accesses a private member of a superclass. This is -conservative because it may very well be the case in dynamically typed -KOOL that the superclass access may be a method call which is -dynamically dispatched to a subsequent subclass that publicly -overrides the private method. We will therefore reject such otherwise -correct programs. - -2) A method accesses a private method of a subclass. This could -happen when, for example, class A contains public methods f and g, -and class B extends A and overrides f with a private method. Now if -we call g on an instance of B in dynamically typed KOOL, we get a -runtime error due to dynamic dispatch (g accesses a private member of -another class). So we want our type checker to reject such programs, -too. To do it, like in Java we conservatively reject the programs in -which a class overrides a public method of a superclass with a private -method. diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-1.kool deleted file mode 100644 index 3ef184c1eaa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-1.kool +++ /dev/null @@ -1,39 +0,0 @@ -// Testing cast -// This program should execute but should not type check - -class A { - int x; - void A() { - x=10; - } - int getA() { - return x; - } -} - -class B extends A { - int x; - void B() { - super.A(); - x=20; - } - int getB() { - return x; - } -} - -class Main { - void Main() { - B b = new B(); - A a = (A) b; - print("b.x = ", b.x, "\n"); - print("a.x = ", a.x, "\n"); - print("a.getB() = ", a.getB(), "\n"); // this should not type check. why? - print("a.getA() = ", a.getA(), "\n"); - } -} - -// b.x = 20 -// a.x = 10 -// a.getB() = 20 -// a.getA() = 10 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-2.kool deleted file mode 100644 index 439626d3e9d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-2.kool +++ /dev/null @@ -1,27 +0,0 @@ -class X { void X() {} } -class Y extends X { void Y() {} } -class Z extends X { void Z() {} } - -class Main { - void Main() { - X x = new X(); - Y y = new Y(); - Z z = new Z(); - X xy = new Y(); // ok (y is subclass of X) - X xz = new Z(); // ok (Z is subclass of X) -// Y yz = new Z(); // incompatible types -// Y y1 = new X(); // X is not a Y -// Z z1 = new X(); // X is not a Z - X x1 = y; // ok (y is subclass of X) - X x2 = z; // ok (z is subclass of X) -// Y y1 = (Y) x; // types ok but produces runtime error -// Z z1 = (Z) x; // types ok but produces runtime error - Y y2 = (Y) x1; // types and runs ok (x1 is type Y) - Z z2 = (Z) x2; // types and runs ok (x2 is type Z) -// Y y3 = (Y) z; // inconvertible types -// Z z3 = (Z) y; // inconvertible types - Object o = z; -// Object o1 = (Y) o; // types ok but produces runtime error - print("OK\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/collatz.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/collatz.kool deleted file mode 100644 index fb850a9ee5e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/collatz.kool +++ /dev/null @@ -1,24 +0,0 @@ -// Program testing Collatz' conjecture up to a user-provided number. - -class Main { - int collatz(int n) { - int s=0; - while (n > 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - return s; - } - - void Main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(), s; - for (int i=1; i<=m; ++i) { - print("Testing Collatz' conjecture for n = ",i," ... "); - s = collatz(i); - print("Done! It took ",s," steps.\n"); - } - print("Done. It appears to hold.\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/constructor.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/constructor.kool deleted file mode 100644 index 3990c6be83d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/constructor.kool +++ /dev/null @@ -1,32 +0,0 @@ -// Testing new, constructor, method invocation. - -class C { - int i,j; - void C(int x) { - i = x; - j = ++x; - } - void add(int d) { - i = i+d; - j = j-d; - } - void print2() { - print(i, " ", j, "\n"); - } -} - -class Main { - int a,b; - C o; - void Main(){ - a = b = 5; - o = new C(a); - o.print2(); - o.add(++b); - o.print2(); - } -} - - -// 5 6 -// 11 0 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cycle.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cycle.kool deleted file mode 100644 index c70b3118edf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cycle.kool +++ /dev/null @@ -1,19 +0,0 @@ -// This program shows a cycle in the class hierachy. None of the -// dynamic semantics catches it, both of them hanging on creating a -// new object. The program should run if you don't create any new object. - -class C1 extends C2 { - void C1() { } -} - -class C2 extends C1 { - void C2() { } -} - -class Main { - void Main() { -// Should work if you comment next line - new C1(); - print("No cycle detected\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-1.kool deleted file mode 100644 index 81c2e84e462..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-1.kool +++ /dev/null @@ -1,22 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - void C1() {} - int m1() { return 1; } - int m2() { return m1(); } -} - -class C2 extends C1 { - void C2() {} - int m1() { return 2; } -} - -class Main { - void Main() { - C1 o1 = new C1(); - C2 o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o2.m1(), " ", o2.m2(), "\n"); - } -} - -// 1 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-2.kool deleted file mode 100644 index 973c829d35c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-2.kool +++ /dev/null @@ -1,24 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - void C1() {} - int m1() { return 1; } - int m2() { return 100; } - int m3() { return m2(); } -} - -class C2 extends C1 { - void C2() {} - int m2() { return 2; } -} - -class Main { - void Main() { - C1 o1 = new C1(); - C2 o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o1.m3(), " ", - o2.m1(), " ", o2.m2(), " ", o2.m3(), "\n"); - } -} - -// 1 100 100 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-3.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-3.kool deleted file mode 100644 index 6cb76c9d133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-3.kool +++ /dev/null @@ -1,74 +0,0 @@ -// This program illustrates that if a method of type t1 -> t2 is -// overridden with one of type t1' -> t2', then it should be the case -// that t2' is a subtype of t2 and that t1 is a subtype of t1'. This is -// consistent with the type ordering over function types, namely: -// -// t1 -> t2 >= t1' -> t2' iff t1 <= t1' and t2 >= t2' -// -// We say that function types are co-variant with their codomains and are -// contra-variant with their domains. A simple way to remember this is -// that constants are particular functions (with no arguments), so the -// function and its codomain must vary the same way. - -class A { - int x; - void A() { - x = 1; - } - B m1(B b) { - b.y = 10; - return b; - } -} - -class B extends A { - int y; - void B() { - super.A(); - y = 100; - } - B m2(B b) { - return m1(b); // HOT-SPOT -// If m1 gets overridden in an extension of B, then the following must hold: -// (1) The new m1 should not get stuck when called above, so B must be -// a subtype of its new argument's type. -// (2) The type of the value returned by the new m1 should be a subtype -// of B, so it can serve as a value returned by m2(). -// Hence, if we override m1 into one of type C1 -> C2, then it should be -// the case that C1 <= B and B >= C2. This is precisely what we do next. - } -} - -class C extends B { - int z; - void C() { - super.B(); - z = 1000; - } - C m1(A a) { - z = a.x; - return this; - } -// To see how the program gets stuck under dynamic type checking, you -// can do the following changes on the method m1 above: -// (1) Change the class of its argument into C. Then the -// program will get stuck trying to show, at the HOT-SPOT, that the type -// B of b is a subtype of the new C. Or -// (2) Change the class of its result into A, and return -// "new A()" instead of "this". Then the program will get stuck -// trying to show that the returned value at HOT-SPOT, of type A, -// has the expected return type of m2, namely B. -// The static semantics should also catch these errors (even when you -// don't return "new A()" instead of "this"). -} - -class Main { - void Main() { - A a = new A(); - B b = new B(); - C c = new C(); - print(b.y, " ", c.z, "\n"); - print((b.m2(b)).y, " ", (c.m2(b)).y, "\n"); - print(b.y, " ", c.z, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool deleted file mode 100644 index 63c2a61b811..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool +++ /dev/null @@ -1,12 +0,0 @@ -class A { - private int x = 7; - void A() {} -} - -class Main { - void Main() { - A a = new A(); - print("Accessing a private field: a.x = "); - print(a.x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool.out deleted file mode 100644 index ccd5d209943..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex01.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "x" of class "A" cannot be accessed in class "Main" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool deleted file mode 100644 index c6dd496e32e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool +++ /dev/null @@ -1,15 +0,0 @@ -class A { - int x = 7; - private void A() { - x = 10; - } -} - -class Main { - void Main() { - A a = new A(); - print("This is reached: the constructor is called after the current class is set\n"); - a.A(); - print("But this should not be reachaed, because method A() is private.\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool.out deleted file mode 100644 index a1f6a361dea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex02.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "A" of class "A" cannot be accessed in class "Main" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool deleted file mode 100644 index 7ab616dba3e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool +++ /dev/null @@ -1,17 +0,0 @@ -class A { - private int x = 7; - - void A() { - x = 10; - } - - int getx() { - return x; - } -} - -class Main { - void Main() { - print((new A()).getx()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex03.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool deleted file mode 100644 index 64819b024b6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool +++ /dev/null @@ -1,20 +0,0 @@ -class B { - int x = 3; - void B() { - x = 5; - } -} - -class A extends B { - private int x = 7; - void A() { - x = 10; - } -} - -class Main { - void Main() { - print("Next should not be printed, because x is private in A\nand we do not default to B.\n"); - print((new A()).x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool.out deleted file mode 100644 index ccd5d209943..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex04.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "x" of class "A" cannot be accessed in class "Main" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool deleted file mode 100644 index 95e23547d46..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool +++ /dev/null @@ -1,21 +0,0 @@ -class B { - int x = 3; - void B() { - x = 5; - } -} - -class A extends B { - private int y = 7; - void A() { - super.B(); // KOOL doesn't automatically call superclass constructors - y = 10; - } -} - -class Main { - void Main() { - print("The next should be printed now: "); - print((new A()).x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex05.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool deleted file mode 100644 index 60bc9fc202a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool +++ /dev/null @@ -1,21 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } -} - -class A extends B { - private int y = 7; - void A() { - super.B(); - y = 10; - } -} - -class Main { - void Main() { - print("The next should not be printed.\n"); - print((new A()).x); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool.out deleted file mode 100644 index 6042ac91624..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex06.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "x" of class "B" cannot be accessed in class "Main" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool deleted file mode 100644 index c618fb5aeed..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool +++ /dev/null @@ -1,26 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } - int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex07.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool deleted file mode 100644 index 38f81d449d2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool +++ /dev/null @@ -1,28 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } - int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return super.x; - } -} - -class Main { - void Main() { - print("The next should not be printed.\n"); - print((new A()).get()); - } -} - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool.out deleted file mode 100644 index 64839798423..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex08.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "x" of class "B" cannot be accessed in class "A" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool deleted file mode 100644 index fe9e4c0b18a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - int x = 3; - void B() { - x = 5; - } - int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return super.x; - } -} - -class Main { - void Main() { - print("The next should be printed now:\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex09.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool deleted file mode 100644 index 0e72b06552e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } - int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should be printed:\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex10.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool deleted file mode 100644 index 1ae6cbd3e0d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } - private int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - private int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should not be printed.\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool.out deleted file mode 100644 index 6c43bdd73c2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex11.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "get" of class "A" cannot be accessed in class "Main" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool deleted file mode 100644 index c18bbdaed2b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool +++ /dev/null @@ -1,27 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } - private int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should be printed:\n"); - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex12.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool deleted file mode 100644 index 80f4aed405c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool +++ /dev/null @@ -1,33 +0,0 @@ -// Note that, like in Java, the get() method called by f() is not dynamically -// dispatched here. - -class B { - private int x = 3; - void B() { - x = 5; - } - private int get() { - return x; - } - int f() { - return get(); - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex13.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool deleted file mode 100644 index 561ddae83c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool +++ /dev/null @@ -1,32 +0,0 @@ -// The call to get() in f() is now dynamically dispatched also in Java. - -class B { - private int x = 3; - void B() { - x = 5; - } - int get() { - return x; - } - int f() { - return get(); - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex14.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool deleted file mode 100644 index d8ef62d314b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool +++ /dev/null @@ -1,41 +0,0 @@ -class C { - private int x = 1; - void C() { - x = 2; - } - int get() { - return x; - } -} - -class B extends C { - private int x = 3; - void B() { - super.C(); - x = 5; - } - int get() { - return x; - } - int f() { - return get(); - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex15.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool deleted file mode 100644 index 980b5504249..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool +++ /dev/null @@ -1,41 +0,0 @@ -// This works in dynamically typed KOOL, but it is rejected by the static -// semantics: the method get() called in f() is not is private at that time. - -class C { - private int x = 1; - void C() { - x = 2; - } - private int get() { - return x; - } -} - -class B extends C { - private int x = 3; - void B() { - super.C(); - x = 5; - } - int f() { - return get(); - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print("The next should be printed:\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool.out deleted file mode 100644 index 7248f048944..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex16.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "get" of class "C" cannot be accessed in class "B" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool deleted file mode 100644 index 6cad707635a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool +++ /dev/null @@ -1,21 +0,0 @@ -class A { - private int x = 7; - void A(int v) { - x = v; - } - void init(A a){ - x=a.x; - } - int get() { - return x; - } -} - -class Main { - void Main(){ - A a = new A(10); - A b = new A(20); - a.init(b); - print(a.get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex17.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool deleted file mode 100644 index dc8fe0a761e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool +++ /dev/null @@ -1,28 +0,0 @@ -// This example does not work in untyped KOOL - -class A { - private int x = 7; - void A() { - } - void init(A a){ - x=a.x; // this is OK when init called on a B instance, too - } - int get() { - return x; - } -} - -class B extends A { - private int x = 17; - void B() { - } -} - -class Main { - void Main() { - A a = new A(); - B b = new B(); - a.init(b); - print(a.get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex18.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool deleted file mode 100644 index 330dffa119c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool +++ /dev/null @@ -1,38 +0,0 @@ -// This example works, like in Java. The fact that the private get() method -// of B is "overridden" with a private method in A is irrelevant. - -class B { - private int x = 3; - void B() { - x = 5; - } - private int get() { - return x; - } - int f() { - return get(); - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - private int get(){ - return x; - } - int g() { - return get(); - } -} - -class Main { - void Main() { - print("The following should work: "); - print((new A()).g()); - print("\nAnd so should the following: "); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex19.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool deleted file mode 100644 index 7c9ebc45dac..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool +++ /dev/null @@ -1,26 +0,0 @@ -// This example shows that we can shadow a public field with a private one. -// This works in Java, too. - -class B { - int x = 3; - void B() { - } - int get() { - return x; - } -} - -class A extends B { - private int x = 7; - void A() { - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool.out deleted file mode 100644 index 21518c59c8a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex20.kool.out +++ /dev/null @@ -1 +0,0 @@ -Type checked! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool deleted file mode 100644 index c02267f79d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool +++ /dev/null @@ -1,25 +0,0 @@ -// This example shows that a subclass does not have access to superclass' -// private fields. Java does not allow this, either. - -class B { - private int x = 3; - void B() { - } - int get() { - return x; - } -} - -class A extends B { - void A() { - } - int get(){ - return x; - } -} - -class Main { - void Main() { - print((new A()).get()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool.out deleted file mode 100644 index 64839798423..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex21.kool.out +++ /dev/null @@ -1 +0,0 @@ -Private member "x" of class "B" cannot be accessed in class "A" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool deleted file mode 100644 index 0913f507590..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool +++ /dev/null @@ -1,30 +0,0 @@ -class B { - private int x = 3; - void B() { - x = 5; - } - int get() { - return x; - } - int f() { - return get(); - } -} - -class A extends B { - private int x = 7; - void A() { - super.B(); - x = 10; - } - private int get(){ // rejected staticaly - return x; - } -} - -class Main { - void Main() { - print("The next should not be printed.\n"); - print((new A()).f()); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool.out b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool.out deleted file mode 100644 index 65f39cc749e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/ex22.kool.out +++ /dev/null @@ -1 +0,0 @@ -Method "get" cannot be private in class "A" because it is public in class "B" diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-1.kool deleted file mode 100644 index d91d78edb55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-1.kool +++ /dev/null @@ -1,27 +0,0 @@ -// This program tests the basic functionality of exceptions - -class Main { - - void foo() { - try { - throw 5; - print(17); // should not be printed - } - catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached - } - - void Main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } - } - -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-2.kool deleted file mode 100644 index f8df6bc248b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-2.kool +++ /dev/null @@ -1,44 +0,0 @@ -class Exception { - int v; - void Exception(int v) { - print("Exception ", v, " thrown!\n"); - this.v = v; - } - int get() { - return v; - } -} - -class Exception2 extends Exception { - void Exception2(int v) { - (Exception(v)); // Parentheses tell the parser this is not a type decl. - // Alternatively, use super.Exception or this.Exception. - // This is an artifact of our "too generous" grammar, - // allowing declarations like "int (v);". Java doesn't. - } -} - -class Main { - - void foo() { - try { - throw new Exception(5); - print(17); // should not be printed - } catch(Exception2 e) { - throw new Exception2(e.get() + 2); // should not be reached - } - throw new Exception(-1); // should not be reached - } - - - void Main() { - try { - foo(); - } catch(Exception e) { - print(e.get(),"\n"); // should print 5 - } - } - -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/factorial.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/factorial.kool deleted file mode 100644 index e88fde2dfa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/factorial.kool +++ /dev/null @@ -1,13 +0,0 @@ -// Testing recursion - -class Main { - int f(int x) { - if (x <= 1) { return 1; } - else { return x * f(x - 1); } - } - void Main() { - print(f(f(5)), "\n"); - } -} - -// (5!)! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-1.kool deleted file mode 100644 index a416212aabf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-1.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing shadowing of a field by another field and -// whether the object stack environment works. - -class C1 { - int x, y; - void C1() {} - void setx1(int v) { x = v; } - void sety1(int v) { y = v; } - int getx1() { return x; } - int gety1() { return y; } -} - -class C2 extends C1 { - int y; - void C2() {} - void sety2(int v) { y = v; } - int getx2() { return x; } - int gety2() { return y; } -} - -class Main { - void Main() { - C2 o2 = new C2(); - o2.setx1(11); - o2.sety1(12); - o2.sety2(99); - print(o2.getx1(), " "); - print(o2.gety1(), " "); - print(o2.getx2(), " "); - print(o2.gety2(), "\n"); - } -} - -// 11 12 11 99 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-2.kool deleted file mode 100644 index fc192a55f91..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-2.kool +++ /dev/null @@ -1,30 +0,0 @@ -// Testing local variable shadowing a field - -class C { - int f; - void C(int v) { - f = v; - } - int get() { return f; } -} - -class G { - C o; - void G(C o) { - this.o = o; - } - int d() { - int f = 9; - return (o.get()); - } -} - -class Main { - void Main() { - C t = new C(1); - G y = new G(t); - print(y.d(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field.kool deleted file mode 100644 index 1baf17f679f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field.kool +++ /dev/null @@ -1,10 +0,0 @@ -// Testing field initialization and access. - -class Main { - int a=3; - void Main() { - print("a = ", a, "\n"); - } -} - -// a = 3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/function-types.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/function-types.kool deleted file mode 100644 index 56f5cbed3c1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/function-types.kool +++ /dev/null @@ -1,45 +0,0 @@ -// This program tests the subtyping of function types - -class A { - void A() {} -} - -class B extends A { - void B() {} -} - -class C extends B { - void C() {} - A AA(A a) {} - B AB(A a) {} - C AC(A a) {} - A BA(B b) {} - B BB(B b) {} - C BC(B b) {} - A CA(C c) {} - B CB(C c) {} - C CC(C c) {} -} - -class Main extends C { - void Main() { - C c = new C(); - A->A aa = c.AA; - A->B ab = c.AB; - A->C ac = c.AC; - B->A ba = c.BA; - B->B bb = c.BB; - B->C bc = c.BC; - C->A ca = c.CA; - C->B cb = c.CB; - C->C cc = c.CC; - ca = ba = aa = ab = ac; // OK: C->A > B->A > A->A > A->B > A->C - ca = cb = cc = bc = ac; // OK: C->A > C->B > C->C > B->C > A->C - ba = bb = ab; // OK: B->A > B->B > A->B - cb = bb = bc; // OK: C->B > B->B > B->C - print("OK\n"); -// ac = bc; print("Wrong! A->C < B->C\n"); -// bb = cc; print("Wrong! Incompatible types.\n"); - print("Done\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/hello-world.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/hello-world.kool deleted file mode 100644 index 7077ea05cd0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/hello-world.kool +++ /dev/null @@ -1,9 +0,0 @@ -// Testing main - -class Main { - void Main() { - print("Hello world!\n"); - } -} - -// Hello world! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/instanceOf.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/instanceOf.kool deleted file mode 100644 index e533429e937..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/instanceOf.kool +++ /dev/null @@ -1,38 +0,0 @@ -// Testing instance of - -class C { - void C() {} - void test() { - print("Instance of class C"); - if (this instanceOf C1) { print(1); } - if (this instanceOf C2) { print(2); } - if (this instanceOf C3) { print(3); } - print("\n"); - } -} - -class C1 extends C { - void C1() {} -} - -class C2 extends C { - void C2() {} -} - -class C3 extends C { - void C3() {} -} - -class Main { - void Main() { - (new C()).test(); - (new C1()).test(); - (new C2()).test(); - (new C3()).test(); - } -} - -// Instance of class C -// Instance of class C1 -// Instance of class C2 -// Instance of class C3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/matrix.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/matrix.kool deleted file mode 100644 index 2bd41ac5a75..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/matrix.kool +++ /dev/null @@ -1,101 +0,0 @@ -// This program tests multi-dimensional arrays. - -class Matrix { - int lines, columns; - int[][] matrix; - - void Matrix(int x, int y) { - lines = x; - columns = y; - int a[x,y]; - matrix = a; - } - - void readMatrix() { - for (int i=0; ivoid m = a.inc; - int x = 0; - void B() { - print(a.c, " "); - m(); - print(a.c, " "); - } - void->void getM() { - return m; - } -} - -class Main { - void->void f; - void Main() { - B b = new B(); - void->void t = f = b.getM(); - f(); - print(b.a.c, " "); - t(); - print(b.a.c, " "); - (b.getM())(); // shows the higher-order aspect of KOOL - print(b.a.c, "\n"); - } -} - -// 0 1 2 3 4 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/new.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/new.kool deleted file mode 100644 index d71a0ce5ee8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/new.kool +++ /dev/null @@ -1,15 +0,0 @@ -// Testing new and method invocation. - -class C { - int a=5; - void C() {} - int g() { return a; } -} - -class Main { - void Main() { - print("a = ", (new C()).g(), "\n"); - } -} - -// a = 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/odd-even.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/odd-even.kool deleted file mode 100644 index 2c01343cdcf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/odd-even.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing mutually recursive uses of this.method - -class OddEven { - int n; - void OddEven(int x) { - n = x; - } - int even() { - if (n == 0) { - return 1; - } - else { - n = n - 1; - return this.odd(); - } - } - int odd() { - if (n == 0) { - return 0; - } - else { - n = n - 1; - return this.even(); - } - } -} - -class Main { - void Main() { - print((new OddEven(17)).odd(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/point.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/point.kool deleted file mode 100644 index 9d8903bf0f0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/point.kool +++ /dev/null @@ -1,44 +0,0 @@ -class Point { - int x, y; - void Point(int initx, int inity) { - x = initx; - y = inity; - } - void move(int dx, int dy) { - x = x+dx; - y = y+dy; - } - void printLocation() { - print("x = ", x, ", ", "y = ", y, "\n"); - } -} - -class ColorPoint extends Point { - int color; - void ColorPoint(int initx, int inity, int initcolor) { - this.Point(initx, inity); - color = initcolor; - } - void setColor(int c) { - color = c; - } - void printColor() { - print("color = ", color, "\n"); - } -} - -class Main { - void Main() { - Point p = new Point(3,4); - ColorPoint cp = new ColorPoint(10,20,87); - p.move(1,2); - p.printLocation(); - cp.move(7, 8); - cp.printLocation(); - cp.printColor(); - } -} - -// x = 4, y = 6 -// x = 17, y = 28 -// color = 87 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/return-object.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/return-object.kool deleted file mode 100644 index 728cb518c62..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/return-object.kool +++ /dev/null @@ -1,29 +0,0 @@ -// Test returning objects in methods and then invoking methods on them - -class C { - int val; - void C(int v) { - val = v; - } - G m1() { - return (new G(val + 9)); - } -} - -class G { - int a; - void G(int t) { - a = t; - } - void print2() { print(a, "\n"); } -} - -class Main { - void Main() { - ((new C(1)).m1()).print2(); - } -} - -// 10 - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/sorting.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/sorting.kool deleted file mode 100644 index 8ef5970228b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/sorting.kool +++ /dev/null @@ -1,146 +0,0 @@ -// This program defines a class Sorting which includes several sorting -// algorithms. It also illustrates how method closures can be stored -// in an array and then executed one by one (see method map in main). - -class Sorting { - int[] array; - int size; - - void Sorting(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i=0; i 0 && array[j] > v) { // doing the loop only up to 1 - array[j + 1] = array[j]; - j = j - 1; - } - if (array[0] > v) { - array[1] = array[0]; - array[0] = v; - } else { array[j+1] = v; } - } - } - - void bubbleSort() { - for (int i=0; i array[j + 1]) { - int t = array[j + 1]; - array[j + 1] = array[j]; - array[j] = t; - } - } - } - } - - void siftDown(int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (array[root*2] > array[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (array[root] < array[maxChild]) { - int t = array[root]; - array[root] = array[maxChild]; - array[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } - } - - void heapSort() { - int i = size/2 - 1; - while (i >= 0) { - siftDown(i, size - 1); - i = i - 1; - } - i = size - 1; - while (i >= 1 ) { - int t = array[0]; - array[0] = array[i] ; - array[i] = t; - siftDown(0, i - 1); - i = i - 1; - } - } - -} - - -class Main { - - void map(string[] m, (void -> void)[] f) { - for (int i=0; i 1) { - s = s+1; - if (n == (n/2)*2) { n = n/2; } - else { n = 3*n+1; } - } - return s; - } - - void Main() { - print("Testing Collatz' conjecture up to what number? "); - int m = read(), s; - for (int i=1; i<=m; ++i) { - print("Testing Collatz' conjecture for n = ",i," ... "); - s = collatz(i); - print("Done! It took ",s," steps.\n"); - } - print("Done. It appears to hold.\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/constructor.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/constructor.kool deleted file mode 100644 index 3990c6be83d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/constructor.kool +++ /dev/null @@ -1,32 +0,0 @@ -// Testing new, constructor, method invocation. - -class C { - int i,j; - void C(int x) { - i = x; - j = ++x; - } - void add(int d) { - i = i+d; - j = j-d; - } - void print2() { - print(i, " ", j, "\n"); - } -} - -class Main { - int a,b; - C o; - void Main(){ - a = b = 5; - o = new C(a); - o.print2(); - o.add(++b); - o.print2(); - } -} - - -// 5 6 -// 11 0 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/cycle.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/cycle.kool deleted file mode 100644 index c70b3118edf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/cycle.kool +++ /dev/null @@ -1,19 +0,0 @@ -// This program shows a cycle in the class hierachy. None of the -// dynamic semantics catches it, both of them hanging on creating a -// new object. The program should run if you don't create any new object. - -class C1 extends C2 { - void C1() { } -} - -class C2 extends C1 { - void C2() { } -} - -class Main { - void Main() { -// Should work if you comment next line - new C1(); - print("No cycle detected\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-1.kool deleted file mode 100644 index 81c2e84e462..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-1.kool +++ /dev/null @@ -1,22 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - void C1() {} - int m1() { return 1; } - int m2() { return m1(); } -} - -class C2 extends C1 { - void C2() {} - int m1() { return 2; } -} - -class Main { - void Main() { - C1 o1 = new C1(); - C2 o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o2.m1(), " ", o2.m2(), "\n"); - } -} - -// 1 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-2.kool deleted file mode 100644 index 973c829d35c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-2.kool +++ /dev/null @@ -1,24 +0,0 @@ -// Testing dynamic method dispatch - -class C1 { - void C1() {} - int m1() { return 1; } - int m2() { return 100; } - int m3() { return m2(); } -} - -class C2 extends C1 { - void C2() {} - int m2() { return 2; } -} - -class Main { - void Main() { - C1 o1 = new C1(); - C2 o2 = new C2(); - print(o1.m1(), " ", o1.m2(), " ", o1.m3(), " ", - o2.m1(), " ", o2.m2(), " ", o2.m3(), "\n"); - } -} - -// 1 100 100 1 2 2 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-3.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-3.kool deleted file mode 100644 index 6cb76c9d133..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-3.kool +++ /dev/null @@ -1,74 +0,0 @@ -// This program illustrates that if a method of type t1 -> t2 is -// overridden with one of type t1' -> t2', then it should be the case -// that t2' is a subtype of t2 and that t1 is a subtype of t1'. This is -// consistent with the type ordering over function types, namely: -// -// t1 -> t2 >= t1' -> t2' iff t1 <= t1' and t2 >= t2' -// -// We say that function types are co-variant with their codomains and are -// contra-variant with their domains. A simple way to remember this is -// that constants are particular functions (with no arguments), so the -// function and its codomain must vary the same way. - -class A { - int x; - void A() { - x = 1; - } - B m1(B b) { - b.y = 10; - return b; - } -} - -class B extends A { - int y; - void B() { - super.A(); - y = 100; - } - B m2(B b) { - return m1(b); // HOT-SPOT -// If m1 gets overridden in an extension of B, then the following must hold: -// (1) The new m1 should not get stuck when called above, so B must be -// a subtype of its new argument's type. -// (2) The type of the value returned by the new m1 should be a subtype -// of B, so it can serve as a value returned by m2(). -// Hence, if we override m1 into one of type C1 -> C2, then it should be -// the case that C1 <= B and B >= C2. This is precisely what we do next. - } -} - -class C extends B { - int z; - void C() { - super.B(); - z = 1000; - } - C m1(A a) { - z = a.x; - return this; - } -// To see how the program gets stuck under dynamic type checking, you -// can do the following changes on the method m1 above: -// (1) Change the class of its argument into C. Then the -// program will get stuck trying to show, at the HOT-SPOT, that the type -// B of b is a subtype of the new C. Or -// (2) Change the class of its result into A, and return -// "new A()" instead of "this". Then the program will get stuck -// trying to show that the returned value at HOT-SPOT, of type A, -// has the expected return type of m2, namely B. -// The static semantics should also catch these errors (even when you -// don't return "new A()" instead of "this"). -} - -class Main { - void Main() { - A a = new A(); - B b = new B(); - C c = new C(); - print(b.y, " ", c.z, "\n"); - print((b.m2(b)).y, " ", (c.m2(b)).y, "\n"); - print(b.y, " ", c.z, "\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-1.kool deleted file mode 100644 index d91d78edb55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-1.kool +++ /dev/null @@ -1,27 +0,0 @@ -// This program tests the basic functionality of exceptions - -class Main { - - void foo() { - try { - throw 5; - print(17); // should not be printed - } - catch(int e) { - throw e + 2; // throws 7 - } - throw 1; // should not be reached - } - - void Main() { - try { - foo(); - } - catch(int e) { - print(e,"\n"); // should print 7 - } - } - -} - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-2.kool deleted file mode 100644 index f8df6bc248b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-2.kool +++ /dev/null @@ -1,44 +0,0 @@ -class Exception { - int v; - void Exception(int v) { - print("Exception ", v, " thrown!\n"); - this.v = v; - } - int get() { - return v; - } -} - -class Exception2 extends Exception { - void Exception2(int v) { - (Exception(v)); // Parentheses tell the parser this is not a type decl. - // Alternatively, use super.Exception or this.Exception. - // This is an artifact of our "too generous" grammar, - // allowing declarations like "int (v);". Java doesn't. - } -} - -class Main { - - void foo() { - try { - throw new Exception(5); - print(17); // should not be printed - } catch(Exception2 e) { - throw new Exception2(e.get() + 2); // should not be reached - } - throw new Exception(-1); // should not be reached - } - - - void Main() { - try { - foo(); - } catch(Exception e) { - print(e.get(),"\n"); // should print 5 - } - } - -} - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/factorial.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/factorial.kool deleted file mode 100644 index e88fde2dfa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/factorial.kool +++ /dev/null @@ -1,13 +0,0 @@ -// Testing recursion - -class Main { - int f(int x) { - if (x <= 1) { return 1; } - else { return x * f(x - 1); } - } - void Main() { - print(f(f(5)), "\n"); - } -} - -// (5!)! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-1.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-1.kool deleted file mode 100644 index a416212aabf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-1.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing shadowing of a field by another field and -// whether the object stack environment works. - -class C1 { - int x, y; - void C1() {} - void setx1(int v) { x = v; } - void sety1(int v) { y = v; } - int getx1() { return x; } - int gety1() { return y; } -} - -class C2 extends C1 { - int y; - void C2() {} - void sety2(int v) { y = v; } - int getx2() { return x; } - int gety2() { return y; } -} - -class Main { - void Main() { - C2 o2 = new C2(); - o2.setx1(11); - o2.sety1(12); - o2.sety2(99); - print(o2.getx1(), " "); - print(o2.gety1(), " "); - print(o2.getx2(), " "); - print(o2.gety2(), "\n"); - } -} - -// 11 12 11 99 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-2.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-2.kool deleted file mode 100644 index fc192a55f91..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-2.kool +++ /dev/null @@ -1,30 +0,0 @@ -// Testing local variable shadowing a field - -class C { - int f; - void C(int v) { - f = v; - } - int get() { return f; } -} - -class G { - C o; - void G(C o) { - this.o = o; - } - int d() { - int f = 9; - return (o.get()); - } -} - -class Main { - void Main() { - C t = new C(1); - G y = new G(t); - print(y.d(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field.kool deleted file mode 100644 index 1baf17f679f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/field.kool +++ /dev/null @@ -1,10 +0,0 @@ -// Testing field initialization and access. - -class Main { - int a=3; - void Main() { - print("a = ", a, "\n"); - } -} - -// a = 3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/function-types.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/function-types.kool deleted file mode 100644 index 56f5cbed3c1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/function-types.kool +++ /dev/null @@ -1,45 +0,0 @@ -// This program tests the subtyping of function types - -class A { - void A() {} -} - -class B extends A { - void B() {} -} - -class C extends B { - void C() {} - A AA(A a) {} - B AB(A a) {} - C AC(A a) {} - A BA(B b) {} - B BB(B b) {} - C BC(B b) {} - A CA(C c) {} - B CB(C c) {} - C CC(C c) {} -} - -class Main extends C { - void Main() { - C c = new C(); - A->A aa = c.AA; - A->B ab = c.AB; - A->C ac = c.AC; - B->A ba = c.BA; - B->B bb = c.BB; - B->C bc = c.BC; - C->A ca = c.CA; - C->B cb = c.CB; - C->C cc = c.CC; - ca = ba = aa = ab = ac; // OK: C->A > B->A > A->A > A->B > A->C - ca = cb = cc = bc = ac; // OK: C->A > C->B > C->C > B->C > A->C - ba = bb = ab; // OK: B->A > B->B > A->B - cb = bb = bc; // OK: C->B > B->B > B->C - print("OK\n"); -// ac = bc; print("Wrong! A->C < B->C\n"); -// bb = cc; print("Wrong! Incompatible types.\n"); - print("Done\n"); - } -} diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/hello-world.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/hello-world.kool deleted file mode 100644 index 7077ea05cd0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/hello-world.kool +++ /dev/null @@ -1,9 +0,0 @@ -// Testing main - -class Main { - void Main() { - print("Hello world!\n"); - } -} - -// Hello world! diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/instanceOf.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/instanceOf.kool deleted file mode 100644 index e533429e937..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/instanceOf.kool +++ /dev/null @@ -1,38 +0,0 @@ -// Testing instance of - -class C { - void C() {} - void test() { - print("Instance of class C"); - if (this instanceOf C1) { print(1); } - if (this instanceOf C2) { print(2); } - if (this instanceOf C3) { print(3); } - print("\n"); - } -} - -class C1 extends C { - void C1() {} -} - -class C2 extends C { - void C2() {} -} - -class C3 extends C { - void C3() {} -} - -class Main { - void Main() { - (new C()).test(); - (new C1()).test(); - (new C2()).test(); - (new C3()).test(); - } -} - -// Instance of class C -// Instance of class C1 -// Instance of class C2 -// Instance of class C3 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/matrix.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/matrix.kool deleted file mode 100644 index 2bd41ac5a75..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/matrix.kool +++ /dev/null @@ -1,101 +0,0 @@ -// This program tests multi-dimensional arrays. - -class Matrix { - int lines, columns; - int[][] matrix; - - void Matrix(int x, int y) { - lines = x; - columns = y; - int a[x,y]; - matrix = a; - } - - void readMatrix() { - for (int i=0; ivoid m = a.inc; - int x = 0; - void B() { - print(a.c, " "); - m(); - print(a.c, " "); - } - void->void getM() { - return m; - } -} - -class Main { - void->void f; - void Main() { - B b = new B(); - void->void t = f = b.getM(); - f(); - print(b.a.c, " "); - t(); - print(b.a.c, " "); - (b.getM())(); // shows the higher-order aspect of KOOL - print(b.a.c, "\n"); - } -} - -// 0 1 2 3 4 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/new.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/new.kool deleted file mode 100644 index d71a0ce5ee8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/new.kool +++ /dev/null @@ -1,15 +0,0 @@ -// Testing new and method invocation. - -class C { - int a=5; - void C() {} - int g() { return a; } -} - -class Main { - void Main() { - print("a = ", (new C()).g(), "\n"); - } -} - -// a = 5 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/odd-even.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/odd-even.kool deleted file mode 100644 index 2c01343cdcf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/odd-even.kool +++ /dev/null @@ -1,34 +0,0 @@ -// Testing mutually recursive uses of this.method - -class OddEven { - int n; - void OddEven(int x) { - n = x; - } - int even() { - if (n == 0) { - return 1; - } - else { - n = n - 1; - return this.odd(); - } - } - int odd() { - if (n == 0) { - return 0; - } - else { - n = n - 1; - return this.even(); - } - } -} - -class Main { - void Main() { - print((new OddEven(17)).odd(), "\n"); - } -} - -// 1 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/point.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/point.kool deleted file mode 100644 index 9d8903bf0f0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/point.kool +++ /dev/null @@ -1,44 +0,0 @@ -class Point { - int x, y; - void Point(int initx, int inity) { - x = initx; - y = inity; - } - void move(int dx, int dy) { - x = x+dx; - y = y+dy; - } - void printLocation() { - print("x = ", x, ", ", "y = ", y, "\n"); - } -} - -class ColorPoint extends Point { - int color; - void ColorPoint(int initx, int inity, int initcolor) { - this.Point(initx, inity); - color = initcolor; - } - void setColor(int c) { - color = c; - } - void printColor() { - print("color = ", color, "\n"); - } -} - -class Main { - void Main() { - Point p = new Point(3,4); - ColorPoint cp = new ColorPoint(10,20,87); - p.move(1,2); - p.printLocation(); - cp.move(7, 8); - cp.printLocation(); - cp.printColor(); - } -} - -// x = 4, y = 6 -// x = 17, y = 28 -// color = 87 diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/return-object.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/return-object.kool deleted file mode 100644 index 728cb518c62..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/return-object.kool +++ /dev/null @@ -1,29 +0,0 @@ -// Test returning objects in methods and then invoking methods on them - -class C { - int val; - void C(int v) { - val = v; - } - G m1() { - return (new G(val + 9)); - } -} - -class G { - int a; - void G(int t) { - a = t; - } - void print2() { print(a, "\n"); } -} - -class Main { - void Main() { - ((new C(1)).m1()).print2(); - } -} - -// 10 - - diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/sorting.kool b/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/sorting.kool deleted file mode 100644 index 8ef5970228b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/programs/sorting.kool +++ /dev/null @@ -1,146 +0,0 @@ -// This program defines a class Sorting which includes several sorting -// algorithms. It also illustrates how method closures can be stored -// in an array and then executed one by one (see method map in main). - -class Sorting { - int[] array; - int size; - - void Sorting(int n) { - int x[n]; - print("Type ",n," numbers: "); - for (int i=0; i 0 && array[j] > v) { // doing the loop only up to 1 - array[j + 1] = array[j]; - j = j - 1; - } - if (array[0] > v) { - array[1] = array[0]; - array[0] = v; - } else { array[j+1] = v; } - } - } - - void bubbleSort() { - for (int i=0; i array[j + 1]) { - int t = array[j + 1]; - array[j + 1] = array[j]; - array[j] = t; - } - } - } - } - - void siftDown(int root, int bottom) { - bool done = false; - int maxChild; - while (root*2 <= bottom && !done) { - if (root*2 == bottom) { - maxChild = root*2; - } - else { - if (array[root*2] > array[root*2 + 1]) { - maxChild = root*2; - } - else { - maxChild = root*2 + 1; - } - } - if (array[root] < array[maxChild]) { - int t = array[root]; - array[root] = array[maxChild]; - array[maxChild] = t; - root = maxChild; - } - else { - done = true; - } - } - } - - void heapSort() { - int i = size/2 - 1; - while (i >= 0) { - siftDown(i, size - 1); - i = i - 1; - } - i = size - 1; - while (i >= 1 ) { - int t = array[0]; - array[0] = array[i] ; - array[i] = t; - siftDown(0, i - 1); - i = i - 1; - } - } - -} - - -class Main { - - void map(string[] m, (void -> void)[] f) { - for (int i=0; i/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled --search --pattern "... ListItem(#buffer(S:String)) " $(CHECK) tests/ex-12.fun.out - -tests/references-5.fun: kompile - true diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/README b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/README deleted file mode 100644 index 90eaaad3307..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/README +++ /dev/null @@ -1,13 +0,0 @@ -This exercise asks you to add limitted input/output to FUN. -Specifically, to extend the environment-based definition of FUN to -include two more "special" names, "read" and "print", whose semantics -is as follows: - -- "read" evaluates to the first item in the stdin, which is expected to - be an integer. For simplicity, we assume that "read" only reads - integers and only from stdin. - -- "print" behaves like a function which takes one argument, evaluates - it, and then prints the result to stdout; the print statement itself - evaluates to the printed result. For simplicity, we assume - that "print" can only print integer or string results. diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun deleted file mode 100644 index d8a99432105..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun +++ /dev/null @@ -1 +0,0 @@ -print 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun.out deleted file mode 100644 index e440e5c8425..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-01.fun.out +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun deleted file mode 100644 index e4532acb4a4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun +++ /dev/null @@ -1 +0,0 @@ -print 3 + 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun.out deleted file mode 100644 index e440e5c8425..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-02.fun.out +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun deleted file mode 100644 index 193bbf84d0b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun +++ /dev/null @@ -1 +0,0 @@ -print (3 + 5) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun.out deleted file mode 100644 index 301160a9306..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-03.fun.out +++ /dev/null @@ -1 +0,0 @@ -8 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun deleted file mode 100644 index bf14d864e58..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun +++ /dev/null @@ -1 +0,0 @@ -print "3\n" diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun.out deleted file mode 100644 index 00750edc07d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-04.fun.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun deleted file mode 100644 index b628964bc18..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun +++ /dev/null @@ -1 +0,0 @@ -print ("A" ^ " nice" ^ " composed" ^ " string\n") diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun.out deleted file mode 100644 index 11a67f14f04..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-05.fun.out +++ /dev/null @@ -1 +0,0 @@ -A nice composed string diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun deleted file mode 100644 index d742084ff66..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun +++ /dev/null @@ -1,2 +0,0 @@ -letrec all n = if n<0 then 0 else (print n; print "\n"; all(n-1)) -in all 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun.out deleted file mode 100644 index 30b148df547..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-06.fun.out +++ /dev/null @@ -1,11 +0,0 @@ -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 -0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun deleted file mode 100644 index 561f9cee308..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun +++ /dev/null @@ -1,9 +0,0 @@ -letrec all n p = if n<0 - then 0 - else ( print "Element "; - print p; - print " is "; - print n; - print "\n"; - all (n - 1) (p + 1) ) -in all 10 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun.out deleted file mode 100644 index db018c3c203..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-07.fun.out +++ /dev/null @@ -1,11 +0,0 @@ -Element 1 is 10 -Element 2 is 9 -Element 3 is 8 -Element 4 is 7 -Element 5 is 6 -Element 6 is 5 -Element 7 is 4 -Element 8 is 3 -Element 9 is 2 -Element 10 is 1 -Element 11 is 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun deleted file mode 100644 index 44c9ea18fb7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec hanoi = fun 0 a b c -> 0 - | n a b c -> hanoi (n-1) a c b; - print a; print " -> "; print b; print "\n"; - hanoi (n-1) c b a -in (hanoi 5 "a" "b" "c") diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun.out deleted file mode 100644 index e13b4d87a96..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-08.fun.out +++ /dev/null @@ -1,31 +0,0 @@ -a -> b -a -> c -b -> c -a -> b -c -> a -c -> b -a -> b -a -> c -b -> c -b -> a -c -> a -b -> c -a -> b -a -> c -b -> c -a -> b -c -> a -c -> b -a -> b -c -> a -b -> c -b -> a -c -> a -c -> b -a -> b -a -> c -b -> c -a -> b -c -> a -c -> b -a -> b diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun deleted file mode 100644 index a3987bb2d4b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun +++ /dev/null @@ -1,9 +0,0 @@ -let print_list l = print "["; - letrec print_list_aux = - fun [] b -> 0 - | [h|t] b -> if b then print ", " else 0; - print h; - print_list_aux t true - in print_list_aux l false; - print "]" -in print_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun.out deleted file mode 100644 index 5695a62b446..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-09.fun.out +++ /dev/null @@ -1 +0,0 @@ -[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun deleted file mode 100644 index 248fae8f2a3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun +++ /dev/null @@ -1 +0,0 @@ -print read diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.out deleted file mode 100644 index 9a037142aa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-10.fun.out +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun deleted file mode 100644 index 63a833b9bd7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun +++ /dev/null @@ -1 +0,0 @@ -print read + 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.in deleted file mode 100644 index b1bd38b62a0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.in +++ /dev/null @@ -1 +0,0 @@ -13 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.out deleted file mode 100644 index ca7bf83ac53..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-11.fun.out +++ /dev/null @@ -1 +0,0 @@ -13 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun deleted file mode 100644 index 49e0e8bdded..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun +++ /dev/null @@ -1 +0,0 @@ -print read + read diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.in deleted file mode 100644 index ed40cec79ba..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 20 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.out deleted file mode 100644 index f0a0047fddf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-12.fun.out +++ /dev/null @@ -1,11 +0,0 @@ - { - S:String - #Equals - "10" - } -#Or - { - S:String - #Equals - "20" - } diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun deleted file mode 100644 index a61565b2eeb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun +++ /dev/null @@ -1 +0,0 @@ -print (read + read) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.in deleted file mode 100644 index ed40cec79ba..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 20 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.out deleted file mode 100644 index 8580e7b684b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-13.fun.out +++ /dev/null @@ -1 +0,0 @@ -30 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun deleted file mode 100644 index fcb3dcb94ce..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun +++ /dev/null @@ -1,2 +0,0 @@ -letrec all n = if n<0 then 0 else (print n; print "\n"; all(n-1)) -in all read diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.out deleted file mode 100644 index 30b148df547..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-14.fun.out +++ /dev/null @@ -1,11 +0,0 @@ -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 -0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun deleted file mode 100644 index e20f1760daf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec hanoi = fun 0 a b c -> 0 - | n a b c -> hanoi (n-1) a c b; - print a; print " -> "; print b; print "\n"; - hanoi (n-1) c b a -in (print "Number of discs: "; hanoi read "a" "b" "c") diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.in deleted file mode 100644 index 7ed6ff82de6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.in +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.out deleted file mode 100644 index 26f2a70fe10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-15.fun.out +++ /dev/null @@ -1,31 +0,0 @@ -Number of discs: a -> b -a -> c -b -> c -a -> b -c -> a -c -> b -a -> b -a -> c -b -> c -b -> a -c -> a -b -> c -a -> b -a -> c -b -> c -a -> b -c -> a -c -> b -a -> b -c -> a -b -> c -b -> a -c -> a -c -> b -a -> b -a -> c -b -> c -a -> b -c -> a -c -> b -a -> b diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun deleted file mode 100644 index f39f24a18c0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun +++ /dev/null @@ -1,11 +0,0 @@ -letrec print_list l = print "["; - letrec print_list_aux = - fun [] b -> 0 - | [h|t] b -> if b then print ", " else 0; - print h; - print_list_aux t true - in print_list_aux l false; - print "]" -and nat = fun 0 -> [] - | n -> cons n (nat (n-1)) -in (print "List of elements down from: "; print_list (nat read)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.out deleted file mode 100644 index 32e7744bc69..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-16.fun.out +++ /dev/null @@ -1 +0,0 @@ -List of elements down from: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun deleted file mode 100644 index f43f06ae3b2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun +++ /dev/null @@ -1 +0,0 @@ -print (print (print 7)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun.out deleted file mode 100644 index 5c1d4541ae1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-17.fun.out +++ /dev/null @@ -1 +0,0 @@ -777 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun deleted file mode 100644 index 1c7e81e8224..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun +++ /dev/null @@ -1,2 +0,0 @@ -let p = print -in (p (p (p 7))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun.out deleted file mode 100644 index 5c1d4541ae1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-18.fun.out +++ /dev/null @@ -1 +0,0 @@ -777 \ No newline at end of file diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun deleted file mode 100644 index 247928925fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun +++ /dev/null @@ -1,3 +0,0 @@ -let p x = print x; print "\n" ; x -and r = read -in (p (p (p r + r) + r) + r) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.out deleted file mode 100644 index 300ed6fcd17..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ex-19.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -10 -20 -30 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-5.fun.out deleted file mode 100644 index 18b3bec2ee6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-5.fun.out +++ /dev/null @@ -1,11 +0,0 @@ - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/Makefile b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/Makefile deleted file mode 100644 index f6a3ba02c78..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/README b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/README deleted file mode 100644 index 461d899bf09..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/README +++ /dev/null @@ -1,15 +0,0 @@ -Several functional languages have a variant of let binder, called let*. -Syntactically, let* has the same syntax as let and letrec, that is, - - syntax Exp ::= "let*" Bindings "in" Exp - -Semantically, let* processes its bindings in order, adding the current -binding to the environment before moving to the next binding. For -example, the program - - let* x=1 - and y=x - in y - -is well defined and evaluates to 1, but it would be undefined if we -replaced let* with let. Add a let* construct to FUN. diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun deleted file mode 100644 index f7a16271c4e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun +++ /dev/null @@ -1,6 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec ack = fun Pair(0,n) -> n + 1 - | Pair(m,0) -> ack Pair(m - 1, 1) - | Pair(m,n) -> ack Pair(m - 1, ack Pair(m, n - 1)) -in (ack Pair(2,3)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun.out deleted file mode 100644 index 6a90a04d879..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ackermann.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 9 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun deleted file mode 100644 index a34ee3af2be..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun deleted file mode 100644 index 11288aa6e16..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun deleted file mode 100644 index 94360bf2560..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 3) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun deleted file mode 100644 index ede962fa0d1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun deleted file mode 100644 index f82d6a0a9d2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 5) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun deleted file mode 100644 index 712c043113c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun +++ /dev/null @@ -1,13 +0,0 @@ -// using callcc for exceptions -// the following is efficient - -let f l = - callcc (fun throw -> - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux (tail l) - in aux l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun deleted file mode 100644 index 98f930b2277..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun +++ /dev/null @@ -1,13 +0,0 @@ -// the following is also efficient and uses try/catch - -let f l = try - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux(tail l) - in aux l - catch(x) - x -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-efficient-with-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun deleted file mode 100644 index 1dacf714cf1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun +++ /dev/null @@ -1,11 +0,0 @@ -// calculating the product of elements in a list -// this is inefficient; one would like to throw an exception -// see callcc-efficient-with.fun for an efficient variant - -letrec f l = - if null? l - then 1 - else if head l == 0 - then 0 - else head l * f(tail l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-inefficient-without.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun deleted file mode 100644 index c5d5074ef6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for looping - - -let goto = ref (fun x -> x) and n = ref 0 -in callcc (fun exit -> - callcc (fun k -> goto := k; 0); // "goto _" will jump here - if @n < 100 then n := @n + 1 else exit @n; - @goto 0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun.out deleted file mode 100644 index c8568a9f66a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-looping.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 100 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun deleted file mode 100644 index cc103e32988..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for returning: grab caller's continuation - -let f l return = - if null? l - then return 0 - else return 1; - 0 / 0 -in callcc (f []) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun deleted file mode 100644 index eab8034115d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun +++ /dev/null @@ -1,10 +0,0 @@ -// using callcc for returning: grab callee's continuation - -let f l = - callcc (fun return -> - if null?(l) - then return 0 - else return 1; - 0 / 0 - ) -in f [1,2] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun.out deleted file mode 100644 index 700871b83ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/callcc-return-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 1 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun deleted file mode 100644 index a34eab7ce6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype 'a bst = Empty | Node('a bst, 'a, 'a bst) - -letrec bst_sort l = flatten (mk_bst l) - and flatten = fun Empty -> [] - | Node(l,n,r) -> append (flatten l) (cons n (flatten r)) - and append = fun [] r -> r | [h|t] r -> cons h (append t r) - and mk_bst = fun [] -> Empty | [h|t] -> insert (mk_bst t) h - and insert = fun Empty n -> Node(Empty,n,Empty) - | Node(l, m, r) n -> if n < m - then Node(insert l n, m, r) - else Node(l, m, insert r n) - and downto = fun 0 -> [0] | n -> cons n (downto (n - 1)) - and upto = fun 0 -> [0] | n -> append (upto (n - 1)) [n] - and merge = fun [] [] -> [] - | [h1|t1] [h2|t2] -> cons h1 (cons h2 (merge t1 t2)) - and shuffle n = merge (downto n) (upto n) -in (bst_sort (shuffle 10)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun.out deleted file mode 100644 index 8d9ba48a802..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-bst-sorting.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun deleted file mode 100644 index 69fb3435b64..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype day = Monday | Tuesday | Wednesday - | Thursday | Friday | Saturday | Sunday - -let day_after = - fun Monday -> Tuesday - | Tuesday -> Wednesday - | Wednesday -> Thursday - | Thursday -> Friday - | Friday -> Saturday - | Saturday -> Sunday - | Sunday -> Monday -in letrec days_later = - fun 0 day -> day - | n day -> if n>0 - then days_later (n - 1) (day_after day) - else days_later (n + 7) day - in [days_later 2 Tuesday, days_later (-4) Wednesday, days_later 17 Monday] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun.out deleted file mode 100644 index c3122cd2329..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-days.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ Thursday , Saturday , Thursday , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun deleted file mode 100644 index f08ad0eb61f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) - and distribute = - fun Times(e1, Plus(e2, e3)) -> Plus(Times(distribute e1, distribute e2), - Times(distribute e1, distribute e3)) - | Times(Plus(e1, e2), e3) -> Plus(Times(distribute e1, distribute e3), - Times(distribute e2, distribute e3)) - | Plus(l,r) -> Plus(distribute l, distribute r) - | Minus(l,r) -> Minus(distribute l, distribute r) - | Value(n) -> Value(n) -in toString (distribute Times(Value("n"), Plus(Value("x"), Value("y")))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun.out deleted file mode 100644 index 80ab2455190..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-distributivity.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - "(n * x + n * y)" ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun deleted file mode 100644 index d7840f6d0e3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun +++ /dev/null @@ -1,8 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) -in toString Times(Value("n"), Plus(Value("x"), Value("y"))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun.out deleted file mode 100644 index 5921ac480c3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-expr-toString.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - "n * (x + y)" ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun deleted file mode 100644 index d987c4302b5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun +++ /dev/null @@ -1,4 +0,0 @@ -datatype 'a mylist = Nil | Cons('a, 'a mylist) - -letrec length = fun Nil -> 0 | Cons(h,t) -> 1 + length t -in length Cons(3, Cons(5, Cons(8, Nil))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-list-length.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun deleted file mode 100644 index 90f75e4239c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun +++ /dev/null @@ -1,7 +0,0 @@ -datatype 'a tree = Leaf('a) | Tree('a tree, 'a tree) - -letrec mirror = - fun Leaf(n) -> Leaf(n) - | Tree(left, right) -> Tree(mirror(right), mirror(left)) -in mirror Tree(Tree(Leaf(1), Leaf(2)), - Tree(Leaf(3), Tree(Leaf(4), Leaf(5)))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun.out deleted file mode 100644 index 077867f429a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/constructor-tree-mirror.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - Tree ( Tree ( Tree ( Leaf ( 5 , .Bottoms ) , Leaf ( 4 , .Bottoms ) , .Bottoms ) , Leaf ( 3 , .Bottoms ) , .Bottoms ) , Tree ( Leaf ( 2 , .Bottoms ) , Leaf ( 1 , .Bottoms ) , .Bottoms ) , .Bottoms ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun deleted file mode 100644 index 7b9bf028e86..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument -// we think of Nothing as () - -datatype nothing = Nothing - -let f Nothing = 7 -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun.out deleted file mode 100644 index 6ad43d4e456..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , Nothing -> 7 | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun deleted file mode 100644 index 7446ab927eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument - -datatype nothing = Nothing - -let x = 7 -in let f Nothing = x - in f Nothing - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/empty-argument-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun deleted file mode 100644 index 7f60623400b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun +++ /dev/null @@ -1,3 +0,0 @@ -let* x=1 -and x=2 -in x diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-01.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun deleted file mode 100644 index a762a4236e8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun +++ /dev/null @@ -1,3 +0,0 @@ -let* x=1 -and y=x -in y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun.out deleted file mode 100644 index 700871b83ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-02.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 1 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun deleted file mode 100644 index 9e0a6123800..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun +++ /dev/null @@ -1,4 +0,0 @@ -let x=3 - in let* x=x - and y=x - in x diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-03.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun deleted file mode 100644 index 0a9876bd365..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun +++ /dev/null @@ -1,7 +0,0 @@ -let x1=1 -and x2=2 -and x3=3 - in let* x1=x1+x2+x3 - and x2=x1+x2+x3 - and x3=x1+x2+x3 - in x3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun.out deleted file mode 100644 index c8e30bf0c6c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-04.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 20 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun deleted file mode 100644 index ffd94cd5eb5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun +++ /dev/null @@ -1,10 +0,0 @@ -let* x1=1 -and x2=x1 -and x3=x2+x1 -and x4=x3+x2 -and x5=x4+x3 -and x6=x5+x4 -and x7=x6+x5 -and x8=x7+x6 -and x9=x8+x7 -in x9 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun.out deleted file mode 100644 index 20efa4d5bc5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-05.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 34 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun deleted file mode 100644 index ee949ac4776..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun +++ /dev/null @@ -1,6 +0,0 @@ -letrec fibo n x y = if n==0 - then x - else let* x=x+y - and y=x-y - in fibo (n-1) x y -in fibo 7 1 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun.out deleted file mode 100644 index 20efa4d5bc5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-06.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 34 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun deleted file mode 100644 index 4219bef9f51..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun +++ /dev/null @@ -1,5 +0,0 @@ -let x1=1 and x2=2 and x3=3 and x4=4 and x5=5 -in let* x1=x3 and x2=x1 and x3=x2 and x4=x3 and x5=x4 - in let* x1=x1 and x2=x1 and x3=x2 and x4=x3 and x5=x4 - in let* x1=x1 and x2=x1 and x3=x2 and x4=x3 and x5=x4 - in x5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-07.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun deleted file mode 100644 index a3003652c48..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun +++ /dev/null @@ -1,5 +0,0 @@ -let* x=1 and y=x -in let x=2 and y=x - in let* x=y and y=x - in let x=y and y=x - in x diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun.out deleted file mode 100644 index 700871b83ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-08.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 1 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun deleted file mode 100644 index 3d684b4e2cf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun +++ /dev/null @@ -1,5 +0,0 @@ -let* x=1 and y=x -in let x=2 and y=x - in let x=y and y=x - in let x=y and y=x - in x diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-09.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun deleted file mode 100644 index a542ebb6e72..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun +++ /dev/null @@ -1,5 +0,0 @@ -let* x = 1 -and y = let x = x in x -and z = let x = y + 1 in x -and u = x -in u diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun.out deleted file mode 100644 index 700871b83ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/ex-10.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 1 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun deleted file mode 100644 index 6979202588f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun +++ /dev/null @@ -1,11 +0,0 @@ -try ( - try ( - 3 + throw(10) * 2 - ) catch(x) ( - throw(2*x) + 7 - ) -) catch(x) ( - x + 1 -) - -// 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun.out deleted file mode 100644 index af105b90176..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/exceptions.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 21 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun deleted file mode 100644 index 9e3c081d54e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun +++ /dev/null @@ -1,16 +0,0 @@ -// both maximum of a list and factorial: testing various things: -// a) multiple bindings in a letrec -// b) multiple arguments to functions (max) -// c) shadowing parameters (let x = ... x ... in ... x ...) - - -letrec max = fun [h] x y -> h - | [h|t] x y -> let x = max t x y - in if h > x then h else x - -and fact = fun 0 -> 1 - | x -> x * fact(x - 1) - -in fact (max [1, 3, fact 4, 2, 5, 0, -1, -5] true 5) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial-and-list-max.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun deleted file mode 100644 index 59b944b03fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun +++ /dev/null @@ -1,8 +0,0 @@ -// letrec f x = if x<=0 then 1 else x * f(x - 1) -// in f (f 4) - -letrec f = fun 0 -> 1 - | x -> x * f(x - 1) -in f (f 4) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/factorial.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun deleted file mode 100644 index 4f41a8312ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing let - -let second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun deleted file mode 100644 index 1a4a439b76f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec - -letrec second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun deleted file mode 100644 index 36eb3668f89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec and multiple arguments with currying - -letrec second l x = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] true - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun deleted file mode 100644 index efa13ef81fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun +++ /dev/null @@ -1,4 +0,0 @@ -let second = fun [x,y|t] -> y -in second [1, 3, 5, 0, -2] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun deleted file mode 100644 index ccaa3884b10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -in length [1, 3, 5, 2, 4, 0, -1, -5] - -// 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun.out deleted file mode 100644 index 9ea0e4a7dd3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-length.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 8 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun deleted file mode 100644 index bbf62029179..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun +++ /dev/null @@ -1,6 +0,0 @@ -letrec max = fun [h] -> h - | [h|t] -> let x = max t - in if h > x then h else x -in max [1, 3, 5, 2, 4, 0, -1, -5] - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun.out deleted file mode 100644 index 8452ba72a7c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-max.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 5 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun deleted file mode 100644 index 5dba9b5be4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun +++ /dev/null @@ -1,4 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -in nth 4 [5,4,3,2,1] - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/list-nth.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun deleted file mode 100644 index 6637c9b2830..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun +++ /dev/null @@ -1,10 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -and nat n m = if n == m then [n] else (cons n (nat (n + 1) m)) -and length = fun [] -> 0 - | [h|t] -> 1 + length t -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -and app = fun [] x -> [] - | [h|t] x -> cons (h x) (app t x) -in (app (map nth (nat 1 5)) [10,11,12,13,14,15,16,17]) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun.out deleted file mode 100644 index cc7245ebffe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/nth.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ 10 , 11 , 12 , 13 , 14 , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun deleted file mode 100644 index 938d7f94dd6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -and complex = fun Triple([Pair(h1,h2)|t], l, [Pair(a,2), Pair(3,b), c]) - -> Pair(h2 + length t + b, a) - | Triple([],[],[Pair(7,2),x,c]) - -> x - | default - -> Pair(0,0) -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -in map complex [Triple([Pair(8,7)], [], [Pair(9,2), Pair(3,3), Pair(2,2)]), - Triple([], [], [Pair(7,2), Pair(0,1), Pair(-1,-1)]), - Triple([],[],[])] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun.out deleted file mode 100644 index 92c320f35e8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/pattern.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ Pair ( 10 , 9 , .Bottoms ) , Pair ( 0 , 1 , .Bottoms ) , Pair ( 0 , 0 , .Bottoms ) , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun deleted file mode 100644 index 0f4bb9199fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f x = x -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun.out deleted file mode 100644 index 704a5fbaf8d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x -> x | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun deleted file mode 100644 index 45a181d3889..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing (instantiated) polymorphism - -let f x = x -in f 3 - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun deleted file mode 100644 index 2accdf00223..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> x -in if f true then f 2 else f 3 - -// 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun deleted file mode 100644 index eebc34fa131..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> let y = x in y -in (fun x -> f) 7 - -// identity diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun.out deleted file mode 100644 index 9f2b74dab94..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x -> let ( y = x ) and .Bindings in y | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun deleted file mode 100644 index 74a65556f9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// the program below justifies the restriction that reference -// types should not be polymorphic - -// the following runs in our semantics, but it should not type -// (elements of different types are added in *r)! - -let f = let r = ref [] - in (fun x -> r := cons x @r; x) -in if f true then f 3 else f 4 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun deleted file mode 100644 index 32ccb7db7e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun +++ /dev/null @@ -1,8 +0,0 @@ -// testing polymorphism and also the efficiency of the type inferencer - -let f00 = fun x -> fun y -> x in - let f01 = fun x -> f00 (f00 x) in - let f02 = fun x -> f01 (f01 x) in - let f03 = fun x -> f02 (f02 x) in - let f04 = fun x -> f03 (f03 x) in - f04 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun.out deleted file mode 100644 index 84dc1ad6691..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/polymorphism-6.fun.out +++ /dev/null @@ -1,8 +0,0 @@ -{ - V:K -#Equals - closure ( f00 |-> 0 - f01 |-> 1 - f02 |-> 2 - f03 |-> 3 , x -> f03 ( f03 x ) | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun deleted file mode 100644 index fdb6d5216c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun +++ /dev/null @@ -1,29 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec - -max l Pair(x,y) = - if @x != y - then -1 - else if null?(tail l) - then head l - else let x = max (tail l) Pair(x := @x + 1; x, y + 1) - in if x <= head l - then head l - else x - -and - -map f l = - if null? l - then [] - else cons (f (head l)) (map f (tail l)) - -and - -factorial x = - if x <= 0 - then 1 - else x * factorial(x - 1) - -in max (map factorial [1, 2, 3, factorial 4]) Pair(ref 1, 1) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun deleted file mode 100644 index 5c3577449d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -let f x y = x := @x + 2; y := @y + 3 -and x = ref 0 -in (f x x; @x) - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun.out deleted file mode 100644 index 8452ba72a7c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 5 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun deleted file mode 100644 index a36cb44cb5c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing ref, * and ; - -let f x = x + x -in let y = ref 5 - in f (y := @y + 3; @y) - -// 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun.out deleted file mode 100644 index a8c65f33981..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 16 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun deleted file mode 100644 index a11a9c72ff9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun +++ /dev/null @@ -1,10 +0,0 @@ -// can be used for testing parameter passing styles -// replace parameter passing style of f - -let f = let c = ref 0 - in ( - c := @c + 100 ; - (fun x -> c := @c + 1000; x + x + @c) - ) -in let y = ref 0 - in f(y := @y + 1 ; @y) + f(0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun.out deleted file mode 100644 index eda9bca821e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3202 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-5.fun deleted file mode 100644 index c7ba51ec833..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-5.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing &, *, := and lists - -let f x = x := @x + 1 -and x = 7 -in [x, f &x; x, f &x; x] - -// [7,8,9], or [7,9,8], or [9,8,9], or [9,9,8] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun deleted file mode 100644 index d608fc95dc4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec: next should get stuck - -let x = 1 -in letrec x = 2 - and y = x - in y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun.out deleted file mode 100644 index a298c9bb32c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/stuck-letrec.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - x ~> #freezer_,__FUN-UNTYPED-COMMON_Exps_Exp_Exps0_ ( .Bottoms ~> . ) ~> #freezer_,__FUN-UNTYPED-COMMON_Exps_Exp_Exps1_ ( 2 ~> . ) ~> #freezerassignTo(_,_)_FUN-UNTYPED_KItem_Names_Exps1_ ( x , y , .Bottoms ~> . ) ~> y ~> setEnv ( x |-> 0 ) ~> setEnv ( .Map ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun deleted file mode 100644 index 8adeeab395e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun +++ /dev/null @@ -1,12 +0,0 @@ -// This tail recursive program uses fixed memory, but can take a lot of -// computation/stack space if the semantics is not tail-recursive. -// Curiously, the tail recursion rule does not seem to be favoured by -// maude: (1) it is not applied, preferring to apply the normal -// environment-recovery rule; and (2) it slows down significantly -// this program (4-5 times!), because it makes maude's matcher slower. - -datatype nothing = Nothing - -let n = ref 1000 -in letrec f Nothing = if @n>0 then n := @n - 1; f Nothing else 0 - in f Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tail-recursion.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun deleted file mode 100644 index cd48ddd354b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing functions tuple arguments and polymorphism - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -fun Triple(x,y,z) -> y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun.out deleted file mode 100644 index e61e6b30784..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , Triple ( x , y , z , .Bottoms ) -> y | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun deleted file mode 100644 index fb1d28fb917..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing nested tuples - -datatype 'a wrapper = Wrapper('a) -datatype ('a,'b) pair = Pair('a,'b) - -let x = 1 -and y = Wrapper(2) -and z = Pair(3,4) -in Pair(Pair(x,y),z) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun.out deleted file mode 100644 index f75cf98ed3d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - Pair ( Pair ( 1 , Wrapper ( 2 , .Bottoms ) , .Bottoms ) , Pair ( 3 , 4 , .Bottoms ) , .Bottoms ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun deleted file mode 100644 index 8f2ec9bf6c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing functions taking tuple arguments - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -let f Triple(x,y,z) = x + y + z -in f Triple(1,2,3) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun.out deleted file mode 100644 index dd62a8de638..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 6 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun deleted file mode 100644 index 2d70c169499..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing two tuple arguments to a function - -datatype ('a,'b) pair = Pair('a,'b) - -let f Pair(a,b) Pair(x,y) = a Pair(x,y) + b Pair(x,y) -in f Pair(fun Pair(x,y) -> x * y, fun Pair(x,y) -> x + y) Pair(10,20) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun.out deleted file mode 100644 index 57900ef07d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 230 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun deleted file mode 100644 index 70bea02b8e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing tuple arguments to a function - -datatype nothing = Nothing -datatype ('a,'b) pair = Pair('a,'b) - -let f = fun Nothing Pair(a,b) q Nothing Pair(x,y) Nothing - -> a Pair(x,y) + b Pair(x,y) -in f Nothing Pair(fun Pair (x,y) -> x * y, fun Pair(x,y) -> x + y) - 3 Nothing Pair(10,20) Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun.out deleted file mode 100644 index 57900ef07d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/tuple-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 230 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/Makefile b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/Makefile deleted file mode 100644 index fad35f75540..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests -include $(MAKEFILE_PATH)/../../Makefile - -tests/ex-%.fun: KRUN_FLAGS=--search --pattern '... ListItem(\#buffer(S:String)) ' - -tests/references-5.fun: kompile - true diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/README b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/README deleted file mode 100644 index ab54d0c26dc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/README +++ /dev/null @@ -1,20 +0,0 @@ -Add "spawn" and "join" constructs to environment-based FUN. To -facilitate testing, this exercise should extend the "io" exercise of -environment-based FUN. Also, to see the various non-deterministic -behaviors due to concurrency, you should label several rules, then -kompile with the option --transition, and then krun with option ---search. See texts/config.xml for details, and recall that several -rules can have the same label. - -The following program should have 4 different outputs ("22", "23", -"32", and "33"), although these can be reached through more than four -final configurations: - -let x = 1 -in (spawn (&x := x + 1; print x); &x := x + 1; print x) - -The following program is now fully synchronized, so it should only -have one solution: - -let x = 1 -in (join spawn (&x := x + 1; print x); &x := x + 1; print x) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun deleted file mode 100644 index f7a16271c4e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun +++ /dev/null @@ -1,6 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec ack = fun Pair(0,n) -> n + 1 - | Pair(m,0) -> ack Pair(m - 1, 1) - | Pair(m,n) -> ack Pair(m - 1, ack Pair(m, n - 1)) -in (ack Pair(2,3)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun.out deleted file mode 100644 index 6a90a04d879..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ackermann.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 9 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun deleted file mode 100644 index a34ee3af2be..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun deleted file mode 100644 index 11288aa6e16..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun deleted file mode 100644 index 94360bf2560..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 3) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun deleted file mode 100644 index ede962fa0d1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun deleted file mode 100644 index f82d6a0a9d2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 5) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun deleted file mode 100644 index 712c043113c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun +++ /dev/null @@ -1,13 +0,0 @@ -// using callcc for exceptions -// the following is efficient - -let f l = - callcc (fun throw -> - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux (tail l) - in aux l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun deleted file mode 100644 index 98f930b2277..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun +++ /dev/null @@ -1,13 +0,0 @@ -// the following is also efficient and uses try/catch - -let f l = try - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux(tail l) - in aux l - catch(x) - x -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-efficient-with-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun deleted file mode 100644 index 1dacf714cf1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun +++ /dev/null @@ -1,11 +0,0 @@ -// calculating the product of elements in a list -// this is inefficient; one would like to throw an exception -// see callcc-efficient-with.fun for an efficient variant - -letrec f l = - if null? l - then 1 - else if head l == 0 - then 0 - else head l * f(tail l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-inefficient-without.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun deleted file mode 100644 index c5d5074ef6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for looping - - -let goto = ref (fun x -> x) and n = ref 0 -in callcc (fun exit -> - callcc (fun k -> goto := k; 0); // "goto _" will jump here - if @n < 100 then n := @n + 1 else exit @n; - @goto 0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun.out deleted file mode 100644 index c8568a9f66a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-looping.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 100 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun deleted file mode 100644 index cc103e32988..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for returning: grab caller's continuation - -let f l return = - if null? l - then return 0 - else return 1; - 0 / 0 -in callcc (f []) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun deleted file mode 100644 index eab8034115d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun +++ /dev/null @@ -1,10 +0,0 @@ -// using callcc for returning: grab callee's continuation - -let f l = - callcc (fun return -> - if null?(l) - then return 0 - else return 1; - 0 / 0 - ) -in f [1,2] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun.out deleted file mode 100644 index 700871b83ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/callcc-return-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 1 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun deleted file mode 100644 index a34eab7ce6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype 'a bst = Empty | Node('a bst, 'a, 'a bst) - -letrec bst_sort l = flatten (mk_bst l) - and flatten = fun Empty -> [] - | Node(l,n,r) -> append (flatten l) (cons n (flatten r)) - and append = fun [] r -> r | [h|t] r -> cons h (append t r) - and mk_bst = fun [] -> Empty | [h|t] -> insert (mk_bst t) h - and insert = fun Empty n -> Node(Empty,n,Empty) - | Node(l, m, r) n -> if n < m - then Node(insert l n, m, r) - else Node(l, m, insert r n) - and downto = fun 0 -> [0] | n -> cons n (downto (n - 1)) - and upto = fun 0 -> [0] | n -> append (upto (n - 1)) [n] - and merge = fun [] [] -> [] - | [h1|t1] [h2|t2] -> cons h1 (cons h2 (merge t1 t2)) - and shuffle n = merge (downto n) (upto n) -in (bst_sort (shuffle 10)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun.out deleted file mode 100644 index 8d9ba48a802..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-bst-sorting.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun deleted file mode 100644 index 69fb3435b64..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype day = Monday | Tuesday | Wednesday - | Thursday | Friday | Saturday | Sunday - -let day_after = - fun Monday -> Tuesday - | Tuesday -> Wednesday - | Wednesday -> Thursday - | Thursday -> Friday - | Friday -> Saturday - | Saturday -> Sunday - | Sunday -> Monday -in letrec days_later = - fun 0 day -> day - | n day -> if n>0 - then days_later (n - 1) (day_after day) - else days_later (n + 7) day - in [days_later 2 Tuesday, days_later (-4) Wednesday, days_later 17 Monday] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun.out deleted file mode 100644 index c3122cd2329..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-days.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ Thursday , Saturday , Thursday , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun deleted file mode 100644 index f08ad0eb61f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) - and distribute = - fun Times(e1, Plus(e2, e3)) -> Plus(Times(distribute e1, distribute e2), - Times(distribute e1, distribute e3)) - | Times(Plus(e1, e2), e3) -> Plus(Times(distribute e1, distribute e3), - Times(distribute e2, distribute e3)) - | Plus(l,r) -> Plus(distribute l, distribute r) - | Minus(l,r) -> Minus(distribute l, distribute r) - | Value(n) -> Value(n) -in toString (distribute Times(Value("n"), Plus(Value("x"), Value("y")))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun.out deleted file mode 100644 index 80ab2455190..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-distributivity.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - "(n * x + n * y)" ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun deleted file mode 100644 index d7840f6d0e3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun +++ /dev/null @@ -1,8 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) -in toString Times(Value("n"), Plus(Value("x"), Value("y"))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun.out deleted file mode 100644 index 5921ac480c3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-expr-toString.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - "n * (x + y)" ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun deleted file mode 100644 index d987c4302b5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun +++ /dev/null @@ -1,4 +0,0 @@ -datatype 'a mylist = Nil | Cons('a, 'a mylist) - -letrec length = fun Nil -> 0 | Cons(h,t) -> 1 + length t -in length Cons(3, Cons(5, Cons(8, Nil))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-list-length.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun deleted file mode 100644 index 90f75e4239c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun +++ /dev/null @@ -1,7 +0,0 @@ -datatype 'a tree = Leaf('a) | Tree('a tree, 'a tree) - -letrec mirror = - fun Leaf(n) -> Leaf(n) - | Tree(left, right) -> Tree(mirror(right), mirror(left)) -in mirror Tree(Tree(Leaf(1), Leaf(2)), - Tree(Leaf(3), Tree(Leaf(4), Leaf(5)))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun.out deleted file mode 100644 index 077867f429a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/constructor-tree-mirror.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - Tree ( Tree ( Tree ( Leaf ( 5 , .Bottoms ) , Leaf ( 4 , .Bottoms ) , .Bottoms ) , Leaf ( 3 , .Bottoms ) , .Bottoms ) , Tree ( Leaf ( 2 , .Bottoms ) , Leaf ( 1 , .Bottoms ) , .Bottoms ) , .Bottoms ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun deleted file mode 100644 index 7b9bf028e86..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument -// we think of Nothing as () - -datatype nothing = Nothing - -let f Nothing = 7 -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun.out deleted file mode 100644 index 6ad43d4e456..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , Nothing -> 7 | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun deleted file mode 100644 index 7446ab927eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument - -datatype nothing = Nothing - -let x = 7 -in let f Nothing = x - in f Nothing - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/empty-argument-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun deleted file mode 100644 index d46b494edce..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun +++ /dev/null @@ -1,2 +0,0 @@ -let x = 1 -in (spawn (&x := x + 1; print x); &x := x + 1; print x) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun.out deleted file mode 100644 index 190ceb246d3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-01.fun.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "22" - } -#Or - { - S:String - #Equals - "23" - } -#Or - { - S:String - #Equals - "32" - } -#Or - { - S:String - #Equals - "33" - } diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun deleted file mode 100644 index 52432aa49e1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun +++ /dev/null @@ -1,2 +0,0 @@ -let x = 1 -in (join spawn (&x := x + 1; print x); &x := x + 1; print x) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun.out deleted file mode 100644 index cfe696e31a1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-02.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "23" -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun deleted file mode 100644 index ecdbf0376b7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun +++ /dev/null @@ -1,4 +0,0 @@ -let x = read -in let t1 = spawn &x := x / 2 - in let t2 = spawn &x := x + 10 - in (join t1; join t2; print x) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.out deleted file mode 100644 index 841230b351f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-03.fun.out +++ /dev/null @@ -1,23 +0,0 @@ - { - S:String - #Equals - "5" - } -#Or - { - S:String - #Equals - "10" - } -#Or - { - S:String - #Equals - "15" - } -#Or - { - S:String - #Equals - "20" - } diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun deleted file mode 100644 index c7c64e2a4b2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun +++ /dev/null @@ -1,4 +0,0 @@ -let x = read -in let t1 = spawn &x := x / 2 - in let t2 = spawn (join t1; &x := x + 10) - in (join t1; join t2; print x) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.in b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.in deleted file mode 100644 index f599e28b8ab..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.in +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.out deleted file mode 100644 index 6afe88446d4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/ex-04.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - S:String -#Equals - "15" -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun deleted file mode 100644 index 6979202588f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun +++ /dev/null @@ -1,11 +0,0 @@ -try ( - try ( - 3 + throw(10) * 2 - ) catch(x) ( - throw(2*x) + 7 - ) -) catch(x) ( - x + 1 -) - -// 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun.out deleted file mode 100644 index af105b90176..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/exceptions.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 21 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun deleted file mode 100644 index 9e3c081d54e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun +++ /dev/null @@ -1,16 +0,0 @@ -// both maximum of a list and factorial: testing various things: -// a) multiple bindings in a letrec -// b) multiple arguments to functions (max) -// c) shadowing parameters (let x = ... x ... in ... x ...) - - -letrec max = fun [h] x y -> h - | [h|t] x y -> let x = max t x y - in if h > x then h else x - -and fact = fun 0 -> 1 - | x -> x * fact(x - 1) - -in fact (max [1, 3, fact 4, 2, 5, 0, -1, -5] true 5) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial-and-list-max.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun deleted file mode 100644 index 59b944b03fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun +++ /dev/null @@ -1,8 +0,0 @@ -// letrec f x = if x<=0 then 1 else x * f(x - 1) -// in f (f 4) - -letrec f = fun 0 -> 1 - | x -> x * f(x - 1) -in f (f 4) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/factorial.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun deleted file mode 100644 index 4f41a8312ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing let - -let second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun deleted file mode 100644 index 1a4a439b76f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec - -letrec second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun deleted file mode 100644 index 36eb3668f89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec and multiple arguments with currying - -letrec second l x = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] true - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun deleted file mode 100644 index efa13ef81fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun +++ /dev/null @@ -1,4 +0,0 @@ -let second = fun [x,y|t] -> y -in second [1, 3, 5, 0, -2] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun deleted file mode 100644 index ccaa3884b10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -in length [1, 3, 5, 2, 4, 0, -1, -5] - -// 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun.out deleted file mode 100644 index 9ea0e4a7dd3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-length.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 8 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun deleted file mode 100644 index bbf62029179..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun +++ /dev/null @@ -1,6 +0,0 @@ -letrec max = fun [h] -> h - | [h|t] -> let x = max t - in if h > x then h else x -in max [1, 3, 5, 2, 4, 0, -1, -5] - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun.out deleted file mode 100644 index 8452ba72a7c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-max.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 5 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun deleted file mode 100644 index 5dba9b5be4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun +++ /dev/null @@ -1,4 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -in nth 4 [5,4,3,2,1] - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/list-nth.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun deleted file mode 100644 index 6637c9b2830..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun +++ /dev/null @@ -1,10 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -and nat n m = if n == m then [n] else (cons n (nat (n + 1) m)) -and length = fun [] -> 0 - | [h|t] -> 1 + length t -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -and app = fun [] x -> [] - | [h|t] x -> cons (h x) (app t x) -in (app (map nth (nat 1 5)) [10,11,12,13,14,15,16,17]) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun.out deleted file mode 100644 index cc7245ebffe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/nth.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ 10 , 11 , 12 , 13 , 14 , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun deleted file mode 100644 index 938d7f94dd6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -and complex = fun Triple([Pair(h1,h2)|t], l, [Pair(a,2), Pair(3,b), c]) - -> Pair(h2 + length t + b, a) - | Triple([],[],[Pair(7,2),x,c]) - -> x - | default - -> Pair(0,0) -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -in map complex [Triple([Pair(8,7)], [], [Pair(9,2), Pair(3,3), Pair(2,2)]), - Triple([], [], [Pair(7,2), Pair(0,1), Pair(-1,-1)]), - Triple([],[],[])] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun.out deleted file mode 100644 index 92c320f35e8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/pattern.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ Pair ( 10 , 9 , .Bottoms ) , Pair ( 0 , 1 , .Bottoms ) , Pair ( 0 , 0 , .Bottoms ) , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun deleted file mode 100644 index 0f4bb9199fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f x = x -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun.out deleted file mode 100644 index 704a5fbaf8d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x -> x | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun deleted file mode 100644 index 45a181d3889..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing (instantiated) polymorphism - -let f x = x -in f 3 - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun deleted file mode 100644 index 2accdf00223..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> x -in if f true then f 2 else f 3 - -// 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun deleted file mode 100644 index eebc34fa131..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> let y = x in y -in (fun x -> f) 7 - -// identity diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun.out deleted file mode 100644 index 9f2b74dab94..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x -> let ( y = x ) and .Bindings in y | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun deleted file mode 100644 index 74a65556f9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// the program below justifies the restriction that reference -// types should not be polymorphic - -// the following runs in our semantics, but it should not type -// (elements of different types are added in *r)! - -let f = let r = ref [] - in (fun x -> r := cons x @r; x) -in if f true then f 3 else f 4 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun deleted file mode 100644 index 32ccb7db7e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun +++ /dev/null @@ -1,8 +0,0 @@ -// testing polymorphism and also the efficiency of the type inferencer - -let f00 = fun x -> fun y -> x in - let f01 = fun x -> f00 (f00 x) in - let f02 = fun x -> f01 (f01 x) in - let f03 = fun x -> f02 (f02 x) in - let f04 = fun x -> f03 (f03 x) in - f04 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun.out deleted file mode 100644 index 84dc1ad6691..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/polymorphism-6.fun.out +++ /dev/null @@ -1,8 +0,0 @@ -{ - V:K -#Equals - closure ( f00 |-> 0 - f01 |-> 1 - f02 |-> 2 - f03 |-> 3 , x -> f03 ( f03 x ) | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun deleted file mode 100644 index fdb6d5216c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun +++ /dev/null @@ -1,29 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec - -max l Pair(x,y) = - if @x != y - then -1 - else if null?(tail l) - then head l - else let x = max (tail l) Pair(x := @x + 1; x, y + 1) - in if x <= head l - then head l - else x - -and - -map f l = - if null? l - then [] - else cons (f (head l)) (map f (tail l)) - -and - -factorial x = - if x <= 0 - then 1 - else x * factorial(x - 1) - -in max (map factorial [1, 2, 3, factorial 4]) Pair(ref 1, 1) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun deleted file mode 100644 index 5c3577449d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -let f x y = x := @x + 2; y := @y + 3 -and x = ref 0 -in (f x x; @x) - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun.out deleted file mode 100644 index 8452ba72a7c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 5 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun deleted file mode 100644 index a36cb44cb5c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing ref, * and ; - -let f x = x + x -in let y = ref 5 - in f (y := @y + 3; @y) - -// 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun.out deleted file mode 100644 index a8c65f33981..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 16 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun deleted file mode 100644 index a11a9c72ff9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun +++ /dev/null @@ -1,10 +0,0 @@ -// can be used for testing parameter passing styles -// replace parameter passing style of f - -let f = let c = ref 0 - in ( - c := @c + 100 ; - (fun x -> c := @c + 1000; x + x + @c) - ) -in let y = ref 0 - in f(y := @y + 1 ; @y) + f(0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun.out deleted file mode 100644 index eda9bca821e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3202 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun deleted file mode 100644 index c7ba51ec833..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing &, *, := and lists - -let f x = x := @x + 1 -and x = 7 -in [x, f &x; x, f &x; x] - -// [7,8,9], or [7,9,8], or [9,8,9], or [9,9,8] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun.out deleted file mode 100644 index e226d3183e1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/references-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun deleted file mode 100644 index d608fc95dc4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec: next should get stuck - -let x = 1 -in letrec x = 2 - and y = x - in y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun.out deleted file mode 100644 index a298c9bb32c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/stuck-letrec.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - x ~> #freezer_,__FUN-UNTYPED-COMMON_Exps_Exp_Exps0_ ( .Bottoms ~> . ) ~> #freezer_,__FUN-UNTYPED-COMMON_Exps_Exp_Exps1_ ( 2 ~> . ) ~> #freezerassignTo(_,_)_FUN-UNTYPED_KItem_Names_Exps1_ ( x , y , .Bottoms ~> . ) ~> y ~> setEnv ( x |-> 0 ) ~> setEnv ( .Map ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun deleted file mode 100644 index 8adeeab395e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun +++ /dev/null @@ -1,12 +0,0 @@ -// This tail recursive program uses fixed memory, but can take a lot of -// computation/stack space if the semantics is not tail-recursive. -// Curiously, the tail recursion rule does not seem to be favoured by -// maude: (1) it is not applied, preferring to apply the normal -// environment-recovery rule; and (2) it slows down significantly -// this program (4-5 times!), because it makes maude's matcher slower. - -datatype nothing = Nothing - -let n = ref 1000 -in letrec f Nothing = if @n>0 then n := @n - 1; f Nothing else 0 - in f Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tail-recursion.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun deleted file mode 100644 index cd48ddd354b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing functions tuple arguments and polymorphism - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -fun Triple(x,y,z) -> y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun.out deleted file mode 100644 index e61e6b30784..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , Triple ( x , y , z , .Bottoms ) -> y | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun deleted file mode 100644 index fb1d28fb917..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing nested tuples - -datatype 'a wrapper = Wrapper('a) -datatype ('a,'b) pair = Pair('a,'b) - -let x = 1 -and y = Wrapper(2) -and z = Pair(3,4) -in Pair(Pair(x,y),z) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun.out deleted file mode 100644 index f75cf98ed3d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - Pair ( Pair ( 1 , Wrapper ( 2 , .Bottoms ) , .Bottoms ) , Pair ( 3 , 4 , .Bottoms ) , .Bottoms ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun deleted file mode 100644 index 8f2ec9bf6c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing functions taking tuple arguments - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -let f Triple(x,y,z) = x + y + z -in f Triple(1,2,3) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun.out deleted file mode 100644 index dd62a8de638..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 6 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun deleted file mode 100644 index 2d70c169499..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing two tuple arguments to a function - -datatype ('a,'b) pair = Pair('a,'b) - -let f Pair(a,b) Pair(x,y) = a Pair(x,y) + b Pair(x,y) -in f Pair(fun Pair(x,y) -> x * y, fun Pair(x,y) -> x + y) Pair(10,20) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun.out deleted file mode 100644 index 57900ef07d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 230 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun deleted file mode 100644 index 70bea02b8e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing tuple arguments to a function - -datatype nothing = Nothing -datatype ('a,'b) pair = Pair('a,'b) - -let f = fun Nothing Pair(a,b) q Nothing Pair(x,y) Nothing - -> a Pair(x,y) + b Pair(x,y) -in f Nothing Pair(fun Pair (x,y) -> x * y, fun Pair(x,y) -> x + y) - 3 Nothing Pair(10,20) Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun.out deleted file mode 100644 index 57900ef07d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/spawn-join/tests/tuple-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 230 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/ackermann.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/ackermann.fun.out deleted file mode 100644 index 6a90a04d879..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/ackermann.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 9 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-1.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-2.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-3.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-4.fun.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-5.fun.out deleted file mode 100644 index 484970b776b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 10 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-1.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-2.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-inefficient-without.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-inefficient-without.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-inefficient-without.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-looping.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-looping.fun.out deleted file mode 100644 index c8568a9f66a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-looping.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 100 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-1.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-2.fun.out deleted file mode 100644 index 700871b83ec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 1 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-bst-sorting.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-bst-sorting.fun.out deleted file mode 100644 index 8d9ba48a802..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-bst-sorting.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-days.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-days.fun.out deleted file mode 100644 index c3122cd2329..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-days.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ Thursday , Saturday , Thursday , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-distributivity.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-distributivity.fun.out deleted file mode 100644 index 80ab2455190..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-distributivity.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - "(n * x + n * y)" ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-toString.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-toString.fun.out deleted file mode 100644 index 5921ac480c3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-toString.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - "n * (x + y)" ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-list-length.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-list-length.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-tree-mirror.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-tree-mirror.fun.out deleted file mode 100644 index 077867f429a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-tree-mirror.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - Tree ( Tree ( Tree ( Leaf ( 5 , .Bottoms ) , Leaf ( 4 , .Bottoms ) , .Bottoms ) , Leaf ( 3 , .Bottoms ) , .Bottoms ) , Tree ( Leaf ( 2 , .Bottoms ) , Leaf ( 1 , .Bottoms ) , .Bottoms ) , .Bottoms ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-1.fun.out deleted file mode 100644 index 6ad43d4e456..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , Nothing -> 7 | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-2.fun.out deleted file mode 100644 index 96cf3951ff0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 7 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/exceptions.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/exceptions.fun.out deleted file mode 100644 index af105b90176..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/exceptions.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 21 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial-and-list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial-and-list-max.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial-and-list-max.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-1.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-2.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-3.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-4.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-length.fun.out deleted file mode 100644 index 9ea0e4a7dd3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-length.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 8 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-max.fun.out deleted file mode 100644 index 8452ba72a7c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-max.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 5 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/nth.fun.out deleted file mode 100644 index cc7245ebffe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/nth.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ 10 , 11 , 12 , 13 , 14 , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/pattern.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/pattern.fun.out deleted file mode 100644 index 92c320f35e8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/pattern.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - [ Pair ( 10 , 9 , .Bottoms ) , Pair ( 0 , 1 , .Bottoms ) , Pair ( 0 , 0 , .Bottoms ) , .Bottoms ] ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-1.fun.out deleted file mode 100644 index 704a5fbaf8d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x -> x | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-2.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-3.fun.out deleted file mode 100644 index 713ebfe671c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 2 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-4.fun.out deleted file mode 100644 index 9f2b74dab94..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , x -> let ( y = x ) and .Bindings in y | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-5.fun.out deleted file mode 100644 index 0d1534ce8e4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-6.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-6.fun.out deleted file mode 100644 index 84dc1ad6691..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-6.fun.out +++ /dev/null @@ -1,8 +0,0 @@ -{ - V:K -#Equals - closure ( f00 |-> 0 - f01 |-> 1 - f02 |-> 2 - f03 |-> 3 , x -> f03 ( f03 x ) | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-1.fun.out deleted file mode 100644 index 3cf8d07723f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 620448401733239439360000 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-2.fun.out deleted file mode 100644 index 8452ba72a7c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 5 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-3.fun.out deleted file mode 100644 index a8c65f33981..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 16 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-4.fun.out deleted file mode 100644 index eda9bca821e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 3202 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-5.fun.out deleted file mode 100644 index 4fd3badf01a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-5.fun.out +++ /dev/null @@ -1,23 +0,0 @@ - { - V:K - #Equals - [ 7 , 8 , 9 , .Bottoms ] ~> . - } -#Or - { - V:K - #Equals - [ 7 , 9 , 8 , .Bottoms ] ~> . - } -#Or - { - V:K - #Equals - [ 9 , 8 , 9 , .Bottoms ] ~> . - } -#Or - { - V:K - #Equals - [ 9 , 9 , 8 , .Bottoms ] ~> . - } diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/stuck-letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/stuck-letrec.fun.out deleted file mode 100644 index a298c9bb32c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/stuck-letrec.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - x ~> #freezer_,__FUN-UNTYPED-COMMON_Exps_Exp_Exps0_ ( .Bottoms ~> . ) ~> #freezer_,__FUN-UNTYPED-COMMON_Exps_Exp_Exps1_ ( 2 ~> . ) ~> #freezerassignTo(_,_)_FUN-UNTYPED_KItem_Names_Exps1_ ( x , y , .Bottoms ~> . ) ~> y ~> setEnv ( x |-> 0 ) ~> setEnv ( .Map ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tail-recursion.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tail-recursion.fun.out deleted file mode 100644 index 3ea80bcc8b9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tail-recursion.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 0 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-1.fun.out deleted file mode 100644 index e61e6b30784..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-1.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - closure ( .Map , Triple ( x , y , z , .Bottoms ) -> y | .Cases ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-2.fun.out deleted file mode 100644 index f75cf98ed3d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-2.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - Pair ( Pair ( 1 , Wrapper ( 2 , .Bottoms ) , .Bottoms ) , Pair ( 3 , 4 , .Bottoms ) , .Bottoms ) ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-3.fun.out deleted file mode 100644 index dd62a8de638..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-3.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 6 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-4.fun.out deleted file mode 100644 index 57900ef07d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-4.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 230 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-5.fun.out deleted file mode 100644 index 57900ef07d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-5.fun.out +++ /dev/null @@ -1,5 +0,0 @@ -{ - V:K -#Equals - 230 ~> . -} diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/Makefile b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/Makefile deleted file mode 100644 index 1db742adb5f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=fun-untyped -EXT=fun -TESTDIR?=../../programs -RESULTDIR=tests -KOMPILE_BACKEND?=java -KRUN_FLAGS=--pattern " V:K " - -%/calcc-looping.fun \ -%/references-5.fun \ -%/constructor-bst-sorting.fun \ -%/constructor-expr-distributivity.fun \ -%/factorial-and-list-max.fun \ -%/nth.fun \ -%/pattern.fun \ -%/references-1.fun \ -%/stuck-letrec.fun: kompile - true - -include $(MAKEFILE_PATH)/../../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/Makefile b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/Makefile deleted file mode 100644 index f6a3ba02c78..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -TESTDIR=tests -include $(MAKEFILE_PATH)/../../Makefile diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/README b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/README deleted file mode 100644 index a0733c335ff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/README +++ /dev/null @@ -1,6 +0,0 @@ -The current substitution-based definition of FUN allows only letrec -with one binding. This exercise asks you to add letrec with -arbitrarily many bindings to substitution-based FUN. If correctly -defined, all the programs that executed correctly with the -environment-based FUN should also execute correctly with your -new substitution-based definition of FUN (albeit probably more slowly). diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/README b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/README deleted file mode 100644 index 61a38675b4f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/README +++ /dev/null @@ -1,60 +0,0 @@ -The programs in this folder should give an idea of what features FUN -has and how it is meant to work. We recommend consulting the programs -in the following order: - -factorial.fun -ackermann.fun -stuck-letrec.fun - -empty-argument-1.fun -empty-argument-2.fun -tuple-1.fun -tuple-2.fun -tuple-3.fun -tuple-4.fun -tuple-5.fun - -list-1.fun -list-2.fun -list-3.fun -list-4.fun -list-length.fun -list-max.fun -factorial-and-list-max.fun - -pattern.fun - -references-1.fun -references-2.fun -references-3.fun -references-4.fun -references-5.fun -tail-recursion.fun - -constructor-days.fun -constructor-list-length.fun -constructor-tree-mirror.fun -constructor-expr-toString.fun -constructor-expr-distributivity.fun -constructor-bst-sorting.fun - -callcc-1.fun -callcc-2.fun -callcc-3.fun -callcc-4.fun -callcc-5.fun -callcc-return-1.fun -callcc-return-2.fun -callcc-inefficient-without.fun -callcc-efficient-with-1.fun -callcc-efficient-with-2.fun -exceptions.fun -callcc-looping.fun - -polymorphism-1.fun -polymorphism-2.fun -polymorphism-3.fun -polymorphism-4.fun -polymorphism-5.fun -polymorphism-6.fun - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun deleted file mode 100644 index f7a16271c4e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun +++ /dev/null @@ -1,6 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec ack = fun Pair(0,n) -> n + 1 - | Pair(m,0) -> ack Pair(m - 1, 1) - | Pair(m,n) -> ack Pair(m - 1, ack Pair(m, n - 1)) -in (ack Pair(2,3)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun.out deleted file mode 100644 index ef139b1fdd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/ackermann.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 9 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun deleted file mode 100644 index a34ee3af2be..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun deleted file mode 100644 index 11288aa6e16..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun deleted file mode 100644 index 94360bf2560..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 3) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun deleted file mode 100644 index ede962fa0d1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun.out deleted file mode 100644 index fa025e8737a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun deleted file mode 100644 index f82d6a0a9d2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 5) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun.out deleted file mode 100644 index fa025e8737a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun deleted file mode 100644 index 712c043113c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun +++ /dev/null @@ -1,13 +0,0 @@ -// using callcc for exceptions -// the following is efficient - -let f l = - callcc (fun throw -> - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux (tail l) - in aux l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun deleted file mode 100644 index 98f930b2277..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun +++ /dev/null @@ -1,13 +0,0 @@ -// the following is also efficient and uses try/catch - -let f l = try - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux(tail l) - in aux l - catch(x) - x -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-efficient-with-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun deleted file mode 100644 index 1dacf714cf1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun +++ /dev/null @@ -1,11 +0,0 @@ -// calculating the product of elements in a list -// this is inefficient; one would like to throw an exception -// see callcc-efficient-with.fun for an efficient variant - -letrec f l = - if null? l - then 1 - else if head l == 0 - then 0 - else head l * f(tail l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-inefficient-without.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun deleted file mode 100644 index c5d5074ef6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for looping - - -let goto = ref (fun x -> x) and n = ref 0 -in callcc (fun exit -> - callcc (fun k -> goto := k; 0); // "goto _" will jump here - if @n < 100 then n := @n + 1 else exit @n; - @goto 0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun.out deleted file mode 100644 index 72ca9d6ca3b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-looping.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 100 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun deleted file mode 100644 index cc103e32988..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for returning: grab caller's continuation - -let f l return = - if null? l - then return 0 - else return 1; - 0 / 0 -in callcc (f []) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun deleted file mode 100644 index eab8034115d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun +++ /dev/null @@ -1,10 +0,0 @@ -// using callcc for returning: grab callee's continuation - -let f l = - callcc (fun return -> - if null?(l) - then return 0 - else return 1; - 0 / 0 - ) -in f [1,2] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun.out deleted file mode 100644 index 0dae281e449..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/callcc-return-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun deleted file mode 100644 index a34eab7ce6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype 'a bst = Empty | Node('a bst, 'a, 'a bst) - -letrec bst_sort l = flatten (mk_bst l) - and flatten = fun Empty -> [] - | Node(l,n,r) -> append (flatten l) (cons n (flatten r)) - and append = fun [] r -> r | [h|t] r -> cons h (append t r) - and mk_bst = fun [] -> Empty | [h|t] -> insert (mk_bst t) h - and insert = fun Empty n -> Node(Empty,n,Empty) - | Node(l, m, r) n -> if n < m - then Node(insert l n, m, r) - else Node(l, m, insert r n) - and downto = fun 0 -> [0] | n -> cons n (downto (n - 1)) - and upto = fun 0 -> [0] | n -> append (upto (n - 1)) [n] - and merge = fun [] [] -> [] - | [h1|t1] [h2|t2] -> cons h1 (cons h2 (merge t1 t2)) - and shuffle n = merge (downto n) (upto n) -in (bst_sort (shuffle 10)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun.out deleted file mode 100644 index 6d91437db13..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-bst-sorting.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K [ 0 , ( 0 , ( 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , ( 10 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( l -> ( flatten ( mk_bst l ) ) ) | .Cases ) 2 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( Empty -> [ .GeneratedListBottom ] ) | ( ( Node ( l , ( n , ( r , .GeneratedListBottom ) ) ) -> ( append ( flatten l ) ( cons n ( flatten r ) ) ) ) | .Cases ) ) 3 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( [ .GeneratedListBottom ] -> fun ( ( r -> r ) | .Cases ) ) | ( ( [ h , .GeneratedListBottom | t ] -> fun ( ( r -> ( cons h ( append t r ) ) ) | .Cases ) ) | .Cases ) ) 4 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( [ .GeneratedListBottom ] -> Empty ) | ( ( [ h , .GeneratedListBottom | t ] -> ( insert ( mk_bst t ) h ) ) | .Cases ) ) 5 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( Empty -> fun ( ( n -> ( Node ( Empty , ( n , ( Empty , .GeneratedListBottom ) ) ) ) ) | .Cases ) ) | ( ( Node ( l , ( m , ( r , .GeneratedListBottom ) ) ) -> fun ( ( n -> if n < m then Node ( ( insert l n ) , ( m , ( r , .GeneratedListBottom ) ) ) else ( Node ( l , ( m , ( ( insert r n ) , .GeneratedListBottom ) ) ) ) ) | .Cases ) ) | .Cases ) ) 6 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( 0 -> [ 0 , .GeneratedListBottom ] ) | ( ( n -> ( cons n ( downto ( n - 1 ) ) ) ) | .Cases ) ) 7 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( 0 -> [ 0 , .GeneratedListBottom ] ) | ( ( n -> ( append ( upto ( n - 1 ) ) [ n , .GeneratedListBottom ] ) ) | .Cases ) ) 8 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( [ .GeneratedListBottom ] -> fun ( ( [ .GeneratedListBottom ] -> [ .GeneratedListBottom ] ) | .Cases ) ) | ( ( [ h1 , .GeneratedListBottom | t1 ] -> fun ( ( [ h2 , .GeneratedListBottom | t2 ] -> ( cons h1 ( cons h2 ( merge t1 t2 ) ) ) ) | .Cases ) ) | .Cases ) ) 9 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( n -> ( merge ( downto n ) ( upto n ) ) ) | .Cases ) 10 |-> 10 11 |-> 10 12 |-> 9 13 |-> 8 14 |-> 7 15 |-> 6 16 |-> 5 17 |-> 4 18 |-> 3 19 |-> 2 20 |-> 1 21 |-> 0 22 |-> [ .GeneratedListBottom ] 23 |-> [ 1 , .GeneratedListBottom ] 24 |-> [ 1 , .GeneratedListBottom ] 25 |-> 0 26 |-> [ 1 , .GeneratedListBottom ] 27 |-> [ 2 , .GeneratedListBottom ] 28 |-> 1 29 |-> [ .GeneratedListBottom ] 30 |-> [ 2 , .GeneratedListBottom ] 31 |-> [ 2 , .GeneratedListBottom ] 32 |-> 0 33 |-> [ 1 , ( 2 , .GeneratedListBottom ) ] 34 |-> [ 3 , .GeneratedListBottom ] 35 |-> 1 36 |-> [ 2 , .GeneratedListBottom ] 37 |-> [ 3 , .GeneratedListBottom ] 38 |-> 2 39 |-> [ .GeneratedListBottom ] 40 |-> [ 3 , .GeneratedListBottom ] 41 |-> [ 3 , .GeneratedListBottom ] 42 |-> 0 43 |-> [ 1 , ( 2 , ( 3 , .GeneratedListBottom ) ) ] 44 |-> [ 4 , .GeneratedListBottom ] 45 |-> 1 46 |-> [ 2 , ( 3 , .GeneratedListBottom ) ] 47 |-> [ 4 , .GeneratedListBottom ] 48 |-> 2 49 |-> [ 3 , .GeneratedListBottom ] 50 |-> [ 4 , .GeneratedListBottom ] 51 |-> 3 52 |-> [ .GeneratedListBottom ] 53 |-> [ 4 , .GeneratedListBottom ] 54 |-> [ 4 , .GeneratedListBottom ] 55 |-> 0 56 |-> [ 1 , ( 2 , ( 3 , ( 4 , .GeneratedListBottom ) ) ) ] 57 |-> [ 5 , .GeneratedListBottom ] 58 |-> 1 59 |-> [ 2 , ( 3 , ( 4 , .GeneratedListBottom ) ) ] 60 |-> [ 5 , .GeneratedListBottom ] 61 |-> 2 62 |-> [ 3 , ( 4 , .GeneratedListBottom ) ] 63 |-> [ 5 , .GeneratedListBottom ] 64 |-> 3 65 |-> [ 4 , .GeneratedListBottom ] 66 |-> [ 5 , .GeneratedListBottom ] 67 |-> 4 68 |-> [ .GeneratedListBottom ] 69 |-> [ 5 , .GeneratedListBottom ] 70 |-> [ 5 , .GeneratedListBottom ] 71 |-> 0 72 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ) ) ] 73 |-> [ 6 , .GeneratedListBottom ] 74 |-> 1 75 |-> [ 2 , ( 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ) ] 76 |-> [ 6 , .GeneratedListBottom ] 77 |-> 2 78 |-> [ 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ] 79 |-> [ 6 , .GeneratedListBottom ] 80 |-> 3 81 |-> [ 4 , ( 5 , .GeneratedListBottom ) ] 82 |-> [ 6 , .GeneratedListBottom ] 83 |-> 4 84 |-> [ 5 , .GeneratedListBottom ] 85 |-> [ 6 , .GeneratedListBottom ] 86 |-> 5 87 |-> [ .GeneratedListBottom ] 88 |-> [ 6 , .GeneratedListBottom ] 89 |-> [ 6 , .GeneratedListBottom ] 90 |-> 0 91 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ) ) ) ] 92 |-> [ 7 , .GeneratedListBottom ] 93 |-> 1 94 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ) ) ] 95 |-> [ 7 , .GeneratedListBottom ] 96 |-> 2 97 |-> [ 3 , ( 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ) ] 98 |-> [ 7 , .GeneratedListBottom ] 99 |-> 3 100 |-> [ 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ] 101 |-> [ 7 , .GeneratedListBottom ] 102 |-> 4 103 |-> [ 5 , ( 6 , .GeneratedListBottom ) ] 104 |-> [ 7 , .GeneratedListBottom ] 105 |-> 5 106 |-> [ 6 , .GeneratedListBottom ] 107 |-> [ 7 , .GeneratedListBottom ] 108 |-> 6 109 |-> [ .GeneratedListBottom ] 110 |-> [ 7 , .GeneratedListBottom ] 111 |-> [ 7 , .GeneratedListBottom ] 112 |-> 0 113 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ] 114 |-> [ 8 , .GeneratedListBottom ] 115 |-> 1 116 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ) ) ] 117 |-> [ 8 , .GeneratedListBottom ] 118 |-> 2 119 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ) ] 120 |-> [ 8 , .GeneratedListBottom ] 121 |-> 3 122 |-> [ 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ] 123 |-> [ 8 , .GeneratedListBottom ] 124 |-> 4 125 |-> [ 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ] 126 |-> [ 8 , .GeneratedListBottom ] 127 |-> 5 128 |-> [ 6 , ( 7 , .GeneratedListBottom ) ] 129 |-> [ 8 , .GeneratedListBottom ] 130 |-> 6 131 |-> [ 7 , .GeneratedListBottom ] 132 |-> [ 8 , .GeneratedListBottom ] 133 |-> 7 134 |-> [ .GeneratedListBottom ] 135 |-> [ 8 , .GeneratedListBottom ] 136 |-> [ 8 , .GeneratedListBottom ] 137 |-> 0 138 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ] 139 |-> [ 9 , .GeneratedListBottom ] 140 |-> 1 141 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ] 142 |-> [ 9 , .GeneratedListBottom ] 143 |-> 2 144 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ) ] 145 |-> [ 9 , .GeneratedListBottom ] 146 |-> 3 147 |-> [ 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ] 148 |-> [ 9 , .GeneratedListBottom ] 149 |-> 4 150 |-> [ 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ] 151 |-> [ 9 , .GeneratedListBottom ] 152 |-> 5 153 |-> [ 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ] 154 |-> [ 9 , .GeneratedListBottom ] 155 |-> 6 156 |-> [ 7 , ( 8 , .GeneratedListBottom ) ] 157 |-> [ 9 , .GeneratedListBottom ] 158 |-> 7 159 |-> [ 8 , .GeneratedListBottom ] 160 |-> [ 9 , .GeneratedListBottom ] 161 |-> 8 162 |-> [ .GeneratedListBottom ] 163 |-> [ 9 , .GeneratedListBottom ] 164 |-> [ 9 , .GeneratedListBottom ] 165 |-> 0 166 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 167 |-> [ 10 , .GeneratedListBottom ] 168 |-> 1 169 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ] 170 |-> [ 10 , .GeneratedListBottom ] 171 |-> 2 172 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ] 173 |-> [ 10 , .GeneratedListBottom ] 174 |-> 3 175 |-> [ 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ] 176 |-> [ 10 , .GeneratedListBottom ] 177 |-> 4 178 |-> [ 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ] 179 |-> [ 10 , .GeneratedListBottom ] 180 |-> 5 181 |-> [ 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ] 182 |-> [ 10 , .GeneratedListBottom ] 183 |-> 6 184 |-> [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] 185 |-> [ 10 , .GeneratedListBottom ] 186 |-> 7 187 |-> [ 8 , ( 9 , .GeneratedListBottom ) ] 188 |-> [ 10 , .GeneratedListBottom ] 189 |-> 8 190 |-> [ 9 , .GeneratedListBottom ] 191 |-> [ 10 , .GeneratedListBottom ] 192 |-> 9 193 |-> [ .GeneratedListBottom ] 194 |-> [ 10 , .GeneratedListBottom ] 195 |-> [ 10 , .GeneratedListBottom ] 196 |-> 10 197 |-> 9 198 |-> 8 199 |-> 7 200 |-> 6 201 |-> 5 202 |-> 4 203 |-> 3 204 |-> 2 205 |-> 1 206 |-> 10 207 |-> [ 9 , ( 8 , ( 7 , ( 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 208 |-> 0 209 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 210 |-> 9 211 |-> [ 8 , ( 7 , ( 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 212 |-> 1 213 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 214 |-> 8 215 |-> [ 7 , ( 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ) ] 216 |-> 2 217 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ] 218 |-> 7 219 |-> [ 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ] 220 |-> 3 221 |-> [ 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ] 222 |-> 6 223 |-> [ 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ] 224 |-> 4 225 |-> [ 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ] 226 |-> 5 227 |-> [ 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ] 228 |-> 5 229 |-> [ 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ] 230 |-> 4 231 |-> [ 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ] 232 |-> 6 233 |-> [ 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ] 234 |-> 3 235 |-> [ 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ] 236 |-> 7 237 |-> [ 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ] 238 |-> 2 239 |-> [ 1 , ( 0 , .GeneratedListBottom ) ] 240 |-> 8 241 |-> [ 9 , ( 10 , .GeneratedListBottom ) ] 242 |-> 1 243 |-> [ 0 , .GeneratedListBottom ] 244 |-> 9 245 |-> [ 10 , .GeneratedListBottom ] 246 |-> 0 247 |-> [ .GeneratedListBottom ] 248 |-> 10 249 |-> [ .GeneratedListBottom ] 250 |-> [ 10 , ( 0 , ( 9 , ( 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 251 |-> 10 252 |-> [ 0 , ( 9 , ( 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 253 |-> 0 254 |-> [ 9 , ( 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 255 |-> 9 256 |-> [ 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 257 |-> 1 258 |-> [ 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 259 |-> 8 260 |-> [ 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 261 |-> 2 262 |-> [ 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 263 |-> 7 264 |-> [ 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 265 |-> 3 266 |-> [ 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ] 267 |-> 6 268 |-> [ 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ] 269 |-> 4 270 |-> [ 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 271 |-> 5 272 |-> [ 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 273 |-> 5 274 |-> [ 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 275 |-> 4 276 |-> [ 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 277 |-> 6 278 |-> [ 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ] 279 |-> 3 280 |-> [ 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ] 281 |-> 7 282 |-> [ 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ] 283 |-> 2 284 |-> [ 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ] 285 |-> 8 286 |-> [ 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ] 287 |-> 1 288 |-> [ 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ] 289 |-> 9 290 |-> [ 0 , ( 10 , .GeneratedListBottom ) ] 291 |-> 0 292 |-> [ 10 , .GeneratedListBottom ] 293 |-> 10 294 |-> [ .GeneratedListBottom ] 295 |-> 10 296 |-> Empty 297 |-> 10 298 |-> Empty 299 |-> 0 300 |-> 0 301 |-> Empty 302 |-> 10 303 |-> ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) ) 304 |-> 9 305 |-> Empty 306 |-> 0 307 |-> Empty 308 |-> 9 309 |-> 9 310 |-> Empty 311 |-> 10 312 |-> ( Node ( Empty , ( 0 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 313 |-> 1 314 |-> ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 315 |-> 0 316 |-> Empty 317 |-> 1 318 |-> Empty 319 |-> 9 320 |-> Empty 321 |-> 1 322 |-> 1 323 |-> Empty 324 |-> 10 325 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 326 |-> 8 327 |-> ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 328 |-> 0 329 |-> Empty 330 |-> 8 331 |-> Empty 332 |-> 9 333 |-> ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) ) 334 |-> 8 335 |-> Empty 336 |-> 1 337 |-> Empty 338 |-> 8 339 |-> 8 340 |-> Empty 341 |-> 10 342 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 343 |-> 2 344 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 345 |-> 0 346 |-> Empty 347 |-> 2 348 |-> Empty 349 |-> 9 350 |-> ( Node ( Empty , ( 1 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 351 |-> 2 352 |-> ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 353 |-> 1 354 |-> Empty 355 |-> 2 356 |-> Empty 357 |-> 8 358 |-> Empty 359 |-> 2 360 |-> 2 361 |-> Empty 362 |-> 10 363 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 364 |-> 7 365 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 366 |-> 0 367 |-> Empty 368 |-> 7 369 |-> Empty 370 |-> 9 371 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 372 |-> 7 373 |-> ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 374 |-> 1 375 |-> Empty 376 |-> 7 377 |-> Empty 378 |-> 8 379 |-> ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) ) 380 |-> 7 381 |-> Empty 382 |-> 2 383 |-> Empty 384 |-> 7 385 |-> 7 386 |-> Empty 387 |-> 10 388 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 389 |-> 3 390 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 391 |-> 0 392 |-> Empty 393 |-> 3 394 |-> Empty 395 |-> 9 396 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 397 |-> 3 398 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 399 |-> 1 400 |-> Empty 401 |-> 3 402 |-> Empty 403 |-> 8 404 |-> ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 405 |-> 3 406 |-> ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 407 |-> 2 408 |-> Empty 409 |-> 3 410 |-> Empty 411 |-> 7 412 |-> Empty 413 |-> 3 414 |-> 3 415 |-> Empty 416 |-> 10 417 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 418 |-> 6 419 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 420 |-> 0 421 |-> Empty 422 |-> 6 423 |-> Empty 424 |-> 9 425 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 426 |-> 6 427 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 428 |-> 1 429 |-> Empty 430 |-> 6 431 |-> Empty 432 |-> 8 433 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 434 |-> 6 435 |-> ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 436 |-> 2 437 |-> Empty 438 |-> 6 439 |-> Empty 440 |-> 7 441 |-> ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) ) 442 |-> 6 443 |-> Empty 444 |-> 3 445 |-> Empty 446 |-> 6 447 |-> 6 448 |-> Empty 449 |-> 10 450 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 451 |-> 4 452 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 453 |-> 0 454 |-> Empty 455 |-> 4 456 |-> Empty 457 |-> 9 458 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 459 |-> 4 460 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 461 |-> 1 462 |-> Empty 463 |-> 4 464 |-> Empty 465 |-> 8 466 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 467 |-> 4 468 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 469 |-> 2 470 |-> Empty 471 |-> 4 472 |-> Empty 473 |-> 7 474 |-> ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 475 |-> 4 476 |-> ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 477 |-> 3 478 |-> Empty 479 |-> 4 480 |-> Empty 481 |-> 6 482 |-> Empty 483 |-> 4 484 |-> 4 485 |-> Empty 486 |-> 10 487 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 488 |-> 5 489 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 490 |-> 0 491 |-> Empty 492 |-> 5 493 |-> Empty 494 |-> 9 495 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 496 |-> 5 497 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 498 |-> 1 499 |-> Empty 500 |-> 5 501 |-> Empty 502 |-> 8 503 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 504 |-> 5 505 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 506 |-> 2 507 |-> Empty 508 |-> 5 509 |-> Empty 510 |-> 7 511 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 512 |-> 5 513 |-> ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 514 |-> 3 515 |-> Empty 516 |-> 5 517 |-> Empty 518 |-> 6 519 |-> ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) ) 520 |-> 5 521 |-> Empty 522 |-> 4 523 |-> Empty 524 |-> 5 525 |-> 5 526 |-> Empty 527 |-> 10 528 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 529 |-> 5 530 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 531 |-> 0 532 |-> Empty 533 |-> 5 534 |-> Empty 535 |-> 9 536 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 537 |-> 5 538 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 539 |-> 1 540 |-> Empty 541 |-> 5 542 |-> Empty 543 |-> 8 544 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 545 |-> 5 546 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 547 |-> 2 548 |-> Empty 549 |-> 5 550 |-> Empty 551 |-> 7 552 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 553 |-> 5 554 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 555 |-> 3 556 |-> Empty 557 |-> 5 558 |-> Empty 559 |-> 6 560 |-> ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 561 |-> 5 562 |-> ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) ) 563 |-> 4 564 |-> Empty 565 |-> 5 566 |-> Empty 567 |-> 5 568 |-> Empty 569 |-> 5 570 |-> 5 571 |-> Empty 572 |-> 10 573 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 574 |-> 4 575 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 576 |-> 0 577 |-> Empty 578 |-> 4 579 |-> Empty 580 |-> 9 581 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 582 |-> 4 583 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 584 |-> 1 585 |-> Empty 586 |-> 4 587 |-> Empty 588 |-> 8 589 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 590 |-> 4 591 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 592 |-> 2 593 |-> Empty 594 |-> 4 595 |-> Empty 596 |-> 7 597 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 598 |-> 4 599 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 600 |-> 3 601 |-> Empty 602 |-> 4 603 |-> Empty 604 |-> 6 605 |-> ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 606 |-> 4 607 |-> ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 608 |-> 4 609 |-> Empty 610 |-> 4 611 |-> ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) ) 612 |-> 5 613 |-> Empty 614 |-> 4 615 |-> 4 616 |-> Empty 617 |-> 10 618 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 619 |-> 6 620 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 621 |-> 0 622 |-> Empty 623 |-> 6 624 |-> Empty 625 |-> 9 626 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 627 |-> 6 628 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 629 |-> 1 630 |-> Empty 631 |-> 6 632 |-> Empty 633 |-> 8 634 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 635 |-> 6 636 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 637 |-> 2 638 |-> Empty 639 |-> 6 640 |-> Empty 641 |-> 7 642 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 643 |-> 6 644 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 645 |-> 3 646 |-> Empty 647 |-> 6 648 |-> Empty 649 |-> 6 650 |-> ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 651 |-> 6 652 |-> 6 653 |-> Empty 654 |-> 10 655 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 656 |-> 3 657 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 658 |-> 0 659 |-> Empty 660 |-> 3 661 |-> Empty 662 |-> 9 663 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 664 |-> 3 665 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 666 |-> 1 667 |-> Empty 668 |-> 3 669 |-> Empty 670 |-> 8 671 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 672 |-> 3 673 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 674 |-> 2 675 |-> Empty 676 |-> 3 677 |-> Empty 678 |-> 7 679 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 680 |-> 3 681 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 682 |-> 3 683 |-> Empty 684 |-> 3 685 |-> ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 686 |-> 6 687 |-> ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 688 |-> 3 689 |-> ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 690 |-> 4 691 |-> Empty 692 |-> 3 693 |-> 3 694 |-> Empty 695 |-> 10 696 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 697 |-> 7 698 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 699 |-> 0 700 |-> Empty 701 |-> 7 702 |-> Empty 703 |-> 9 704 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 705 |-> 7 706 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 707 |-> 1 708 |-> Empty 709 |-> 7 710 |-> Empty 711 |-> 8 712 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 713 |-> 7 714 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 715 |-> 2 716 |-> Empty 717 |-> 7 718 |-> Empty 719 |-> 7 720 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 721 |-> 7 722 |-> 7 723 |-> Empty 724 |-> 10 725 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 726 |-> 2 727 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 728 |-> 0 729 |-> Empty 730 |-> 2 731 |-> Empty 732 |-> 9 733 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 734 |-> 2 735 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 736 |-> 1 737 |-> Empty 738 |-> 2 739 |-> Empty 740 |-> 8 741 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 742 |-> 2 743 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 744 |-> 2 745 |-> Empty 746 |-> 2 747 |-> ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 748 |-> 7 749 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 750 |-> 2 751 |-> ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 752 |-> 3 753 |-> Empty 754 |-> 2 755 |-> 2 756 |-> Empty 757 |-> 10 758 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 759 |-> 8 760 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 761 |-> 0 762 |-> Empty 763 |-> 8 764 |-> Empty 765 |-> 9 766 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 767 |-> 8 768 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 769 |-> 1 770 |-> Empty 771 |-> 8 772 |-> Empty 773 |-> 8 774 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 775 |-> 8 776 |-> 8 777 |-> Empty 778 |-> 10 779 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 780 |-> 1 781 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 782 |-> 0 783 |-> Empty 784 |-> 1 785 |-> Empty 786 |-> 9 787 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 788 |-> 1 789 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 790 |-> 1 791 |-> Empty 792 |-> 1 793 |-> ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 794 |-> 8 795 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 796 |-> 1 797 |-> ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 798 |-> 2 799 |-> Empty 800 |-> 1 801 |-> 1 802 |-> Empty 803 |-> 10 804 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 805 |-> 9 806 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 807 |-> 0 808 |-> Empty 809 |-> 9 810 |-> Empty 811 |-> 9 812 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 813 |-> 9 814 |-> 9 815 |-> Empty 816 |-> 10 817 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 818 |-> 0 819 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 820 |-> 0 821 |-> Empty 822 |-> 0 823 |-> ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 824 |-> 9 825 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 826 |-> 0 827 |-> ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 828 |-> 1 829 |-> Empty 830 |-> 0 831 |-> 0 832 |-> Empty 833 |-> 10 834 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 835 |-> 10 836 |-> 10 837 |-> 10 838 |-> ( Node ( Empty , ( 10 , ( Empty , .GeneratedListBottom ) ) ) ) 839 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 840 |-> 10 841 |-> Empty 842 |-> Empty 843 |-> [ 10 , .GeneratedListBottom ] 844 |-> 0 845 |-> ( Node ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 846 |-> Empty 847 |-> 9 848 |-> ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 849 |-> ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 850 |-> 9 851 |-> Empty 852 |-> Empty 853 |-> [ 9 , .GeneratedListBottom ] 854 |-> 1 855 |-> ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 856 |-> ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) ) 857 |-> 8 858 |-> ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 859 |-> ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 860 |-> 8 861 |-> Empty 862 |-> Empty 863 |-> [ 8 , .GeneratedListBottom ] 864 |-> 2 865 |-> ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 866 |-> ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) ) 867 |-> 7 868 |-> ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 869 |-> ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 870 |-> 7 871 |-> Empty 872 |-> Empty 873 |-> [ 7 , .GeneratedListBottom ] 874 |-> 3 875 |-> ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 876 |-> ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) ) 877 |-> 6 878 |-> ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 879 |-> ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 880 |-> 6 881 |-> Empty 882 |-> Empty 883 |-> [ 6 , .GeneratedListBottom ] 884 |-> 4 885 |-> ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 886 |-> ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) ) 887 |-> 5 888 |-> ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) ) 889 |-> ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) ) 890 |-> 5 891 |-> Empty 892 |-> Empty 893 |-> [ 5 , .GeneratedListBottom ] 894 |-> 4 895 |-> Empty 896 |-> Empty 897 |-> [ 4 , .GeneratedListBottom ] 898 |-> 4 899 |-> [ .GeneratedListBottom ] 900 |-> [ 5 , ( 5 , .GeneratedListBottom ) ] 901 |-> [ 5 , ( 5 , .GeneratedListBottom ) ] 902 |-> 3 903 |-> Empty 904 |-> Empty 905 |-> [ 3 , .GeneratedListBottom ] 906 |-> 3 907 |-> [ .GeneratedListBottom ] 908 |-> [ 4 , ( 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ) ] 909 |-> [ 4 , ( 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ) ] 910 |-> 3 911 |-> [ 4 , ( 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ) ] 912 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 913 |-> 4 914 |-> [ 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ] 915 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 916 |-> 4 917 |-> [ 5 , ( 5 , .GeneratedListBottom ) ] 918 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 919 |-> 5 920 |-> [ 5 , .GeneratedListBottom ] 921 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 922 |-> 5 923 |-> [ .GeneratedListBottom ] 924 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 925 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 926 |-> 2 927 |-> Empty 928 |-> Empty 929 |-> [ 2 , .GeneratedListBottom ] 930 |-> 2 931 |-> [ .GeneratedListBottom ] 932 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ) ] 933 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ) ] 934 |-> 2 935 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ) ] 936 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 937 |-> 3 938 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ] 939 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 940 |-> 3 941 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ] 942 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 943 |-> 4 944 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ] 945 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 946 |-> 4 947 |-> [ 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ] 948 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 949 |-> 5 950 |-> [ 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ] 951 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 952 |-> 5 953 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 954 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 955 |-> 6 956 |-> [ 6 , .GeneratedListBottom ] 957 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 958 |-> 6 959 |-> [ .GeneratedListBottom ] 960 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 961 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 962 |-> 1 963 |-> Empty 964 |-> Empty 965 |-> [ 1 , .GeneratedListBottom ] 966 |-> 1 967 |-> [ .GeneratedListBottom ] 968 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 969 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 970 |-> 1 971 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 972 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 973 |-> 2 974 |-> [ 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 975 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 976 |-> 2 977 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 978 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 979 |-> 3 980 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 981 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 982 |-> 3 983 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ] 984 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 985 |-> 4 986 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ] 987 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 988 |-> 4 989 |-> [ 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ] 990 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 991 |-> 5 992 |-> [ 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ] 993 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 994 |-> 5 995 |-> [ 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ] 996 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 997 |-> 6 998 |-> [ 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ] 999 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1000 |-> 6 1001 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 1002 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1003 |-> 7 1004 |-> [ 7 , .GeneratedListBottom ] 1005 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1006 |-> 7 1007 |-> [ .GeneratedListBottom ] 1008 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1009 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1010 |-> 0 1011 |-> Empty 1012 |-> Empty 1013 |-> [ 0 , .GeneratedListBottom ] 1014 |-> 0 1015 |-> [ .GeneratedListBottom ] 1016 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1017 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1018 |-> 0 1019 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1020 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1021 |-> 1 1022 |-> [ 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1023 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1024 |-> 1 1025 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1026 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1027 |-> 2 1028 |-> [ 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ] 1029 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1030 |-> 2 1031 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 1032 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1033 |-> 3 1034 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 1035 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1036 |-> 3 1037 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 1038 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1039 |-> 4 1040 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 1041 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1042 |-> 4 1043 |-> [ 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ] 1044 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1045 |-> 5 1046 |-> [ 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ] 1047 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1048 |-> 5 1049 |-> [ 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ] 1050 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1051 |-> 6 1052 |-> [ 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ] 1053 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1054 |-> 6 1055 |-> [ 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ] 1056 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1057 |-> 7 1058 |-> [ 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ] 1059 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1060 |-> 7 1061 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1062 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1063 |-> 8 1064 |-> [ 8 , .GeneratedListBottom ] 1065 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1066 |-> 8 1067 |-> [ .GeneratedListBottom ] 1068 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1069 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1070 |-> [ 0 , ( 0 , ( 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1071 |-> 0 1072 |-> [ 0 , ( 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1073 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1074 |-> 0 1075 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1076 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1077 |-> 1 1078 |-> [ 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1079 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1080 |-> 1 1081 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1082 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1083 |-> 2 1084 |-> [ 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1085 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1086 |-> 2 1087 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1088 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1089 |-> 3 1090 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ] 1091 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1092 |-> 3 1093 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 1094 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1095 |-> 4 1096 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 1097 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1098 |-> 4 1099 |-> [ 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 1100 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1101 |-> 5 1102 |-> [ 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 1103 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1104 |-> 5 1105 |-> [ 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ] 1106 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1107 |-> 6 1108 |-> [ 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ] 1109 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1110 |-> 6 1111 |-> [ 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ] 1112 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1113 |-> 7 1114 |-> [ 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ] 1115 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1116 |-> 7 1117 |-> [ 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ] 1118 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1119 |-> 8 1120 |-> [ 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ] 1121 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1122 |-> 8 1123 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1124 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1125 |-> 9 1126 |-> [ 9 , .GeneratedListBottom ] 1127 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1128 |-> 9 1129 |-> [ .GeneratedListBottom ] 1130 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1131 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun deleted file mode 100644 index 69fb3435b64..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype day = Monday | Tuesday | Wednesday - | Thursday | Friday | Saturday | Sunday - -let day_after = - fun Monday -> Tuesday - | Tuesday -> Wednesday - | Wednesday -> Thursday - | Thursday -> Friday - | Friday -> Saturday - | Saturday -> Sunday - | Sunday -> Monday -in letrec days_later = - fun 0 day -> day - | n day -> if n>0 - then days_later (n - 1) (day_after day) - else days_later (n + 7) day - in [days_later 2 Tuesday, days_later (-4) Wednesday, days_later 17 Monday] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun.out deleted file mode 100644 index 8c818dc0e61..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-days.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K [ Thursday , Saturday , Thursday , .Names ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun deleted file mode 100644 index f08ad0eb61f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) - and distribute = - fun Times(e1, Plus(e2, e3)) -> Plus(Times(distribute e1, distribute e2), - Times(distribute e1, distribute e3)) - | Times(Plus(e1, e2), e3) -> Plus(Times(distribute e1, distribute e3), - Times(distribute e2, distribute e3)) - | Plus(l,r) -> Plus(distribute l, distribute r) - | Minus(l,r) -> Minus(distribute l, distribute r) - | Value(n) -> Value(n) -in toString (distribute Times(Value("n"), Plus(Value("x"), Value("y")))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun.out deleted file mode 100644 index 0b66d51cbae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-distributivity.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K "(n * x + n * y)" #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( distribute |-> 2 toString |-> 1 , ( Value ( n , .GeneratedListBottom ) -> n ) | ( ( Plus ( l , ( r , .GeneratedListBottom ) ) -> ( "(" ^ toString l ^ " + " ^ toString r ^ ")" ) ) | ( ( Minus ( l , ( r , .GeneratedListBottom ) ) -> ( "(" ^ toString l ^ " - " ^ toString r ^ ")" ) ) | ( ( Times ( l , ( r , .GeneratedListBottom ) ) -> ( toString l ^ " * " ^ toString r ) ) | .Cases ) ) ) ) 2 |-> closure ( distribute |-> 2 toString |-> 1 , ( Times ( e1 , ( Plus ( e2 , ( e3 , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) -> ( Plus ( Times ( ( distribute e1 ) , ( ( distribute e2 ) , .GeneratedListBottom ) ) , ( Times ( ( distribute e1 ) , ( ( distribute e3 ) , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) ) ) | ( ( Times ( Plus ( e1 , ( e2 , .GeneratedListBottom ) ) , ( e3 , .GeneratedListBottom ) ) -> ( Plus ( Times ( ( distribute e1 ) , ( ( distribute e3 ) , .GeneratedListBottom ) ) , ( Times ( ( distribute e2 ) , ( ( distribute e3 ) , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) ) ) | ( ( Plus ( l , ( r , .GeneratedListBottom ) ) -> ( Plus ( ( distribute l ) , ( ( distribute r ) , .GeneratedListBottom ) ) ) ) | ( ( Minus ( l , ( r , .GeneratedListBottom ) ) -> ( Minus ( ( distribute l ) , ( ( distribute r ) , .GeneratedListBottom ) ) ) ) | ( ( Value ( n , .GeneratedListBottom ) -> ( Value ( n , .GeneratedListBottom ) ) ) | .Cases ) ) ) ) ) 3 |-> ( Value ( "n" , .GeneratedListBottom ) ) 4 |-> ( Value ( "x" , .GeneratedListBottom ) ) 5 |-> ( Value ( "y" , .GeneratedListBottom ) ) 6 |-> "y" 7 |-> "n" 8 |-> "x" 9 |-> "n" 10 |-> ( Times ( Value ( "n" , .GeneratedListBottom ) , ( Value ( "y" , .GeneratedListBottom ) , .GeneratedListBottom ) ) ) 11 |-> ( Times ( Value ( "n" , .GeneratedListBottom ) , ( Value ( "x" , .GeneratedListBottom ) , .GeneratedListBottom ) ) ) 12 |-> ( Value ( "x" , .GeneratedListBottom ) ) 13 |-> ( Value ( "n" , .GeneratedListBottom ) ) 14 |-> "n" 15 |-> "x" 16 |-> ( Value ( "y" , .GeneratedListBottom ) ) 17 |-> ( Value ( "n" , .GeneratedListBottom ) ) 18 |-> "n" 19 |-> "y" diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun deleted file mode 100644 index d7840f6d0e3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun +++ /dev/null @@ -1,8 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) -in toString Times(Value("n"), Plus(Value("x"), Value("y"))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun.out deleted file mode 100644 index be767a3ea55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-expr-toString.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K "n * (x + y)" diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun deleted file mode 100644 index d987c4302b5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun +++ /dev/null @@ -1,4 +0,0 @@ -datatype 'a mylist = Nil | Cons('a, 'a mylist) - -letrec length = fun Nil -> 0 | Cons(h,t) -> 1 + length t -in length Cons(3, Cons(5, Cons(8, Nil))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-list-length.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun deleted file mode 100644 index 90f75e4239c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun +++ /dev/null @@ -1,7 +0,0 @@ -datatype 'a tree = Leaf('a) | Tree('a tree, 'a tree) - -letrec mirror = - fun Leaf(n) -> Leaf(n) - | Tree(left, right) -> Tree(mirror(right), mirror(left)) -in mirror Tree(Tree(Leaf(1), Leaf(2)), - Tree(Leaf(3), Tree(Leaf(4), Leaf(5)))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun.out deleted file mode 100644 index 9491a72bb09..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/constructor-tree-mirror.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K Tree ( Tree ( Tree ( Leaf ( 5 , .Names ) , Leaf ( 4 , .Names ) , .Names ) , Leaf ( 3 , .Names ) , .Names ) , Tree ( Leaf ( 2 , .Names ) , Leaf ( 1 , .Names ) , .Names ) , .Names ) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun deleted file mode 100644 index 7b9bf028e86..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument -// we think of Nothing as () - -datatype nothing = Nothing - -let f Nothing = 7 -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun.out deleted file mode 100644 index 744fd1c711a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( Nothing -> 7 ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun deleted file mode 100644 index 7446ab927eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument - -datatype nothing = Nothing - -let x = 7 -in let f Nothing = x - in f Nothing - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/empty-argument-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun deleted file mode 100644 index 6979202588f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun +++ /dev/null @@ -1,11 +0,0 @@ -try ( - try ( - 3 + throw(10) * 2 - ) catch(x) ( - throw(2*x) + 7 - ) -) catch(x) ( - x + 1 -) - -// 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun.out deleted file mode 100644 index 36af4174804..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/exceptions.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun deleted file mode 100644 index 9e3c081d54e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun +++ /dev/null @@ -1,16 +0,0 @@ -// both maximum of a list and factorial: testing various things: -// a) multiple bindings in a letrec -// b) multiple arguments to functions (max) -// c) shadowing parameters (let x = ... x ... in ... x ...) - - -letrec max = fun [h] x y -> h - | [h|t] x y -> let x = max t x y - in if h > x then h else x - -and fact = fun 0 -> 1 - | x -> x * fact(x - 1) - -in fact (max [1, 3, fact 4, 2, 5, 0, -1, -5] true 5) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun.out deleted file mode 100644 index 783cd61caa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial-and-list-max.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K 620448401733239439360000 #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( fact |-> 2 max |-> 1 , ( [ h , .GeneratedListBottom ] -> fun ( ( x -> fun ( ( y -> h ) | .Cases ) ) | .Cases ) ) | ( ( [ h , .GeneratedListBottom | t ] -> fun ( ( x -> fun ( ( y -> let ( x = ( max t x y ) ) and .Bindings in if h > x then h else x ) | .Cases ) ) | .Cases ) ) | .Cases ) ) 2 |-> closure ( fact |-> 2 max |-> 1 , ( 0 -> 1 ) | ( ( x -> ( x * fact ( x - 1 ) ) ) | .Cases ) ) 3 |-> 4 4 |-> 3 5 |-> 2 6 |-> 1 7 |-> 1 8 |-> [ 3 , ( 24 , ( 2 , ( 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ) ) ) ] 9 |-> true 10 |-> 5 11 |-> 3 12 |-> [ 24 , ( 2 , ( 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ) ) ] 13 |-> true 14 |-> 5 15 |-> 24 16 |-> [ 2 , ( 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ) ] 17 |-> true 18 |-> 5 19 |-> 2 20 |-> [ 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ] 21 |-> true 22 |-> 5 23 |-> 5 24 |-> [ 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ] 25 |-> true 26 |-> 5 27 |-> 0 28 |-> [ -1 , ( -5 , .GeneratedListBottom ) ] 29 |-> true 30 |-> 5 31 |-> -1 32 |-> [ -5 , .GeneratedListBottom ] 33 |-> true 34 |-> 5 35 |-> -5 36 |-> true 37 |-> 5 38 |-> -5 39 |-> -1 40 |-> 0 41 |-> 5 42 |-> 5 43 |-> 24 44 |-> 24 45 |-> 24 46 |-> 23 47 |-> 22 48 |-> 21 49 |-> 20 50 |-> 19 51 |-> 18 52 |-> 17 53 |-> 16 54 |-> 15 55 |-> 14 56 |-> 13 57 |-> 12 58 |-> 11 59 |-> 10 60 |-> 9 61 |-> 8 62 |-> 7 63 |-> 6 64 |-> 5 65 |-> 4 66 |-> 3 67 |-> 2 68 |-> 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun deleted file mode 100644 index 59b944b03fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun +++ /dev/null @@ -1,8 +0,0 @@ -// letrec f x = if x<=0 then 1 else x * f(x - 1) -// in f (f 4) - -letrec f = fun 0 -> 1 - | x -> x * f(x - 1) -in f (f 4) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun.out deleted file mode 100644 index fd420f07e11..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/factorial.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun deleted file mode 100644 index 0d99cbcd92e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun +++ /dev/null @@ -1,8 +0,0 @@ -letrec f1 = fun 0 -> 1 | n -> n * f2 (n - 1) -and f2 n = f3 n -and f3 n = f4 n -and f4 n = f5 n -and f5 n = f6 n -and f6 n = f7 n -and f7 n = f1 n -in (f1 5) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun.out deleted file mode 100644 index 5c82fa417f6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/letrec-many-bindings.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 120 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun deleted file mode 100644 index 4f41a8312ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing let - -let second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun deleted file mode 100644 index 1a4a439b76f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec - -letrec second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun deleted file mode 100644 index 36eb3668f89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec and multiple arguments with currying - -letrec second l x = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] true - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun deleted file mode 100644 index efa13ef81fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun +++ /dev/null @@ -1,4 +0,0 @@ -let second = fun [x,y|t] -> y -in second [1, 3, 5, 0, -2] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun deleted file mode 100644 index ccaa3884b10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -in length [1, 3, 5, 2, 4, 0, -1, -5] - -// 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun.out deleted file mode 100644 index 6b384f077d5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-length.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun deleted file mode 100644 index bbf62029179..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun +++ /dev/null @@ -1,6 +0,0 @@ -letrec max = fun [h] -> h - | [h|t] -> let x = max t - in if h > x then h else x -in max [1, 3, 5, 2, 4, 0, -1, -5] - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun.out deleted file mode 100644 index 80c9b65a1ca..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-max.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun deleted file mode 100644 index 5dba9b5be4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun +++ /dev/null @@ -1,4 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -in nth 4 [5,4,3,2,1] - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun.out deleted file mode 100644 index 4bc72d81a58..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/list-nth.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun deleted file mode 100644 index 6637c9b2830..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun +++ /dev/null @@ -1,10 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -and nat n m = if n == m then [n] else (cons n (nat (n + 1) m)) -and length = fun [] -> 0 - | [h|t] -> 1 + length t -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -and app = fun [] x -> [] - | [h|t] x -> cons (h x) (app t x) -in (app (map nth (nat 1 5)) [10,11,12,13,14,15,16,17]) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun.out deleted file mode 100644 index 1dca5ba26bc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/nth.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , .GeneratedListBottom ) ) ) ) ] #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 2 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( n -> fun ( ( m -> if n == m then [ n , .GeneratedListBottom ] else cons n ( nat ( n + 1 ) m ) ) | .Cases ) ) | .Cases ) 3 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( [ .GeneratedListBottom ] -> 0 ) | ( ( [ h , .GeneratedListBottom | t ] -> ( 1 + length t ) ) | .Cases ) ) 4 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( f -> fun ( ( [ .GeneratedListBottom ] -> [ .GeneratedListBottom ] ) | ( ( [ h , .GeneratedListBottom | t ] -> ( cons ( f h ) ( map f t ) ) ) | .Cases ) ) ) | .Cases ) 5 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( [ .GeneratedListBottom ] -> fun ( ( x -> [ .GeneratedListBottom ] ) | .Cases ) ) | ( ( [ h , .GeneratedListBottom | t ] -> fun ( ( x -> ( cons ( h x ) ( app t x ) ) ) | .Cases ) ) | .Cases ) ) 6 |-> 1 7 |-> 5 8 |-> 2 9 |-> 5 10 |-> 3 11 |-> 5 12 |-> 4 13 |-> 5 14 |-> 5 15 |-> 5 16 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 17 |-> 1 18 |-> [ 2 , ( 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ) ] 19 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 20 |-> 2 21 |-> [ 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ] 22 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 23 |-> 3 24 |-> [ 4 , ( 5 , .GeneratedListBottom ) ] 25 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 26 |-> 4 27 |-> [ 5 , .GeneratedListBottom ] 28 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 29 |-> 5 30 |-> [ .GeneratedListBottom ] 31 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 32 |-> 5 33 |-> 4 34 |-> 3 35 |-> 2 36 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) 37 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 35 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 34 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ) ) ) ] 38 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 39 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 35 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 40 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 34 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ) ) ] 41 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 42 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 34 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 43 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ) ] 44 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 45 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 46 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ] 47 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 48 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 49 |-> [ .GeneratedListBottom ] 50 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 51 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 52 |-> 10 53 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 54 |-> 4 55 |-> 11 56 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 57 |-> 3 58 |-> 12 59 |-> [ 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ] 60 |-> 2 61 |-> 13 62 |-> [ 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ] 63 |-> 14 64 |-> [ 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ] 65 |-> 10 66 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 67 |-> 3 68 |-> 11 69 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 70 |-> 2 71 |-> 12 72 |-> [ 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ] 73 |-> 13 74 |-> [ 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ] 75 |-> 10 76 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 77 |-> 2 78 |-> 11 79 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 80 |-> 12 81 |-> [ 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ] 82 |-> 10 83 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 84 |-> 11 85 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 86 |-> 10 87 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun deleted file mode 100644 index 938d7f94dd6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -and complex = fun Triple([Pair(h1,h2)|t], l, [Pair(a,2), Pair(3,b), c]) - -> Pair(h2 + length t + b, a) - | Triple([],[],[Pair(7,2),x,c]) - -> x - | default - -> Pair(0,0) -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -in map complex [Triple([Pair(8,7)], [], [Pair(9,2), Pair(3,3), Pair(2,2)]), - Triple([], [], [Pair(7,2), Pair(0,1), Pair(-1,-1)]), - Triple([],[],[])] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun.out deleted file mode 100644 index 7e048a22061..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/pattern.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K [ Pair ( 10 , ( 9 , .GeneratedListBottom ) ) , ( Pair ( 0 , ( 1 , .GeneratedListBottom ) ) , ( Pair ( 0 , ( 0 , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun deleted file mode 100644 index 0f4bb9199fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f x = x -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun.out deleted file mode 100644 index 4459f0edfbb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( x -> x ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun deleted file mode 100644 index 45a181d3889..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing (instantiated) polymorphism - -let f x = x -in f 3 - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun deleted file mode 100644 index 2accdf00223..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> x -in if f true then f 2 else f 3 - -// 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun.out deleted file mode 100644 index 4bc72d81a58..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun deleted file mode 100644 index eebc34fa131..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> let y = x in y -in (fun x -> f) 7 - -// identity diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun.out deleted file mode 100644 index cba8120e727..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( x -> ( fun ( [ y , .Names ] -> y ) | .Cases ) [ x , .Names ] ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun deleted file mode 100644 index 74a65556f9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// the program below justifies the restriction that reference -// types should not be polymorphic - -// the following runs in our semantics, but it should not type -// (elements of different types are added in *r)! - -let f = let r = ref [] - in (fun x -> r := cons x @r; x) -in if f true then f 3 else f 4 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun deleted file mode 100644 index 32ccb7db7e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun +++ /dev/null @@ -1,8 +0,0 @@ -// testing polymorphism and also the efficiency of the type inferencer - -let f00 = fun x -> fun y -> x in - let f01 = fun x -> f00 (f00 x) in - let f02 = fun x -> f01 (f01 x) in - let f03 = fun x -> f02 (f02 x) in - let f04 = fun x -> f03 (f03 x) in - f04 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun.out deleted file mode 100644 index e2a78e5607b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/polymorphism-6.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( #1 -> ( fun ( #2 -> ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) ( ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) #2 ) ) | .Cases ) ( ( fun ( #2 -> ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) ( ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) #2 ) ) | .Cases ) #1 ) ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun deleted file mode 100644 index fdb6d5216c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun +++ /dev/null @@ -1,29 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec - -max l Pair(x,y) = - if @x != y - then -1 - else if null?(tail l) - then head l - else let x = max (tail l) Pair(x := @x + 1; x, y + 1) - in if x <= head l - then head l - else x - -and - -map f l = - if null? l - then [] - else cons (f (head l)) (map f (tail l)) - -and - -factorial x = - if x <= 0 - then 1 - else x * factorial(x - 1) - -in max (map factorial [1, 2, 3, factorial 4]) Pair(ref 1, 1) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun.out deleted file mode 100644 index 433746ffd10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-1.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K 620448401733239439360000 #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( l -> fun ( ( Pair ( x , ( y , .GeneratedListBottom ) ) -> if @ x != y then -1 else if ( fun ( ( [ .GeneratedListBottom ] -> true ) | ( ( [ $h , .GeneratedListBottom | $t ] -> false ) | .Cases ) ) ) ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $t ) | .Cases ) ) l ) then ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l else let ( x = ( max ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $t ) | .Cases ) ) l ) ( Pair ( ( x := @ x + 1 ; x ) , ( ( y + 1 ) , .GeneratedListBottom ) ) ) ) ) and .Bindings in if x <= ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l then ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l else x ) | .Cases ) ) | .Cases ) 2 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( f -> fun ( ( l -> if ( fun ( ( [ .GeneratedListBottom ] -> true ) | ( ( [ $h , .GeneratedListBottom | $t ] -> false ) | .Cases ) ) ) l then [ .GeneratedListBottom ] else cons ( f ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l ) ) ( map f ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $t ) | .Cases ) ) l ) ) ) | .Cases ) ) | .Cases ) 3 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 4 |-> 4 5 |-> 4 6 |-> 3 7 |-> 2 8 |-> 1 9 |-> 0 10 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 11 |-> [ 1 , ( 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ) ] 12 |-> 1 13 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 14 |-> 1 15 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 16 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 17 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 18 |-> 2 19 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 20 |-> 2 21 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 22 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 23 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 24 |-> 3 25 |-> [ 24 , .GeneratedListBottom ] 26 |-> 3 27 |-> [ 24 , .GeneratedListBottom ] 28 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 29 |-> [ 24 , .GeneratedListBottom ] 30 |-> 24 31 |-> [ .GeneratedListBottom ] 32 |-> 24 33 |-> [ .GeneratedListBottom ] 34 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 35 |-> [ .GeneratedListBottom ] 36 |-> 24 37 |-> [ .GeneratedListBottom ] 38 |-> 24 39 |-> 23 40 |-> 22 41 |-> 21 42 |-> 20 43 |-> 19 44 |-> 18 45 |-> 17 46 |-> 16 47 |-> 15 48 |-> 14 49 |-> 13 50 |-> 12 51 |-> 11 52 |-> 10 53 |-> 9 54 |-> 8 55 |-> 7 56 |-> 6 57 |-> 5 58 |-> 4 59 |-> 3 60 |-> 2 61 |-> 1 62 |-> 0 63 |-> 3 64 |-> [ 24 , .GeneratedListBottom ] 65 |-> 3 66 |-> 2 67 |-> 1 68 |-> 0 69 |-> 2 70 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 71 |-> 2 72 |-> 1 73 |-> 0 74 |-> 1 75 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 76 |-> 1 77 |-> 0 78 |-> [ 1 , ( 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ) ] 79 |-> 1 80 |-> 4 81 |-> 1 82 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] 83 |-> 2 84 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 85 |-> 1 86 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] 87 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] 88 |-> 2 89 |-> 4 90 |-> 2 91 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 92 |-> 6 93 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 94 |-> 2 95 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 96 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 97 |-> 3 98 |-> 4 99 |-> 6 100 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 101 |-> 620448401733239439360000 102 |-> [ .GeneratedListBottom ] 103 |-> 6 104 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 105 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 106 |-> 4 107 |-> 4 108 |-> 620448401733239439360000 109 |-> [ .GeneratedListBottom ] 110 |-> 620448401733239439360000 111 |-> [ .GeneratedListBottom ] 112 |-> 620448401733239439360000 113 |-> 6 114 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 115 |-> 620448401733239439360000 116 |-> 2 117 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 118 |-> 620448401733239439360000 119 |-> 1 120 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun deleted file mode 100644 index 5c3577449d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -let f x y = x := @x + 2; y := @y + 3 -and x = ref 0 -in (f x x; @x) - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun.out deleted file mode 100644 index 80c9b65a1ca..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun deleted file mode 100644 index a36cb44cb5c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing ref, * and ; - -let f x = x + x -in let y = ref 5 - in f (y := @y + 3; @y) - -// 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun.out deleted file mode 100644 index e27bcd16004..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun deleted file mode 100644 index a11a9c72ff9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun +++ /dev/null @@ -1,10 +0,0 @@ -// can be used for testing parameter passing styles -// replace parameter passing style of f - -let f = let c = ref 0 - in ( - c := @c + 100 ; - (fun x -> c := @c + 1000; x + x + @c) - ) -in let y = ref 0 - in f(y := @y + 1 ; @y) + f(0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun.out deleted file mode 100644 index d3c57d5593a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3202 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun deleted file mode 100644 index c7ba51ec833..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing &, *, := and lists - -let f x = x := @x + 1 -and x = 7 -in [x, f &x; x, f &x; x] - -// [7,8,9], or [7,9,8], or [9,8,9], or [9,9,8] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun.out deleted file mode 100644 index 151adfdf819..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/references-5.fun.out +++ /dev/null @@ -1,71 +0,0 @@ - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 5 |-> 2 17 |-> 2 -#Or - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 13 |-> 2 27 |-> 2 -#Or - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 14 |-> 2 28 |-> 2 -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 6 |-> 2 18 |-> 2 -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 11 |-> 2 25 |-> 2 -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 12 |-> 2 26 |-> 2 -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 3 |-> 2 20 |-> 2 -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 9 |-> 2 31 |-> 2 -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 10 |-> 2 32 |-> 2 -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 4 |-> 2 23 |-> 2 -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 7 |-> 2 29 |-> 2 -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 8 |-> 2 30 |-> 2 -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 3 |-> 2 15 |-> 2 -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 9 |-> 2 22 |-> 2 -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 10 |-> 2 24 |-> 2 -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 4 |-> 2 16 |-> 2 -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 7 |-> 2 19 |-> 2 -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 8 |-> 2 21 |-> 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun deleted file mode 100644 index d608fc95dc4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec: next should get stuck - -let x = 1 -in letrec x = 2 - and y = x - in y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun.out deleted file mode 100644 index f6d1e6e6cd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/stuck-letrec.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K ( x ~> #freezer_,__FUN-UNTYPED-COMMON1_ ( .GeneratedListBottom ) ~> #freezer_,__FUN-UNTYPED-COMMON0_ ( 2 ) ~> #freezerassignTo0_ ( x , ( y , .GeneratedListBottom ) ) ~> y ~> setEnv ( x |-> 1 ) ~> setEnv ( .Map ) ) #And -_0 ==K x |-> 2 y |-> 3 #And -_1 ==K 1 |-> 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun deleted file mode 100644 index 8adeeab395e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun +++ /dev/null @@ -1,12 +0,0 @@ -// This tail recursive program uses fixed memory, but can take a lot of -// computation/stack space if the semantics is not tail-recursive. -// Curiously, the tail recursion rule does not seem to be favoured by -// maude: (1) it is not applied, preferring to apply the normal -// environment-recovery rule; and (2) it slows down significantly -// this program (4-5 times!), because it makes maude's matcher slower. - -datatype nothing = Nothing - -let n = ref 1000 -in letrec f Nothing = if @n>0 then n := @n - 1; f Nothing else 0 - in f Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tail-recursion.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun deleted file mode 100644 index cd48ddd354b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing functions tuple arguments and polymorphism - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -fun Triple(x,y,z) -> y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun.out deleted file mode 100644 index 1ba1a6cea56..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( Triple ( x , y , z , .Names ) -> y ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun deleted file mode 100644 index fb1d28fb917..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing nested tuples - -datatype 'a wrapper = Wrapper('a) -datatype ('a,'b) pair = Pair('a,'b) - -let x = 1 -and y = Wrapper(2) -and z = Pair(3,4) -in Pair(Pair(x,y),z) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun.out deleted file mode 100644 index e749ca8ff89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K Pair ( Pair ( 1 , Wrapper ( 2 , .Names ) , .Names ) , Pair ( 3 , 4 , .Names ) , .Names ) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun deleted file mode 100644 index 8f2ec9bf6c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing functions taking tuple arguments - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -let f Triple(x,y,z) = x + y + z -in f Triple(1,2,3) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun.out deleted file mode 100644 index 37f829cbf50..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 6 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun deleted file mode 100644 index 2d70c169499..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing two tuple arguments to a function - -datatype ('a,'b) pair = Pair('a,'b) - -let f Pair(a,b) Pair(x,y) = a Pair(x,y) + b Pair(x,y) -in f Pair(fun Pair(x,y) -> x * y, fun Pair(x,y) -> x + y) Pair(10,20) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun.out deleted file mode 100644 index 6c8950ca9c0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 230 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun deleted file mode 100644 index 70bea02b8e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing tuple arguments to a function - -datatype nothing = Nothing -datatype ('a,'b) pair = Pair('a,'b) - -let f = fun Nothing Pair(a,b) q Nothing Pair(x,y) Nothing - -> a Pair(x,y) + b Pair(x,y) -in f Nothing Pair(fun Pair (x,y) -> x * y, fun Pair(x,y) -> x + y) - 3 Nothing Pair(10,20) Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun.out deleted file mode 100644 index 6c8950ca9c0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/exercises/letrec/tests/tuple-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 230 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/fun-untyped.md b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/fun-untyped.md deleted file mode 100644 index 288a8d0aabf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/fun-untyped.md +++ /dev/null @@ -1,327 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -// NOTE: this definition is not up to date with the latest version of K, as it -// uses both substitution and symbolic reasoning. -// It is intended for documentation and academic purposes only. - -# FUN — Untyped — Substitution - -Author: Grigore Roșu (grosu@illinois.edu) -Organization: University of Illinois at Urbana-Champaign - -Author: Traian Florin Șerbănuță (traian.serbanuta@unibuc.ro) -Organization: University of Bucharest - -## Abstract - -This is the substitution-based definition of FUN. For additional -explanations regarding the semantics of the various FUN constructs, -the reader should consult the emvironment-based definition of FUN. - - -## Syntax - -```k -require "substitution.md" -//require "modules/pattern-matching.k" - -module FUN-UNTYPED-COMMON - imports DOMAINS-SYNTAX -``` - -## The Syntactic Constructs - -```k - syntax Name - syntax Names ::= List{Name,","} - - syntax Exp ::= Int | Bool | String | Name - | "(" Exp ")" [bracket] - syntax Exps ::= List{Exp,","} [strict] - syntax Val - syntax Vals ::= List{Val,","} - - syntax Exp ::= left: - Exp "*" Exp [strict, arith] - | Exp "/" Exp [strict, arith] - | Exp "%" Exp [strict, arith] - > left: - Exp "+" Exp [strict, left, arith] - | Exp "^" Exp [strict, left, arith] - | Exp "-" Exp [strict, prefer, arith] - | "-" Exp [strict, arith] - > non-assoc: - Exp "<" Exp [strict, arith] - | Exp "<=" Exp [strict, arith] - | Exp ">" Exp [strict, arith] - | Exp ">=" Exp [strict, arith] - | Exp "==" Exp [strict, arith] - | Exp "!=" Exp [strict, arith] - > "!" Exp [strict, arith] - > Exp "&&" Exp [strict(1), left, arith] - > Exp "||" Exp [strict(1), left, arith] - - syntax Exp ::= "if" Exp "then" Exp "else" Exp [strict(1)] - - syntax Exp ::= "[" Exps "]" [strict] - | "cons" | "head" | "tail" | "null?" - | "[" Exps "|" Exp "]" - syntax Val ::= "[" Vals "]" - - syntax ConstructorName - syntax Exp ::= ConstructorName - | ConstructorName "(" Exps ")" [prefer, strict(2)] - syntax Val ::= ConstructorName "(" Vals ")" - - syntax Exp ::= "fun" Cases - | Exp Exp [strict, left] - syntax Case ::= Exp "->" Exp [binder] -// NOTE: The binder attribute above is the only difference between this -// module and the syntax module of environment-based FUN. We need -// to fix a bug in order to import modules and override the attributes -// of operations. - syntax Cases ::= List{Case, "|"} - - syntax Exp ::= "let" Bindings "in" Exp - | "letrec" Bindings "in" Exp [prefer] - syntax Binding ::= Exp "=" Exp - syntax Bindings ::= List{Binding,"and"} - - syntax Exp ::= "ref" - | "&" Name - | "@" Exp [strict] - | Exp ":=" Exp [strict] - | Exp ";" Exp [strict(1), right] - - syntax Exp ::= "callcc" - | "try" Exp "catch" "(" Name ")" Exp - syntax Name ::= "throw" [token] - - syntax Exp ::= "datatype" Type "=" TypeCases Exp - - syntax TypeVar - syntax TypeVars ::= List{TypeVar,","} - - syntax TypeName - syntax Type ::= "int" | "bool" | "string" - | Type "-->" Type [right] - | "(" Type ")" [bracket] - | TypeVar - | TypeName [klabel(TypeName), avoid] - | Type TypeName [klabel(Type-TypeName), onlyLabel] - | "(" Types ")" TypeName [prefer] - syntax Types ::= List{Type,","} - syntax Types ::= TypeVars - - syntax TypeCase ::= ConstructorName - | ConstructorName "(" Types ")" - syntax TypeCases ::= List{TypeCase,"|"} [klabel(_|TypeCase_)] -``` - -## Additional Priorities - -```k - syntax priorities @__FUN-UNTYPED-COMMON - > ___FUN-UNTYPED-COMMON - > arith - > _:=__FUN-UNTYPED-COMMON - > let_in__FUN-UNTYPED-COMMON - letrec_in__FUN-UNTYPED-COMMON - if_then_else__FUN-UNTYPED-COMMON - > _;__FUN-UNTYPED-COMMON - > fun__FUN-UNTYPED-COMMON - > datatype_=___FUN-UNTYPED-COMMON -endmodule - -module FUN-UNTYPED-MACROS - imports FUN-UNTYPED-COMMON -``` - -## Desugaring macros - -```k - rule P1 P2 -> E => P1 -> fun P2 -> E [macro-rec] - rule F P = E => F = fun P -> E [macro-rec] - - rule [E1,E2,Es:Exps|T] => [E1|[E2,Es|T]] [macro-rec] - -// rule 'TypeName(Tn:TypeName) => (.TypeVars) Tn [macro] - rule `Type-TypeName`(T:Type, Tn:TypeName) => (T) Tn [macro] - - syntax Name ::= "$h" | "$t" - rule head => fun [$h|$t] -> $h [macro] - rule tail => fun [$h|$t] -> $t [macro] - rule null? => fun [.Exps] -> true | [$h|$t] -> false [macro] - - syntax Name ::= "$k" | "$v" - rule try E catch(X) E' - => callcc (fun $k -> (fun throw -> E)(fun X -> $k E')) [macro] - - rule datatype _T = _TCs E => E [macro] -``` -mu needed for letrec, but we put it here so we can also write -programs with mu in them, which is particularly useful for testing. -```k - syntax Exp ::= "mu" Case - -endmodule - - -module FUN-UNTYPED-SYNTAX - imports FUN-UNTYPED-COMMON - imports BUILTIN-ID-TOKENS - - syntax Name ::= r"[a-z][_a-zA-Z0-9]*" [token, prec(2)] - | #LowerId [token] - syntax ConstructorName ::= #UpperId [token] - syntax TypeVar ::= r"['][a-z][_a-zA-Z0-9]*" [token] - syntax TypeName ::= Name [token] -endmodule -``` - -## Semantics - -```k -module FUN-UNTYPED - imports FUN-UNTYPED-COMMON - imports FUN-UNTYPED-MACROS - imports DOMAINS - imports SUBSTITUTION - //imports PATTERN-MATCHING - - configuration - $PGM:Exp - .Map - -``` -Both Name and functions are values now: -```k - syntax Val ::= Int | Bool | String | Name - syntax Exp ::= Val - syntax Exps ::= Vals - syntax KResult ::= Val - syntax Exps ::= Names - syntax Vals ::= Names - - rule I1 * I2 => I1 *Int I2 - rule I1 / I2 => I1 /Int I2 when I2 =/=K 0 - rule I1 % I2 => I1 %Int I2 when I2 =/=K 0 - rule I1 + I2 => I1 +Int I2 - rule S1 ^ S2 => S1 +String S2 - rule I1 - I2 => I1 -Int I2 - rule - I => 0 -Int I - rule I1 < I2 => I1 I1 <=Int I2 - rule I1 > I2 => I1 >Int I2 - rule I1 >= I2 => I1 >=Int I2 - rule V1:Val == V2:Val => V1 ==K V2 - rule V1:Val != V2:Val => V1 =/=K V2 - rule ! T => notBool(T) - rule true && E => E - rule false && _ => false - rule true || _ => true - rule false || E => E - - rule if true then E else _ => E - rule if false then _ else E => E - - rule isVal(cons) => true - rule isVal(cons _V:Val) => true - rule cons V:Val [Vs:Vals] => [V,Vs] - - syntax Val ::= ConstructorName - - rule isVal(fun _) => true - syntax KVar ::= Name - syntax Name ::= freshName(Int) [freshGenerator, function] - rule freshName(I:Int) => {#parseToken("Name", "#" +String Int2String(I))}:>Name - - rule (. => getMatching(P, V)) ~> (fun P->_ | _) V:Val - rule matchResult(M:Map) ~> (fun _->E | _) _ => E[M] - rule (matchFailure => .) ~> (fun (_->_ | Cs:Cases => Cs)) _ -// rule (fun P->E | _) V:Val => E[getMatching(P,V)] when isMatching(P,V) -// rule (fun (P->_ | Cs:Cases => Cs)) V:Val when notBool isMatching(P,V) -``` -We can reduce multiple bindings to one list binding, and then -apply the usual desugaring of let into function application. -It is important that the rule below is a macro, so let is eliminated -immediately, otherwise it may interfere in ugly ways with substitution. -```k - rule let Bs in E => ((fun [names(Bs)] -> E) [exps(Bs)]) [macro] -``` -We only give the semantics of one-binding letrec. -Multipe bindings are left as an exercise. -```k - // changed because of parsing error - //rule mu X:Name -> E => E[(mu X -> E) / X] - rule mu X:Name -> E => E[X |-> (mu X -> E)] - rule letrec F:Name = E in E' => let F = (mu F -> E) in E' [macro] -``` -We cannot have `&` anymore, but we can give direct -semantics to `ref`. We also have to declare `ref` to -be a value, so that we will never heat on it. -```k -// rule & X => L ... ... X |-> L - rule isVal(ref) => true - rule ref V:Val => !L:Int ... ... .Map => !L |-> V ... - rule @ L:Int => V:Val ... ... L |-> V ... - rule L:Int := V:Val => V ... ... L |-> (_=>V) ... - rule _V:Val; E => E - - syntax Val ::= cc(K) - rule isVal(callcc) => true - rule (callcc V:Val => V cc(K)) ~> K - rule cc(K) V:Val ~> _ => V ~> K -``` - -Auxiliary getters -```k - syntax Names ::= names(Bindings) [function] - rule names(.Bindings) => .Names - rule names(X:Name=_ and Bs) => X,names(Bs) - - syntax Exps ::= exps(Bindings) [function] - rule exps(.Bindings) => .Exps - rule exps(_:Name=E and Bs) => E,exps(Bs) - - /* Extra kore stuff */ - syntax KResult ::= Vals - syntax Exps ::= Names - - /* Matching */ - syntax MatchResult ::= getMatching(Exp, Val) [function] - | getMatchingAux(Exps, Vals) [function] - | mergeMatching(MatchResult, MatchResult) [function] - | matchResult(Map) - | "matchFailure" - - rule getMatching(C:ConstructorName(Es:Exps), C(Vs:Vals)) => getMatchingAux(Es, Vs) - rule getMatching([Es:Exps], [Vs:Vals]) => getMatchingAux(Es, Vs) - rule getMatching(C:ConstructorName, C) => matchResult(.Map) - rule getMatching(B:Bool, B) => matchResult(.Map) - rule getMatching(I:Int, I) => matchResult(.Map) - rule getMatching(S:String, S) => matchResult(.Map) - rule getMatching(N:Name, V:Val) => matchResult(N |-> V) - rule getMatching(_, _) => matchFailure [owise] - - rule getMatchingAux((E:Exp, Es:Exps), (V:Val, Vs:Vals)) => mergeMatching(getMatching(E, V), getMatchingAux(Es, Vs)) - rule getMatchingAux(.Exps, .Vals) => matchResult(.Map) - rule getMatchingAux(_, _) => matchFailure [owise] - - rule mergeMatching(matchResult(M1:Map), matchResult(M2:Map)) => matchResult(M1 M2) - requires intersectSet(keys(M1), keys(M2)) ==K .Set - //rule mergeMatching(_, _) => matchFailure [owsie] - rule mergeMatching(matchResult(_:Map), matchFailure) => matchFailure - rule mergeMatching(matchFailure, matchResult(_:Map)) => matchFailure - rule mergeMatching(matchFailure, matchFailure) => matchFailure -``` -Besides the generic decomposition rules for patterns and values, -we also want to allow `[head|tail]` matching for lists, so we add -the following custom pattern decomposition rule: -```k - rule getMatching([H:Exp | T:Exp], [V:Val, Vs:Vals]) - => getMatchingAux((H, T), (V, [Vs])) -endmodule -``` diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/ackermann.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/ackermann.fun.out deleted file mode 100644 index ef139b1fdd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/ackermann.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 9 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-1.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-2.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-3.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-4.fun.out deleted file mode 100644 index fa025e8737a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-5.fun.out deleted file mode 100644 index fa025e8737a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-1.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-2.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-efficient-with-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-inefficient-without.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-inefficient-without.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-inefficient-without.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-looping.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-looping.fun.out deleted file mode 100644 index 72ca9d6ca3b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-looping.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 100 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-1.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-2.fun.out deleted file mode 100644 index 0dae281e449..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/callcc-return-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-bst-sorting.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-bst-sorting.fun.out deleted file mode 100644 index 6d91437db13..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-bst-sorting.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K [ 0 , ( 0 , ( 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , ( 10 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( l -> ( flatten ( mk_bst l ) ) ) | .Cases ) 2 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( Empty -> [ .GeneratedListBottom ] ) | ( ( Node ( l , ( n , ( r , .GeneratedListBottom ) ) ) -> ( append ( flatten l ) ( cons n ( flatten r ) ) ) ) | .Cases ) ) 3 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( [ .GeneratedListBottom ] -> fun ( ( r -> r ) | .Cases ) ) | ( ( [ h , .GeneratedListBottom | t ] -> fun ( ( r -> ( cons h ( append t r ) ) ) | .Cases ) ) | .Cases ) ) 4 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( [ .GeneratedListBottom ] -> Empty ) | ( ( [ h , .GeneratedListBottom | t ] -> ( insert ( mk_bst t ) h ) ) | .Cases ) ) 5 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( Empty -> fun ( ( n -> ( Node ( Empty , ( n , ( Empty , .GeneratedListBottom ) ) ) ) ) | .Cases ) ) | ( ( Node ( l , ( m , ( r , .GeneratedListBottom ) ) ) -> fun ( ( n -> if n < m then Node ( ( insert l n ) , ( m , ( r , .GeneratedListBottom ) ) ) else ( Node ( l , ( m , ( ( insert r n ) , .GeneratedListBottom ) ) ) ) ) | .Cases ) ) | .Cases ) ) 6 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( 0 -> [ 0 , .GeneratedListBottom ] ) | ( ( n -> ( cons n ( downto ( n - 1 ) ) ) ) | .Cases ) ) 7 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( 0 -> [ 0 , .GeneratedListBottom ] ) | ( ( n -> ( append ( upto ( n - 1 ) ) [ n , .GeneratedListBottom ] ) ) | .Cases ) ) 8 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( [ .GeneratedListBottom ] -> fun ( ( [ .GeneratedListBottom ] -> [ .GeneratedListBottom ] ) | .Cases ) ) | ( ( [ h1 , .GeneratedListBottom | t1 ] -> fun ( ( [ h2 , .GeneratedListBottom | t2 ] -> ( cons h1 ( cons h2 ( merge t1 t2 ) ) ) ) | .Cases ) ) | .Cases ) ) 9 |-> closure ( append |-> 3 bst_sort |-> 1 downto |-> 6 flatten |-> 2 insert |-> 5 merge |-> 8 mk_bst |-> 4 shuffle |-> 9 upto |-> 7 , ( n -> ( merge ( downto n ) ( upto n ) ) ) | .Cases ) 10 |-> 10 11 |-> 10 12 |-> 9 13 |-> 8 14 |-> 7 15 |-> 6 16 |-> 5 17 |-> 4 18 |-> 3 19 |-> 2 20 |-> 1 21 |-> 0 22 |-> [ .GeneratedListBottom ] 23 |-> [ 1 , .GeneratedListBottom ] 24 |-> [ 1 , .GeneratedListBottom ] 25 |-> 0 26 |-> [ 1 , .GeneratedListBottom ] 27 |-> [ 2 , .GeneratedListBottom ] 28 |-> 1 29 |-> [ .GeneratedListBottom ] 30 |-> [ 2 , .GeneratedListBottom ] 31 |-> [ 2 , .GeneratedListBottom ] 32 |-> 0 33 |-> [ 1 , ( 2 , .GeneratedListBottom ) ] 34 |-> [ 3 , .GeneratedListBottom ] 35 |-> 1 36 |-> [ 2 , .GeneratedListBottom ] 37 |-> [ 3 , .GeneratedListBottom ] 38 |-> 2 39 |-> [ .GeneratedListBottom ] 40 |-> [ 3 , .GeneratedListBottom ] 41 |-> [ 3 , .GeneratedListBottom ] 42 |-> 0 43 |-> [ 1 , ( 2 , ( 3 , .GeneratedListBottom ) ) ] 44 |-> [ 4 , .GeneratedListBottom ] 45 |-> 1 46 |-> [ 2 , ( 3 , .GeneratedListBottom ) ] 47 |-> [ 4 , .GeneratedListBottom ] 48 |-> 2 49 |-> [ 3 , .GeneratedListBottom ] 50 |-> [ 4 , .GeneratedListBottom ] 51 |-> 3 52 |-> [ .GeneratedListBottom ] 53 |-> [ 4 , .GeneratedListBottom ] 54 |-> [ 4 , .GeneratedListBottom ] 55 |-> 0 56 |-> [ 1 , ( 2 , ( 3 , ( 4 , .GeneratedListBottom ) ) ) ] 57 |-> [ 5 , .GeneratedListBottom ] 58 |-> 1 59 |-> [ 2 , ( 3 , ( 4 , .GeneratedListBottom ) ) ] 60 |-> [ 5 , .GeneratedListBottom ] 61 |-> 2 62 |-> [ 3 , ( 4 , .GeneratedListBottom ) ] 63 |-> [ 5 , .GeneratedListBottom ] 64 |-> 3 65 |-> [ 4 , .GeneratedListBottom ] 66 |-> [ 5 , .GeneratedListBottom ] 67 |-> 4 68 |-> [ .GeneratedListBottom ] 69 |-> [ 5 , .GeneratedListBottom ] 70 |-> [ 5 , .GeneratedListBottom ] 71 |-> 0 72 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ) ) ] 73 |-> [ 6 , .GeneratedListBottom ] 74 |-> 1 75 |-> [ 2 , ( 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ) ] 76 |-> [ 6 , .GeneratedListBottom ] 77 |-> 2 78 |-> [ 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ] 79 |-> [ 6 , .GeneratedListBottom ] 80 |-> 3 81 |-> [ 4 , ( 5 , .GeneratedListBottom ) ] 82 |-> [ 6 , .GeneratedListBottom ] 83 |-> 4 84 |-> [ 5 , .GeneratedListBottom ] 85 |-> [ 6 , .GeneratedListBottom ] 86 |-> 5 87 |-> [ .GeneratedListBottom ] 88 |-> [ 6 , .GeneratedListBottom ] 89 |-> [ 6 , .GeneratedListBottom ] 90 |-> 0 91 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ) ) ) ] 92 |-> [ 7 , .GeneratedListBottom ] 93 |-> 1 94 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ) ) ] 95 |-> [ 7 , .GeneratedListBottom ] 96 |-> 2 97 |-> [ 3 , ( 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ) ] 98 |-> [ 7 , .GeneratedListBottom ] 99 |-> 3 100 |-> [ 4 , ( 5 , ( 6 , .GeneratedListBottom ) ) ] 101 |-> [ 7 , .GeneratedListBottom ] 102 |-> 4 103 |-> [ 5 , ( 6 , .GeneratedListBottom ) ] 104 |-> [ 7 , .GeneratedListBottom ] 105 |-> 5 106 |-> [ 6 , .GeneratedListBottom ] 107 |-> [ 7 , .GeneratedListBottom ] 108 |-> 6 109 |-> [ .GeneratedListBottom ] 110 |-> [ 7 , .GeneratedListBottom ] 111 |-> [ 7 , .GeneratedListBottom ] 112 |-> 0 113 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ] 114 |-> [ 8 , .GeneratedListBottom ] 115 |-> 1 116 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ) ) ] 117 |-> [ 8 , .GeneratedListBottom ] 118 |-> 2 119 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ) ] 120 |-> [ 8 , .GeneratedListBottom ] 121 |-> 3 122 |-> [ 4 , ( 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ) ] 123 |-> [ 8 , .GeneratedListBottom ] 124 |-> 4 125 |-> [ 5 , ( 6 , ( 7 , .GeneratedListBottom ) ) ] 126 |-> [ 8 , .GeneratedListBottom ] 127 |-> 5 128 |-> [ 6 , ( 7 , .GeneratedListBottom ) ] 129 |-> [ 8 , .GeneratedListBottom ] 130 |-> 6 131 |-> [ 7 , .GeneratedListBottom ] 132 |-> [ 8 , .GeneratedListBottom ] 133 |-> 7 134 |-> [ .GeneratedListBottom ] 135 |-> [ 8 , .GeneratedListBottom ] 136 |-> [ 8 , .GeneratedListBottom ] 137 |-> 0 138 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ] 139 |-> [ 9 , .GeneratedListBottom ] 140 |-> 1 141 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ] 142 |-> [ 9 , .GeneratedListBottom ] 143 |-> 2 144 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ) ] 145 |-> [ 9 , .GeneratedListBottom ] 146 |-> 3 147 |-> [ 4 , ( 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ) ] 148 |-> [ 9 , .GeneratedListBottom ] 149 |-> 4 150 |-> [ 5 , ( 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ) ] 151 |-> [ 9 , .GeneratedListBottom ] 152 |-> 5 153 |-> [ 6 , ( 7 , ( 8 , .GeneratedListBottom ) ) ] 154 |-> [ 9 , .GeneratedListBottom ] 155 |-> 6 156 |-> [ 7 , ( 8 , .GeneratedListBottom ) ] 157 |-> [ 9 , .GeneratedListBottom ] 158 |-> 7 159 |-> [ 8 , .GeneratedListBottom ] 160 |-> [ 9 , .GeneratedListBottom ] 161 |-> 8 162 |-> [ .GeneratedListBottom ] 163 |-> [ 9 , .GeneratedListBottom ] 164 |-> [ 9 , .GeneratedListBottom ] 165 |-> 0 166 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 167 |-> [ 10 , .GeneratedListBottom ] 168 |-> 1 169 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ] 170 |-> [ 10 , .GeneratedListBottom ] 171 |-> 2 172 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ] 173 |-> [ 10 , .GeneratedListBottom ] 174 |-> 3 175 |-> [ 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ) ] 176 |-> [ 10 , .GeneratedListBottom ] 177 |-> 4 178 |-> [ 5 , ( 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ) ] 179 |-> [ 10 , .GeneratedListBottom ] 180 |-> 5 181 |-> [ 6 , ( 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ) ] 182 |-> [ 10 , .GeneratedListBottom ] 183 |-> 6 184 |-> [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] 185 |-> [ 10 , .GeneratedListBottom ] 186 |-> 7 187 |-> [ 8 , ( 9 , .GeneratedListBottom ) ] 188 |-> [ 10 , .GeneratedListBottom ] 189 |-> 8 190 |-> [ 9 , .GeneratedListBottom ] 191 |-> [ 10 , .GeneratedListBottom ] 192 |-> 9 193 |-> [ .GeneratedListBottom ] 194 |-> [ 10 , .GeneratedListBottom ] 195 |-> [ 10 , .GeneratedListBottom ] 196 |-> 10 197 |-> 9 198 |-> 8 199 |-> 7 200 |-> 6 201 |-> 5 202 |-> 4 203 |-> 3 204 |-> 2 205 |-> 1 206 |-> 10 207 |-> [ 9 , ( 8 , ( 7 , ( 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 208 |-> 0 209 |-> [ 1 , ( 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 210 |-> 9 211 |-> [ 8 , ( 7 , ( 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 212 |-> 1 213 |-> [ 2 , ( 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 214 |-> 8 215 |-> [ 7 , ( 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ) ] 216 |-> 2 217 |-> [ 3 , ( 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ] 218 |-> 7 219 |-> [ 6 , ( 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ) ] 220 |-> 3 221 |-> [ 4 , ( 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ] 222 |-> 6 223 |-> [ 5 , ( 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ) ] 224 |-> 4 225 |-> [ 5 , ( 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ) ] 226 |-> 5 227 |-> [ 4 , ( 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ) ] 228 |-> 5 229 |-> [ 6 , ( 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ) ] 230 |-> 4 231 |-> [ 3 , ( 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ) ] 232 |-> 6 233 |-> [ 7 , ( 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ) ] 234 |-> 3 235 |-> [ 2 , ( 1 , ( 0 , .GeneratedListBottom ) ) ] 236 |-> 7 237 |-> [ 8 , ( 9 , ( 10 , .GeneratedListBottom ) ) ] 238 |-> 2 239 |-> [ 1 , ( 0 , .GeneratedListBottom ) ] 240 |-> 8 241 |-> [ 9 , ( 10 , .GeneratedListBottom ) ] 242 |-> 1 243 |-> [ 0 , .GeneratedListBottom ] 244 |-> 9 245 |-> [ 10 , .GeneratedListBottom ] 246 |-> 0 247 |-> [ .GeneratedListBottom ] 248 |-> 10 249 |-> [ .GeneratedListBottom ] 250 |-> [ 10 , ( 0 , ( 9 , ( 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 251 |-> 10 252 |-> [ 0 , ( 9 , ( 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 253 |-> 0 254 |-> [ 9 , ( 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 255 |-> 9 256 |-> [ 1 , ( 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 257 |-> 1 258 |-> [ 8 , ( 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 259 |-> 8 260 |-> [ 2 , ( 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 261 |-> 2 262 |-> [ 7 , ( 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 263 |-> 7 264 |-> [ 3 , ( 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 265 |-> 3 266 |-> [ 6 , ( 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ] 267 |-> 6 268 |-> [ 4 , ( 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ] 269 |-> 4 270 |-> [ 5 , ( 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 271 |-> 5 272 |-> [ 5 , ( 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 273 |-> 5 274 |-> [ 4 , ( 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 275 |-> 4 276 |-> [ 6 , ( 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 277 |-> 6 278 |-> [ 3 , ( 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ) ] 279 |-> 3 280 |-> [ 7 , ( 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ) ] 281 |-> 7 282 |-> [ 2 , ( 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ) ] 283 |-> 2 284 |-> [ 8 , ( 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ) ] 285 |-> 8 286 |-> [ 1 , ( 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ) ] 287 |-> 1 288 |-> [ 9 , ( 0 , ( 10 , .GeneratedListBottom ) ) ] 289 |-> 9 290 |-> [ 0 , ( 10 , .GeneratedListBottom ) ] 291 |-> 0 292 |-> [ 10 , .GeneratedListBottom ] 293 |-> 10 294 |-> [ .GeneratedListBottom ] 295 |-> 10 296 |-> Empty 297 |-> 10 298 |-> Empty 299 |-> 0 300 |-> 0 301 |-> Empty 302 |-> 10 303 |-> ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) ) 304 |-> 9 305 |-> Empty 306 |-> 0 307 |-> Empty 308 |-> 9 309 |-> 9 310 |-> Empty 311 |-> 10 312 |-> ( Node ( Empty , ( 0 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 313 |-> 1 314 |-> ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 315 |-> 0 316 |-> Empty 317 |-> 1 318 |-> Empty 319 |-> 9 320 |-> Empty 321 |-> 1 322 |-> 1 323 |-> Empty 324 |-> 10 325 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 326 |-> 8 327 |-> ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 328 |-> 0 329 |-> Empty 330 |-> 8 331 |-> Empty 332 |-> 9 333 |-> ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) ) 334 |-> 8 335 |-> Empty 336 |-> 1 337 |-> Empty 338 |-> 8 339 |-> 8 340 |-> Empty 341 |-> 10 342 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 343 |-> 2 344 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 345 |-> 0 346 |-> Empty 347 |-> 2 348 |-> Empty 349 |-> 9 350 |-> ( Node ( Empty , ( 1 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 351 |-> 2 352 |-> ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 353 |-> 1 354 |-> Empty 355 |-> 2 356 |-> Empty 357 |-> 8 358 |-> Empty 359 |-> 2 360 |-> 2 361 |-> Empty 362 |-> 10 363 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 364 |-> 7 365 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 366 |-> 0 367 |-> Empty 368 |-> 7 369 |-> Empty 370 |-> 9 371 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 372 |-> 7 373 |-> ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 374 |-> 1 375 |-> Empty 376 |-> 7 377 |-> Empty 378 |-> 8 379 |-> ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) ) 380 |-> 7 381 |-> Empty 382 |-> 2 383 |-> Empty 384 |-> 7 385 |-> 7 386 |-> Empty 387 |-> 10 388 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 389 |-> 3 390 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 391 |-> 0 392 |-> Empty 393 |-> 3 394 |-> Empty 395 |-> 9 396 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 397 |-> 3 398 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 399 |-> 1 400 |-> Empty 401 |-> 3 402 |-> Empty 403 |-> 8 404 |-> ( Node ( Empty , ( 2 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 405 |-> 3 406 |-> ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 407 |-> 2 408 |-> Empty 409 |-> 3 410 |-> Empty 411 |-> 7 412 |-> Empty 413 |-> 3 414 |-> 3 415 |-> Empty 416 |-> 10 417 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 418 |-> 6 419 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 420 |-> 0 421 |-> Empty 422 |-> 6 423 |-> Empty 424 |-> 9 425 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 426 |-> 6 427 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 428 |-> 1 429 |-> Empty 430 |-> 6 431 |-> Empty 432 |-> 8 433 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 434 |-> 6 435 |-> ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 436 |-> 2 437 |-> Empty 438 |-> 6 439 |-> Empty 440 |-> 7 441 |-> ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) ) 442 |-> 6 443 |-> Empty 444 |-> 3 445 |-> Empty 446 |-> 6 447 |-> 6 448 |-> Empty 449 |-> 10 450 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 451 |-> 4 452 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 453 |-> 0 454 |-> Empty 455 |-> 4 456 |-> Empty 457 |-> 9 458 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 459 |-> 4 460 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 461 |-> 1 462 |-> Empty 463 |-> 4 464 |-> Empty 465 |-> 8 466 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 467 |-> 4 468 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 469 |-> 2 470 |-> Empty 471 |-> 4 472 |-> Empty 473 |-> 7 474 |-> ( Node ( Empty , ( 3 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 475 |-> 4 476 |-> ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 477 |-> 3 478 |-> Empty 479 |-> 4 480 |-> Empty 481 |-> 6 482 |-> Empty 483 |-> 4 484 |-> 4 485 |-> Empty 486 |-> 10 487 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 488 |-> 5 489 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 490 |-> 0 491 |-> Empty 492 |-> 5 493 |-> Empty 494 |-> 9 495 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 496 |-> 5 497 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 498 |-> 1 499 |-> Empty 500 |-> 5 501 |-> Empty 502 |-> 8 503 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 504 |-> 5 505 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 506 |-> 2 507 |-> Empty 508 |-> 5 509 |-> Empty 510 |-> 7 511 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 512 |-> 5 513 |-> ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 514 |-> 3 515 |-> Empty 516 |-> 5 517 |-> Empty 518 |-> 6 519 |-> ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) ) 520 |-> 5 521 |-> Empty 522 |-> 4 523 |-> Empty 524 |-> 5 525 |-> 5 526 |-> Empty 527 |-> 10 528 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 529 |-> 5 530 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 531 |-> 0 532 |-> Empty 533 |-> 5 534 |-> Empty 535 |-> 9 536 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 537 |-> 5 538 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 539 |-> 1 540 |-> Empty 541 |-> 5 542 |-> Empty 543 |-> 8 544 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 545 |-> 5 546 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 547 |-> 2 548 |-> Empty 549 |-> 5 550 |-> Empty 551 |-> 7 552 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 553 |-> 5 554 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 555 |-> 3 556 |-> Empty 557 |-> 5 558 |-> Empty 559 |-> 6 560 |-> ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 561 |-> 5 562 |-> ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) ) 563 |-> 4 564 |-> Empty 565 |-> 5 566 |-> Empty 567 |-> 5 568 |-> Empty 569 |-> 5 570 |-> 5 571 |-> Empty 572 |-> 10 573 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 574 |-> 4 575 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 576 |-> 0 577 |-> Empty 578 |-> 4 579 |-> Empty 580 |-> 9 581 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 582 |-> 4 583 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 584 |-> 1 585 |-> Empty 586 |-> 4 587 |-> Empty 588 |-> 8 589 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 590 |-> 4 591 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 592 |-> 2 593 |-> Empty 594 |-> 4 595 |-> Empty 596 |-> 7 597 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 598 |-> 4 599 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 600 |-> 3 601 |-> Empty 602 |-> 4 603 |-> Empty 604 |-> 6 605 |-> ( Node ( Empty , ( 4 , ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 606 |-> 4 607 |-> ( Node ( Empty , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 608 |-> 4 609 |-> Empty 610 |-> 4 611 |-> ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) ) 612 |-> 5 613 |-> Empty 614 |-> 4 615 |-> 4 616 |-> Empty 617 |-> 10 618 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 619 |-> 6 620 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 621 |-> 0 622 |-> Empty 623 |-> 6 624 |-> Empty 625 |-> 9 626 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 627 |-> 6 628 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 629 |-> 1 630 |-> Empty 631 |-> 6 632 |-> Empty 633 |-> 8 634 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 635 |-> 6 636 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 637 |-> 2 638 |-> Empty 639 |-> 6 640 |-> Empty 641 |-> 7 642 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 643 |-> 6 644 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 645 |-> 3 646 |-> Empty 647 |-> 6 648 |-> Empty 649 |-> 6 650 |-> ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 651 |-> 6 652 |-> 6 653 |-> Empty 654 |-> 10 655 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 656 |-> 3 657 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 658 |-> 0 659 |-> Empty 660 |-> 3 661 |-> Empty 662 |-> 9 663 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 664 |-> 3 665 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 666 |-> 1 667 |-> Empty 668 |-> 3 669 |-> Empty 670 |-> 8 671 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 672 |-> 3 673 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 674 |-> 2 675 |-> Empty 676 |-> 3 677 |-> Empty 678 |-> 7 679 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 680 |-> 3 681 |-> ( Node ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 682 |-> 3 683 |-> Empty 684 |-> 3 685 |-> ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 686 |-> 6 687 |-> ( Node ( Empty , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 688 |-> 3 689 |-> ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 690 |-> 4 691 |-> Empty 692 |-> 3 693 |-> 3 694 |-> Empty 695 |-> 10 696 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 697 |-> 7 698 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 699 |-> 0 700 |-> Empty 701 |-> 7 702 |-> Empty 703 |-> 9 704 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 705 |-> 7 706 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 707 |-> 1 708 |-> Empty 709 |-> 7 710 |-> Empty 711 |-> 8 712 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 713 |-> 7 714 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 715 |-> 2 716 |-> Empty 717 |-> 7 718 |-> Empty 719 |-> 7 720 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 721 |-> 7 722 |-> 7 723 |-> Empty 724 |-> 10 725 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 726 |-> 2 727 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 728 |-> 0 729 |-> Empty 730 |-> 2 731 |-> Empty 732 |-> 9 733 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 734 |-> 2 735 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 736 |-> 1 737 |-> Empty 738 |-> 2 739 |-> Empty 740 |-> 8 741 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 742 |-> 2 743 |-> ( Node ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 744 |-> 2 745 |-> Empty 746 |-> 2 747 |-> ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 748 |-> 7 749 |-> ( Node ( Empty , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 750 |-> 2 751 |-> ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 752 |-> 3 753 |-> Empty 754 |-> 2 755 |-> 2 756 |-> Empty 757 |-> 10 758 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 759 |-> 8 760 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 761 |-> 0 762 |-> Empty 763 |-> 8 764 |-> Empty 765 |-> 9 766 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 767 |-> 8 768 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 769 |-> 1 770 |-> Empty 771 |-> 8 772 |-> Empty 773 |-> 8 774 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 775 |-> 8 776 |-> 8 777 |-> Empty 778 |-> 10 779 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 780 |-> 1 781 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 782 |-> 0 783 |-> Empty 784 |-> 1 785 |-> Empty 786 |-> 9 787 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 788 |-> 1 789 |-> ( Node ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 790 |-> 1 791 |-> Empty 792 |-> 1 793 |-> ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 794 |-> 8 795 |-> ( Node ( Empty , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 796 |-> 1 797 |-> ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 798 |-> 2 799 |-> Empty 800 |-> 1 801 |-> 1 802 |-> Empty 803 |-> 10 804 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 805 |-> 9 806 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 807 |-> 0 808 |-> Empty 809 |-> 9 810 |-> Empty 811 |-> 9 812 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 813 |-> 9 814 |-> 9 815 |-> Empty 816 |-> 10 817 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 818 |-> 0 819 |-> ( Node ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 820 |-> 0 821 |-> Empty 822 |-> 0 823 |-> ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 824 |-> 9 825 |-> ( Node ( Empty , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 826 |-> 0 827 |-> ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 828 |-> 1 829 |-> Empty 830 |-> 0 831 |-> 0 832 |-> Empty 833 |-> 10 834 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 835 |-> 10 836 |-> 10 837 |-> 10 838 |-> ( Node ( Empty , ( 10 , ( Empty , .GeneratedListBottom ) ) ) ) 839 |-> ( Node ( Empty , ( 0 , ( Node ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 840 |-> 10 841 |-> Empty 842 |-> Empty 843 |-> [ 10 , .GeneratedListBottom ] 844 |-> 0 845 |-> ( Node ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 9 , ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 846 |-> Empty 847 |-> 9 848 |-> ( Node ( Empty , ( 9 , ( Empty , .GeneratedListBottom ) ) ) ) 849 |-> ( Node ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) , ( 1 , ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 850 |-> 9 851 |-> Empty 852 |-> Empty 853 |-> [ 9 , .GeneratedListBottom ] 854 |-> 1 855 |-> ( Node ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 8 , ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 856 |-> ( Node ( Empty , ( 0 , ( Empty , .GeneratedListBottom ) ) ) ) 857 |-> 8 858 |-> ( Node ( Empty , ( 8 , ( Empty , .GeneratedListBottom ) ) ) ) 859 |-> ( Node ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) , ( 2 , ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 860 |-> 8 861 |-> Empty 862 |-> Empty 863 |-> [ 8 , .GeneratedListBottom ] 864 |-> 2 865 |-> ( Node ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 7 , ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 866 |-> ( Node ( Empty , ( 1 , ( Empty , .GeneratedListBottom ) ) ) ) 867 |-> 7 868 |-> ( Node ( Empty , ( 7 , ( Empty , .GeneratedListBottom ) ) ) ) 869 |-> ( Node ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) , ( 3 , ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 870 |-> 7 871 |-> Empty 872 |-> Empty 873 |-> [ 7 , .GeneratedListBottom ] 874 |-> 3 875 |-> ( Node ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , ( 6 , ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 876 |-> ( Node ( Empty , ( 2 , ( Empty , .GeneratedListBottom ) ) ) ) 877 |-> 6 878 |-> ( Node ( Empty , ( 6 , ( Empty , .GeneratedListBottom ) ) ) ) 879 |-> ( Node ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) , ( 4 , ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 880 |-> 6 881 |-> Empty 882 |-> Empty 883 |-> [ 6 , .GeneratedListBottom ] 884 |-> 4 885 |-> ( Node ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) , ( 5 , ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) , .GeneratedListBottom ) ) ) ) 886 |-> ( Node ( Empty , ( 3 , ( Empty , .GeneratedListBottom ) ) ) ) 887 |-> 5 888 |-> ( Node ( Empty , ( 5 , ( Empty , .GeneratedListBottom ) ) ) ) 889 |-> ( Node ( Empty , ( 4 , ( Empty , .GeneratedListBottom ) ) ) ) 890 |-> 5 891 |-> Empty 892 |-> Empty 893 |-> [ 5 , .GeneratedListBottom ] 894 |-> 4 895 |-> Empty 896 |-> Empty 897 |-> [ 4 , .GeneratedListBottom ] 898 |-> 4 899 |-> [ .GeneratedListBottom ] 900 |-> [ 5 , ( 5 , .GeneratedListBottom ) ] 901 |-> [ 5 , ( 5 , .GeneratedListBottom ) ] 902 |-> 3 903 |-> Empty 904 |-> Empty 905 |-> [ 3 , .GeneratedListBottom ] 906 |-> 3 907 |-> [ .GeneratedListBottom ] 908 |-> [ 4 , ( 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ) ] 909 |-> [ 4 , ( 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ) ] 910 |-> 3 911 |-> [ 4 , ( 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ) ] 912 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 913 |-> 4 914 |-> [ 4 , ( 5 , ( 5 , .GeneratedListBottom ) ) ] 915 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 916 |-> 4 917 |-> [ 5 , ( 5 , .GeneratedListBottom ) ] 918 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 919 |-> 5 920 |-> [ 5 , .GeneratedListBottom ] 921 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 922 |-> 5 923 |-> [ .GeneratedListBottom ] 924 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 925 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 926 |-> 2 927 |-> Empty 928 |-> Empty 929 |-> [ 2 , .GeneratedListBottom ] 930 |-> 2 931 |-> [ .GeneratedListBottom ] 932 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ) ] 933 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ) ] 934 |-> 2 935 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ) ] 936 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 937 |-> 3 938 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ) ] 939 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 940 |-> 3 941 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ) ] 942 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 943 |-> 4 944 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ) ] 945 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 946 |-> 4 947 |-> [ 5 , ( 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ) ] 948 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 949 |-> 5 950 |-> [ 5 , ( 6 , ( 6 , .GeneratedListBottom ) ) ] 951 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 952 |-> 5 953 |-> [ 6 , ( 6 , .GeneratedListBottom ) ] 954 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 955 |-> 6 956 |-> [ 6 , .GeneratedListBottom ] 957 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 958 |-> 6 959 |-> [ .GeneratedListBottom ] 960 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 961 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 962 |-> 1 963 |-> Empty 964 |-> Empty 965 |-> [ 1 , .GeneratedListBottom ] 966 |-> 1 967 |-> [ .GeneratedListBottom ] 968 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 969 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 970 |-> 1 971 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 972 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 973 |-> 2 974 |-> [ 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 975 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 976 |-> 2 977 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 978 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 979 |-> 3 980 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 981 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 982 |-> 3 983 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ) ] 984 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 985 |-> 4 986 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ) ] 987 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 988 |-> 4 989 |-> [ 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ) ] 990 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 991 |-> 5 992 |-> [ 5 , ( 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ) ] 993 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 994 |-> 5 995 |-> [ 6 , ( 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ) ] 996 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 997 |-> 6 998 |-> [ 6 , ( 7 , ( 7 , .GeneratedListBottom ) ) ] 999 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1000 |-> 6 1001 |-> [ 7 , ( 7 , .GeneratedListBottom ) ] 1002 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1003 |-> 7 1004 |-> [ 7 , .GeneratedListBottom ] 1005 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1006 |-> 7 1007 |-> [ .GeneratedListBottom ] 1008 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1009 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1010 |-> 0 1011 |-> Empty 1012 |-> Empty 1013 |-> [ 0 , .GeneratedListBottom ] 1014 |-> 0 1015 |-> [ .GeneratedListBottom ] 1016 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1017 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1018 |-> 0 1019 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1020 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1021 |-> 1 1022 |-> [ 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1023 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1024 |-> 1 1025 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1026 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1027 |-> 2 1028 |-> [ 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ] 1029 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1030 |-> 2 1031 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 1032 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1033 |-> 3 1034 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 1035 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1036 |-> 3 1037 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 1038 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1039 |-> 4 1040 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 1041 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1042 |-> 4 1043 |-> [ 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ) ] 1044 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1045 |-> 5 1046 |-> [ 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ) ] 1047 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1048 |-> 5 1049 |-> [ 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ) ] 1050 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1051 |-> 6 1052 |-> [ 6 , ( 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ) ] 1053 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1054 |-> 6 1055 |-> [ 7 , ( 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ) ] 1056 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1057 |-> 7 1058 |-> [ 7 , ( 8 , ( 8 , .GeneratedListBottom ) ) ] 1059 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1060 |-> 7 1061 |-> [ 8 , ( 8 , .GeneratedListBottom ) ] 1062 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1063 |-> 8 1064 |-> [ 8 , .GeneratedListBottom ] 1065 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1066 |-> 8 1067 |-> [ .GeneratedListBottom ] 1068 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1069 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1070 |-> [ 0 , ( 0 , ( 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1071 |-> 0 1072 |-> [ 0 , ( 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1073 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1074 |-> 0 1075 |-> [ 1 , ( 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1076 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1077 |-> 1 1078 |-> [ 1 , ( 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1079 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1080 |-> 1 1081 |-> [ 2 , ( 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1082 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1083 |-> 2 1084 |-> [ 2 , ( 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1085 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1086 |-> 2 1087 |-> [ 3 , ( 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ) ] 1088 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1089 |-> 3 1090 |-> [ 3 , ( 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ) ] 1091 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1092 |-> 3 1093 |-> [ 4 , ( 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ) ] 1094 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1095 |-> 4 1096 |-> [ 4 , ( 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ) ] 1097 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1098 |-> 4 1099 |-> [ 5 , ( 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ) ] 1100 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1101 |-> 5 1102 |-> [ 5 , ( 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ) ] 1103 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1104 |-> 5 1105 |-> [ 6 , ( 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ) ] 1106 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1107 |-> 6 1108 |-> [ 6 , ( 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ) ] 1109 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1110 |-> 6 1111 |-> [ 7 , ( 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ) ] 1112 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1113 |-> 7 1114 |-> [ 7 , ( 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ) ] 1115 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1116 |-> 7 1117 |-> [ 8 , ( 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ) ] 1118 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1119 |-> 8 1120 |-> [ 8 , ( 9 , ( 9 , .GeneratedListBottom ) ) ] 1121 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1122 |-> 8 1123 |-> [ 9 , ( 9 , .GeneratedListBottom ) ] 1124 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1125 |-> 9 1126 |-> [ 9 , .GeneratedListBottom ] 1127 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1128 |-> 9 1129 |-> [ .GeneratedListBottom ] 1130 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] 1131 |-> [ 10 , ( 10 , .GeneratedListBottom ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-days.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-days.fun.out deleted file mode 100644 index 8c818dc0e61..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-days.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K [ Thursday , Saturday , Thursday , .Names ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-distributivity.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-distributivity.fun.out deleted file mode 100644 index 0b66d51cbae..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-distributivity.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K "(n * x + n * y)" #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( distribute |-> 2 toString |-> 1 , ( Value ( n , .GeneratedListBottom ) -> n ) | ( ( Plus ( l , ( r , .GeneratedListBottom ) ) -> ( "(" ^ toString l ^ " + " ^ toString r ^ ")" ) ) | ( ( Minus ( l , ( r , .GeneratedListBottom ) ) -> ( "(" ^ toString l ^ " - " ^ toString r ^ ")" ) ) | ( ( Times ( l , ( r , .GeneratedListBottom ) ) -> ( toString l ^ " * " ^ toString r ) ) | .Cases ) ) ) ) 2 |-> closure ( distribute |-> 2 toString |-> 1 , ( Times ( e1 , ( Plus ( e2 , ( e3 , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) -> ( Plus ( Times ( ( distribute e1 ) , ( ( distribute e2 ) , .GeneratedListBottom ) ) , ( Times ( ( distribute e1 ) , ( ( distribute e3 ) , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) ) ) | ( ( Times ( Plus ( e1 , ( e2 , .GeneratedListBottom ) ) , ( e3 , .GeneratedListBottom ) ) -> ( Plus ( Times ( ( distribute e1 ) , ( ( distribute e3 ) , .GeneratedListBottom ) ) , ( Times ( ( distribute e2 ) , ( ( distribute e3 ) , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) ) ) | ( ( Plus ( l , ( r , .GeneratedListBottom ) ) -> ( Plus ( ( distribute l ) , ( ( distribute r ) , .GeneratedListBottom ) ) ) ) | ( ( Minus ( l , ( r , .GeneratedListBottom ) ) -> ( Minus ( ( distribute l ) , ( ( distribute r ) , .GeneratedListBottom ) ) ) ) | ( ( Value ( n , .GeneratedListBottom ) -> ( Value ( n , .GeneratedListBottom ) ) ) | .Cases ) ) ) ) ) 3 |-> ( Value ( "n" , .GeneratedListBottom ) ) 4 |-> ( Value ( "x" , .GeneratedListBottom ) ) 5 |-> ( Value ( "y" , .GeneratedListBottom ) ) 6 |-> "y" 7 |-> "n" 8 |-> "x" 9 |-> "n" 10 |-> ( Times ( Value ( "n" , .GeneratedListBottom ) , ( Value ( "y" , .GeneratedListBottom ) , .GeneratedListBottom ) ) ) 11 |-> ( Times ( Value ( "n" , .GeneratedListBottom ) , ( Value ( "x" , .GeneratedListBottom ) , .GeneratedListBottom ) ) ) 12 |-> ( Value ( "x" , .GeneratedListBottom ) ) 13 |-> ( Value ( "n" , .GeneratedListBottom ) ) 14 |-> "n" 15 |-> "x" 16 |-> ( Value ( "y" , .GeneratedListBottom ) ) 17 |-> ( Value ( "n" , .GeneratedListBottom ) ) 18 |-> "n" 19 |-> "y" diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-toString.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-toString.fun.out deleted file mode 100644 index be767a3ea55..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-expr-toString.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K "n * (x + y)" diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-list-length.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-list-length.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-tree-mirror.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-tree-mirror.fun.out deleted file mode 100644 index 9491a72bb09..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/constructor-tree-mirror.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K Tree ( Tree ( Tree ( Leaf ( 5 , .Names ) , Leaf ( 4 , .Names ) , .Names ) , Leaf ( 3 , .Names ) , .Names ) , Tree ( Leaf ( 2 , .Names ) , Leaf ( 1 , .Names ) , .Names ) , .Names ) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-1.fun.out deleted file mode 100644 index 744fd1c711a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( Nothing -> 7 ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-2.fun.out deleted file mode 100644 index 5707c10ba34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/empty-argument-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/exceptions.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/exceptions.fun.out deleted file mode 100644 index 36af4174804..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/exceptions.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial-and-list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial-and-list-max.fun.out deleted file mode 100644 index 783cd61caa3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial-and-list-max.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K 620448401733239439360000 #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( fact |-> 2 max |-> 1 , ( [ h , .GeneratedListBottom ] -> fun ( ( x -> fun ( ( y -> h ) | .Cases ) ) | .Cases ) ) | ( ( [ h , .GeneratedListBottom | t ] -> fun ( ( x -> fun ( ( y -> let ( x = ( max t x y ) ) and .Bindings in if h > x then h else x ) | .Cases ) ) | .Cases ) ) | .Cases ) ) 2 |-> closure ( fact |-> 2 max |-> 1 , ( 0 -> 1 ) | ( ( x -> ( x * fact ( x - 1 ) ) ) | .Cases ) ) 3 |-> 4 4 |-> 3 5 |-> 2 6 |-> 1 7 |-> 1 8 |-> [ 3 , ( 24 , ( 2 , ( 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ) ) ) ] 9 |-> true 10 |-> 5 11 |-> 3 12 |-> [ 24 , ( 2 , ( 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ) ) ] 13 |-> true 14 |-> 5 15 |-> 24 16 |-> [ 2 , ( 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ) ] 17 |-> true 18 |-> 5 19 |-> 2 20 |-> [ 5 , ( 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ) ] 21 |-> true 22 |-> 5 23 |-> 5 24 |-> [ 0 , ( -1 , ( -5 , .GeneratedListBottom ) ) ] 25 |-> true 26 |-> 5 27 |-> 0 28 |-> [ -1 , ( -5 , .GeneratedListBottom ) ] 29 |-> true 30 |-> 5 31 |-> -1 32 |-> [ -5 , .GeneratedListBottom ] 33 |-> true 34 |-> 5 35 |-> -5 36 |-> true 37 |-> 5 38 |-> -5 39 |-> -1 40 |-> 0 41 |-> 5 42 |-> 5 43 |-> 24 44 |-> 24 45 |-> 24 46 |-> 23 47 |-> 22 48 |-> 21 49 |-> 20 50 |-> 19 51 |-> 18 52 |-> 17 53 |-> 16 54 |-> 15 55 |-> 14 56 |-> 13 57 |-> 12 58 |-> 11 59 |-> 10 60 |-> 9 61 |-> 8 62 |-> 7 63 |-> 6 64 |-> 5 65 |-> 4 66 |-> 3 67 |-> 2 68 |-> 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial.fun.out deleted file mode 100644 index fd420f07e11..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/factorial.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-1.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-2.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-3.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-4.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-length.fun.out deleted file mode 100644 index 6b384f077d5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-length.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-max.fun.out deleted file mode 100644 index 80c9b65a1ca..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-max.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-nth.fun.out deleted file mode 100644 index 4bc72d81a58..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/list-nth.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/nth.fun.out deleted file mode 100644 index 1dca5ba26bc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/nth.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , .GeneratedListBottom ) ) ) ) ] #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 2 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( n -> fun ( ( m -> if n == m then [ n , .GeneratedListBottom ] else cons n ( nat ( n + 1 ) m ) ) | .Cases ) ) | .Cases ) 3 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( [ .GeneratedListBottom ] -> 0 ) | ( ( [ h , .GeneratedListBottom | t ] -> ( 1 + length t ) ) | .Cases ) ) 4 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( f -> fun ( ( [ .GeneratedListBottom ] -> [ .GeneratedListBottom ] ) | ( ( [ h , .GeneratedListBottom | t ] -> ( cons ( f h ) ( map f t ) ) ) | .Cases ) ) ) | .Cases ) 5 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( [ .GeneratedListBottom ] -> fun ( ( x -> [ .GeneratedListBottom ] ) | .Cases ) ) | ( ( [ h , .GeneratedListBottom | t ] -> fun ( ( x -> ( cons ( h x ) ( app t x ) ) ) | .Cases ) ) | .Cases ) ) 6 |-> 1 7 |-> 5 8 |-> 2 9 |-> 5 10 |-> 3 11 |-> 5 12 |-> 4 13 |-> 5 14 |-> 5 15 |-> 5 16 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 17 |-> 1 18 |-> [ 2 , ( 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ) ] 19 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 20 |-> 2 21 |-> [ 3 , ( 4 , ( 5 , .GeneratedListBottom ) ) ] 22 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 23 |-> 3 24 |-> [ 4 , ( 5 , .GeneratedListBottom ) ] 25 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 26 |-> 4 27 |-> [ 5 , .GeneratedListBottom ] 28 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 29 |-> 5 30 |-> [ .GeneratedListBottom ] 31 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( 1 -> fun ( ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) ) | ( ( n -> fun ( ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) ) | .Cases ) ) 32 |-> 5 33 |-> 4 34 |-> 3 35 |-> 2 36 |-> closure ( app |-> 5 length |-> 3 map |-> 4 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> h ) | .Cases ) 37 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 35 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 34 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ) ) ) ] 38 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 39 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 35 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 40 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 34 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ) ) ] 41 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 42 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 34 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 43 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , ( closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ) ] 44 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 45 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 33 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 46 |-> [ closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) , .GeneratedListBottom ] 47 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 48 |-> closure ( app |-> 5 length |-> 3 map |-> 4 n |-> 32 nat |-> 2 nth |-> 1 , ( [ h , .GeneratedListBottom | t ] -> ( nth ( n - 1 ) t ) ) | .Cases ) 49 |-> [ .GeneratedListBottom ] 50 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 51 |-> [ 10 , ( 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ) ] 52 |-> 10 53 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 54 |-> 4 55 |-> 11 56 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 57 |-> 3 58 |-> 12 59 |-> [ 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ] 60 |-> 2 61 |-> 13 62 |-> [ 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ] 63 |-> 14 64 |-> [ 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ] 65 |-> 10 66 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 67 |-> 3 68 |-> 11 69 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 70 |-> 2 71 |-> 12 72 |-> [ 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ] 73 |-> 13 74 |-> [ 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ] 75 |-> 10 76 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 77 |-> 2 78 |-> 11 79 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 80 |-> 12 81 |-> [ 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ] 82 |-> 10 83 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] 84 |-> 11 85 |-> [ 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ] 86 |-> 10 87 |-> [ 11 , ( 12 , ( 13 , ( 14 , ( 15 , ( 16 , ( 17 , .GeneratedListBottom ) ) ) ) ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/pattern.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/pattern.fun.out deleted file mode 100644 index 325affc6c99..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/pattern.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K [ Pair ( 10 , ( 9 , .GeneratedListBottom ) ) , ( Pair ( 0 , ( 1 , .GeneratedListBottom ) ) , ( Pair ( 0 , ( 0 , .GeneratedListBottom ) ) , .GeneratedListBottom ) ) ] #And diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-1.fun.out deleted file mode 100644 index 4459f0edfbb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( x -> x ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-2.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-3.fun.out deleted file mode 100644 index 4bc72d81a58..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-4.fun.out deleted file mode 100644 index cba8120e727..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( x -> ( fun ( [ y , .Names ] -> y ) | .Cases ) [ x , .Names ] ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-5.fun.out deleted file mode 100644 index c16b5477629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-6.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-6.fun.out deleted file mode 100644 index e2a78e5607b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/polymorphism-6.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( #1 -> ( fun ( #2 -> ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) ( ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) #2 ) ) | .Cases ) ( ( fun ( #2 -> ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) ( ( fun ( #3 -> ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) ( ( fun ( x -> ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) ( ( fun ( x -> fun ( y -> x ) | .Cases ) | .Cases ) x ) ) | .Cases ) #3 ) ) | .Cases ) #2 ) ) | .Cases ) #1 ) ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-1.fun.out deleted file mode 100644 index 433746ffd10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-1.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K 620448401733239439360000 #And -_0 ==K .Map #And -_1 ==K 1 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( l -> fun ( ( Pair ( x , ( y , .GeneratedListBottom ) ) -> if @ x != y then -1 else if ( fun ( ( [ .GeneratedListBottom ] -> true ) | ( ( [ $h , .GeneratedListBottom | $t ] -> false ) | .Cases ) ) ) ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $t ) | .Cases ) ) l ) then ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l else let ( x = ( max ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $t ) | .Cases ) ) l ) ( Pair ( ( x := @ x + 1 ; x ) , ( ( y + 1 ) , .GeneratedListBottom ) ) ) ) ) and .Bindings in if x <= ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l then ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l else x ) | .Cases ) ) | .Cases ) 2 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( f -> fun ( ( l -> if ( fun ( ( [ .GeneratedListBottom ] -> true ) | ( ( [ $h , .GeneratedListBottom | $t ] -> false ) | .Cases ) ) ) l then [ .GeneratedListBottom ] else cons ( f ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $h ) | .Cases ) ) l ) ) ( map f ( ( fun ( ( [ $h , .GeneratedListBottom | $t ] -> $t ) | .Cases ) ) l ) ) ) | .Cases ) ) | .Cases ) 3 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 4 |-> 4 5 |-> 4 6 |-> 3 7 |-> 2 8 |-> 1 9 |-> 0 10 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 11 |-> [ 1 , ( 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ) ] 12 |-> 1 13 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 14 |-> 1 15 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 16 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 17 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 18 |-> 2 19 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 20 |-> 2 21 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 22 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 23 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 24 |-> 3 25 |-> [ 24 , .GeneratedListBottom ] 26 |-> 3 27 |-> [ 24 , .GeneratedListBottom ] 28 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 29 |-> [ 24 , .GeneratedListBottom ] 30 |-> 24 31 |-> [ .GeneratedListBottom ] 32 |-> 24 33 |-> [ .GeneratedListBottom ] 34 |-> closure ( factorial |-> 3 map |-> 2 max |-> 1 , ( x -> if x <= 0 then 1 else x * factorial ( x - 1 ) ) | .Cases ) 35 |-> [ .GeneratedListBottom ] 36 |-> 24 37 |-> [ .GeneratedListBottom ] 38 |-> 24 39 |-> 23 40 |-> 22 41 |-> 21 42 |-> 20 43 |-> 19 44 |-> 18 45 |-> 17 46 |-> 16 47 |-> 15 48 |-> 14 49 |-> 13 50 |-> 12 51 |-> 11 52 |-> 10 53 |-> 9 54 |-> 8 55 |-> 7 56 |-> 6 57 |-> 5 58 |-> 4 59 |-> 3 60 |-> 2 61 |-> 1 62 |-> 0 63 |-> 3 64 |-> [ 24 , .GeneratedListBottom ] 65 |-> 3 66 |-> 2 67 |-> 1 68 |-> 0 69 |-> 2 70 |-> [ 3 , ( 24 , .GeneratedListBottom ) ] 71 |-> 2 72 |-> 1 73 |-> 0 74 |-> 1 75 |-> [ 2 , ( 3 , ( 24 , .GeneratedListBottom ) ) ] 76 |-> 1 77 |-> 0 78 |-> [ 1 , ( 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ) ] 79 |-> 1 80 |-> 4 81 |-> 1 82 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] 83 |-> 2 84 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 85 |-> 1 86 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] 87 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] 88 |-> 2 89 |-> 4 90 |-> 2 91 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 92 |-> 6 93 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 94 |-> 2 95 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 96 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 97 |-> 3 98 |-> 4 99 |-> 6 100 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 101 |-> 620448401733239439360000 102 |-> [ .GeneratedListBottom ] 103 |-> 6 104 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 105 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 106 |-> 4 107 |-> 4 108 |-> 620448401733239439360000 109 |-> [ .GeneratedListBottom ] 110 |-> 620448401733239439360000 111 |-> [ .GeneratedListBottom ] 112 |-> 620448401733239439360000 113 |-> 6 114 |-> [ 620448401733239439360000 , .GeneratedListBottom ] 115 |-> 620448401733239439360000 116 |-> 2 117 |-> [ 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ] 118 |-> 620448401733239439360000 119 |-> 1 120 |-> [ 2 , ( 6 , ( 620448401733239439360000 , .GeneratedListBottom ) ) ] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-2.fun.out deleted file mode 100644 index 80c9b65a1ca..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-3.fun.out deleted file mode 100644 index e27bcd16004..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-4.fun.out deleted file mode 100644 index d3c57d5593a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 3202 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-5.fun.out deleted file mode 100644 index 151adfdf819..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/references-5.fun.out +++ /dev/null @@ -1,71 +0,0 @@ - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 5 |-> 2 17 |-> 2 -#Or - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 13 |-> 2 27 |-> 2 -#Or - V ==K [ 7 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 14 |-> 2 28 |-> 2 -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 6 |-> 2 18 |-> 2 -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 11 |-> 2 25 |-> 2 -#Or - V ==K [ 7 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 12 |-> 2 26 |-> 2 -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 3 |-> 2 20 |-> 2 -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 9 |-> 2 31 |-> 2 -#Or - V ==K [ 8 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 10 |-> 2 32 |-> 2 -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 4 |-> 2 23 |-> 2 -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 7 |-> 2 29 |-> 2 -#Or - V ==K [ 8 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 8 |-> 2 30 |-> 2 -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 3 |-> 2 15 |-> 2 -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 9 |-> 2 22 |-> 2 -#Or - V ==K [ 9 , ( 8 , ( 9 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 10 |-> 2 24 |-> 2 -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 4 |-> 2 16 |-> 2 -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 7 |-> 2 19 |-> 2 -#Or - V ==K [ 9 , ( 9 , ( 8 , .GeneratedListBottom ) ) ] #And - _0 ==K .Map #And - _1 ==K 1 |-> closure ( .Map , ( x -> ( x := @ x + 1 ) ) | .Cases ) 2 |-> 9 8 |-> 2 21 |-> 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/stuck-letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/stuck-letrec.fun.out deleted file mode 100644 index f6d1e6e6cd5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/stuck-letrec.fun.out +++ /dev/null @@ -1,3 +0,0 @@ -V ==K ( x ~> #freezer_,__FUN-UNTYPED-COMMON1_ ( .GeneratedListBottom ) ~> #freezer_,__FUN-UNTYPED-COMMON0_ ( 2 ) ~> #freezerassignTo0_ ( x , ( y , .GeneratedListBottom ) ) ~> y ~> setEnv ( x |-> 1 ) ~> setEnv ( .Map ) ) #And -_0 ==K x |-> 2 y |-> 3 #And -_1 ==K 1 |-> 1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tail-recursion.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tail-recursion.fun.out deleted file mode 100644 index d6f7ae3254d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tail-recursion.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-1.fun.out deleted file mode 100644 index 1ba1a6cea56..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K fun ( Triple ( x , y , z , .Names ) -> y ) | .Cases diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-2.fun.out deleted file mode 100644 index e749ca8ff89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K Pair ( Pair ( 1 , Wrapper ( 2 , .Names ) , .Names ) , Pair ( 3 , 4 , .Names ) , .Names ) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-3.fun.out deleted file mode 100644 index 37f829cbf50..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 6 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-4.fun.out deleted file mode 100644 index 6c8950ca9c0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 230 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-5.fun.out deleted file mode 100644 index 6c8950ca9c0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/2_substitution/tests/tuple-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K 230 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/Makefile b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/Makefile deleted file mode 100644 index 4db0bd47ef8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=fun-type-inferencer -EXT=fun -TESTDIR=tests -KOMPILE_BACKEND?=java -KRUN_FLAGS=--pattern " V:K " - -include $(MAKEFILE_PATH)/../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/README b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/README deleted file mode 100644 index 4b6c3f703aa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/README +++ /dev/null @@ -1,55 +0,0 @@ -Define a Damas-Milner style let-polymorphic type inferencer for FUN. - -Start with the syntax of FUN in the environment- or substitution-based -definition, and modify it accordingly (adding more strictness, removing -the current macro for datatypes, etc.). Then add the type inference rules. - -This exercise is not trivial, be prepared! There are many different ways -to do it. Here is how I did it (took me about 10h in total, including -some changes in the two dynamic semantics of FUN): - -1) I first added all the trivial rules, for basic values and arithmetic -expressions, following the style in 5_types/lesson_9. Now you can type -some simple programs. - -2) As a warmup, I added rules for functions with only one trivial case, -fun x -> e, and let and letrec binders with only one binding. This -should be quite similar to the definition in 5_types/lesson_9 and it -already allows you to type some programs. - -3) Started to add infrastrucure for typing constructor terms. The first -step, which was the hardest for me, was to process all the datatype -declarations. I added a new cell to the configuration for this purpose, -which I populated with a map associating to each constructor name that -appears in any datatype declaration a type schema. For simplicity, you -can assume that all datatype declarations are at the top of the program, -and that each constuctor name appears in only one datatype declaration. - -4) Added rules for evaluation of constructor terms. In my case, I only -needed two rules for this task, one for constant constructors and one for -constructors with arguments. Each time I lookup a constructor name in -the new cell, I create a fresh instance of its corresponding schema, -the same way we lookup variables bound to type schemas by let. - -5) Added rules for typing functions with cases. The idea here is to -"evaluate" each case to a function type. To evaluate a case, first -evaluate its pattern in a special way, binding each variable in the -pattern to a fresh type, and then evaluate the expression. Once -done with all cases, enforce constraints stating that all the resulting -function types are equal, which is also the resulting type of the function. - -6) Defined the typing rules for let and letrec. In my case, I only -have one rule for each, but I needed to define some auxilliary operations. -As expected, letrec is trickier: first bind all the names to fresh type -variables, then type all the expressions in the resulting type environment, -then generate all the constraints saying that types of the names are the -same as the type of their corresponding expressions, then (!!!) update the -type environment with the corresponding type schemas. - -7) The rest was a smooth ride, including the references and callcc -(one simple rule per language construct). - -As usual, all the tests are provided (more than 50). Just run ktest -from your working directory with the test/config.xml file as parameter. - -Good luck and enjoy! This is a very nice one. diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/README b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/README deleted file mode 100644 index 61a38675b4f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/README +++ /dev/null @@ -1,60 +0,0 @@ -The programs in this folder should give an idea of what features FUN -has and how it is meant to work. We recommend consulting the programs -in the following order: - -factorial.fun -ackermann.fun -stuck-letrec.fun - -empty-argument-1.fun -empty-argument-2.fun -tuple-1.fun -tuple-2.fun -tuple-3.fun -tuple-4.fun -tuple-5.fun - -list-1.fun -list-2.fun -list-3.fun -list-4.fun -list-length.fun -list-max.fun -factorial-and-list-max.fun - -pattern.fun - -references-1.fun -references-2.fun -references-3.fun -references-4.fun -references-5.fun -tail-recursion.fun - -constructor-days.fun -constructor-list-length.fun -constructor-tree-mirror.fun -constructor-expr-toString.fun -constructor-expr-distributivity.fun -constructor-bst-sorting.fun - -callcc-1.fun -callcc-2.fun -callcc-3.fun -callcc-4.fun -callcc-5.fun -callcc-return-1.fun -callcc-return-2.fun -callcc-inefficient-without.fun -callcc-efficient-with-1.fun -callcc-efficient-with-2.fun -exceptions.fun -callcc-looping.fun - -polymorphism-1.fun -polymorphism-2.fun -polymorphism-3.fun -polymorphism-4.fun -polymorphism-5.fun -polymorphism-6.fun - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun deleted file mode 100644 index f7a16271c4e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun +++ /dev/null @@ -1,6 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec ack = fun Pair(0,n) -> n + 1 - | Pair(m,0) -> ack Pair(m - 1, 1) - | Pair(m,n) -> ack Pair(m - 1, ack Pair(m, n - 1)) -in (ack Pair(2,3)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/ackermann.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun deleted file mode 100644 index a34ee3af2be..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun deleted file mode 100644 index 11288aa6e16..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun deleted file mode 100644 index 94360bf2560..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 3) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun deleted file mode 100644 index ede962fa0d1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun deleted file mode 100644 index f82d6a0a9d2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 5) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun deleted file mode 100644 index 712c043113c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun +++ /dev/null @@ -1,13 +0,0 @@ -// using callcc for exceptions -// the following is efficient - -let f l = - callcc (fun throw -> - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux (tail l) - in aux l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun deleted file mode 100644 index 98f930b2277..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun +++ /dev/null @@ -1,13 +0,0 @@ -// the following is also efficient and uses try/catch - -let f l = try - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux(tail l) - in aux l - catch(x) - x -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-efficient-with-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun deleted file mode 100644 index 1dacf714cf1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun +++ /dev/null @@ -1,11 +0,0 @@ -// calculating the product of elements in a list -// this is inefficient; one would like to throw an exception -// see callcc-efficient-with.fun for an efficient variant - -letrec f l = - if null? l - then 1 - else if head l == 0 - then 0 - else head l * f(tail l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-inefficient-without.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun deleted file mode 100644 index c5d5074ef6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for looping - - -let goto = ref (fun x -> x) and n = ref 0 -in callcc (fun exit -> - callcc (fun k -> goto := k; 0); // "goto _" will jump here - if @n < 100 then n := @n + 1 else exit @n; - @goto 0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-looping.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun deleted file mode 100644 index cc103e32988..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for returning: grab caller's continuation - -let f l return = - if null? l - then return 0 - else return 1; - 0 / 0 -in callcc (f []) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun deleted file mode 100644 index eab8034115d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun +++ /dev/null @@ -1,10 +0,0 @@ -// using callcc for returning: grab callee's continuation - -let f l = - callcc (fun return -> - if null?(l) - then return 0 - else return 1; - 0 / 0 - ) -in f [1,2] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc-return-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun deleted file mode 100644 index 4f886718551..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun +++ /dev/null @@ -1 +0,0 @@ -callcc (fun k -> if true then k 1 else false; 0) + 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/callcc.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun deleted file mode 100644 index a34eab7ce6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype 'a bst = Empty | Node('a bst, 'a, 'a bst) - -letrec bst_sort l = flatten (mk_bst l) - and flatten = fun Empty -> [] - | Node(l,n,r) -> append (flatten l) (cons n (flatten r)) - and append = fun [] r -> r | [h|t] r -> cons h (append t r) - and mk_bst = fun [] -> Empty | [h|t] -> insert (mk_bst t) h - and insert = fun Empty n -> Node(Empty,n,Empty) - | Node(l, m, r) n -> if n < m - then Node(insert l n, m, r) - else Node(l, m, insert r n) - and downto = fun 0 -> [0] | n -> cons n (downto (n - 1)) - and upto = fun 0 -> [0] | n -> append (upto (n - 1)) [n] - and merge = fun [] [] -> [] - | [h1|t1] [h2|t2] -> cons h1 (cons h2 (merge t1 t2)) - and shuffle n = merge (downto n) (upto n) -in (bst_sort (shuffle 10)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun.out deleted file mode 100644 index e561b4451dd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-bst-sorting.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( int , .Bottoms ) list diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun deleted file mode 100644 index 69fb3435b64..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype day = Monday | Tuesday | Wednesday - | Thursday | Friday | Saturday | Sunday - -let day_after = - fun Monday -> Tuesday - | Tuesday -> Wednesday - | Wednesday -> Thursday - | Thursday -> Friday - | Friday -> Saturday - | Saturday -> Sunday - | Sunday -> Monday -in letrec days_later = - fun 0 day -> day - | n day -> if n>0 - then days_later (n - 1) (day_after day) - else days_later (n + 7) day - in [days_later 2 Tuesday, days_later (-4) Wednesday, days_later 17 Monday] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun.out deleted file mode 100644 index 11dfb1112e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-days.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( ( .Bottoms ) day , .Bottoms ) list diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun deleted file mode 100644 index f08ad0eb61f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) - and distribute = - fun Times(e1, Plus(e2, e3)) -> Plus(Times(distribute e1, distribute e2), - Times(distribute e1, distribute e3)) - | Times(Plus(e1, e2), e3) -> Plus(Times(distribute e1, distribute e3), - Times(distribute e2, distribute e3)) - | Plus(l,r) -> Plus(distribute l, distribute r) - | Minus(l,r) -> Minus(distribute l, distribute r) - | Value(n) -> Value(n) -in toString (distribute Times(Value("n"), Plus(Value("x"), Value("y")))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun.out deleted file mode 100644 index 7188ae1a6fd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-distributivity.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K string diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun deleted file mode 100644 index d7840f6d0e3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun +++ /dev/null @@ -1,8 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) -in toString Times(Value("n"), Plus(Value("x"), Value("y"))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun.out deleted file mode 100644 index 7188ae1a6fd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-expr-toString.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K string diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun deleted file mode 100644 index d987c4302b5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun +++ /dev/null @@ -1,4 +0,0 @@ -datatype 'a mylist = Nil | Cons('a, 'a mylist) - -letrec length = fun Nil -> 0 | Cons(h,t) -> 1 + length t -in length Cons(3, Cons(5, Cons(8, Nil))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-list-length.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun deleted file mode 100644 index 90f75e4239c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun +++ /dev/null @@ -1,7 +0,0 @@ -datatype 'a tree = Leaf('a) | Tree('a tree, 'a tree) - -letrec mirror = - fun Leaf(n) -> Leaf(n) - | Tree(left, right) -> Tree(mirror(right), mirror(left)) -in mirror Tree(Tree(Leaf(1), Leaf(2)), - Tree(Leaf(3), Tree(Leaf(4), Leaf(5)))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun.out deleted file mode 100644 index b827be40dd2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/constructor-tree-mirror.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( int , .Bottoms ) tree diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun deleted file mode 100644 index 7b9bf028e86..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument -// we think of Nothing as () - -datatype nothing = Nothing - -let f Nothing = 7 -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun.out deleted file mode 100644 index 974b7f920e3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( .Bottoms ) nothing --> int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun deleted file mode 100644 index 7446ab927eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument - -datatype nothing = Nothing - -let x = 7 -in let f Nothing = x - in f Nothing - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/empty-argument-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun deleted file mode 100644 index 6979202588f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun +++ /dev/null @@ -1,11 +0,0 @@ -try ( - try ( - 3 + throw(10) * 2 - ) catch(x) ( - throw(2*x) + 7 - ) -) catch(x) ( - x + 1 -) - -// 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/exceptions.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun deleted file mode 100644 index 9e3c081d54e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun +++ /dev/null @@ -1,16 +0,0 @@ -// both maximum of a list and factorial: testing various things: -// a) multiple bindings in a letrec -// b) multiple arguments to functions (max) -// c) shadowing parameters (let x = ... x ... in ... x ...) - - -letrec max = fun [h] x y -> h - | [h|t] x y -> let x = max t x y - in if h > x then h else x - -and fact = fun 0 -> 1 - | x -> x * fact(x - 1) - -in fact (max [1, 3, fact 4, 2, 5, 0, -1, -5] true 5) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial-and-list-max.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun deleted file mode 100644 index 59b944b03fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun +++ /dev/null @@ -1,8 +0,0 @@ -// letrec f x = if x<=0 then 1 else x * f(x - 1) -// in f (f 4) - -letrec f = fun 0 -> 1 - | x -> x * f(x - 1) -in f (f 4) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/factorial.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun deleted file mode 100644 index d1c0bf6cea6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun +++ /dev/null @@ -1,45 +0,0 @@ -letrec h = f -and f = fun n -> if n>0 then g(n - 1) else (fun x -> x) -and g = fun n -> if n>0 then h(n - 1) else (fun x -> x) -in h - -/* - -Step 1: Adding fresh types for all variables - -h |-> Th -f |-> Tf -g |-> Tg - -Step 2: Ayping all the RHS expressions and generating constraints - -Tg = int -> Trg -Trg = T1 -> T1 -Th = int -> Trh -Trh = T2 -> T2 - -Step 3: Adding constraints for each binder - -Th = Tf -Tf = int -> Trg -Tg = int |-> Trh - -Current Mgu is - -Th = int -> T1 -> T1 -Tf = int -> T1 -> T1 -Tg = int -> T1 -> T1 -Trg = T1 -> T1 -Trh = T1 -> T1 -T2 = T1 - -Step 4: Generating each parametric type and writing it into the TEnv - -Th = (forall T1) int -> T1 -> T1 -Tf = (forall T1) int -> T1 -> T1 -Tg = (forall T1) int -> T1 -> T1 - -All types above are parametric, despite the T2 type variable appearing -in both Tf and Th. - -*/ diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun.out deleted file mode 100644 index 507ada06a3d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/letrec.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int --> V0 --> V0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun deleted file mode 100644 index 4f41a8312ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing let - -let second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun deleted file mode 100644 index 1a4a439b76f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec - -letrec second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun deleted file mode 100644 index 36eb3668f89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec and multiple arguments with currying - -letrec second l x = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] true - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun deleted file mode 100644 index efa13ef81fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun +++ /dev/null @@ -1,4 +0,0 @@ -let second = fun [x,y|t] -> y -in second [1, 3, 5, 0, -2] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun deleted file mode 100644 index ccaa3884b10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -in length [1, 3, 5, 2, 4, 0, -1, -5] - -// 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-length.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun deleted file mode 100644 index bbf62029179..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun +++ /dev/null @@ -1,6 +0,0 @@ -letrec max = fun [h] -> h - | [h|t] -> let x = max t - in if h > x then h else x -in max [1, 3, 5, 2, 4, 0, -1, -5] - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-max.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun deleted file mode 100644 index 5dba9b5be4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun +++ /dev/null @@ -1,4 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -in nth 4 [5,4,3,2,1] - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/list-nth.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun deleted file mode 100644 index 6637c9b2830..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun +++ /dev/null @@ -1,10 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -and nat n m = if n == m then [n] else (cons n (nat (n + 1) m)) -and length = fun [] -> 0 - | [h|t] -> 1 + length t -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -and app = fun [] x -> [] - | [h|t] x -> cons (h x) (app t x) -in (app (map nth (nat 1 5)) [10,11,12,13,14,15,16,17]) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun.out deleted file mode 100644 index e561b4451dd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/nth.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( int , .Bottoms ) list diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun deleted file mode 100644 index 938d7f94dd6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -and complex = fun Triple([Pair(h1,h2)|t], l, [Pair(a,2), Pair(3,b), c]) - -> Pair(h2 + length t + b, a) - | Triple([],[],[Pair(7,2),x,c]) - -> x - | default - -> Pair(0,0) -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -in map complex [Triple([Pair(8,7)], [], [Pair(9,2), Pair(3,3), Pair(2,2)]), - Triple([], [], [Pair(7,2), Pair(0,1), Pair(-1,-1)]), - Triple([],[],[])] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun.out deleted file mode 100644 index b0662278623..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/pattern.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( ( int , int , .Bottoms ) pair , .Bottoms ) list diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun deleted file mode 100644 index 0f4bb9199fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f x = x -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun.out deleted file mode 100644 index 3970552eedc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K V0 --> V0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun deleted file mode 100644 index 45a181d3889..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing (instantiated) polymorphism - -let f x = x -in f 3 - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun deleted file mode 100644 index 2accdf00223..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> x -in if f true then f 2 else f 3 - -// 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun deleted file mode 100644 index eebc34fa131..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> let y = x in y -in (fun x -> f) 7 - -// identity diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun.out deleted file mode 100644 index 3970552eedc..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K V0 --> V0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun deleted file mode 100644 index 74a65556f9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// the program below justifies the restriction that reference -// types should not be polymorphic - -// the following runs in our semantics, but it should not type -// (elements of different types are added in *r)! - -let f = let r = ref [] - in (fun x -> r := cons x @r; x) -in if f true then f 3 else f 4 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun deleted file mode 100644 index 32ccb7db7e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun +++ /dev/null @@ -1,8 +0,0 @@ -// testing polymorphism and also the efficiency of the type inferencer - -let f00 = fun x -> fun y -> x in - let f01 = fun x -> f00 (f00 x) in - let f02 = fun x -> f01 (f01 x) in - let f03 = fun x -> f02 (f02 x) in - let f04 = fun x -> f03 (f03 x) in - f04 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun.out deleted file mode 100644 index 5d15e801a95..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/polymorphism-6.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K V0 --> V1 --> V2 --> V3 --> V4 --> V5 --> V6 --> V7 --> V8 --> V9 --> V10 --> V11 --> V12 --> V13 --> V14 --> V15 --> V16 --> V0 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun deleted file mode 100644 index fdb6d5216c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun +++ /dev/null @@ -1,29 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec - -max l Pair(x,y) = - if @x != y - then -1 - else if null?(tail l) - then head l - else let x = max (tail l) Pair(x := @x + 1; x, y + 1) - in if x <= head l - then head l - else x - -and - -map f l = - if null? l - then [] - else cons (f (head l)) (map f (tail l)) - -and - -factorial x = - if x <= 0 - then 1 - else x * factorial(x - 1) - -in max (map factorial [1, 2, 3, factorial 4]) Pair(ref 1, 1) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun deleted file mode 100644 index 5c3577449d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -let f x y = x := @x + 2; y := @y + 3 -and x = ref 0 -in (f x x; @x) - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun deleted file mode 100644 index a36cb44cb5c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing ref, * and ; - -let f x = x + x -in let y = ref 5 - in f (y := @y + 3; @y) - -// 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun deleted file mode 100644 index a11a9c72ff9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun +++ /dev/null @@ -1,10 +0,0 @@ -// can be used for testing parameter passing styles -// replace parameter passing style of f - -let f = let c = ref 0 - in ( - c := @c + 100 ; - (fun x -> c := @c + 1000; x + x + @c) - ) -in let y = ref 0 - in f(y := @y + 1 ; @y) + f(0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun deleted file mode 100644 index c7ba51ec833..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing &, *, := and lists - -let f x = x := @x + 1 -and x = 7 -in [x, f &x; x, f &x; x] - -// [7,8,9], or [7,9,8], or [9,8,9], or [9,9,8] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun.out deleted file mode 100644 index e561b4451dd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/references-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( int , .Bottoms ) list diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun deleted file mode 100644 index d608fc95dc4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec: next should get stuck - -let x = 1 -in letrec x = 2 - and y = x - in y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/stuck-letrec.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun deleted file mode 100644 index 8adeeab395e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun +++ /dev/null @@ -1,12 +0,0 @@ -// This tail recursive program uses fixed memory, but can take a lot of -// computation/stack space if the semantics is not tail-recursive. -// Curiously, the tail recursion rule does not seem to be favoured by -// maude: (1) it is not applied, preferring to apply the normal -// environment-recovery rule; and (2) it slows down significantly -// this program (4-5 times!), because it makes maude's matcher slower. - -datatype nothing = Nothing - -let n = ref 1000 -in letrec f Nothing = if @n>0 then n := @n - 1; f Nothing else 0 - in f Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tail-recursion.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun deleted file mode 100644 index cd48ddd354b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing functions tuple arguments and polymorphism - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -fun Triple(x,y,z) -> y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun.out deleted file mode 100644 index 0a7c2bb22de..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-1.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( V0 , V1 , V2 , .Bottoms ) triple --> V1 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun deleted file mode 100644 index fb1d28fb917..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing nested tuples - -datatype 'a wrapper = Wrapper('a) -datatype ('a,'b) pair = Pair('a,'b) - -let x = 1 -and y = Wrapper(2) -and z = Pair(3,4) -in Pair(Pair(x,y),z) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun.out deleted file mode 100644 index f6d11fc1a83..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-2.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K ( ( int , ( int , .Bottoms ) wrapper , .Bottoms ) pair , ( int , int , .Bottoms ) pair , .Bottoms ) pair diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun deleted file mode 100644 index 8f2ec9bf6c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing functions taking tuple arguments - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -let f Triple(x,y,z) = x + y + z -in f Triple(1,2,3) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-3.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun deleted file mode 100644 index 2d70c169499..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing two tuple arguments to a function - -datatype ('a,'b) pair = Pair('a,'b) - -let f Pair(a,b) Pair(x,y) = a Pair(x,y) + b Pair(x,y) -in f Pair(fun Pair(x,y) -> x * y, fun Pair(x,y) -> x + y) Pair(10,20) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-4.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun deleted file mode 100644 index 70bea02b8e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing tuple arguments to a function - -datatype nothing = Nothing -datatype ('a,'b) pair = Pair('a,'b) - -let f = fun Nothing Pair(a,b) q Nothing Pair(x,y) Nothing - -> a Pair(x,y) + b Pair(x,y) -in f Nothing Pair(fun Pair (x,y) -> x * y, fun Pair(x,y) -> x + y) - 3 Nothing Pair(10,20) Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun.out b/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun.out deleted file mode 100644 index 6665a0422f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/2_type-inference/exercises/fun-type-inferencer/tests/tuple-5.fun.out +++ /dev/null @@ -1 +0,0 @@ -V ==K int diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/Makefile b/k-distribution/pl-tutorial/2_languages/3_fun/Makefile deleted file mode 100644 index c16496a8b1b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=1_untyped/1_environment - -include ../../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/NOTES b/k-distribution/pl-tutorial/2_languages/3_fun/NOTES deleted file mode 100644 index ff915419dbd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/NOTES +++ /dev/null @@ -1,5 +0,0 @@ -Eventually, when parsing problems are fixed, we should allow tuples as -builtin and as extending normal expressions. We want to write f(1,2,3) -meaning that the tuple (1,2,3) is passed to f, while we can write -either f 1 or f(1) for one argument invocations. For now, use -constructors for tuples, for example f Triple(1,2,3), etc. diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/README b/k-distribution/pl-tutorial/2_languages/3_fun/programs/README deleted file mode 100644 index 61a38675b4f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/README +++ /dev/null @@ -1,60 +0,0 @@ -The programs in this folder should give an idea of what features FUN -has and how it is meant to work. We recommend consulting the programs -in the following order: - -factorial.fun -ackermann.fun -stuck-letrec.fun - -empty-argument-1.fun -empty-argument-2.fun -tuple-1.fun -tuple-2.fun -tuple-3.fun -tuple-4.fun -tuple-5.fun - -list-1.fun -list-2.fun -list-3.fun -list-4.fun -list-length.fun -list-max.fun -factorial-and-list-max.fun - -pattern.fun - -references-1.fun -references-2.fun -references-3.fun -references-4.fun -references-5.fun -tail-recursion.fun - -constructor-days.fun -constructor-list-length.fun -constructor-tree-mirror.fun -constructor-expr-toString.fun -constructor-expr-distributivity.fun -constructor-bst-sorting.fun - -callcc-1.fun -callcc-2.fun -callcc-3.fun -callcc-4.fun -callcc-5.fun -callcc-return-1.fun -callcc-return-2.fun -callcc-inefficient-without.fun -callcc-efficient-with-1.fun -callcc-efficient-with-2.fun -exceptions.fun -callcc-looping.fun - -polymorphism-1.fun -polymorphism-2.fun -polymorphism-3.fun -polymorphism-4.fun -polymorphism-5.fun -polymorphism-6.fun - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/ackermann.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/ackermann.fun deleted file mode 100644 index f7a16271c4e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/ackermann.fun +++ /dev/null @@ -1,6 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec ack = fun Pair(0,n) -> n + 1 - | Pair(m,0) -> ack Pair(m - 1, 1) - | Pair(m,n) -> ack Pair(m - 1, ack Pair(m, n - 1)) -in (ack Pair(2,3)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-1.fun deleted file mode 100644 index a34ee3af2be..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-2.fun deleted file mode 100644 index 11288aa6e16..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-3.fun deleted file mode 100644 index 94360bf2560..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-3.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 3) - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-4.fun deleted file mode 100644 index ede962fa0d1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-4.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> 7) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-5.fun deleted file mode 100644 index f82d6a0a9d2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-5.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing callcc - -callcc (fun k -> k 7 + 5) + 3 - -// 10 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-1.fun deleted file mode 100644 index 712c043113c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-1.fun +++ /dev/null @@ -1,13 +0,0 @@ -// using callcc for exceptions -// the following is efficient - -let f l = - callcc (fun throw -> - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux (tail l) - in aux l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-2.fun deleted file mode 100644 index 98f930b2277..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-2.fun +++ /dev/null @@ -1,13 +0,0 @@ -// the following is also efficient and uses try/catch - -let f l = try - letrec aux l = - if null? l - then 1 - else if head l == 0 - then throw 0 - else head l * aux(tail l) - in aux l - catch(x) - x -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-inefficient-without.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-inefficient-without.fun deleted file mode 100644 index 1dacf714cf1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-inefficient-without.fun +++ /dev/null @@ -1,11 +0,0 @@ -// calculating the product of elements in a list -// this is inefficient; one would like to throw an exception -// see callcc-efficient-with.fun for an efficient variant - -letrec f l = - if null? l - then 1 - else if head l == 0 - then 0 - else head l * f(tail l) -in f [1,2,3,4,5,0,6,7,8,9] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-looping.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-looping.fun deleted file mode 100644 index c5d5074ef6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-looping.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for looping - - -let goto = ref (fun x -> x) and n = ref 0 -in callcc (fun exit -> - callcc (fun k -> goto := k; 0); // "goto _" will jump here - if @n < 100 then n := @n + 1 else exit @n; - @goto 0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-1.fun deleted file mode 100644 index cc103e32988..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-1.fun +++ /dev/null @@ -1,8 +0,0 @@ -// using callcc for returning: grab caller's continuation - -let f l return = - if null? l - then return 0 - else return 1; - 0 / 0 -in callcc (f []) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-2.fun deleted file mode 100644 index eab8034115d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/callcc-return-2.fun +++ /dev/null @@ -1,10 +0,0 @@ -// using callcc for returning: grab callee's continuation - -let f l = - callcc (fun return -> - if null?(l) - then return 0 - else return 1; - 0 / 0 - ) -in f [1,2] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-bst-sorting.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-bst-sorting.fun deleted file mode 100644 index a34eab7ce6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-bst-sorting.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype 'a bst = Empty | Node('a bst, 'a, 'a bst) - -letrec bst_sort l = flatten (mk_bst l) - and flatten = fun Empty -> [] - | Node(l,n,r) -> append (flatten l) (cons n (flatten r)) - and append = fun [] r -> r | [h|t] r -> cons h (append t r) - and mk_bst = fun [] -> Empty | [h|t] -> insert (mk_bst t) h - and insert = fun Empty n -> Node(Empty,n,Empty) - | Node(l, m, r) n -> if n < m - then Node(insert l n, m, r) - else Node(l, m, insert r n) - and downto = fun 0 -> [0] | n -> cons n (downto (n - 1)) - and upto = fun 0 -> [0] | n -> append (upto (n - 1)) [n] - and merge = fun [] [] -> [] - | [h1|t1] [h2|t2] -> cons h1 (cons h2 (merge t1 t2)) - and shuffle n = merge (downto n) (upto n) -in (bst_sort (shuffle 10)) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-days.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-days.fun deleted file mode 100644 index 69fb3435b64..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-days.fun +++ /dev/null @@ -1,17 +0,0 @@ -datatype day = Monday | Tuesday | Wednesday - | Thursday | Friday | Saturday | Sunday - -let day_after = - fun Monday -> Tuesday - | Tuesday -> Wednesday - | Wednesday -> Thursday - | Thursday -> Friday - | Friday -> Saturday - | Saturday -> Sunday - | Sunday -> Monday -in letrec days_later = - fun 0 day -> day - | n day -> if n>0 - then days_later (n - 1) (day_after day) - else days_later (n + 7) day - in [days_later 2 Tuesday, days_later (-4) Wednesday, days_later 17 Monday] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-distributivity.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-distributivity.fun deleted file mode 100644 index f08ad0eb61f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-distributivity.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) - and distribute = - fun Times(e1, Plus(e2, e3)) -> Plus(Times(distribute e1, distribute e2), - Times(distribute e1, distribute e3)) - | Times(Plus(e1, e2), e3) -> Plus(Times(distribute e1, distribute e3), - Times(distribute e2, distribute e3)) - | Plus(l,r) -> Plus(distribute l, distribute r) - | Minus(l,r) -> Minus(distribute l, distribute r) - | Value(n) -> Value(n) -in toString (distribute Times(Value("n"), Plus(Value("x"), Value("y")))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-toString.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-toString.fun deleted file mode 100644 index d7840f6d0e3..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-expr-toString.fun +++ /dev/null @@ -1,8 +0,0 @@ -datatype exp = Value(string) | Plus(exp,exp) | Minus(exp,exp) | Times(exp,exp) - -letrec toString = - fun Value(n) -> n - | Plus(l,r) -> "(" ^ toString(l) ^ " + " ^ toString(r) ^ ")" - | Minus(l,r) -> "(" ^ toString(l) ^ " - " ^ toString(r) ^ ")" - | Times(l,r) -> toString(l) ^ " * " ^ toString(r) -in toString Times(Value("n"), Plus(Value("x"), Value("y"))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-list-length.fun deleted file mode 100644 index d987c4302b5..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-list-length.fun +++ /dev/null @@ -1,4 +0,0 @@ -datatype 'a mylist = Nil | Cons('a, 'a mylist) - -letrec length = fun Nil -> 0 | Cons(h,t) -> 1 + length t -in length Cons(3, Cons(5, Cons(8, Nil))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-tree-mirror.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-tree-mirror.fun deleted file mode 100644 index 90f75e4239c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/constructor-tree-mirror.fun +++ /dev/null @@ -1,7 +0,0 @@ -datatype 'a tree = Leaf('a) | Tree('a tree, 'a tree) - -letrec mirror = - fun Leaf(n) -> Leaf(n) - | Tree(left, right) -> Tree(mirror(right), mirror(left)) -in mirror Tree(Tree(Leaf(1), Leaf(2)), - Tree(Leaf(3), Tree(Leaf(4), Leaf(5)))) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-1.fun deleted file mode 100644 index 7b9bf028e86..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-1.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument -// we think of Nothing as () - -datatype nothing = Nothing - -let f Nothing = 7 -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-2.fun deleted file mode 100644 index 7446ab927eb..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/empty-argument-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing empty argument - -datatype nothing = Nothing - -let x = 7 -in let f Nothing = x - in f Nothing - -// 7 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/exceptions.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/exceptions.fun deleted file mode 100644 index 6979202588f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/exceptions.fun +++ /dev/null @@ -1,11 +0,0 @@ -try ( - try ( - 3 + throw(10) * 2 - ) catch(x) ( - throw(2*x) + 7 - ) -) catch(x) ( - x + 1 -) - -// 21 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial-and-list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial-and-list-max.fun deleted file mode 100644 index 9e3c081d54e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial-and-list-max.fun +++ /dev/null @@ -1,16 +0,0 @@ -// both maximum of a list and factorial: testing various things: -// a) multiple bindings in a letrec -// b) multiple arguments to functions (max) -// c) shadowing parameters (let x = ... x ... in ... x ...) - - -letrec max = fun [h] x y -> h - | [h|t] x y -> let x = max t x y - in if h > x then h else x - -and fact = fun 0 -> 1 - | x -> x * fact(x - 1) - -in fact (max [1, 3, fact 4, 2, 5, 0, -1, -5] true 5) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial.fun deleted file mode 100644 index 59b944b03fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/factorial.fun +++ /dev/null @@ -1,8 +0,0 @@ -// letrec f x = if x<=0 then 1 else x * f(x - 1) -// in f (f 4) - -letrec f = fun 0 -> 1 - | x -> x * f(x - 1) -in f (f 4) - -// 620448401733239439360000 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-1.fun deleted file mode 100644 index 4f41a8312ea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing let - -let second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-2.fun deleted file mode 100644 index 1a4a439b76f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec - -letrec second l = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-3.fun deleted file mode 100644 index 36eb3668f89..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec and multiple arguments with currying - -letrec second l x = head (tail l) -in second [1, 3, 5, 2, 4, 0, -1, -5] true - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-4.fun deleted file mode 100644 index efa13ef81fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-4.fun +++ /dev/null @@ -1,4 +0,0 @@ -let second = fun [x,y|t] -> y -in second [1, 3, 5, 0, -2] - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-length.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-length.fun deleted file mode 100644 index ccaa3884b10..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-length.fun +++ /dev/null @@ -1,5 +0,0 @@ -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -in length [1, 3, 5, 2, 4, 0, -1, -5] - -// 8 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-max.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-max.fun deleted file mode 100644 index bbf62029179..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-max.fun +++ /dev/null @@ -1,6 +0,0 @@ -letrec max = fun [h] -> h - | [h|t] -> let x = max t - in if h > x then h else x -in max [1, 3, 5, 2, 4, 0, -1, -5] - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-nth.fun deleted file mode 100644 index 5dba9b5be4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/list-nth.fun +++ /dev/null @@ -1,4 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -in nth 4 [5,4,3,2,1] - diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/nth.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/nth.fun deleted file mode 100644 index 6637c9b2830..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/nth.fun +++ /dev/null @@ -1,10 +0,0 @@ -letrec nth = fun 1 [h|t] -> h - | n [h|t] -> nth (n - 1) t -and nat n m = if n == m then [n] else (cons n (nat (n + 1) m)) -and length = fun [] -> 0 - | [h|t] -> 1 + length t -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -and app = fun [] x -> [] - | [h|t] x -> cons (h x) (app t x) -in (app (map nth (nat 1 5)) [10,11,12,13,14,15,16,17]) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/pattern.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/pattern.fun deleted file mode 100644 index 938d7f94dd6..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/pattern.fun +++ /dev/null @@ -1,16 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -letrec length = fun [] -> 0 - | [h|t] -> 1 + length t -and complex = fun Triple([Pair(h1,h2)|t], l, [Pair(a,2), Pair(3,b), c]) - -> Pair(h2 + length t + b, a) - | Triple([],[],[Pair(7,2),x,c]) - -> x - | default - -> Pair(0,0) -and map f = fun [] -> [] - | [h|t] -> cons (f h) (map f t) -in map complex [Triple([Pair(8,7)], [], [Pair(9,2), Pair(3,3), Pair(2,2)]), - Triple([], [], [Pair(7,2), Pair(0,1), Pair(-1,-1)]), - Triple([],[],[])] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-1.fun deleted file mode 100644 index 0f4bb9199fe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-1.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f x = x -in f - -// some closure diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-2.fun deleted file mode 100644 index 45a181d3889..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-2.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing (instantiated) polymorphism - -let f x = x -in f 3 - -// 3 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-3.fun deleted file mode 100644 index 2accdf00223..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> x -in if f true then f 2 else f 3 - -// 2 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-4.fun deleted file mode 100644 index eebc34fa131..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing polymorphism - -let f = fun x -> let y = x in y -in (fun x -> f) 7 - -// identity diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-5.fun deleted file mode 100644 index 74a65556f9f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// the program below justifies the restriction that reference -// types should not be polymorphic - -// the following runs in our semantics, but it should not type -// (elements of different types are added in *r)! - -let f = let r = ref [] - in (fun x -> r := cons x @r; x) -in if f true then f 3 else f 4 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-6.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-6.fun deleted file mode 100644 index 32ccb7db7e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/polymorphism-6.fun +++ /dev/null @@ -1,8 +0,0 @@ -// testing polymorphism and also the efficiency of the type inferencer - -let f00 = fun x -> fun y -> x in - let f01 = fun x -> f00 (f00 x) in - let f02 = fun x -> f01 (f01 x) in - let f03 = fun x -> f02 (f02 x) in - let f04 = fun x -> f03 (f03 x) in - f04 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-1.fun deleted file mode 100644 index fdb6d5216c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-1.fun +++ /dev/null @@ -1,29 +0,0 @@ -datatype ('a,'b) pair = Pair('a,'b) - -letrec - -max l Pair(x,y) = - if @x != y - then -1 - else if null?(tail l) - then head l - else let x = max (tail l) Pair(x := @x + 1; x, y + 1) - in if x <= head l - then head l - else x - -and - -map f l = - if null? l - then [] - else cons (f (head l)) (map f (tail l)) - -and - -factorial x = - if x <= 0 - then 1 - else x * factorial(x - 1) - -in max (map factorial [1, 2, 3, factorial 4]) Pair(ref 1, 1) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-2.fun deleted file mode 100644 index 5c3577449d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-2.fun +++ /dev/null @@ -1,5 +0,0 @@ -let f x y = x := @x + 2; y := @y + 3 -and x = ref 0 -in (f x x; @x) - -// 5 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-3.fun deleted file mode 100644 index a36cb44cb5c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-3.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing ref, * and ; - -let f x = x + x -in let y = ref 5 - in f (y := @y + 3; @y) - -// 16 diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-4.fun deleted file mode 100644 index a11a9c72ff9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-4.fun +++ /dev/null @@ -1,10 +0,0 @@ -// can be used for testing parameter passing styles -// replace parameter passing style of f - -let f = let c = ref 0 - in ( - c := @c + 100 ; - (fun x -> c := @c + 1000; x + x + @c) - ) -in let y = ref 0 - in f(y := @y + 1 ; @y) + f(0) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-5.fun deleted file mode 100644 index c7ba51ec833..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/references-5.fun +++ /dev/null @@ -1,7 +0,0 @@ -// testing &, *, := and lists - -let f x = x := @x + 1 -and x = 7 -in [x, f &x; x, f &x; x] - -// [7,8,9], or [7,9,8], or [9,8,9], or [9,9,8] diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/stuck-letrec.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/stuck-letrec.fun deleted file mode 100644 index d608fc95dc4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/stuck-letrec.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing letrec: next should get stuck - -let x = 1 -in letrec x = 2 - and y = x - in y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tail-recursion.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/tail-recursion.fun deleted file mode 100644 index 8adeeab395e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tail-recursion.fun +++ /dev/null @@ -1,12 +0,0 @@ -// This tail recursive program uses fixed memory, but can take a lot of -// computation/stack space if the semantics is not tail-recursive. -// Curiously, the tail recursion rule does not seem to be favoured by -// maude: (1) it is not applied, preferring to apply the normal -// environment-recovery rule; and (2) it slows down significantly -// this program (4-5 times!), because it makes maude's matcher slower. - -datatype nothing = Nothing - -let n = ref 1000 -in letrec f Nothing = if @n>0 then n := @n - 1; f Nothing else 0 - in f Nothing diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-1.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-1.fun deleted file mode 100644 index cd48ddd354b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-1.fun +++ /dev/null @@ -1,5 +0,0 @@ -// testing functions tuple arguments and polymorphism - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -fun Triple(x,y,z) -> y diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-2.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-2.fun deleted file mode 100644 index fb1d28fb917..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-2.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing nested tuples - -datatype 'a wrapper = Wrapper('a) -datatype ('a,'b) pair = Pair('a,'b) - -let x = 1 -and y = Wrapper(2) -and z = Pair(3,4) -in Pair(Pair(x,y),z) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-3.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-3.fun deleted file mode 100644 index 8f2ec9bf6c7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-3.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing functions taking tuple arguments - -datatype ('a,'b,'c) triple = Triple('a,'b,'c) - -let f Triple(x,y,z) = x + y + z -in f Triple(1,2,3) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-4.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-4.fun deleted file mode 100644 index 2d70c169499..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-4.fun +++ /dev/null @@ -1,6 +0,0 @@ -// testing two tuple arguments to a function - -datatype ('a,'b) pair = Pair('a,'b) - -let f Pair(a,b) Pair(x,y) = a Pair(x,y) + b Pair(x,y) -in f Pair(fun Pair(x,y) -> x * y, fun Pair(x,y) -> x + y) Pair(10,20) diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-5.fun b/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-5.fun deleted file mode 100644 index 70bea02b8e2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/3_fun/programs/tuple-5.fun +++ /dev/null @@ -1,9 +0,0 @@ -// testing tuple arguments to a function - -datatype nothing = Nothing -datatype ('a,'b) pair = Pair('a,'b) - -let f = fun Nothing Pair(a,b) q Nothing Pair(x,y) Nothing - -> a Pair(x,y) + b Pair(x,y) -in f Nothing Pair(fun Pair (x,y) -> x * y, fun Pair(x,y) -> x + y) - 3 Nothing Pair(10,20) Nothing diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/Makefile b/k-distribution/pl-tutorial/2_languages/4_logik/basic/Makefile deleted file mode 100644 index 69c2fed5d83..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -DEF=logik -EXT=logik -KOMPILE_BACKEND?=java -KRUN_FLAGS=--search --pattern " Solution:Map " - -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak - -tests/reverse-slow-2.logik: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled $(KRUN_FLAGS) --bound 1 $(CHECK) $@.out -tests/reverse-slow-palindromes-1.logik: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled $(KRUN_FLAGS) --bound 5 $(CHECK) $@.out -tests/append-4.logik: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled $(KRUN_FLAGS) --bound 5 $(CHECK) $@.out -tests/reverse-fast-2.logik: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled $(KRUN_FLAGS) --bound 1 $(CHECK) $@.out -tests/reverse-fast-palindromes-1.logik: kompile - cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled $(KRUN_FLAGS) --bound 5 $(CHECK) $@.out - diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/logik.md b/k-distribution/pl-tutorial/2_languages/4_logik/basic/logik.md deleted file mode 100644 index 7323be1a144..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/logik.md +++ /dev/null @@ -1,352 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -// NOTE: this definition is not runnable as is. -// It is intended for documentation and academic purposes only. - -# LOGIK - -Author: Grigore Roșu (grosu@illinois.edu) -Organization: University of Illinois at Urbana-Champaign - -Author: Traian Florin Șerbănuță (traian.serbanuta@unibuc.ro) -Organization: University of Bucharest - -## Abstract - -This is the **K** semantic definition of LOGIK, a trivial language -capturing the essence of the logic programming paradigm. In this -definition, we explicitly focus on simplicity and mathematical -clarity, not on advanced logic programming features or performance. -Those are covered in the LOGIK++ extension under `examples/logik++`. - -Specifically, a LOGIK program consists of a sequence of **Horn clauses** -of the form -``` -P :- P1, P2, ..., Pn . -``` -followed by a **query** of the form -``` -?- Q1, Q2, ..., Qm . -``` -where `P`, `P1`, `P2`, ..., `Pn`, `Q1`, `Q2`, -..., `Qm` are **literals**. The -symbol `:-` is read "if". A literal has the form -`p(T1,T2,...,Tk)`, where `p` is a **predicate symbol** -and where `T1,T2,...,Tk` are **terms**. Terms are built as -usual, with **operation symbols** and **variables**. A common -convention in logic programming languages, also adopted here, is that -variables are capitalized and operation symbols are not. Operations -with zero arguments are called **constants** and are written without -parentheses, that is, `c` instead of `c()`. Horn -clauses without conditions, called **facts**, are written -without `:-`, that is, `P.` instead of `P :- .`. - -For example, the LOGIK program below gives a few facts about a -`parent` predicate, then several clauses defining some useful -predicates including an `ancestor` predicate, and finally a -query asking for those who both have ancestors and are ancestors -themselves in the `parent` relation: - -``` -parent(david,john). -parent(jim,david). -parent(steve,jim). -parent(nathan,steve). - -grandparent(A,B):- - parent(A,X), - parent(X,B). - -ancestor(A,B):- - parent(A,X), - parents(X,B). - -parents(X,X). -parents(A,B):- - ancestor(A,B). - -both(X) :- ancestor(A,X), ancestor(X,B). - -?- both(X). -``` - -Above, we only have constant operation symbols, so these and variables -are the only terms that can be used in predicates. As expected, the -LOGIK program above will give us three solutions for `X`: -`david`, `steve`, and `jim`. If we inline the -`both(X)` predicate in the query, that is, if we replace the -query with `?- ancestor(A,X), ancestor(X,B).` then we get -10 solutions, one for for each triple `A`, `X`, and -`B` satisfying both predicates `ancestor(A,X)` and -`ancestor(X,B)`. - -As another example, the program below defines an `append` -predicate followed by a simple goal: - -``` -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -?- append(cons(a,nil), cons(b,nil), V). -``` - -Besides the predicate symbol `append`, the program above also -includes a constant symbol `nil` and a binary operation symbol -`cons`. Additionally, the query also includes two more -constants, `a` and `b`. The capitalized identifiers are -all variables. As expected, the LOGIK program above yields only one -solution, namely `V = cons(a,cons(b,nil))`. On the other hand, -if we change the query to: - -``` -?- append(L1, cons(a,L2), cons(a,cons(b,cons(a,nil)))). -``` - -then LOGIK yields two solutions: one where `L1` is -`cons(a,cons(b,nil))` and `L2` is `nil`, -and another where `L1` is `nil` and `L2` is -`cons(a,cons(b,nil))`. - -The programs above all generated **ground solutions**, that is, -solutions where the query variables are mapped to ground terms (i.e., -terms without variables). Let us now consider the following query: - -``` -?- append(cons(a,nil), Y, Z). -``` - - -There are obviously infinitely many ground solutions for the query -above, e.g., -`Y = nil` and `Z = cons(a,nil)`, -`Y = cons(a,nil)` and `Z = cons(a,cons(a,nil))`, -`Y = cons(b,nil)` and `Z = cons(a,cons(b,nil))`, -`Y = cons(c,cons(b,nil))` and `Z = cons(a,cons(c,cons(b,nil)))`, -etc. However, all the ground solutions for the query above can be -elegantly characterized by the property that `Z` is bound to a list -starting with `a` and followed by the list that `Y` is -bound to. This property can in fact be described as a **symbolic solution** -to the query: `Z = cons(a,Y)` or, equivalently, -`Y = Symb` and `Z = cons(a,Symb)`. It is possible to -define a ``more general than'' relation on such symbolic solutions, -in the sense that the more particular solution can be obtained as a -specialization/substitution of the more general one, and then it can -be shown that the above is the **most general solution** to the -stated query. Logic programming languages, including our LOGIK, -attempt to always compute such most general solutions. - -Logic programming languages are highly non-deterministic, in that -several Horn clauses may be used at the same time, each possibly -resulting in a different solution. Implementations of logic -programming languages consist of complex, optimized search and -indexing algorithms, which we are not concerned with here. Instead, -we here take advantage of **K**'s builtin support for search. -Specifically, to find all the solutions of a LOGIK program, we have to -use `krun` with the option `--search`. However, note -that some programs have infinitely many solutions which cannot relate -to each other by the "more general" relation. For example, the query - -``` -?- append(L1, cons(a,L2), L3) . -``` - -To address such cases and terminate, logic programming languages allow -the user to choose how many solutions to be computed and displayed. -In LOGIK, we can use the `--bound` option of `krun` for -this purpose. - -Finally, note that some queries have no solution. In some cases that -is easy to detect by exhaustive analysis, such as for the following -query: - -``` -?- append(cons(a,L1), L2, cons(b,L3)). -``` - -Logic programming languages, including LOGIK, terminate in such cases -and report a no solution answer. However, there are cases where -exhaustive analysis is not sufficient, such as for the query: - -``` -?- append(cons(a,L), nil, L). -``` - -In such cases, logic programming languages do not terminate. While -one may devise techniques to detect non-termination in some cases, -one cannot do it in general (same like for all Turing-complete -languages). -```k -require "unification.k" - -module LOGIK-COMMON - imports DOMAINS-SYNTAX -``` - -## Syntax - -The syntax of LOGIK is straightforward: a program is a sequence of -Horn clauses followed by a query: -```k - syntax Literal - syntax Term ::= Literal | Literal "(" Terms ")" - syntax Terms ::= List{Term,","} - syntax Clause ::= Term ":-" Terms "." | Term "." - syntax Query ::= "?-" Terms "." - syntax Pgm ::= Query | Clause Pgm -endmodule - -module LOGIK-SYNTAX - imports LOGIK-COMMON - imports BUILTIN-ID-TOKENS -``` -Variables and literals are defined as tokens following the conventions -used in Prolog (variables start with _ or capital letter, while literals -start with lower case letters): -```k - syntax #KVariable ::= r"[A-Z_][A-Za-z0-9_]*" [token, prec(2)] - | #UpperId [token] - syntax Term ::= #KVariable [klabel(#SemanticCastToTerm)] - syntax Literal ::= r"[a-z][a-zA-Z0-9_]*" [token] - | #LowerId [token] -endmodule - -module LOGIK - imports LOGIK-COMMON - imports DOMAINS - imports UNIFICATION -``` - -Unification is at the core of logic programming. Here we are -going to use the predefined unification procedure (the same one we -used in the type inferencers in Tutorial 5). - -## Configuration - -The configuration stores each clause in its own cell for easy access, -and the most general unifier in a cell named `mgu`, same like -the type inferencers. The `k` cell holds the query and the -`fresh` cell holds a fresh clause instance to be attempted on -the next query item. To more easily read the solutions, we add a -second top-level cell, `solution`. Both top cells are -optional. Indeed, we start with the main top cell and, when a -solution is found, we move it into the `solution` cell and -discard the main cell. -```k - configuration - $PGM:Pgm - .K - - .K - - .K - - .K -``` -## Pre- and post-processing - -Before we launch the semantics, we first scan the given program and -place each clause in its own cell, and then place the query in the -`k` cell and initialize the mgu with the variables from the query. - -Note that we put a fresh instance of the clause to avoid interference with -the query variables. By a "fresh instance" of a clause we mean one whose -variables are renamed with fresh names; we need that in order to avoid -undesired unification conflicts due to particular names chosen for -variables in the original program, as well as conflicts due to -subsequent uses of the same clause. It is safe to rename the -variables in a clause, because clauses are universally quantified in -their variables. This process of creating a fresh instance of a -clause is similar to how we created fresh instances of type schemas in -the higher-order type inferencer discussed in Tutorial 5. Indeed, we -can safely regard clauses as "clause schemas" comprising infinitely -many instances, one for each context. -```k - rule C:Clause Pgm => Pgm - (.Bag => #renameVariables(C) ) - - rule ?- Ls:Terms. => Ls ... - _ => #variablesMap(#variables(Ls)) -``` -We also sequentialize the goals for easier processing: -```k - rule L:Term, Ls:Terms => L ~> Ls - rule .Terms => . -``` -When all the goals are solved, indicated by the empty `k` -cell, the calculated most general unifier (mgu) is in the `mgu` -cell. In that case, to ease reading of the final solution we move the -mgu in the `solution` cell and delete the rest of the -configuration: -```k -rule ... . Theta ... - => Theta -``` -Since we are not interested in seeing the failed attempts to solve -the query, we collapse all the error configurations into an empty -configuration (recall that both top-level cells in the configuration -were declared optional). This way, if we see an empty configuration -when we search for all solutions, we know that some attempts failed -(but we do not know which ones). -```k -// this would be nice, but we need feedback from the external unifier -// for this. -// rule ... _:MguError ... => . -``` - -## Semantics - -Once all the infrastructure is in place, the actual semantics of LOGIK -is quite simple. All we have to do is to pick some (fresh instance of -a) clause, then unify its conclusion with the first query literal, and -then replace that literal with condition of the clause. The intuition -here is the following: to satisfy the first literal in the query, we -need to find some instance of some clause that matches it, and then to -similarly show that we can satisfy the conditions of that clause. -Mathematically, this is an instance of the proof principle called -**resolution**: if `p ∨ q` and `¬ p ∨ r` hold, then so does -`q ∨ r`. We let it as an exercise to the reader to see how the two -relate (hint: assume the negation of the goal together with all the -clauses, and then derive **false**). - - -The following two rules are tightly connected and they together -perform the following core task: pick a fresh instance of a clause -which unifies with the first goal item, then add its conditions as new -goals. - -Pick a clause and generate a fresh instance of it when the -`fresh` cell is empty: -```k - rule . => #renameVariables(C) C - T:Term ... - requires #unifiable(T,head(C)) - - syntax Term ::= head(Clause) [function] - rule head(L.) => L - rule head(L:-_.) => L -``` -If the goal is unifiable with the fresh clause's head, replace the goal -with the clause body, and empty the `fresh` cell (so that -another clause can be chosen using the rule above): -```k - rule L:Term => . ... - L:Term . => . - - rule L:Term :KItem => Ls ... - L:Term :- Ls:Terms. => . -``` -Note that there is no problem if a clause is chosen whose -conclusion literal does not unify with the first goal literal. -The search -option of `krun` will systematically try all clauses, so no -solution is missed. Of course, the above is not the most efficient -way to implement a logic programming language, but recall that our -objective here was to present a simple and mathematically clean -solution. We encourage the interested reader to consult the LOGIK++ -language definition for a more efficient definition of a richer logic -programming language. -```k -endmodule -``` diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/README b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/README deleted file mode 100644 index 6c62158a120..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/README +++ /dev/null @@ -1,12 +0,0 @@ -Run programs (from the parent directory) with the command: - - krun --search --pattern "M:Map" programs/pgm.logik - -This will only show solutions when they exist. If you also want to see -the entire configuration, for example when you want to know why it -failed to find a solution, then run it with the command - - krun --search programs/pgm.logik - -But note that, in the latter case, a .Bag solution is always reported -whenever there is a possibility that unification may fail. diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik deleted file mode 100644 index 6909e1d59c1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next has only one solution -?- append(cons(a,nil), cons(b,nil), V). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik.out deleted file mode 100644 index 6e0ced97c01..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( V:Term |-> cons ( a , cons ( b , nil , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik deleted file mode 100644 index 4529f89bbea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next has two solutions -?- append(L1, cons(a,L2), cons(a,cons(b,cons(a,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik.out deleted file mode 100644 index 7e7f72b3859..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-2.logik.out +++ /dev/null @@ -1,5 +0,0 @@ - Solution ==K ( L1:Term |-> cons ( a , cons ( b , nil , .Terms ) , .Terms ) ) - ( L2:Term |-> nil ) -#Or - Solution ==K ( L1:Term |-> nil ) - L2:Term |-> cons ( b , cons ( a , nil , .Terms ) , .Terms ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik deleted file mode 100644 index 71d63cbcd82..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next has one parametric, most general solution -?- append(cons(a,nil), Y, Z). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik.out deleted file mode 100644 index 672a7f41db8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-3.logik.out +++ /dev/null @@ -1,2 +0,0 @@ -Solution ==K ( Y:Term |-> V0 ) -Z:Term |-> cons ( a , V0 , .Terms ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik deleted file mode 100644 index d60bc637e6c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next query has an infinite number of solutions; use --bound 5, e.g. -?- append(L1, cons(a,L2), L3). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik.out deleted file mode 100644 index 291196b9052..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-4.logik.out +++ /dev/null @@ -1,19 +0,0 @@ - Solution ==K ( L1:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , cons ( V3 , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , cons ( V3 , cons ( a , L2 , .Terms ) , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L1:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , nil , .Terms ) , .Terms ) , .Terms ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , cons ( a , L2 , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L1:Term |-> cons ( V0 , cons ( V1 , nil , .Terms ) , .Terms ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( V1 , cons ( a , L2 , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L1:Term |-> cons ( V0 , nil , .Terms ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( a , L2 , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L1:Term |-> nil ) - L2:Term |-> L2 - L3:Term |-> cons ( a , L2 , .Terms ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik deleted file mode 100644 index 4460b1f65ad..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next query has no solution; LOGIK detects that quickly -?- append(cons(a,L1), L2, cons(b,L3)). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/append-5.logik.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik deleted file mode 100644 index bcc5c4a8f36..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik +++ /dev/null @@ -1,3 +0,0 @@ -a. - -?- a. diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik.out deleted file mode 100644 index 9a790bd9c4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K .Map diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik deleted file mode 100644 index 13530902302..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik +++ /dev/null @@ -1,3 +0,0 @@ -a. - -?- b. diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-2.logik.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik deleted file mode 100644 index 087a5cc22ff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik +++ /dev/null @@ -1,3 +0,0 @@ -a(john). - -?- a(john). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik.out deleted file mode 100644 index 9a790bd9c4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-3.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K .Map diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik deleted file mode 100644 index 79c0af7379c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik +++ /dev/null @@ -1,3 +0,0 @@ -a(john). - -?- a(mike). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-4.logik.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik deleted file mode 100644 index 9f9cb5ae845..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik +++ /dev/null @@ -1,3 +0,0 @@ -a(john). - -?- a(X). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik.out deleted file mode 100644 index eda8d810a0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/fact-5.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( X:Term |-> john ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik deleted file mode 100644 index c80b6cd7984..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik +++ /dev/null @@ -1,17 +0,0 @@ -parent(david,john). -parent(jim,david). -parent(steve,jim). -parent(nathan,steve). - -grandparent(A,B) :- - parent(A,X), - parent(X,B). - -ancestor(A,B) :- - parent(A,B). -ancestor(A,B) :- - parent(A,X), - ancestor(X,B). - -// This gives too many solutions, as it also includes A and B in solutions -?- ancestor(A,X), ancestor(X,B). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik.out deleted file mode 100644 index e6ab424e18b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-1.logik.out +++ /dev/null @@ -1,39 +0,0 @@ - Solution ==K ( A:Term |-> jim ) - B:Term |-> john - ( X:Term |-> david ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> david - ( X:Term |-> jim ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> david - ( X:Term |-> steve ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> jim - ( X:Term |-> steve ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> john - ( X:Term |-> david ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> john - ( X:Term |-> jim ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> john - ( X:Term |-> steve ) -#Or - Solution ==K ( A:Term |-> steve ) - B:Term |-> david - ( X:Term |-> jim ) -#Or - Solution ==K ( A:Term |-> steve ) - B:Term |-> john - ( X:Term |-> david ) -#Or - Solution ==K ( A:Term |-> steve ) - B:Term |-> john - X:Term |-> jim diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik deleted file mode 100644 index f0c4797bd90..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik +++ /dev/null @@ -1,20 +0,0 @@ -parent(david,john). -parent(jim,david). -parent(steve,jim). -parent(nathan,steve). - -grandparent(A,B):- - parent(A,X), - parent(X,B). - -ancestor(A,B):- - parent(A,X), - parents(X,B). - -parents(X,X). -parents(A,B):- - ancestor(A,B). - -// This will allow us to only keep the desired solutions: -both(X) :- ancestor(A,X), ancestor(X,B). -?- both(X). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik.out deleted file mode 100644 index 2f5e4da314f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/family-2.logik.out +++ /dev/null @@ -1,5 +0,0 @@ - Solution ==K ( X:Term |-> david ) -#Or - Solution ==K ( X:Term |-> jim ) -#Or - Solution ==K ( X:Term |-> steve ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik deleted file mode 100644 index c245af6b368..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik +++ /dev/null @@ -1,9 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next should have only one solution -?- reverse(cons(a,cons(b,cons(c,nil))), L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik.out deleted file mode 100644 index 62cf6ee9dc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik deleted file mode 100644 index aaa1bba3b27..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik +++ /dev/null @@ -1,11 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next has only one solution, but LOGIK is not able to infer that there is -// only one. So use --search --pattern ... --bound 1 (with pattern), or -// --search --bound 2 (without pattern) when you krun it. -?- reverse(L, cons(a,cons(b,cons(c,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik.out deleted file mode 100644 index 62cf6ee9dc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-2.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik deleted file mode 100644 index c0c96323214..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik +++ /dev/null @@ -1,8 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -?- reverse(cons(a,cons(X,cons(c,nil))),L), reverse(L, T). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik.out deleted file mode 100644 index 489cd98ba9b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-3.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( V0 , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) ) -T:Term |-> cons ( a , cons ( V0 , cons ( c , nil , .Terms ) , .Terms ) , .Terms ) -X:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik deleted file mode 100644 index 5d1d43b813a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik +++ /dev/null @@ -1,10 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next should generate all palindromes. However, since there are infinitely -// many of them, use a bound, say 5, to only see a few. -?- reverse(L,L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik.out deleted file mode 100644 index 68026d496e8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-1.logik.out +++ /dev/null @@ -1,9 +0,0 @@ - Solution ==K ( L:Term |-> cons ( V0 , nil , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( V1 , cons ( V1 , nil , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( V2 , cons ( V1 , cons ( V2 , nil , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( V3 , cons ( V2 , cons ( V2 , cons ( V3 , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> nil ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik deleted file mode 100644 index 2f8380cb56c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik +++ /dev/null @@ -1,9 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next finds all conditions characterising palindromes of size 3: A=C -?- reverse(cons(A,cons(B,cons(C,nil))), cons(A,cons(B,cons(C,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik.out deleted file mode 100644 index 3532c150d4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-fast-palindromes-2.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( A:Term |-> V0 ) -B:Term |-> V1 -C:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik deleted file mode 100644 index e6f2eb11081..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik +++ /dev/null @@ -1,10 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next should have only one solution -?- reverse(cons(a,cons(b,cons(c,nil))), L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik.out deleted file mode 100644 index 62cf6ee9dc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik deleted file mode 100644 index db453e71e76..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik +++ /dev/null @@ -1,12 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next has only one solution, but LOGIK is not able to infer that there is -// only one. So use --search --pattern ... --bound 1 (with pattern), or -// --search --bound 2 (without pattern) when you krun it. -?- reverse(L, cons(a,cons(b,cons(c,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik.out deleted file mode 100644 index 62cf6ee9dc2..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-2.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik deleted file mode 100644 index bf8a98fbf06..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik +++ /dev/null @@ -1,9 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -?- reverse(cons(a,cons(X,cons(c,nil))),L), reverse(L, T). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik.out deleted file mode 100644 index 489cd98ba9b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-3.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( V0 , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) ) -T:Term |-> cons ( a , cons ( V0 , cons ( c , nil , .Terms ) , .Terms ) , .Terms ) -X:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik deleted file mode 100644 index 0c74073f9b7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik +++ /dev/null @@ -1,11 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next should generate all palindromes. However, since there are infinitely -// many of them, use a bound, say 5, to only see a few. -?- reverse(L,L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik.out deleted file mode 100644 index 68026d496e8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-1.logik.out +++ /dev/null @@ -1,9 +0,0 @@ - Solution ==K ( L:Term |-> cons ( V0 , nil , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( V1 , cons ( V1 , nil , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( V2 , cons ( V1 , cons ( V2 , nil , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( V3 , cons ( V2 , cons ( V2 , cons ( V3 , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> nil ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik deleted file mode 100644 index add14ae4d78..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik +++ /dev/null @@ -1,10 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next finds all conditions characterising palindromes of size 3: A=C -?- reverse(cons(A,cons(B,cons(C,nil))), cons(A,cons(B,cons(C,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik.out deleted file mode 100644 index 3532c150d4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/reverse-slow-palindromes-2.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( A:Term |-> V0 ) -B:Term |-> V1 -C:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik deleted file mode 100644 index 6ce7337fc60..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik +++ /dev/null @@ -1,4 +0,0 @@ -takeout(X,cons(X,R),R). -takeout(X,cons(F,R),cons(F,S)) :- takeout(X,R,S). - -?- takeout(a,cons(a,cons(b,cons(a,nil))),L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik.out deleted file mode 100644 index 213f33b4806..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-1.logik.out +++ /dev/null @@ -1,3 +0,0 @@ - Solution ==K ( L:Term |-> cons ( a , cons ( b , nil , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( a , nil , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik deleted file mode 100644 index 77d29a76fff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik +++ /dev/null @@ -1,4 +0,0 @@ -takeout(X,cons(X,R),R). -takeout(X,cons(F,R),cons(F,S)) :- takeout(X,R,S). - -?- takeout(a,L,cons(b,cons(c,cons(d,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik.out deleted file mode 100644 index c7a363f1f34..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/takeout-2.logik.out +++ /dev/null @@ -1,7 +0,0 @@ - Solution ==K ( L:Term |-> cons ( a , cons ( b , cons ( c , cons ( d , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( a , cons ( c , cons ( d , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( c , cons ( a , cons ( d , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( c , cons ( d , cons ( a , nil , .Terms ) , .Terms ) , .Terms ) , .Terms ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/untested/append-6.logik b/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/untested/append-6.logik deleted file mode 100644 index bb242e4155f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/basic/tests/untested/append-6.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next query has no solution; LOGIK searches forever -?- append(cons(a,L), nil, L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/Makefile b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/Makefile deleted file mode 100644 index d76bdd2a8d8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(MAKEFILE_PATH)/../../../basic/Makefile diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/README b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/README deleted file mode 100644 index 1528b1b1289..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/README +++ /dev/null @@ -1,18 +0,0 @@ -Extend LOGIK with the following features: - -1) Arithmetic constructs for terms: t1 * t2, t1 + t2, t1 - t2 - -2) List constructs: [t1,t2,...,tn], and [h|t] for patterns - -3) Boolean predicates: t1 <= t2, t1 > t2 - -4) Equality test/assignment predicate: t1 is t2. Here t2 is evaluated -to a value (i.e., no variables) and then its value is unified with t1. - -5) Write predicate: write(t). Here t is expected to evaluate to a string -or an integer. - -As usual, lots of tests are available to test your semantics. However, -due to some pretty printing issues, it is quite likely that the .out files -will change. So do not trust blindly the output of ktest, check the outputs -manually, too, and ignore the pretty printing. diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/logik.k b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/logik.k deleted file mode 100644 index 85803a59d80..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/logik.k +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Runtime Verification, Inc. All Rights Reserved. - -// NOTE: this definition is not runnable as is. -// It is intended for documentation and academic purposes only. - -require "unification.k" - -module LOGIK-COMMON - imports DOMAINS-SYNTAX - - syntax OperationName - syntax Term ::= Int - | String - | "(" Term ")" [bracket] - | OperationName - | OperationName "(" Terms ")" [strict(2)] - > Term "*" Term [strict,left] - > left: - Term "+" Term [strict] - | Term "-" Term [strict] - | "[" Terms "]" [strict] - | "[" Terms "|" Term "]" - syntax Terms ::= List{Term,","} - - syntax Val ::= OperationName "(" Vals ")" - syntax Vals ::= List{Val,","} - - syntax PredicateName - syntax Predicate ::= Bool - | PredicateName - | PredicateName "(" Terms ")" - > Term "<=" Term [strict] - | Term ">" Term [strict] - | Term "is" Term [strict(2)] - | "write" "(" Term ")" [strict] - - syntax Predicates ::= List{Predicate,","} - - syntax Clause ::= Predicate ":-" Predicates "." - | Predicate "." - syntax Query ::= "?-" Predicates "." - syntax Pgm ::= Query | Clause Pgm - - rule [T1:Term,T2:Term,Ts:Terms|T':Term] => [T1|[T2,Ts|T']] [macro] - rule [T:Term,Ts:Terms] => [T,Ts|[.Terms]] [macro] - -endmodule - -module LOGIK-SYNTAX - imports LOGIK-COMMON - imports BUILTIN-ID-TOKENS - - syntax #KVariable ::= r"[A-Z_][A-Za-z0-9_]*" [token, prec(2)] - | #UpperId [token] - syntax Term ::= #KVariable [klabel(#SemanticCastToTerm)] - syntax OperationName ::= r"[a-z][a-zA-Z0-9_]*" [token] - | #LowerId [token] - syntax PredicateName ::= r"[a-z][a-zA-Z0-9_]*" [token] - | #LowerId [token] - -endmodule - - -module LOGIK - imports LOGIK-COMMON - imports DOMAINS - imports UNIFICATION - -// HW: You should complete this module - -endmodule diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik deleted file mode 100644 index 6909e1d59c1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next has only one solution -?- append(cons(a,nil), cons(b,nil), V). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik.out deleted file mode 100644 index 270a7298389..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( V:Term |-> cons ( a , cons ( b , nil , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik deleted file mode 100644 index 4529f89bbea..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next has two solutions -?- append(L1, cons(a,L2), cons(a,cons(b,cons(a,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik.out deleted file mode 100644 index 4f4baf2f269..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-2.logik.out +++ /dev/null @@ -1,5 +0,0 @@ - Solution ==K ( L1:Term |-> cons ( a , cons ( b , nil , .Vals ) , .Vals ) ) - ( L2:Term |-> nil ) -#Or - Solution ==K ( L1:Term |-> nil ) - L2:Term |-> cons ( b , cons ( a , nil , .Vals ) , .Vals ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik deleted file mode 100644 index 71d63cbcd82..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next has one parametric, most general solution -?- append(cons(a,nil), Y, Z). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik.out deleted file mode 100644 index 5be027b21a9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-3.logik.out +++ /dev/null @@ -1,2 +0,0 @@ -Solution ==K ( Y:Term |-> V0 ) -Z:Term |-> cons ( a , V0 , .Vals ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik deleted file mode 100644 index d60bc637e6c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next query has an infinite number of solutions; use --bound 5, e.g. -?- append(L1, cons(a,L2), L3). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik.out deleted file mode 100644 index d3ce3ca74bf..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-4.logik.out +++ /dev/null @@ -1,19 +0,0 @@ - Solution ==K ( L1:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , cons ( V3 , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , cons ( V3 , cons ( a , L2 , .Vals ) , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L1:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , nil , .Vals ) , .Vals ) , .Vals ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( V1 , cons ( V2 , cons ( a , L2 , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L1:Term |-> cons ( V0 , cons ( V1 , nil , .Vals ) , .Vals ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( V1 , cons ( a , L2 , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L1:Term |-> cons ( V0 , nil , .Vals ) ) - L2:Term |-> L2 - ( L3:Term |-> cons ( V0 , cons ( a , L2 , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L1:Term |-> nil ) - L2:Term |-> L2 - L3:Term |-> cons ( a , L2 , .Vals ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik deleted file mode 100644 index 4460b1f65ad..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik +++ /dev/null @@ -1,5 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -// Next query has no solution; LOGIK detects that quickly -?- append(cons(a,L1), L2, cons(b,L3)). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/append-5.logik.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik deleted file mode 100644 index bcc5c4a8f36..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik +++ /dev/null @@ -1,3 +0,0 @@ -a. - -?- a. diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik.out deleted file mode 100644 index 9a790bd9c4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K .Map diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik deleted file mode 100644 index 13530902302..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik +++ /dev/null @@ -1,3 +0,0 @@ -a. - -?- b. diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-2.logik.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik deleted file mode 100644 index 087a5cc22ff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik +++ /dev/null @@ -1,3 +0,0 @@ -a(john). - -?- a(john). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik.out deleted file mode 100644 index 9a790bd9c4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-3.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K .Map diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik deleted file mode 100644 index 79c0af7379c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik +++ /dev/null @@ -1,3 +0,0 @@ -a(john). - -?- a(mike). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik.out deleted file mode 100644 index 88b8f237d0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-4.logik.out +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik deleted file mode 100644 index 9f9cb5ae845..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik +++ /dev/null @@ -1,3 +0,0 @@ -a(john). - -?- a(X). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik.out deleted file mode 100644 index eda8d810a0e..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/fact-5.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( X:Term |-> john ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik deleted file mode 100644 index 9f3da8ccb05..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik +++ /dev/null @@ -1,9 +0,0 @@ -factorial(0,F,F). - -factorial(N,A,F) :- - N>0, - A1 is N*A, - N1 is N -1, - factorial(N1,A1,F). - -?- factorial(5,1,R). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik.out deleted file mode 100644 index f4f4d45e6fd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial-tail-recursive.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( R:Term |-> 120 ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik deleted file mode 100644 index 8c7ea185947..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik +++ /dev/null @@ -1,9 +0,0 @@ -factorial(0,1). - -factorial(N,F) :- - N>0, - N1 is N-1, - factorial(N1,F1), - F is N * F1. - -?- factorial(5,R). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik.out deleted file mode 100644 index f4f4d45e6fd..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/factorial.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( R:Term |-> 120 ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik deleted file mode 100644 index c80b6cd7984..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik +++ /dev/null @@ -1,17 +0,0 @@ -parent(david,john). -parent(jim,david). -parent(steve,jim). -parent(nathan,steve). - -grandparent(A,B) :- - parent(A,X), - parent(X,B). - -ancestor(A,B) :- - parent(A,B). -ancestor(A,B) :- - parent(A,X), - ancestor(X,B). - -// This gives too many solutions, as it also includes A and B in solutions -?- ancestor(A,X), ancestor(X,B). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik.out deleted file mode 100644 index e6ab424e18b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-1.logik.out +++ /dev/null @@ -1,39 +0,0 @@ - Solution ==K ( A:Term |-> jim ) - B:Term |-> john - ( X:Term |-> david ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> david - ( X:Term |-> jim ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> david - ( X:Term |-> steve ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> jim - ( X:Term |-> steve ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> john - ( X:Term |-> david ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> john - ( X:Term |-> jim ) -#Or - Solution ==K ( A:Term |-> nathan ) - B:Term |-> john - ( X:Term |-> steve ) -#Or - Solution ==K ( A:Term |-> steve ) - B:Term |-> david - ( X:Term |-> jim ) -#Or - Solution ==K ( A:Term |-> steve ) - B:Term |-> john - ( X:Term |-> david ) -#Or - Solution ==K ( A:Term |-> steve ) - B:Term |-> john - X:Term |-> jim diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik deleted file mode 100644 index f0c4797bd90..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik +++ /dev/null @@ -1,20 +0,0 @@ -parent(david,john). -parent(jim,david). -parent(steve,jim). -parent(nathan,steve). - -grandparent(A,B):- - parent(A,X), - parent(X,B). - -ancestor(A,B):- - parent(A,X), - parents(X,B). - -parents(X,X). -parents(A,B):- - ancestor(A,B). - -// This will allow us to only keep the desired solutions: -both(X) :- ancestor(A,X), ancestor(X,B). -?- both(X). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik.out deleted file mode 100644 index 2f5e4da314f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/family-2.logik.out +++ /dev/null @@ -1,5 +0,0 @@ - Solution ==K ( X:Term |-> david ) -#Or - Solution ==K ( X:Term |-> jim ) -#Or - Solution ==K ( X:Term |-> steve ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik deleted file mode 100644 index 96f4dc35100..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik +++ /dev/null @@ -1,14 +0,0 @@ -hanoi(1,X,Y,_) :- - write("Move top disk from "), - write(X), - write(" to "), - write(Y), - write("\n"). -hanoi(N,X,Y,Z) :- - N>1, - M is N-1, - hanoi(M,X,Z,Y), - hanoi(1,X,Y,_), - hanoi(M,Z,Y,X). - -?- hanoi(2,"left","right","center"). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik.out deleted file mode 100644 index 9a790bd9c4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/hanoi.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K .Map diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik deleted file mode 100644 index 7961641bffe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik +++ /dev/null @@ -1,5 +0,0 @@ -append([],L,L). -append([H|T],L,[H|Z]) :- append(T,L,Z). - -// Next has only one solution -?- append([a], [b], V). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik.out deleted file mode 100644 index 51621c26664..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( V:Term |-> [ a , .Vals | [ b , .Vals | [ .Vals ] ] ] ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik deleted file mode 100644 index 632b202ac20..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik +++ /dev/null @@ -1,5 +0,0 @@ -append([],L,L). -append([H|T],L,[H|Z]) :- append(T,L,Z). - -// Next has two solutions -?- append(L1, [a|L2], [a,b,a]). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik.out deleted file mode 100644 index be758e51627..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-append-2.logik.out +++ /dev/null @@ -1,5 +0,0 @@ - Solution ==K ( L1:Term |-> [ .Vals ] ) - ( L2:Term |-> [ b , .Vals | [ a , .Vals | [ .Vals ] ] ] ) -#Or - Solution ==K ( L1:Term |-> [ a , .Vals | [ b , .Vals | [ .Vals ] ] ] ) - L2:Term |-> [ .Vals ] diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik deleted file mode 100644 index aa6ac23d158..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik +++ /dev/null @@ -1,5 +0,0 @@ -member(X, [X|_]). -member(X, [_|T]) :- member(X,T). - -// Next has two solutions -?- member(5, [1,2,3,4,5,6,5]). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik.out deleted file mode 100644 index 9a790bd9c4d..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K .Map diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik deleted file mode 100644 index c634ec85b01..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik +++ /dev/null @@ -1,5 +0,0 @@ -member(X, [X|_]). -member(X, [_|T]) :- member(X,T). - -// Next has 6 or 7 solutions (depending what we mean by a "solution") -?- member(X, [1,2,3,4,5,6,5]). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik.out deleted file mode 100644 index 842907717b1..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-2.logik.out +++ /dev/null @@ -1,11 +0,0 @@ - Solution ==K ( X:Term |-> 1 ) -#Or - Solution ==K ( X:Term |-> 2 ) -#Or - Solution ==K ( X:Term |-> 3 ) -#Or - Solution ==K ( X:Term |-> 4 ) -#Or - Solution ==K ( X:Term |-> 5 ) -#Or - Solution ==K ( X:Term |-> 6 ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik deleted file mode 100644 index dab2282b01f..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik +++ /dev/null @@ -1,5 +0,0 @@ -member(X, [X|_]). -member(X, [_|T]) :- member(X,T). - -// Next has 2 solutions -?- member([3,X], [[1,a],[2,b],[3,c],[4,d],[3,e]]). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik.out deleted file mode 100644 index 57a9b4464a9..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-member-3.logik.out +++ /dev/null @@ -1,3 +0,0 @@ - Solution ==K ( X:Term |-> c ) -#Or - Solution ==K ( X:Term |-> e ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik deleted file mode 100644 index 1dcdd6c3ce0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik +++ /dev/null @@ -1,18 +0,0 @@ -mergesort([],[]). -mergesort([A],[A]). -mergesort([A,B|R],S) :- - split([A,B|R],L1,L2), - mergesort(L1,S1), - mergesort(L2,S2), - merge(S1,S2,S). - -split([],[],[]). -split([A],[A],[]). -split([A,B|R],[A|Ra],[B|Rb]) :- split(R,Ra,Rb). - -merge(A,[],A). -merge([],B,B). -merge([A|Ra],[B|Rb],[A|M]) :- A <= B, merge(Ra,[B|Rb],M). -merge([A|Ra],[B|Rb],[B|M]) :- A > B, merge([A|Ra],Rb,M). - -?- mergesort([5,3],S). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik.out deleted file mode 100644 index b2308aadcbe..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-mergesort.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( S:Term |-> [ 3 , .Vals | [ 5 , .Vals | [ .Vals ] ] ] ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik deleted file mode 100644 index 61e428c4e64..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik +++ /dev/null @@ -1,7 +0,0 @@ -takeout(X,[X|R],R). -takeout(X,[F|R],[F|S]) :- takeout(X,R,S). - -perm([X|Y],Z) :- perm(Y,W), takeout(X,Z,W). -perm([],[]). - -?- perm([1,2,3],P). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik.out deleted file mode 100644 index 9ca42fee872..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-perm.logik.out +++ /dev/null @@ -1,11 +0,0 @@ - Solution ==K ( P:Term |-> [ 1 , .Vals | [ 2 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ] ) -#Or - Solution ==K ( P:Term |-> [ 1 , .Vals | [ 3 , .Vals | [ 2 , .Vals | [ .Vals ] ] ] ] ) -#Or - Solution ==K ( P:Term |-> [ 2 , .Vals | [ 1 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ] ) -#Or - Solution ==K ( P:Term |-> [ 2 , .Vals | [ 3 , .Vals | [ 1 , .Vals | [ .Vals ] ] ] ] ) -#Or - Solution ==K ( P:Term |-> [ 3 , .Vals | [ 1 , .Vals | [ 2 , .Vals | [ .Vals ] ] ] ] ) -#Or - Solution ==K ( P:Term |-> [ 3 , .Vals | [ 2 , .Vals | [ 1 , .Vals | [ .Vals ] ] ] ] ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik deleted file mode 100644 index 440756321f8..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik +++ /dev/null @@ -1,6 +0,0 @@ -reverse([],L,L). -reverse([H|T],L1,L2) :- reverse(T,[H|L1],L2). - -reverse(L,R) :- reverse(L,[],R). - -?- reverse([1,2,3],L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik.out deleted file mode 100644 index 8ae26f78ff4..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-reverse.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> [ 3 , .Vals | [ 2 , .Vals | [ 1 , .Vals | [ .Vals ] ] ] ] ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik deleted file mode 100644 index b1fb734a629..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik +++ /dev/null @@ -1,4 +0,0 @@ -takeout(X,[X|R],R). -takeout(X,[F|R],[F|S]) :- takeout(X,R,S). - -?- takeout(2,[1,2,3],L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik.out deleted file mode 100644 index 75168b176e0..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> [ 1 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik deleted file mode 100644 index 914d36b6aec..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik +++ /dev/null @@ -1,5 +0,0 @@ -takeout(X,[X|R],R). -takeout(X,[F|R],[F|S]) :- takeout(X,R,S). - -// 3 solutions -?- takeout(X,[1,2,3],L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik.out deleted file mode 100644 index 2220aaf5099..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-2.logik.out +++ /dev/null @@ -1,8 +0,0 @@ - Solution ==K ( L:Term |-> [ 1 , .Vals | [ 2 , .Vals | [ .Vals ] ] ] ) - ( X:Term |-> 3 ) -#Or - Solution ==K ( L:Term |-> [ 1 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ) - ( X:Term |-> 2 ) -#Or - Solution ==K ( L:Term |-> [ 2 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ) - X:Term |-> 1 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik deleted file mode 100644 index b65177be8d7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik +++ /dev/null @@ -1,5 +0,0 @@ -takeout(X,[X|R],R). -takeout(X,[F|R],[F|S]) :- takeout(X,R,S). - -// 4 solutions -?- takeout(X,L,[1,2,3]). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik.out deleted file mode 100644 index 95ce1de23ff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/list-takeout-3.logik.out +++ /dev/null @@ -1,11 +0,0 @@ - Solution ==K ( L:Term |-> [ 1 , .Vals | [ 2 , .Vals | [ 3 , .Vals | [ V0 , .Vals | [ .Vals ] ] ] ] ] ) - ( X:Term |-> V0 ) -#Or - Solution ==K ( L:Term |-> [ 1 , .Vals | [ 2 , .Vals | [ V1 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ] ] ) - ( X:Term |-> V1 ) -#Or - Solution ==K ( L:Term |-> [ 1 , .Vals | [ V2 , .Vals | [ 2 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ] ] ) - ( X:Term |-> V2 ) -#Or - Solution ==K ( L:Term |-> [ V3 , .Vals | [ 1 , .Vals | [ 2 , .Vals | [ 3 , .Vals | [ .Vals ] ] ] ] ] ) - X:Term |-> V3 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik deleted file mode 100644 index c245af6b368..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik +++ /dev/null @@ -1,9 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next should have only one solution -?- reverse(cons(a,cons(b,cons(c,nil))), L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik.out deleted file mode 100644 index 0f2a24fcd81..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik deleted file mode 100644 index aaa1bba3b27..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik +++ /dev/null @@ -1,11 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next has only one solution, but LOGIK is not able to infer that there is -// only one. So use --search --pattern ... --bound 1 (with pattern), or -// --search --bound 2 (without pattern) when you krun it. -?- reverse(L, cons(a,cons(b,cons(c,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik.out deleted file mode 100644 index 0f2a24fcd81..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-2.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik deleted file mode 100644 index c0c96323214..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik +++ /dev/null @@ -1,8 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -?- reverse(cons(a,cons(X,cons(c,nil))),L), reverse(L, T). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik.out deleted file mode 100644 index 92e9bb3f2fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-3.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( V0 , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) ) -T:Term |-> cons ( a , cons ( V0 , cons ( c , nil , .Vals ) , .Vals ) , .Vals ) -X:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik deleted file mode 100644 index 5d1d43b813a..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik +++ /dev/null @@ -1,10 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next should generate all palindromes. However, since there are infinitely -// many of them, use a bound, say 5, to only see a few. -?- reverse(L,L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik.out deleted file mode 100644 index c41e777b458..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-1.logik.out +++ /dev/null @@ -1,9 +0,0 @@ - Solution ==K ( L:Term |-> cons ( V0 , nil , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( V1 , cons ( V1 , nil , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( V2 , cons ( V1 , cons ( V2 , nil , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( V3 , cons ( V2 , cons ( V2 , cons ( V3 , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> nil ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik deleted file mode 100644 index 2f8380cb56c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik +++ /dev/null @@ -1,9 +0,0 @@ -reverseFast(nil,L,L). -reverseFast(cons(H,T),L1,L2) :- - reverseFast(T,cons(H,L1),L2). - -reverse(L1,L2) :- - reverseFast(L1,nil,L2). - -// Next finds all conditions characterising palindromes of size 3: A=C -?- reverse(cons(A,cons(B,cons(C,nil))), cons(A,cons(B,cons(C,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik.out deleted file mode 100644 index 3532c150d4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-fast-palindromes-2.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( A:Term |-> V0 ) -B:Term |-> V1 -C:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik deleted file mode 100644 index e6f2eb11081..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik +++ /dev/null @@ -1,10 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next should have only one solution -?- reverse(cons(a,cons(b,cons(c,nil))), L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik.out deleted file mode 100644 index 0f2a24fcd81..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-1.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik deleted file mode 100644 index db453e71e76..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik +++ /dev/null @@ -1,12 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next has only one solution, but LOGIK is not able to infer that there is -// only one. So use --search --pattern ... --bound 1 (with pattern), or -// --search --bound 2 (without pattern) when you krun it. -?- reverse(L, cons(a,cons(b,cons(c,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik.out deleted file mode 100644 index 0f2a24fcd81..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-2.logik.out +++ /dev/null @@ -1 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( b , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik deleted file mode 100644 index bf8a98fbf06..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik +++ /dev/null @@ -1,9 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -?- reverse(cons(a,cons(X,cons(c,nil))),L), reverse(L, T). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik.out deleted file mode 100644 index 92e9bb3f2fa..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-3.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( L:Term |-> cons ( c , cons ( V0 , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) ) -T:Term |-> cons ( a , cons ( V0 , cons ( c , nil , .Vals ) , .Vals ) , .Vals ) -X:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik deleted file mode 100644 index 0c74073f9b7..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik +++ /dev/null @@ -1,11 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next should generate all palindromes. However, since there are infinitely -// many of them, use a bound, say 5, to only see a few. -?- reverse(L,L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik.out deleted file mode 100644 index c41e777b458..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-1.logik.out +++ /dev/null @@ -1,9 +0,0 @@ - Solution ==K ( L:Term |-> cons ( V0 , nil , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( V1 , cons ( V1 , nil , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( V2 , cons ( V1 , cons ( V2 , nil , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( V3 , cons ( V2 , cons ( V2 , cons ( V3 , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> nil ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik deleted file mode 100644 index add14ae4d78..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik +++ /dev/null @@ -1,10 +0,0 @@ -append(nil,L,L). -append(cons(H,T),L,cons(H,Z)) :- append(T,L,Z). - -reverse(nil,nil). -reverse(cons(H,T),L) :- - reverse(T,T1), - append(T1,cons(H,nil),L). - -// Next finds all conditions characterising palindromes of size 3: A=C -?- reverse(cons(A,cons(B,cons(C,nil))), cons(A,cons(B,cons(C,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik.out deleted file mode 100644 index 3532c150d4c..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/reverse-slow-palindromes-2.logik.out +++ /dev/null @@ -1,3 +0,0 @@ -Solution ==K ( A:Term |-> V0 ) -B:Term |-> V1 -C:Term |-> V0 diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik deleted file mode 100644 index 6ce7337fc60..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik +++ /dev/null @@ -1,4 +0,0 @@ -takeout(X,cons(X,R),R). -takeout(X,cons(F,R),cons(F,S)) :- takeout(X,R,S). - -?- takeout(a,cons(a,cons(b,cons(a,nil))),L). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik.out deleted file mode 100644 index dd2517506da..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-1.logik.out +++ /dev/null @@ -1,3 +0,0 @@ - Solution ==K ( L:Term |-> cons ( a , cons ( b , nil , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( a , nil , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik deleted file mode 100644 index 77d29a76fff..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik +++ /dev/null @@ -1,4 +0,0 @@ -takeout(X,cons(X,R),R). -takeout(X,cons(F,R),cons(F,S)) :- takeout(X,R,S). - -?- takeout(a,L,cons(b,cons(c,cons(d,nil)))). diff --git a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik.out b/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik.out deleted file mode 100644 index efe78e24f32..00000000000 --- a/k-distribution/pl-tutorial/2_languages/4_logik/extended/exercises/logik-extended/tests/takeout-2.logik.out +++ /dev/null @@ -1,7 +0,0 @@ - Solution ==K ( L:Term |-> cons ( a , cons ( b , cons ( c , cons ( d , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( a , cons ( c , cons ( d , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( c , cons ( a , cons ( d , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) -#Or - Solution ==K ( L:Term |-> cons ( b , cons ( c , cons ( d , cons ( a , nil , .Vals ) , .Vals ) , .Vals ) , .Vals ) ) diff --git a/k-distribution/pl-tutorial/2_languages/Makefile b/k-distribution/pl-tutorial/2_languages/Makefile deleted file mode 100644 index d313e1aea6b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS=1_simple 2_kool 3_fun - -include ../find-k.mak -include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/2_languages/README.md b/k-distribution/pl-tutorial/2_languages/README.md deleted file mode 100644 index 94ef926ca1b..00000000000 --- a/k-distribution/pl-tutorial/2_languages/README.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# K Languages - -Here we present several "real-world" language examples. These languages -demonstrate many of the features you would expect to find in a full-fledged -programming language. - -- SIMPLE: Imperative programming language with threads. -- KOOL: SIMPLE extended with object-oriented features. -- FUN: A functional language with algebraic data-types and pattern-matching. -- LOGIK: A logical programming language based on clause unification. diff --git a/k-distribution/pl-tutorial/NOTES.md b/k-distribution/pl-tutorial/NOTES.md deleted file mode 100644 index 478b6511a59..00000000000 --- a/k-distribution/pl-tutorial/NOTES.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -*Dear reader: these `NOTES.md` documents are mostly for myself (Grigore), to -keep track of changes and updates that need to be made as things evolve -in the K framework. You can safely ignore them. However, if you are curious -how things will change and decide to read them, I would be grateful if you -let me know whenever you find inconsistencies or things that I forgot to -mention here. Or even better, feel free to make pull requests with suggested -changes or updates.* - -Global changes that need to be made: - -* Replace `when` in rules with `requires` - -Things to revise each time the structure of the tutorial changes: - -* `1_k\2_imp\lesson_1\README.md` refers to Tutorial 1 -* `1_k\2_imp\lesson_4\README.md` refers to Lesson 1 -* `1_k\2_imp\lesson_4\README.md` refers to Tutorial 1, Lesson 2.5 -* `1_k\3_lambda++\lesson_1\README.md` refers to Lesson 8, Tutorial 1 -* `1_k\3_lambda++\lesson_1\exercises refers to Lesson 1, tests/config.xml -* `1_k\3_lambda++\lesson_2\README.md` Lesson 1, Tutorial 1; Tutorial 6; Part 1, 2 -* `1_k\3_lambda++\lesson_3\README.md` refers to Lesson 7, Tutorial 1 -* `1_k\3_lambda++\lesson_4\README.md` refers to Lesson 1 -* `1_k\3_lambda++\lesson_5\README.md` refers to Lesson 4, Lesson 8 and Lesson 7 of Tutorial 1 -* `1_k\3_lambda++\lesson_6\README.md` refers to Parts 3 and 4 of the tutorial -* `1_k\4_imp++\lesson_1\README.md` refers to Lesson 4, Tutorial 2; also Tutorial 3 (at the end) -* `1_k\4_imp++\lesson_2\README.md` refers to Tutorial 3; Tutorial 2 -* `1_k\4_imp++\lesson_3\README.md` refers to Lesson 1, Lesson 6 -* `1_k\4_imp++\lesson_4\README.md` refers to Tutorial 6 -* `1_k\4_imp++\lesson_5\README.md` refers to Lesson 4; Tutorial 3 -* `1_k\4_imp++\lesson_6\README.md` refers to Lesson 3 -* `1_k\4_imp++\lesson_7\README.md` refers to Lesson 1, 6 -* `1_k\5_types\lesson_1\README.md` refers to Part 4; SIMPLE -* `1_k\5_types\lesson_2\NOTES/README.md` refer to Tutorial 1 -* `1_k\5_types\lesson_3\README.md` refers to Part 1; Lesson 1,2 -* `1_k\5_types\lesson_4\README.md` refers to Part 1, and to Lessons 2 and 3 -* `1_k\5_types\lesson_5\README.md` refers to Lessons 4, 3, 2 -* `1_k\5_types\lesson_6\README.md` refers to Lesson 5; SIMPLE, KOOL, IMP++ -* `1_k\5_types\lesson_7\README.md` refers to Lesson 4, 8, 9 -* `1_k\5_types\lesson_8\README.md` refers to Lessons 5, 7 -* `1_k\5_types\lesson_9\README.md` refers to Lessons 8, 5, 7, 4 -* - -`1_k\4_imp++\lesson_2\README.md` states "generates a term of the form -`symNat(n)` of sort `Nat`", but the representation of symbolic numbers may -have changed - -Describe/use/explain/justify the terminology "the `` cell" as opposed to "the `k` cell". - -Would it be a good idea to make the README files self contained, that is, -to include the entire `lang.k` code in them, spread over the entire README, as things -are discussed? In case we decide not to, make sure that the code snippets mentioned -in the READMEs are in perfect correspondence to the code in the actual .k definitions. -Maybe add a tag before each code snippet saying what file and what lines in that -file comes from, then we can use a script to check them to be identical. - -`1_k\5_types\lesson_4\README.md` refers to *polymorphism*, but some may say that is not precisely -polymorphism, because the types are not universally quantified. Explain that better. - -Modify the entire tutorial to use `.` or, if needed, `.::Map`, etc., -instead of `.Map`, etc.. Check for each instance specifically, because -the surrounding text may also need to be modified. - -We sometimes use "Kompile", or "kompile", as a verb instead of "Compile", -or "compile", to indicate that we mean compilation with K. Similarly for -"Krun", or "krun", instead of "Run" or "run". - -Add citations to: - -* chemical abstract machine -* logics, where the distinction between side condition and premise is explained -* reduction semantics with evaluation contexts - -Replace `I1 +Int I2`, `notBool B`, etc., with `(I1 + I2)@INT`, `(not B)@Bool`, -etc., when we have module qualification in place and working. - -Explain `isSort(T)` for all sorts `Sort`, in one place, when it is first used. -Explain also that `T:Sort` yields a side condition `isSort(T)`. - -Currently all the K collections are "untyped", that is, over the sort `K`. -In the future we want to have parametric collections. Make sure the tutorial -is systematically changed when this happens. - -See issue #2023 and modify pl-tutorial/1_k/2_imp/lesson_4 accordingly, if needed. - -All definitions, and corresponding READMEs, should be changed to take advantage -of modules and module operations. Ideally, we'd like to have no code repetition -in any examples, except for demonstration purposes. - -In the PL semantics book, define print(AExps) to have the same semantics as in -IMP++: evaluates and prints each of its arguments in order (as opposed to -first evaluate all of them and then print them---for example, if the second -argument performs a division by zero, I still want to print the first argument.) diff --git a/k-distribution/pl-tutorial/README.md b/k-distribution/pl-tutorial/README.md deleted file mode 100644 index 2861177b87e..00000000000 --- a/k-distribution/pl-tutorial/README.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -copyright: Copyright (c) Runtime Verification, Inc. All Rights Reserved. ---- - -# K PL Tutorial - -Here you will learn how to use the K tool to define languages by means of a series of screencast movies. It is recommended to do these in the indicated order, because K features already discussed in a previous language definition will likely not be rediscussed in latter definitions. The screencasts follow quite closely the structure of the files under the [tutorial folder](https://github.com/runtimeverification/k/tree/master/k-distribution/pl-tutorial) in the K tool distribution. If you'd rather follow the instructions there and do the tutorial exercises yourself, then go back to https://kframework.org and download the K tool, if you have not done it already. Or, you can first watch the screencasts below and then do the exercises, or do them in parallel. - -## K Overview - -Make sure you watch the K overview video before you do the K tutorial: - -- [9'59"] [K Overview](../../overview.md) - -## Learning K - -### [34'46"] Part 1: Defining LAMBDA - -Here you will learn how to define a very simple functional language in K and the basics of how to use the K tool. The language is a call-by-value variant of lambda calculus with builtins and mu, and its definition is based on substitution. - -- [04'07"] [Lesson 1, LAMBDA: Syntax Modules and Basic K Commands](./1_k/1_lambda/lesson_1/README.md) -- [04'03"] [Lesson 2, LAMBDA: Module Importing, Rules, Variables](./1_k/1_lambda/lesson_2/README.md) -- [02'20"] [Lesson 3, LAMBDA: Evaluation Strategies using Strictness](./1_k/1_lambda/lesson_3/README.md) -- [03'13"] [Lesson 4, LAMBDA: Generating Documentation; Latex Attributes](./1_k/1_lambda/lesson_4/README.md) -- [04'52"] [Lesson 5, LAMBDA: Adding Builtins; Side Conditions](./1_k/1_lambda/lesson_5/README.md) -- [02'14"] [Lesson 6, LAMBDA: Selective Strictness; Anonymous Variables](./1_k/1_lambda/lesson_6/README.md) -- [05'10"] [Lesson 7, LAMBDA: Derived Constructs; Extending Predefined Syntax](./1_k/1_lambda/lesson_7/README.md) -- [02'40"] [Lesson 8, LAMBDA: Multiple Binding Constructs](./1_k/1_lambda/lesson_8/README.md) (uncommented) -- [06'07"] [Lesson 9, LAMBDA: A Complete and Commented Definition](./1_k/1_lambda/lesson_9/README.md) (commented) - -### [37'07"] Part 2: Defining IMP - -Here you will learn how to define a very simple, prototypical textbook C-like imperative language, called IMP, and several new features of the K tool. - -- [09'15"] [Lesson 1, IMP: Defining a More Complex Syntax](./1_k/2_imp/lesson_1/README.md) -- [04'21"] [Lesson 2, IMP: Defining a Configuration](./1_k/2_imp/lesson_2/README.md) -- [10'30"] [Lesson 3, IMP: Computations, Results, Strictness; Rules Involving Cells](./1_k/2_imp/lesson_3/README.md) -- [09'16"] [Lesson 4, IMP: Configuration Abstraction, Part 1; Types of Rules](./1_k/2_imp/lesson_4/README.md) -- [03'45"] [Lesson 5, IMP: Completing and Documenting IMP](./1_k/2_imp/lesson_5/README.md) - -### [33'10"] Part 3: Defining LAMBDA++ - -Here you will learn how to define constructs which abruptly change the execution control, as well as how to define functional languages using environments and closures. LAMBDA++ extends the LAMBDA language above with a callcc construct. - -- [06'28"] [Lesson 1, LAMBDA++: Abrupt Changes of Control](./1_k/3_lambda++/lesson_1/README.md) (substitution-based, uncommented) -- [08'02"] [Lesson 2, LAMBDA++: Semantic (Non-Syntactic) Computation Items](./1_k/3_lambda++/lesson_2/README.md) -- [03'21"] [Lesson 3, LAMBDA++: Reusing Existing Semantics](./1_k/3_lambda++/lesson_3/README.md) -- [03'37"] [Lesson 4, LAMBDA++: Do Not Reuse Blindly!](./1_k/3_lambda++/lesson_4/README.md) -- [05'19"] [Lesson 5, LAMBDA++: More Semantic Computation Items](./1_k/3_lambda++/lesson_5/README.md) -- [06'23"] [Lesson 6, LAMBDA++: Wrapping Up and Documenting LAMBDA++ (environment-based)](./1_k/3_lambda++/lesson_6/README.md) - - -### [46'46"] Part 4: Defining IMP++ - -Here you will learn how to refine configurations, how to generate fresh elements, how to tag syntactic constructs and rules, how to exhaustively search the space of non-deterministic or concurrent program executions, etc. IMP++ extends the IMP language above with increment, blocks and locals, dynamic threads, input/output, and abrupt termination. - -- [07'47"] [Lesson 1, IMP++: Extending/Changing an Existing Language Syntax](./1_k/4_imp++/lesson_1/README.md) -- [04'06"] [Lesson 2, IMP++: Configuration Refinement; Freshness](./1_k/4_imp++/lesson_2/README.md) -- [06'56"] [Lesson 3, IMP++: Tagging; Superheat/Supercool Kompilation Options](./1_k/4_imp++/lesson_3/README.md) -- [05'21"] [Lesson 4, IMP++: Semantic Lists; Input/Output Streaming](./1_k/4_imp++/lesson_4/README.md) -- [04'30"] [Lesson 5, IMP++: Deleting, Saving and Restoring Cell Contents](./1_k/4_imp++/lesson_5/README.md) -- [11'40"] [Lesson 6, IMP++: Adding/Deleting Cells Dynamically; Configuration Abstraction, Part 2](./1_k/4_imp++/lesson_6/README.md) -- [??'??"] [Lesson 7, IMP++: Everything Changes: Syntax, Configuration, Semantics](./1_k/4_imp++/lesson_7/README.md) -- [06'26"] [Lesson 8, IMP++: Wrapping up Larger Languages](./1_k/4_imp++/lesson_8/README.md) - -### [17'03"] Part 5: Defining Type Systems - -Here you will learn how to define various kinds of type systems following various approaches or styles using K. - -- [10'11"] [Lesson 1, Type Systems: Imperative, Environment-Based Type Systems](./1_k/5_types/lesson_1/README.md) (IMP++ type checker) -- [06'52"] [Lesson 2, Type Systems: Substitution-Based Higher-Order Type Systems](./1_k/5_types/lesson_2/README.md) (LAMBDA type checker, substitution, uncommented) -- [??'??"] [Lesson 3, Type Systems: Environment-Based Higher-Order Type Systems](./1_k/5_types/lesson_3/README.md) (LAMBDA type checker, environment, uncommented) -- [??'??"] [Lesson 4, Type Systems: A Naive Substitution-Based Type Inferencer](./1_k/5_types/lesson_4/README.md) (for LAMBDA, uncommented) -- [??'??"] [Lesson 5, Type Systems: A Naive Environment-Based Type Inferencer](./1_k/5_types/lesson_5/README.md) (for LAMBDA, uncommented) -- [??'??"] [Lesson 6, Type Systems: Parallel Type Checkers/Inferencers](./1_k/5_types/lesson_6/README.md) (for LAMBDA, uncommented) -- [??'??"] [Lesson 7, Type Systems: A Naive Substitution-based Polymorphic Type Inferencer](./1_k/5_types/lesson_7/README.md) (for LAMBDA, uncommented) -- [??'??"] [Lesson 8, Type Systems: A Naive Environment-based Polymorphic Type Inferencer](./1_k/5_types/lesson_8/README.md) (for LAMBDA, uncommented) -- [??'??"] [Lesson 9, Type Systems: Let-Polymorphic Type Inferencer (Damas-Hindley-Milner)](./1_k/5_types/lesson_9/README.md) (for LAMBDA, uncommented) - -### [??'??"] Part 6: Miscellaneous Other K Features - -Here you will learn a few other K features, and better understand how features that you have already seen work. - -- [??'??"] ... - -## Learning Language Design and Semantics using K - -### [??'??"] Part 7: SIMPLE: Designing Imperative Programming Languages - -Here you will learn how to design imperative programming languages using K. SIMPLE is an imperative language with functions, threads, pointers, exceptions, multi-dimensional arrays, etc. We first define an untyped version of SIMPLE, then a typed version. For the typed version, we define both a static and a dynamic semantics. - -- [??'??"] [Lesson 1, SIMPLE untyped](./2_languages/1_simple/1_untyped/simple-untyped.md) -- [??'??"] [Lesson 2, SIMPLE typed static](./2_languages/1_simple/2_typed/1_static/simple-typed-static.md) -- [??'??"] [Lesson 3, SIMPLE typed dynamic](./2_languages/1_simple/2_typed/2_dynamic/simple-typed-dynamic.md) - -### [??'??"] Part 8: KOOL: Designing Object-Oriented Programming Languages - -Here woul will learn how to design object-oriented programming languages using K. KOOL is an object-oriented language that extends SIMPLE with classes and objects. We first define an untyped version of KOOL, then a typed version, with both a dynamic and a static semantics. - -- [??'??"] [Lesson 1, KOOL untyped](./2_languages/2_kool/1_untyped/kool-untyped.md) -- [??'??"] [Lesson 2, KOOL typed dynamic](./2_languages/2_kool/2_typed/1_dynamic/kool-typed-dynamic.md) -- [??'??"] [Lesson 3, KOOL typed static](./2_languages/2_kool/2_typed/2_static/kool-typed-static.md) - -### [??'??"] Part 9: FUN: Designing Functional Programming Languages -H -ere woul will learn how to design functional programming languages using K. FUN is a higher-order functional language with general let, letrec, pattern matching, references, lists, callcc, etc. We first define an untyped version of FUN, then a let-polymorphic type inferencer. - -- [??'??"] [Lesson 1, FUN untyped, Environment-Based](./2_languages/3_fun/1_untyped/1_environment/fun-untyped.md) -- [??'??"] [Lesson 2, FUN untyped, Substitution-Based](./2_languages/3_fun/1_untyped/2_substitution/fun-untyped.md) -- [??'??"] Lesson 3, FUN polymorphic type inferencer - -### [??'??"] Part 10: LOGIK: Designing Logic Programming Languages - -Here you will learn how to design a logic programming language using K. - -- [??'??"] [Lesson 1, LOGIK](./2_languages/4_logik/basic/logik.md) diff --git a/k-distribution/src/main/assembly/bin.xml b/k-distribution/src/main/assembly/bin.xml index 884329c3725..51731611522 100644 --- a/k-distribution/src/main/assembly/bin.xml +++ b/k-distribution/src/main/assembly/bin.xml @@ -23,18 +23,6 @@ README* - - ${project.basedir} - /share/kframework - - pl-tutorial/** - INSTALL* - - - **/.*/** - **/*-kompiled/** - - ${project.basedir}/include /include diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/Makefile new file mode 100644 index 00000000000..7b416045c99 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=lesson_8 + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/Makefile new file mode 100644 index 00000000000..b9c8dd737de --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/Makefile @@ -0,0 +1,8 @@ +DEF=lambda +EXT=lambda +KOMPILE_FLAGS=--gen-bison-parser + +%/arithmetic-div-zero.lambda: + true + +include ../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/lambda.k b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/lambda.k similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/lambda.k rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/lambda.k diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/arithmetic-div-zero.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic-div-zero.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/arithmetic-div-zero.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic-div-zero.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/arithmetic.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/arithmetic.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/arithmetic.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_5/tests/arithmetic.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/arithmetic.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/closed-variable-capture.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/closed-variable-capture.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/closed-variable-capture.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_2/tests/closed-variable-capture.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/closed-variable-capture.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let-fix.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let-fix.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let-fix.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let-fix.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let-fix.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-let.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-let.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-letrec.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-letrec.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-letrec.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/factorial-letrec.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/factorial-letrec.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/fibbo.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/fibbo.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/fibbo.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/fibbo.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/fibbo.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/free-variable-capture.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/free-variable-capture.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/free-variable-capture.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/free-variable-capture.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/free-variable-capture.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/identity.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/identity.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/identity.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_1/tests/identity.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/identity.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/if.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/if.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/if.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/if.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/if.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/lets.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/lets.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/lets.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/lets.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/1_lambda/lesson_8/tests/lets.lambda.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/Makefile new file mode 100644 index 00000000000..227f5151f05 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=lesson_4 + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/Makefile new file mode 100644 index 00000000000..77b34d53021 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/Makefile @@ -0,0 +1,5 @@ +DEF=imp +EXT=imp +KOMPILE_FLAGS=--gen-glr-bison-parser + +include ../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/imp.k b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/imp.k similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_4/imp.k rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/imp.k diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/collatz.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/collatz.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/collatz.imp.out diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/primes.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/primes.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/primes.imp.out diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/sum.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_1/tests/sum.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/sum.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_4/exercises/uninitialized-variables/tests/sum.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/Makefile new file mode 100644 index 00000000000..5169723aa4c --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=lesson_5 + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det new file mode 100644 index 00000000000..dc4a67b9200 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.det @@ -0,0 +1,12 @@ +TESTDIR=tests/deterministic +DEFDIR=det +DEF=lambda +EXT=lambda +KOMPILE_FLAGS=--gen-bison-parser + +%/arithmetic-div-zero.lambda: + true + +include ../../../../../../include/kframework/ktest.mak +KOMPILE_FLAGS=--enable-search --syntax-module LAMBDA +KRUN_FLAGS=--pattern " V:K " diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet new file mode 100644 index 00000000000..0b41b678e6f --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/Makefile.nondet @@ -0,0 +1,11 @@ +TESTDIR=tests/nondeterministic +DEFDIR=nondet +DEF=lambda +EXT=lambda +KOMPILE_FLAGS=--syntax-module LAMBDA --enable-search +KRUN_FLAGS=--search --pattern " V:K " + +include ../../../../../../include/kframework/ktest.mak + +tests/nondeterministic/arithmetic-div-zero.lambda: + true diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/lambda.k b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/lambda.k similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/lambda.k rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/lambda.k diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let-fix.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let-fix.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let-fix.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-let.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-let.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-letrec.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/factorial-letrec.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/factorial-letrec.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/fibbo.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/mu-derived/tests/fibbo.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/deterministic/fibbo.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic-div-zero.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic-div-zero.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic-div-zero.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic-div-zero.lambda diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_6/tests/arithmetic.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/arithmetic.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env1.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env1.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env1.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env2.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_4/tests/callcc-env2.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-env2.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-with-let.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_1/exercises/from-call-CC-to-callcc/tests/callcc-with-let.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/callcc-with-let.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/closed-variable-capture.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/closed-variable-capture.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/closed-variable-capture.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/closed-variable-capture.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/closed-variable-capture.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/free-variable-capture.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/free-variable-capture.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/free-variable-capture.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/free-variable-capture.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/free-variable-capture.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/identity.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_2.5/tests/identity.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/identity.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_2/tests/identity.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/identity.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/if.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_7/tests/if.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/if.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lets.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/1_lambda/lesson_8/exercises/SK-combinators/tests/lets.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda diff --git a/k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/3_lambda++/lesson_5/tests/nondeterministic/lets.lambda.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/Makefile new file mode 100644 index 00000000000..b5e53295b37 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=lesson_7 + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete similarity index 75% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete index bbf3736c545..85cb5ffe588 100644 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.concrete @@ -1,4 +1,3 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DEF=imp DEFDIR=concrete KOMPILED=$(DEFDIR)/$(DEF)-kompiled @@ -6,8 +5,7 @@ EXT=imp KOMPILE_FLAGS+=--gen-glr-bison-parser --enable-search KRUN_FLAGS=--output none -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../include/kframework/ktest.mak tests/div.imp: kompile diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof new file mode 100644 index 00000000000..e685b969d20 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/Makefile.proof @@ -0,0 +1,9 @@ +DEF=imp +DEFDIR=proof +EXT=imp +KOMPILE_BACKEND=haskell +KRUN_FLAGS=--output none +TESTDIR=tests/proofs + +include ../../../../../../include/kframework/ktest.mak +KPROVE_OR_LEGACY=$(KPROVE) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/imp.k b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/imp.k similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/imp.k rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/imp.k diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/collatz.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/collatz.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/collatz.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/collatz.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/collatz.imp.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/div.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/div.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/div.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/div.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/div.imp.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/io.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/io.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp.in b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.in similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp.in rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.in diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/io.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/io.imp.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/locals.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/locals.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/locals.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_5/exercises/no-duplicate-declarations/tests/locals.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/locals.imp.out diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/primes.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/primes.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/primes.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/primes.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/primes.imp.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/proofs/sum-spec.k.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp.in b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.in similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/spawn.imp.in rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.in diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_7/exercises/abort/tests/spawn.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/spawn.imp.out diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum-io.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/tests/sum-io.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp.in b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.in similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp.in rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.in diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum-io.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum-io.imp.out diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/sum.imp b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_2/tests/sum.imp rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum.imp.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_4/tests/sum.imp.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/4_imp++/lesson_7/tests/sum.imp.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/Makefile new file mode 100644 index 00000000000..dea4f792a17 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=lesson_6 + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/Makefile similarity index 70% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/Makefile index 20718517ed7..21a5199e96c 100644 --- a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/Makefile +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/Makefile @@ -4,5 +4,4 @@ KOMPILE_FLAGS=--syntax-module LAMBDA KOMPILE_BACKEND?=haskell KRUN_FLAGS=--search --pattern " T:Type ... " --smt none -include ../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/lambda.k b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/lambda.k similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/lambda.k rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/lambda.k diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/composition.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/composition.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/composition.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/identity.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/identity.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/identity.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/identity.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/identity.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/if.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/if.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/if.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/letrec.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/letrec.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/letrec.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/nested-lets.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/nested-lets.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/nested-lets.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/nested-lets.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/nested-lets.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/plus.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/plus.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/plus.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/plus.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/plus.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-1-fails.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-1-fails.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-1-fails.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-1-fails.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-1-fails.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-2-fails.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-2-fails.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-2-fails.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/polymorphic-identity-2-fails.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/polymorphic-identity-2-fails.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-1.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-1.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-1.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-1.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-1.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-2.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-2.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-2.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/static-scoping-2.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/static-scoping-2.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-1.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-1.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-1.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-1.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-1.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-2.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-2.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-2.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-3.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-3.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-3.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-4.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-4.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-4.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_5.5/tests/tricky-4.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-4.lambda.out diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-5.lambda b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_4/tests/tricky-5.lambda rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda diff --git a/k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda.out b/k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda.out rename to k-distribution/tests/regression-new/pl-tutorial/1_k/5_types/lesson_6/tests/tricky-5.lambda.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/1_k/Makefile b/k-distribution/tests/regression-new/pl-tutorial/1_k/Makefile new file mode 100644 index 00000000000..ff3949e672c --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/1_k/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=1_lambda 2_imp 3_lambda++ 4_imp++ 5_types + +include ../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/Makefile similarity index 82% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/Makefile index d4671ec85c3..d39218687f2 100644 --- a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/Makefile +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/Makefile @@ -1,4 +1,3 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DEF=simple-untyped EXT=simple TESTDIR=tests/* @@ -6,8 +5,7 @@ KOMPILE_FLAGS=--enable-search KOMPILE_BACKEND?=llvm KRUN_FLAGS=--output none --smt none -include $(MAKEFILE_PATH)/../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../include/kframework/ktest.mak tests/threads/threads_05.simple: kompile cat $@.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled --search --bound 5 $(CHECK) $@.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/simple-untyped.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/simple-untyped.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/simple-untyped.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/simple-untyped.md diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/collatz.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/collatz.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/collatz.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/collatz.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/collatz.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/collatz.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/collatz.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/div-nondet.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/div-nondet.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/div-nondet.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/div-nondet.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/div-nondet.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/factorial.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/factorial.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/factorial.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/factorial.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/factorial.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/factorial.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/factorial.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/higher-order.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/higher-order.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/higher-order.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/higher-order.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/higher-order.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/matrix.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/matrix.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/matrix.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/matrix.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/matrix.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/matrix.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/matrix.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/nonterminating/dekker.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/nonterminating/dekker.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/nonterminating/dekker.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/nonterminating/dekker.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/sortings.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/sortings.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/sortings.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/sortings.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/sortings.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/diverse/sortings.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/diverse/sortings.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_01.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_01.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_01.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_01.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_01.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_02.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_02.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_02.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_02.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_02.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_03.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_03.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_03.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_03.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_03.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_04.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_04.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_04.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_04.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_04.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_05.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_05.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_05.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_05.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_05.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_06.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_06.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_06.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_06.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_06.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_07.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_07.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_07.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_07.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_07.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_08.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_08.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_08.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_08.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_08.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_09.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_09.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_09.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_09.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_09.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_10.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_10.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_10.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_10.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_10.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_11.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_11.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_11.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_11.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_11.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_12.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_12.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_12.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_12.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_12.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_13.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_13.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_13.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_13.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_13.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_14.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_14.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_14.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_14.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_14.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_15.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_15.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_15.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/exceptions/exceptions_15.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_01.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_01.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_01.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_01.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_01.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_02.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_02.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_02.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_02.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_02.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_04.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_04.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_04.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_04.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_04.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_05.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_05.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_05.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_05.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_05.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_06.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_06.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_06.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_06.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_06.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_06.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_06.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_07.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_07.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_07.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_07.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_07.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_07.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_07.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_09.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_09.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_09.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_09.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_09.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_10.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_10.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_10.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_10.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_10.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_11.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_11.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_11.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_11.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_11.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_12.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_12.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_12.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/break-continue/tests/threads/threads_12.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/1_untyped/tests/threads/threads_12.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile similarity index 50% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile index 43ad7669b00..3b2c8fda3c8 100644 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/Makefile @@ -1,4 +1,3 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DEF=simple-typed-static EXT=simple TESTDIR?=../programs/* @@ -6,5 +5,4 @@ RESULTDIR=tests KOMPILE_FLAGS=--enable-search KRUN_FLAGS=--pattern " .Bag " --smt none -include $(MAKEFILE_PATH)/../../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/simple-typed-static.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/simple-typed-static.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/simple-typed-static.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/simple-typed-static.md diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/collatz.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/collatz.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/collatz.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/collatz.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/dekker.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/dekker.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/dekker.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/dekker.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/div-nondet.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/div-nondet.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/div-nondet.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/div-nondet.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_01.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_01.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_01.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_01.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_02.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_02.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_02.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_02.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_03.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_03.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_03.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_03.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_04.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_04.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_04.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_04.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_05.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_05.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_05.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_05.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_06.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_06.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_06.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_06.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_07.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_07.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_07.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_07.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_08.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_08.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_08.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_08.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_09.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_09.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/no-duplicate-declarations/tests/exceptions_09.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_09.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_10.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_10.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_10.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_10.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_11.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_11.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_11.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_11.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_12.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_12.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_12.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_12.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_13.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_13.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_13.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_13.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_14.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_14.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_14.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_14.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_15.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_15.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions_15.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_15.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_16.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_16.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_16.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/exceptions_16.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/factorial.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/factorial.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/factorial.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/factorial.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/higher-order.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/higher-order.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/higher-order.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/higher-order.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/matrix.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/matrix.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/matrix.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/matrix.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/sortings.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/sortings.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/sortings.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/sortings.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_01.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_01.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_01.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_01.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_02.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_02.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_02.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_02.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_03.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_03.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_03.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_03.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_04.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_04.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_04.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_04.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_05.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_05.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_05.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_05.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_06.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_06.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_06.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_06.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_07.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_07.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_07.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_07.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_08.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_08.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_08.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_08.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_09.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_09.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_09.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_09.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_10.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_10.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_10.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_10.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_11.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_11.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_11.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_11.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_12.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_12.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads_12.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/1_static/tests/threads_12.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile similarity index 84% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile index f29919b7acf..fb9f892712b 100644 --- a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/Makefile @@ -1,4 +1,3 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DEF=simple-typed-dynamic EXT=simple TESTDIR?=../programs/* @@ -23,5 +22,4 @@ KRUN_FLAGS=--output none %/threads/threads_08.simple: kompile true -include $(MAKEFILE_PATH)/../../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/simple-typed-dynamic.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/simple-typed-dynamic.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/simple-typed-dynamic.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/simple-typed-dynamic.md diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/collatz.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/collatz.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/div-nondet.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/div-nondet.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/div-nondet.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/div-nondet.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_01.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_01.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_01.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_01.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_02.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_02.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_02.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_02.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_03.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_03.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_03.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_03.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_04.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_04.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_04.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_04.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_05.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_05.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_05.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_05.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_06.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_06.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_06.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_06.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_07.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_07.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/exceptions_07.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_07.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_08.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_08.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_08.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_08.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_09.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_09.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_09.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_09.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_10.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_10.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_10.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_10.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_11.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_11.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_11.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_11.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_12.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_12.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_12.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_12.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_13.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_13.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_13.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_13.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_14.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_14.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_14.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_14.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_15.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_15.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/exceptions/exceptions_15.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_15.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_16.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_16.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_16.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/exceptions_16.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/factorial.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/factorial.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/higher-order.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/higher-order.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/higher-order.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/higher-order.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/matrix.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/matrix.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/matrix.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/matrix.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/diverse/sortings.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/sortings.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_01.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_01.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_01.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_01.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_02.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_02.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_02.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_02.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_03.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_03.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_03.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_03.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_04.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_04.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_04.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_04.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_05.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_05.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/typed-exceptions/tests/threads_05.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_05.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_06.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_06.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_06.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_06.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.in diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_07.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_07.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_08.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_08.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_08.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_08.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_09.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_09.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/exercises/functions-with-throws/tests/threads_09.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_09.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_10.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_10.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_10.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_10.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_11.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_11.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_11.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_11.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_12.simple.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_12.simple.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/exercises/parameter-passing-styles/tests/threads/threads_12.simple.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/2_dynamic/tests/threads_12.simple.out diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/collatz.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/collatz.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/collatz.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/collatz.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/dekker.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/dekker.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/dekker.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/dekker.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/div-nondet.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/div-nondet.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/div-nondet.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/div-nondet.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/factorial.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/factorial.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/factorial.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/factorial.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/higher-order.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/higher-order.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/higher-order.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/higher-order.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/matrix.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/matrix.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/matrix.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/matrix.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/sortings.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/sortings.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/diverse/sortings.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/diverse/sortings.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_01.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_01.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_01.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_01.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_02.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_02.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_02.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_02.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_03.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_03.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_03.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_03.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_04.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_04.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_04.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_04.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_05.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_05.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_05.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_05.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_06.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_06.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_06.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_06.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_07.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_07.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_07.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_07.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_08.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_08.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_08.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_08.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_09.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_09.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_09.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_09.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_10.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_10.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_10.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_10.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_11.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_11.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_11.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_11.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_12.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_12.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_12.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_12.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_13.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_13.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_13.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_13.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_14.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_14.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_14.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_14.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_15.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_15.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/exceptions/exceptions_15.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_15.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_16.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_16.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_16.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/exceptions/exceptions_16.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_01.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_01.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_01.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_01.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_02.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_02.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_02.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_02.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_03.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_03.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_03.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_03.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_04.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_04.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_04.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_04.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_05.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_05.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_05.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_05.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_06.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_06.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_06.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_06.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_07.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_07.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_07.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_07.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_08.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_08.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_08.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_08.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_09.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_09.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_09.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_09.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_10.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_10.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_10.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_10.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_11.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_11.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_11.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_11.simple diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_12.simple b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_12.simple similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/2_typed/1_static/exercises/functions-with-throws/tests/threads/threads_12.simple rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/2_typed/programs/threads/threads_12.simple diff --git a/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/Makefile new file mode 100644 index 00000000000..d0b33e79308 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/1_simple/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=1_untyped 2_typed/1_static 2_typed/2_dynamic + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/Makefile new file mode 100644 index 00000000000..3f8c5c069ca --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/Makefile @@ -0,0 +1,8 @@ +DEF=kool-untyped +EXT=kool +KRUN_FLAGS=--output none + +%/threads.kool: kompile + true + +include ../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/kool-untyped.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/kool-untyped.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/kool-untyped.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/kool-untyped.md diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/cast-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/constructor.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/constructor.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/constructor.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/constructor.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-3.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-3.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-3.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/dynamic-dispatch-3.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/exceptions-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/factorial.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/factorial.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/factorial.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/factorial.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/failing/cycle.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/failing/cycle.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/failing/cycle.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/failing/cycle.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field-shadowing-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/field.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/hello-world.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/hello-world.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/hello-world.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/hello-world.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/instanceOf.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/instanceOf.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/instanceOf.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/instanceOf.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/matrix.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/matrix.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/matrix.kool.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/matrix.kool.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.in diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/matrix.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/matrix.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/method-sharing.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/method-sharing.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/method-sharing.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/method-sharing.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new-in-field.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new-in-field.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new-in-field.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new-in-field.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new-in-field.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new-in-field.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new-in-field.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new-in-field.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/new.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/odd-even.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/odd-even.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/odd-even.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/odd-even.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/point.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/point.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/point.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/point.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/return-object.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/return-object.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/return-object.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/return-object.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/sorting.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/sorting.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/sorting.kool.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/sorting.kool.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.in diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/sorting.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/sorting.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-3.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-3.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-3.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/super-3.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-explicit.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-explicit.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-explicit.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-explicit.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-implicit.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-implicit.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-implicit.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/this-implicit.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/threads.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/threads.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/threads.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/tree-sum.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/tree-sum.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/tree-sum.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/tree-sum.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/Makefile new file mode 100644 index 00000000000..b5a4f6e948b --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/Makefile @@ -0,0 +1,12 @@ +DEF=kool-typed-dynamic +EXT=kool +KRUN_FLAGS=--output none +TESTDIR?=../programs +RESULTDIR=tests + +%/cycle.kool: kompile + true +%/threads.kool: kompile + true + +include ../../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/kool-typed-dynamic.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/kool-typed-dynamic.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/kool-typed-dynamic.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/kool-typed-dynamic.md diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/cast-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/cast-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/collatz.kool.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/collatz.kool.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.in diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/collatz.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/collatz.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/collatz.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/constructor.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/constructor.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/constructor.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-3.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/dynamic-dispatch-3.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/dynamic-dispatch-3.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/exceptions-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/exceptions-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/factorial.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/factorial.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/factorial.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field-shadowing-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field-shadowing-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/field.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/field.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/function-types.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/function-types.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/function-types.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/function-types.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/hello-world.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/hello-world.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/hello-world.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/instanceOf.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/instanceOf.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/instanceOf.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.in diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/matrix.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/matrix.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/method-sharing.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/method-sharing.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/method-sharing.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/new.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/new.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/new.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/odd-even.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/odd-even.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/odd-even.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/point.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/point.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/point.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/return-object.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/return-object.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/return-object.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.in b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.in similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.in rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.in diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/sorting.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/sorting.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-3.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/super-3.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/super-3.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-explicit.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-explicit.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-explicit.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-implicit.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/this-implicit.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/this-implicit.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/threads.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/threads.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/exercises/private-members/tests/threads.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/threads.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/tree-sum.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/1_untyped/tests/tree-sum.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/tests/tree-sum.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile similarity index 72% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile index 47623b7e165..486f2d0272c 100644 --- a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/Makefile @@ -1,4 +1,3 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DEF=kool-typed-static EXT=kool KOMPILE_FLAGS=--enable-search @@ -12,5 +11,4 @@ RESULTDIR=tests %/return-object.kool: kompile true -include $(MAKEFILE_PATH)/../../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/kool-typed-static.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/kool-typed-static.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/kool-typed-static.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/kool-typed-static.md diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cast-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cast-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cast-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cast-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cast-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/collatz.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/collatz.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/collatz.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/collatz.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/constructor.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/constructor.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/constructor.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/constructor.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cycle.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cycle.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/cycle.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/cycle.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-3.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-3.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/dynamic-dispatch-3.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/dynamic-dispatch-3.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/exceptions-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/exceptions-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/exceptions-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/exceptions-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/exceptions-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/factorial.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/factorial.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/factorial.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/factorial.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field-shadowing-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field-shadowing-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field-shadowing-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field-shadowing-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field-shadowing-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/field.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/field.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/function-types.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/function-types.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/function-types.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/function-types.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/hello-world.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/hello-world.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/hello-world.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/hello-world.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/instanceOf.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/instanceOf.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/instanceOf.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/instanceOf.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/matrix.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/matrix.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/matrix.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/matrix.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/method-sharing.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/method-sharing.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/method-sharing.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/method-sharing.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/new.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/new.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/new.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/new.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/odd-even.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/odd-even.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/odd-even.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/odd-even.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/point.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/point.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/point.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/point.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/return-object.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/return-object.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/return-object.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/return-object.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/sorting.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/sorting.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/sorting.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/sorting.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-1.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-1.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-1.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-1.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-2.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-2.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-2.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-2.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-3.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-3.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/super-3.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/super-3.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/this-explicit.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/this-explicit.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/this-explicit.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/this-explicit.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/this-implicit.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/this-implicit.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/this-implicit.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/this-implicit.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/threads.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/threads.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/threads.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/threads.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/tree-sum.kool.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/tree-sum.kool.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/2_static/exercises/private-members/tests/tree-sum.kool.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/2_static/tests/tree-sum.kool.out diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cast-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/cast-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cast-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/cast-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cast-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/cast-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cast-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/cast-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/collatz.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/collatz.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/collatz.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/collatz.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/constructor.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/constructor.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/constructor.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/constructor.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cycle.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/cycle.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/cycle.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/cycle.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-3.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-3.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/dynamic-dispatch-3.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/dynamic-dispatch-3.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/exceptions-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/exceptions-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/factorial.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/factorial.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/factorial.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/factorial.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field-shadowing-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field-shadowing-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field-shadowing-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field-shadowing-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/field-shadowing-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/field.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/field.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/field.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/function-types.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/function-types.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/function-types.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/function-types.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/hello-world.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/hello-world.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/hello-world.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/hello-world.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/instanceOf.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/instanceOf.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/instanceOf.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/instanceOf.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/matrix.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/matrix.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/matrix.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/matrix.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/method-sharing.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/method-sharing.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/method-sharing.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/method-sharing.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/new.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/new.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/new.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/new.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/odd-even.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/odd-even.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/odd-even.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/odd-even.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/point.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/point.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/point.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/point.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/return-object.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/return-object.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/return-object.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/return-object.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/sorting.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/sorting.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/sorting.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/sorting.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-1.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/super-1.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-1.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/super-1.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-2.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/super-2.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-2.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/super-2.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-3.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/super-3.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/super-3.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/super-3.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/this-explicit.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/this-explicit.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/this-explicit.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/this-explicit.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/this-implicit.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/this-implicit.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/this-implicit.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/this-implicit.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/threads.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/threads.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/threads.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/threads.kool diff --git a/k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/tree-sum.kool b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/tree-sum.kool similarity index 100% rename from k-distribution/pl-tutorial/2_languages/2_kool/2_typed/1_dynamic/exercises/private-members/tests/tree-sum.kool rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/2_typed/programs/tree-sum.kool diff --git a/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/Makefile new file mode 100644 index 00000000000..5082e09f891 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/2_kool/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=1_untyped 2_typed/1_dynamic 2_typed/2_static + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile similarity index 67% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile index b74dc2e4440..c400d66884a 100644 --- a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/Makefile @@ -1,4 +1,3 @@ -MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DEF=fun-untyped EXT=fun TESTDIR?=../../programs @@ -9,5 +8,4 @@ KRUN_FLAGS?=--pattern " V:K " %/references-5.fun: kompile cat tests/references-5.fun.in 2>/dev/null | $(KRUN_OR_LEGACY) $@ --definition $(DEF)-kompiled --search --pattern " V:K " $(CHECK) tests/references-5.fun.out -include $(MAKEFILE_PATH)/../../../../find-k.mak -include ${K_HOME}/include/kframework/ktest.mak +include ../../../../../../../include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/fun-untyped.md b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/fun-untyped.md similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/fun-untyped.md rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/fun-untyped.md diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ackermann.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/ackermann.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ackermann.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/ackermann.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-3.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-3.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-3.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-3.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-4.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-4.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-4.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-4.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-5.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-5.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-5.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-5.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-efficient-with-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-inefficient-without.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-inefficient-without.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-inefficient-without.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-inefficient-without.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-looping.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-looping.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-looping.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-looping.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/callcc-return-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-bst-sorting.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-bst-sorting.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-bst-sorting.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-bst-sorting.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-days.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-days.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-days.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-days.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-distributivity.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-distributivity.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-distributivity.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-distributivity.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-toString.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-toString.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-toString.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-expr-toString.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-list-length.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-list-length.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-list-length.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-list-length.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-tree-mirror.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-tree-mirror.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-tree-mirror.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/constructor-tree-mirror.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/empty-argument-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/exceptions.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/exceptions.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/exceptions.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/exceptions.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial-and-list-max.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial-and-list-max.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial-and-list-max.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial-and-list-max.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/factorial.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-3.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-3.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-3.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-3.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-4.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-4.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-4.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-4.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-length.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-length.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-length.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-length.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-max.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-max.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-max.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-max.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-nth.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-nth.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/list-nth.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/nth.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/nth.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/nth.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/nth.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/pattern.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/pattern.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/pattern.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/pattern.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-3.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-3.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-3.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-3.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-4.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-4.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-4.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-4.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-5.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-5.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-5.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-5.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-6.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-6.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-6.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/polymorphism-6.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-3.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-3.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-3.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-3.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-4.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-4.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-4.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-4.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-5.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-5.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/letstar/tests/references-5.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/references-5.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/stuck-letrec.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/stuck-letrec.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/stuck-letrec.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/stuck-letrec.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tail-recursion.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tail-recursion.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tail-recursion.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tail-recursion.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-1.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-1.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-1.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-1.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-2.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-2.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-2.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-2.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-3.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-3.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-3.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-3.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-4.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-4.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-4.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-4.fun.out diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-5.fun.out b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-5.fun.out similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-5.fun.out rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/tests/tuple-5.fun.out diff --git a/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/Makefile new file mode 100644 index 00000000000..a5589b61cce --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=1_untyped/1_environment + +include ../../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ackermann.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/ackermann.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/ackermann.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/ackermann.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-3.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-3.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-3.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-3.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-4.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-4.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-4.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-4.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-5.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-5.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-5.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-5.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-efficient-with-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-efficient-with-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-inefficient-without.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-inefficient-without.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-inefficient-without.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-inefficient-without.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-looping.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-looping.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-looping.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-looping.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-return-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-return-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-return-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/callcc-return-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/callcc-return-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-bst-sorting.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-bst-sorting.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-bst-sorting.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-bst-sorting.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-days.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-days.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-days.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-days.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-distributivity.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-expr-distributivity.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-distributivity.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-expr-distributivity.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-toString.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-expr-toString.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-expr-toString.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-expr-toString.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-list-length.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-list-length.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-list-length.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-list-length.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-tree-mirror.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-tree-mirror.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/constructor-tree-mirror.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/constructor-tree-mirror.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/empty-argument-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/empty-argument-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/empty-argument-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/empty-argument-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/empty-argument-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/exceptions.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/exceptions.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/exceptions.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/exceptions.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial-and-list-max.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/factorial-and-list-max.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial-and-list-max.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/factorial-and-list-max.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/factorial.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/factorial.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/factorial.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-3.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-3.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-3.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-3.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-4.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-4.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-4.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-4.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-length.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-length.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-length.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-length.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-max.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-max.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-max.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-max.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-nth.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-nth.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/list-nth.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/list-nth.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/nth.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/nth.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/nth.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/nth.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/pattern.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/pattern.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/pattern.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/pattern.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-3.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-3.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-3.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-3.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-4.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-4.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-4.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-4.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-5.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-5.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-5.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-5.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-6.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-6.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/polymorphism-6.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/polymorphism-6.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-3.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-3.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-3.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-3.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-4.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-4.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-4.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-4.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-5.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-5.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/references-5.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/references-5.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/stuck-letrec.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/stuck-letrec.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/stuck-letrec.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/stuck-letrec.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tail-recursion.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tail-recursion.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tail-recursion.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tail-recursion.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-1.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-1.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-1.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-1.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-2.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-2.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-2.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-2.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-3.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-3.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-3.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-3.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-4.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-4.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-4.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-4.fun diff --git a/k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-5.fun b/k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-5.fun similarity index 100% rename from k-distribution/pl-tutorial/2_languages/3_fun/1_untyped/1_environment/exercises/io/tests/tuple-5.fun rename to k-distribution/tests/regression-new/pl-tutorial/2_languages/3_fun/programs/tuple-5.fun diff --git a/k-distribution/tests/regression-new/pl-tutorial/2_languages/Makefile b/k-distribution/tests/regression-new/pl-tutorial/2_languages/Makefile new file mode 100644 index 00000000000..93f4342f200 --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/2_languages/Makefile @@ -0,0 +1,3 @@ +SUBDIRS=1_simple 2_kool 3_fun + +include ../../../../include/kframework/ktest-group.mak diff --git a/k-distribution/tests/regression-new/pl-tutorial/Makefile b/k-distribution/tests/regression-new/pl-tutorial/Makefile new file mode 100644 index 00000000000..855b66fbdee --- /dev/null +++ b/k-distribution/tests/regression-new/pl-tutorial/Makefile @@ -0,0 +1,2 @@ +SUBDIRS=1_k 2_languages +include ../../../include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/Makefile b/k-distribution/tests/smoke/Makefile similarity index 54% rename from k-distribution/pl-tutorial/Makefile rename to k-distribution/tests/smoke/Makefile index a7a1a4def69..7c3d53f7ac9 100644 --- a/k-distribution/pl-tutorial/Makefile +++ b/k-distribution/tests/smoke/Makefile @@ -1,4 +1,4 @@ -SUBDIRS=1_k 2_languages +SUBDIRS=$(filter-out Makefile find-k.mak imp.k, $(wildcard *)) include ./find-k.mak include ${K_HOME}/include/kframework/ktest-group.mak diff --git a/k-distribution/pl-tutorial/find-k.mak b/k-distribution/tests/smoke/find-k.mak similarity index 79% rename from k-distribution/pl-tutorial/find-k.mak rename to k-distribution/tests/smoke/find-k.mak index d557cd07ed5..fcc65ae574f 100644 --- a/k-distribution/pl-tutorial/find-k.mak +++ b/k-distribution/tests/smoke/find-k.mak @@ -1,6 +1,6 @@ MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -ifneq (,$(wildcard ${MAKEFILE_PATH}/../../../include/kframework/ktest.mak)) -export K_HOME?=${MAKEFILE_PATH}/../../../ +ifneq (,$(wildcard ${MAKEFILE_PATH}/../../include/kframework/ktest.mak)) +export K_HOME?=${MAKEFILE_PATH}/../../ else ifneq (,$(wildcard ${MAKEFILE_PATH}/../include/kframework/ktest.mak)) export K_HOME?=${MAKEFILE_PATH}/.. else ifneq (,$(wildcard /usr/include/kframework/ktest.mak)) diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/imp.k b/k-distribution/tests/smoke/imp.k similarity index 69% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/imp.k rename to k-distribution/tests/smoke/imp.k index 2958a24d561..35c69649bb1 100644 --- a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_1/imp.k +++ b/k-distribution/tests/smoke/imp.k @@ -2,13 +2,10 @@ module IMP-SYNTAX imports DOMAINS-SYNTAX - syntax AExp ::= Int | String | Id - | "++" Id - | "read" "(" ")" - // remove division tag when we have proper search strategies + syntax AExp ::= Int | Id | "-" Int + | AExp "/" AExp [left, strict] | "(" AExp ")" [bracket] - > AExp "/" AExp [left, strict, group(division)] > AExp "+" AExp [left, strict] syntax BExp ::= Bool | AExp "<=" AExp [seqstrict, latex({#1}\leq{#2})] @@ -22,15 +19,9 @@ module IMP-SYNTAX | "if" "(" BExp ")" Block "else" Block [strict(1)] | "while" "(" BExp ")" Block - | "int" Ids ";" - | "print" "(" AExps ")" ";" - | "halt" ";" - > "spawn" Stmt > Stmt Stmt [left] - - syntax Ids ::= List{Id,","} [klabel(exps)] - syntax AExps ::= List{AExp,","} [klabel(exps)] - syntax AExps ::= Ids + syntax Pgm ::= "int" Ids ";" Stmt + syntax Ids ::= List{Id,","} endmodule @@ -40,7 +31,7 @@ module IMP syntax KResult ::= Int | Bool configuration - $PGM:Stmt + $PGM:Pgm .Map @@ -48,7 +39,7 @@ module IMP rule X:Id => I ... ... X |-> I ... rule I1 / I2 => I1 /Int I2 requires I2 =/=Int 0 rule I1 + I2 => I1 +Int I2 - rule - I => 0 -Int I + rule - I1 => 0 -Int I1 // BExp rule I1 <= I2 => I1 <=Int I2 rule ! T => notBool T @@ -63,9 +54,12 @@ module IMP rule if (true) S else _ => S rule if (false) _ else S => S rule while (B) S => if (B) {S while (B) S} else {} - - rule int (X,Xs => Xs); ... - Rho (.Map => X |-> 0) +// Pgm + rule int (X,Xs => Xs);_ Rho:Map (.Map => X|->0) requires notBool (X in keys(Rho)) - rule int .Ids; => . + rule int .Ids; S => S + +// verification ids + syntax Id ::= "n" [token] + | "sum" [token] endmodule diff --git a/k-distribution/tests/smoke/kast-test/Makefile b/k-distribution/tests/smoke/kast-test/Makefile new file mode 100644 index 00000000000..3d9905c3582 --- /dev/null +++ b/k-distribution/tests/smoke/kast-test/Makefile @@ -0,0 +1,7 @@ +DEF=kast-in +EXT=kast-in +TESTDIR=. +KAST_FLAGS=--expand-macros --input kast --output pretty --no-substitution-filtering + +include ../find-k.mak +include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/tests/smoke/kast-test/kast-in.k b/k-distribution/tests/smoke/kast-test/kast-in.k new file mode 100644 index 00000000000..7a85329c5e8 --- /dev/null +++ b/k-distribution/tests/smoke/kast-test/kast-in.k @@ -0,0 +1,15 @@ +// Copyright (c) Runtime Verification, Inc. All Rights Reserved. + +module KAST-IN-SYNTAX + imports INT-SYNTAX + imports ML-SYNTAX + + syntax Pgm ::= init ( Int ) [macro] + rule init(0) => { 3 #Equals 4 } + rule init(1) => { 3 #Equals 3 } +endmodule + +module KAST-IN + imports KAST-IN-SYNTAX + configuration $PGM:Pgm +endmodule diff --git a/k-distribution/tests/smoke/kast-test/kast-in1.kast b/k-distribution/tests/smoke/kast-test/kast-in1.kast new file mode 100644 index 00000000000..71b39745ac6 --- /dev/null +++ b/k-distribution/tests/smoke/kast-test/kast-in1.kast @@ -0,0 +1,2 @@ +#Equals(#token("3","Int"),#token("4","Int")) + diff --git a/k-distribution/tests/smoke/kast-test/kast-in1.kast.out b/k-distribution/tests/smoke/kast-test/kast-in1.kast.out new file mode 100644 index 00000000000..a31c87355da --- /dev/null +++ b/k-distribution/tests/smoke/kast-test/kast-in1.kast.out @@ -0,0 +1,5 @@ +{ + 3 +#Equals + 4 +} diff --git a/k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple.out b/k-distribution/tests/smoke/kparse-test/1.test.kparse similarity index 100% rename from k-distribution/pl-tutorial/2_languages/1_simple/1_untyped/tests/exceptions/exceptions_15.simple.out rename to k-distribution/tests/smoke/kparse-test/1.test.kparse diff --git a/k-distribution/tests/smoke/kparse-test/1.test.kparse.out b/k-distribution/tests/smoke/kparse-test/1.test.kparse.out new file mode 100644 index 00000000000..95faa60561c --- /dev/null +++ b/k-distribution/tests/smoke/kparse-test/1.test.kparse.out @@ -0,0 +1 @@ +\dv{SortInt{}}("1") \ No newline at end of file diff --git a/k-distribution/tests/smoke/kparse-test/Makefile b/k-distribution/tests/smoke/kparse-test/Makefile new file mode 100644 index 00000000000..331aa3ef96a --- /dev/null +++ b/k-distribution/tests/smoke/kparse-test/Makefile @@ -0,0 +1,7 @@ +DEF=test +EXT=test +TESTDIR=. +KOMPILE_FLAGS=--syntax-module TEST + +include ../find-k.mak +include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/tests/smoke/kparse-test/test.k b/k-distribution/tests/smoke/kparse-test/test.k new file mode 100644 index 00000000000..3df9a6b66a0 --- /dev/null +++ b/k-distribution/tests/smoke/kparse-test/test.k @@ -0,0 +1,15 @@ +// Copyright (c) Runtime Verification, Inc. All Rights Reserved. +module TEAL-SYNTAX + import INT-SYNTAX +endmodule + +module TEST-SYNTAX + imports TEAL-SYNTAX +endmodule + +module TEST + imports TEAL-SYNTAX + + configuration + $PGM:Int +endmodule diff --git a/k-distribution/tests/smoke/kprove-test/Makefile b/k-distribution/tests/smoke/kprove-test/Makefile new file mode 100644 index 00000000000..5360ac7c503 --- /dev/null +++ b/k-distribution/tests/smoke/kprove-test/Makefile @@ -0,0 +1,7 @@ +DEF=../imp +EXT=imp +TESTDIR=. +KOMPILE_BACKEND=haskell + +include ../find-k.mak +include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/tests/smoke/kprove-test/max-spec.k b/k-distribution/tests/smoke/kprove-test/max-spec.k new file mode 100644 index 00000000000..740107ce3bb --- /dev/null +++ b/k-distribution/tests/smoke/kprove-test/max-spec.k @@ -0,0 +1,33 @@ +// Copyright (c) Runtime Verification, Inc. All Rights Reserved. +/* +*/ + +module VERIFICATION + imports IMP + + syntax Id ::= "a" [token] + syntax Id ::= "b" [token] + syntax Id ::= "max" [token] +endmodule + + +module MAX-SPEC [one-path] + imports VERIFICATION + imports IMP + + claim + +if (a <= b) +{ max = b; } +else +{ max = a; } +=> .K + + + a |-> A:Int + b |-> B:Int + max |-> (_ => ?M:Int) + + ensures (A >=Int B andBool ?M ==Int A) orBool (B >=Int A andBool ?M ==Int B) + +endmodule diff --git a/k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/max-spec.k.out b/k-distribution/tests/smoke/kprove-test/max-spec.k.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/4_imp++/lesson_8/tests/proofs/max-spec.k.out rename to k-distribution/tests/smoke/kprove-test/max-spec.k.out diff --git a/k-distribution/tests/smoke/krun-test/Makefile b/k-distribution/tests/smoke/krun-test/Makefile new file mode 100644 index 00000000000..582a698d93f --- /dev/null +++ b/k-distribution/tests/smoke/krun-test/Makefile @@ -0,0 +1,7 @@ +DEF=../imp +EXT=imp +TESTDIR=. +KOMPILE_BACKEND=llvm + +include ../find-k.mak +include ${K_HOME}/include/kframework/ktest.mak diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/sum.imp b/k-distribution/tests/smoke/krun-test/sum.imp similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_3/tests/sum.imp rename to k-distribution/tests/smoke/krun-test/sum.imp diff --git a/k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp.out b/k-distribution/tests/smoke/krun-test/sum.imp.out similarity index 100% rename from k-distribution/pl-tutorial/1_k/2_imp/lesson_4/tests/sum.imp.out rename to k-distribution/tests/smoke/krun-test/sum.imp.out diff --git a/package/test-package b/package/test-package index 6c4ae1f0bcb..ddc03a07fc9 100755 --- a/package/test-package +++ b/package/test-package @@ -1,10 +1,10 @@ #!/bin/sh -ex -cp -r /usr/share/kframework/pl-tutorial ~ +cp -r `pwd`/k-distribution/tests/smoke ~ WD=`pwd` cd echo 'Starting kserver...' spawn-kserver $WD/kserver.log -cd pl-tutorial +cd smoke echo 'Testing tutorial in user environment...' make -j`nproc` make clean