 Yes, so far I have discussed in Turing machines the Turing acceptable languages, Turing computable functions and to construct Turing machines as for using the Turing machines that you have already constructed, some composite Turing machines so far we have discussed. So, you know the standard Turing machine, definition of Turing machine and what is Turing acceptable language, Turing computable functions, in Turing machines we have discussed these two concepts and we have constructed Turing machines, some little more complicated using composition of Turing machines that we have introduced the concept of composition of Turing machines combining Turing machines we have discussed. Now, in case of Turing computable functions for multi input Turing computable functions also I have discussed, in particular computing with natural numbers also I have introduced where natural numbers will be considered in the unary representation that means, natural numbers for one element alphabet that singleton I star, here the correspondence is 0 is empty string and each number n is instead to be i power n, this is the string we consider and we give the input to the Turing machine. So, these are the things that I have already introduced, now let me talk about another concept that is Turing decidable languages, Turing decidable languages, here Turing acceptable languages we have already named them as recursively enumerable languages, this is recursively enumerable and in this case we called this is recursive languages, the recursive languages Turing decidable languages, now first let me define what is that the definition a language L or some alphabet let me write or an alphabet sigma naught is said to be Turing decidable, is said to be Turing decidable if its characteristic function, its characteristic function let me write that as chi L, this is from sigma naught star to 0 1 or I can essentially take two symbols here talking about S or no, this chi L that is defined by this characteristic function you know the definition, any string you take you will give 1 if that string is in L 0 else. So, the string if it is in L we are giving 1 I may you may put say S or no sort of for 0 you can take the symbol no n and for 1 you can take y and you can assign accordingly. So, this characteristic function is Turing computable, so a language is Turing decidable if its characteristic function is Turing computable that means, you give a string from sigma naught star as an input to a Turing machine which computes this chi L, if x is in L that returns 1 if x is not in L then it returns 0 that means, essentially it decides it says whether a particular string from the alphabet whether over an alphabet whether it is in the language or not in the language this is a decision making Turing machine. Let me give you an example you know the Turing computable means we should have a Turing machine computing this function a very simple example that you know if you consider the language set of all strings say over a b such that the length of x is even you know this is a regular language for some natural number m. So, length is even this is a Turing decidable language how do we say this we have to construct a Turing machine if you give x as an input any x from over a b it has to say 1 or 0 it has to say s or no. Let me construct a Turing machine for that purpose, so to start with because as earlier we give the input in this form any string you give if x is in L this returns 1 if x is in L this returns 0 if else if x is not in L this is what is the expectation. So, we will start with the reading and writing at here and this termites with this, so if this is the input given you take a left move and you have to understand whether it is of even length that is a cross checker. So, you will be switching between because you know the fire rate automaton accepting an even length string you will be switching between two states you will be having two states if it is in the initial state when in the first state that you are accepting if it is in the second state you are rejecting. So, that is how you are you are constructing finite automaton. So, let us construct the Turing machine following that logic, so first you take a left move and a cross check whether it is blank or not blank. So, there are two situations if this is blank I am coming to this place if it is not blank let me now see what is the next symbol that means I will go left. So, now if this is blank that means I have odd length. So, this is one situation if it is not blank further I will go to left and a cross check what is happening with this. So, now in the first place when you get the blank you know clearly that is empty string and therefore, you can accept it. So, you take a right move and print one and take a right move and halt if this is the place when you are getting blank that means after one symbol you are reaching to this and you are going to left move that means if one length string is there then after that we are reaching this blank. So, at this place you will print 0 in the next and take a right move and halt. Now, for even length we will always be getting empty symbol here for odd length strings we are always be getting empty symbol at this location after taking this left move and ultimately you are getting this printing 0 if it is odd length printing 1 if it is even length. Let me just demonstrate this to an example for example you have empty string as input if this is the input then that means you are giving this is the input format for the empty string and you take a left move here and since it is blank here it takes one right move. So, that means you are cross checking and this will be transformed. So, you are taking one left move and then take a right move at this place you print one and take a right move and halt here. So, this is accepting if you take for example the string a this is one length string for this how the computation. So, the input is given in this format input is given in this format now take a left move cross check this is not blank. So, I will take one more left move at this place I have got blank. So, then take a right move here print 0 and take a right move and halt. So, this will be transformed to 0 this. So, that means the string is rejected now let me consider the input a b let me consider the input a b in this machine what is happening a b is considered with the input format like this how this will be transformed that is a question now. So, from here first left move will it will take left move and it will come here it is not blank it will take another left move this is not blank and now take another left move you are getting blank here. So, this is since it is even length string when you are getting blank you are at this position at this position you are coming to this branch. So, it takes now a right move print one and take a right move what is happening now you have to cross check this situation. So, the thing is this from here you are taking a right move take one take right move. So, at this place you have b and it halts here of course you have several blanks here. So, we are not going to represent this. So, we are the our target is to prepare you know the output in this format. So, when I am giving empty string when I am giving one length string I am getting appropriately 1 and 0, but if I have more than one length string if I have more than one length string then what is happening it is printing 1 and it is halting in the next symbol where this is not blank. So, simultaneously when we are reading you arise this you arise the symbols because that is not happening here you arise this and ultimately that machine will give you the appropriate output. So, the modifications in this machine now if you have more than one length string the symbols are lying over there. So, let us modify this way take a left move take a left move and check whether this is non-empty if it is non-empty then print blank then take a left move. Now, if it is blank then as earlier if it is not blank sigma not equal to blank then print blank there take a left move. Now, this continues as earlier. So, if it is blank take a right move print 1 take right move here print 0 take a right move. Now, what is happening with this what are the input that we are giving as long as we are getting non-empty symbols here non-empty symbols here then it is that particular cell it is we are making it blank then taking a left move again if you are having non-empty here non-blank then you are making the particular cell blank then you are taking a left move. So, keep doing this now while coming from this place to this place we are visiting each and every symbol and you are cross checking whether it is empty or not if it is blank if it is blank that means you are coming to this place. So, what you have to do here at this place we are making them blank. So, while coming you are making this blank you are coming to till this end take a right move you print appropriately 1 and take a right move and halt here. So, this is how we can construct a decider this is a Turing machine that halts that halts on any input by printing yes or no. Now, let me take one more example if I consider the language such that palindromes. Now, this is a regular language for which we have finite automaton this is a context free language for which you have a push down automaton you have constructed those things and for this I hope you have constructed Turing machine to show this is a Turing acceptable language. Now, a decider let us look at a decider for this purpose. So, the mechanism you know as earlier this is say a 1 a 2 a n what did we do we are reading this symbol and cross checking with this symbol and going to this point reading this symbol cross checking with this symbol and so on. At that point of time what did we do we have arrest this and we have arrest this after cross checking when the match is there we are continuing further n minus 1 a n minus 1 whether it is equal to a 2 we are cross checking we are arising and continuing like this. In the middle if till this middle if you continue and if the matching is happening we are declaring that it is a palindrome. Otherwise we are going to you know left keep going to left move and hanging the machine or we are going to the infinite loop that is how we have constructed to show this language is Turing acceptable language the palindromes. But, here when I am finding that proper match at every stage that means if it is a palindrome I am somewhere on the tape in between. Now, how do we recognize that you know to give the output of this format whether it is 1 or 0 because when the input is given this way we have to leave either 0 or 1 s or no. So, when I am finding the situation when I am finding the mismatch by the time if I have made certain blank symbols here if I have made certain blank symbols here somewhere mismatch if it is happening I am not clear that how many cells I have to go left and where exactly you know I have to print in the second cell 0 or 1. Because once you made certain cells blank we will not be clear where exactly you are because there is no counting business here to understand that yes this many blanks are there I will go back and do that we are not cross checking that. So, what we have to do in the beginning before arising this tape whatever in the beginning what you do you first print some special symbol and then once you do this cross checking wherever the mismatch happens of course, you arrange everything and then you have to and then you come to this place and print 0 if there is match till the end of the story then what you do you come to this and take a right move and print 1. So, this is how the decider can be given here this is one important point one has to understand if you arrange certain symbols here if certain number of blanks are created and after cross checking the input if there is a match or mismatch we will not be clear that to what extent you have to go to left and print 1 or 0. So, for that purpose first we have to print at this place some special symbol. So, that what are the rest of the business as earlier we can continue. So, what we do from here I will come to this blank that means a lash. So, you come to this place you print a special symbol there say for example, dollar I am printing here now the situation is at this place I have dollar and dollar is not part of this input and thus you can distinguish the symbols between these two. Now, maybe you can start from here this symbol you can cross check with this and keep cross checking. So, take a right move now sigma that is not blank if that is not blank then you can print blank here print blank. Now, I have arranged this place I will go to this end and cross check whether with this symbol they are equal or not. So, what I have to do after printing blank here I go to this blank that is r hash then take a left move I am coming to this position and now here you cross check what is that symbol whether it is sigma. So, if the same sigma is occurring here then I am happy you print blank there you print blank there now come to this blank and then take a right move. So, here you print blank once you print blank then you can take a Lash come to this place and then take a right move. So, at this position we have to connect look here this is a composite mission this is not pointing to this entire mission if it is pointing to the entire mission that means it is actually starting from here, but the situation here is it is not pointing to the entire mission I am just pointing to this component that means after this I have to just pursue right move. So, take a right move and see if it is not equal to blank then you print blank here again then go till the end because we have already made blank here now I have say a n minus 1 is available then take a left move here if it is a 2 is matching with a n minus 1 then print blank then come back to this and keep doing this. This is the logic we have followed to cross check this language is doing acceptable the rest of the things are same. Now, here in the beginning suppose you have empty that means that means this is a symbol that you have here this is the string you know even length string that is a palindrome. So, in which situation you get blank here when you take a right move you get blank here we are just to distinguish may be after right move you get blank after right move if you get blank then of course this is an accepting situation. Now, you have consume one symbol here and then when you take a left move when you are getting the same symbol that is a non empty symbol then you are arising it and continuing. Now, here there are two situations one you get a blank symbol or some non empty non empty symbol some non blank symbol that is different from sigma. So, there are two situations in one situation you have to accept it in another situation you have to reject it. So, what do I do when you have this is here blank when you have here blank then you will accept that is an odd length a palindrome and in the situation that is different from sigma and it is not blank also if this is the situation. Now, here we have to reject. So, these are the situations that arise now when I am getting blank in the beginning we know left of this if you have arise certain symbols they are all arise. So, you simply go to this dollar this dollar you can convert it to blank and take a right move print 1 and accept this is a situation even in this case also the similar machine can be connected, but in this case we have to arise whatever is the left over input when the mismatch is happening if it is not sigma if it is not blank that means some other non blank symbol is available in which situation whatever left to this we have to arise it and then you have to you have to print you have to print 0. So, here this is easy take L dollar that means you go till end of the tape left end of the tape there you print blank there you print blank take a right move here print 1 here print 1 and then take a right move and halt we are happy here. Similarly, if you receive this I can connect to the same machine go till L dollar print blank here then take a right move print blank here take a right move print 1 and take a right move and halt. So, this is the halting situation with the acceptance now when you want to reject there may be some more symbols on the tape first you have to erase them then go till dollar then take a right move because dollar you will make it blank take a right move there you print 0 which is not accepting. So, that means at this situation to reject the string you have to erase and go till dollar then you have to give the output in this format. So, this portion now I hope you understand what one has to do here at this portion you have to do this business the rest of the symbols you have to erase then go till dollar then print 0 finally as output. So, this particular machine like here whatever we have mentioned take an exercise and construct that particular component to give a decider for this language palindromes. So, a decider is one once again I emphasize you give any input from the desired alphabet you give any input the situation is earlier in case of Turing acceptable languages or recursive renewable languages what we are doing you give an input if it is in the language that simply halts otherwise you are creating whether it is hanging or you are putting it in infinite loop. So, that the string is not accepted that is how we have managed, but in case of this Turing decidability that means to say a language Turing decidable you give any input from the alphabet over the alphabet there are two situations you will have precisely either 1 you will print finally or 0 you will print finally that means you may print y for example, you print s or you print no to indicate. So, that means on any input this Turing machine whatever that we are constructing that has to halts. So, you have one has to observe this remark that this type of Turing machine the Turing machine that is existing for a Turing decidable language that halts on any input a decider let me call a decider is a Turing machine that halts on any input by printing by accepting or rejecting the input by accepting or rejecting the input. So, let me present this way here printing 1 we are calling it is accepting by printing 0 we are calling it is rejecting. So, this kind of Turing machine which is halting on any input this is the notion of algorithm chess Turing thesis what chess Turing thesis claims is an algorithm is a decider. That means an algorithm is a Turing machine that halts on any input that is how it is considered and this is the formal notion of giving algorithm. Now, as I have promised earlier let me now consider some examples of Turing computable languages or natural numbers we have already discussed a successor function addition their Turing computable functions and this using Turing computable compatibility we have introduced the notion of decider. Now, let me cross check this property for example, you consider a function this is as I have mentioned monos this is from n cross n to n in short let me use may be m n is m minus n if m greater than equal to n 0 n. So, this is a non negative number we have to give the natural numbers. So, instead of considering minus we consider monos in this computation. So, a Turing machine which can perform this job let me give you certain hints to construct a Turing machine to show this is a Turing computable function monos defined like this is a Turing computable function the Turing computable function the Turing machine for this let me give you some idea in this direction you may be giving input i m i n like this this is the input format. After finally, many steps that Turing machine has to leave this we use the shorthand for this m minus with a dot here called monos let me use m monos n with a minus or which I am putting a dot i power m monos n this should be the left over thing this may be 0 if this is smaller if this is bigger or equal then m minus n that is what we are performing in this machine what you have to do you are s 1 here for example, you are s 1 here and you go and are s 1 here are s 1 here you go and are s 1 more i here and keep doing this. If you receive blank after erasing this symbols then you cross check what is the situation here whatever is left over that is if this is bigger then something will be left over those many eyes will be there if this is smaller then when you are erasing and you are cross checking with this you will encounter this blank quickly. So, you just understand that when I am doing this business erasing 1 i here erasing 1 corresponding to that 1 i here if I am reaching to this blank first then m is smaller than n if I am reaching to this blank first then n is smaller than m. So, appropriately you have to leave the output. So, can we start with this logic. So, take a left move here you have i or blank that is how we will be considering. So, take a left move and see whether you have i or blank that is the situation. If you are already receiving blank if I have by that time we have erased certain things whatever is left over till that point I have to go and see, but now the bottleneck is like this if they are equal if they are equal I have erased till this point and then I have erased these things. Then how do I recognize that to this point I will come and whatever is left over I have to understand. So, for which again you can bring some notion of special symbol put it here put it here and for which you will be cross checking. So, you can now consider some special symbol printing here then you do this business you go to this another special symbol here cross check whether that particular special symbol is a arrived or not. So, that is how you can manage because when I am making them blanks I have to be clear like to what extent I am going to what extent that you are going. So, to understand these things may be at this place you can have a special symbol and at this place also you can have a special symbol and continue this business by cross checking to construct the Turing machine which computes this function. One more example these are little easy let me put say capital M to talk about multiplication M n this is also Turing computable function multiplication of two numbers is Turing computable is Turing computable. What you have to do in this case again the input will be in this form the input will be in this form. Now what I have to do here I have to multiply these two and I have to leave that as output. So, what what is the procedure that we can follow here this i power n for example, you copy this M number of times. So, that you will be creating i power m n and then of course, then you can say for example, in this case i power n is here you erase 1 i you erase 1 i and this is the i power n you can copy it here and once again erase one more i copy i power n here and so on. So, this is the logic if you follow then we can consider this business let me. So, what we do you just again certain hints I am giving from here I come to this I come to this place say L hash take a left move if I have either if I have either then I may just convert into a special symbol for example, say print say some scent just to indicate this then I will use R hash I am here I will come to this first blank then once again coming here R hash that means R hash square I can use now you apply the copying mission which can copy this i power n and print it here that is what happens here. So, now I will apply say copying mission. So, I am at this place I am applying copying mission now what you do after copying this what will be left over this i power m minus 1 1 cent is here blank i power n this is the situation we see now in the next place what I will do I have to come to this point and a skip sense if you are getting here you have to skip sense if you are getting blank that means this block is over if you are getting i then again you print send there then take right move take right move now in this situation I have to go to this point and then I have to copy. So, here I have to go till this end because here I have to copy this. So, what do you do because this copying now we have to give because copying not this string because I will be generating afterwards another i power n and so on. So, copying one string that is that is leaving. So, that means you have to now have a Turing machine which may for example, where I have this kind of situation a Turing machine which prints this because the second block of x need to be printed here say x let it be there and y x if you create a Turing machine which can perform this business then you can appropriately modify this and construct multiplication Turing machine I hope this is this hint is sufficient for you to you know construct this Turing machine once again to show multiplication Turing machine Turing computable function you take i power n i power m as inputs and I have to leave this as output I am just starting the business now you see the logic is from here I will count the number of i's here that means essentially cross taking each i I am just cutting here may be by printing some center whatever I will go to the end and every time I mark one i I copy this block to the end and keep doing this at the end of course, we have to erase these two and move. So, that means essentially what I am doing if I have some situation like this when I am here x y is input if I can create something like this that means i power n will always be copied that many number of times and create i power m n here. So, end of the story once you create that machine and connect it appropriately end of the story what will be the situation when I am giving this as input i power m i power n this is the input with this kind of process you will have i power m i power n i power m n I will get i power m n here now you have you create one machine that can erase two blocks of strings before one particular string that means given. So, another type of machine that you can look at this I am calling m one for example, m two is a machine which you can try when I am giving x y as input two strings this machine leaves by erasing x this leaves y as output for example, if I create such a machine then what I have to do at this point I will apply this machine once then I am left with i power m i power m n on the tape once again I will apply this machine and then I will be left with i power m n. So, using this you can using this phenomena using this machines m one and m two connecting appropriately you can construct a multiplication machine not only multiplication you can consider you know little more complicated arithmetic and construct appropriately this machines a Turing machine which computes this arithmetic operations and certain manipulations for natural number that are computable what is the time 50. Now, let me look at some important properties related to Turing decidable languages that is as we have understood there is a Turing machine that is a decider suppose this is a Turing machine you give any input from sigma star it is resulting s r now it is printing s r now. So, this is how it is working now using this phenomena we can quickly understand this result if l is Turing decidable that means recursive l compliment is also recursive the Turing decidable language how it is what are the Turing machine that you are constructing whenever it is printing one because you have the Turing machine m now you construct the Turing machine m dash the transition map is exactly same except that whenever it is printing one finally, you take the input whenever it is printing one. So, you give it to m so whenever it is saying s then you ask it to say no whenever it is saying no you ask it to say s. So, this is how you can manipulate that means the Turing machine the Turing machine m is used only thing is before finally, it is halting you just take a left move and see whether it has printed one if it has printed one you print 0 there and take a right move and halt and vice versa. Thus you can understand quickly that if l is recursive its compliment is also a recursive language. So, this is the construction that one can make and now another result if l and l compliment are recursively enumerable that means Turing acceptable languages if they are Turing acceptable languages then both of them both are recursive what we have to do if l is recursive enumerable you have a Turing machine for those strings which are in l it says s and since l compliment is also recursive enumerable you have a Turing machine for those strings which are in l compliment that says s. So, given input what you do you manipulate it like this. So, let me say m 1 is a machine Turing machine that takes input and says s for l. So, this is for the machine l and now what you do simultaneously you give the input to m as well as m 1 as well as m 2 that is for l compliment that is for l compliment take this and for the input x either it this will say s or this will say s both cannot say s. So, what you do whenever it says s. So, you simply report that if this is saying s you say s if it is saying s your report no now given an input one of them only will precisely say s both cannot respond. For example, in this case it may hang or it may go to infinite loop like this. So, what we have to do whenever it is saying s that means after a finitely many steps you are getting this information if it is not in l that means if it is in l compliment this machine will say s this will halt. So, in which case you ask it to say no thus you can understand that if l and its compliment if l and its compliment both are recursive and innuble languages that means Turing acceptable languages both of them are recursive because l is recursive that I have shown here again using this result if l is recursive l compliment is also recursive you can understand that both of them are recursive languages Turing decidable languages. And regarding a pair of l and l compliment now we can say this point that both are recursive if and if one is recursive other is becoming recursive now the situation is a language which is recursive innuble, but not its compliment that kind of situation is another situation. There are three situations now you see clearly that this is happening this way we can discuss more about this properties in future lectures.