Website: https://n-alex-goncalves.github.io/TuringMachineLambdaCalculusInterpreter/
This is a web application that provides an interpreter for simulating and translating between the lambda calculus system and Turing machines. The application can translate in both directions, converting from the weak lambda calculus to the multi-tape Turing machine, or from the single-tape Turing machine to the weak lambda calculus.
The methods used for these translations are based on those outlined by Dal Lago and Martini in their paper "The Weak Lambda Calculus as a Reasonable Machine".
- Built in HTML/CSS/JavaScript
- User Interface built with Bootstrap, JQuery, JQuery Terminal and FullPages
- Tested using Jest and Node.JS
- In the
Single-Tape TM Interpreter
, run a TM using either an example in the drop-down list or create a TM of your own - In the
Lambda Calculus Interpreter
, enter 'T' to denote the beginning of the TM as a lambda term - In the
Lambda Calculus Interpreter
, enter to the right of 'T' the tape you want to run (e.g., T1011 to run the tape 1011) - Run the
Lambda Calculus Interpreter
- In the
Lambda Calculus Interpreter
, enter the lambda calculus term being converted - In the
Multi-Tape TM Interpreter
, the lambda calculus term entered in theLambda Calculus Interpreter
should now be converted into its Dal Lago and Martini notation - Run the
Multi-Tape TM Interpreter
- The tape of the interpreter at the halting state will be the weak head normal form of the lambda calculus term in Dal Lago and Martini notation
lambda_calculus_interpreter.js
: The lambda calculus system and the interpreter for running and reducing the lambda calculus termssingle_tape_TM_interpreter.js
: The TM and its interpreter for running the TMmulti_tape_TM_interpreter.js
: The multi-tape interpreter used to simulatie the lambda calculus in the multi-tape TM interpretersimulation_TM_to_lambda_calculus.js
: The functions necessary to convert the single-tape TM into a lambda calculus term
Thanks go to the following authors/resources for their help and guidance:
jQuery
jQuery Terminal
BootStrap
fullPage.js
Chad Palmer
Tadeu Zagallo