 We have this program for opening the workshop. We have Professor Supratik Chakravarty, who is also the chairman of the FSTTCS conference. He is also our first speaker. So welcome all of you. I mean some of you are coming for the first time in Bombay. Bombay is very privileged to have you here. So my welcome, welcome from the conference. And without too much ceremony, let me ask Supratik to do that. So yes, to add to what Paritosh said, a very warm welcome to all of you. We hope the next seven days, actually we have two days of pre-conference workshops, three days of the conference, and two days of post-conference workshop. We hope this will be an exciting time for all of us. We'll hear lots of technical stuff, discussions, and hopefully we'll also have a lot of fun. So without much, you know, other elaborations, I think we'll just get started on today's workshop. So today's workshop is on finite and algorithmic model theory. And I, I mean we have put up the schedule on the web page, but I'll just spend a minute saying about the structure of the workshop. So this is spread over two days, today and tomorrow. And today's talks are going to be more of introductory and sort of building up the material for tomorrow's more advanced talks. So today we will have a total of four invited speakers and some of us from here, from IIT Bombay, who will be trying to give some introductory material. So I will start the session. I will talk about something very basic. And then my PhD student Abhishek will talk about EF games. And then Ramanujam is going to talk about Fagan's theorem and second order horn and all of that. And after that, post lunch we will have talks by Anuj Tawar, Foucais Collitis, Emmanuel Kaironsky and Dietmar. And tomorrow we have more advanced talks by five speakers. So it's a very packed schedule for each of the days of the workshop. We start at 9 and end at 6.15. We've interspersed it with lots of food breaks in between. Hopefully those will keep you going and will add the sugar necessary to keep your eyes open during the sessions. But I hope you'll also get a lot of time to do some interactions and discussions over those breaks. That's also the purpose of keeping multiple breaks. So I'll get going. I'm going to use the blackboard because I'm really talking about some preliminary stuff. And some of the speakers later are going to use the projection system. So what I'm going to talk about today is, of course, I'm sure everybody here is aware of the basics of custodial logic. But just to be complete, I'll just cover the syntax and semantics quickly. And then the primary thing I'm going to talk about today is undecidability of satisfiability in the finite. So this is Trachtenbart's theorem. So I'll try to outline a simple proof for it and why asking questions about finite models often becomes harder than asking questions without restrictions about the models. So just to get going, I'm sure all of us are familiar with this. But let me just write it down over here. So we'll have the syntax. So we have a vocabulary, which I will call sigma. And this is going to be a set of predicate and function symbols, each with given arities. So this could be arity 1, this could be arity 3 and so on. And then we want to build sentences on this vocabulary using some rules which govern water valid sentences. So for that, I'm going to define two things first. So one is what are called terms. And then I'll define what are called formulas. So what is a term? Every variable is a term. So we have this vocabulary and we're going to form formulas on this vocabulary. So this formula is going to have some variables. So every variable is a term. Every function of arity i applied to i terms is a term. So if I have a function of arity 0, which is like a constant function, so that will also be a term which doesn't take any arguments. It's a term. And that is pretty much the definition of what a term is. So we start with variables and constants. And then if we apply terms as arguments to functions, we get other terms. And what are formulas? So the basic formulas are predicates. So I could have predicate, let us say, p1, whose arity might be i. And then if I feed in i terms as arguments, that forms a basic formula. That's the really, you know, you can't decompose this further into sub formulas. This is sort of the most basic formula that you have in first order logic. And then we have the usual connectives. So for example, if phi1 is a formula and phi2 is a formula, then so is phi1 conjunction phi2. So is negation phi1. So is disjunction, which follows once I have negation and conjunction. Implication, all of the usual propositional connectives. And in addition, we have two others, really one other. So if I have a formula phi with a variable x and the variable x could appear as part of a term, which is an argument of a predicate, then I could use a quantifier. And if I quantify out a free variable, if I quantify out such a variable, which appears in a formula, I get a new formula. And this formula loses this variable as a free variable. This becomes a bound variable. And then we have the universal quantifier, which is really obtained by negating the existential quantifier. So that's very quick. I'm sure all of you are well aware of this, but it's just to keep things complete. So that's the syntax we're talking about. And for the semantics, we'll say that if I give you a first-order logic formula, and then if I ask you whether it evaluates to true or false, I need to tell you on what to evaluate the formula. So we are going to have a notion of structures. And I believe this is going to show up several times over the next few days. So I'm going to define semantics by first talking about structures and then saying, when does formula evaluate to true on a given structure? So what is a structure? A structure has a certain universe, which is really a set of elements. So this is really a set of elements, let's say A1, A2. It could even be an infinite set. And it has an interpretation for every predicate in sigma and for every function in sigma. So what does this mean? So if I take a function, let's say F1, whose arity is 5, so let me call this universe as U. So if I take a function F1, whose arity is 5, then the interpretation of this given by a structure would really be a mapping from U raised to 5 to U. So it will take a 5-tuple from the universe multiplied by with itself 5 times, and it will return me back an element from the universe. So an interpretation of a function in a structure is really the specification of this mapping from a tuple which has as many components as the arity of the function to an element back in the universe. And the interpretation of a predicate, so for example, if I take P1 with arity 2, this is really a mapping from U raised to 2 to true or false. So this just tells me for given pairs of elements from the universe, whether it evaluates to true or false. And so we will often denote structures by different symbols. So for example, I am going to denote it by M. So to show that the universe refers to a particular structure, the interpretations refer to a particular structure, we often annotate it with M somewhere over here saying that this is the interpretation of this predicate with this arity on this universe, on this structure. And this is the interpretation of the function with this arity on that structure and that is the universe of that structure. So now that we know what a structure is, let me try to define the semantics. So we will say that every variable, so in trying to define the semantics, every variable should be mapped to some element from the universe. So every variable should take on a value from the universe. So given a structure M, every variable should take on a certain value from the universe. And then a function with let us say arity 2 on this structure, remember it takes arguments as other terms. So what I am going to do is I am going to say that if the variable takes on a certain value from the universe, just to keep the notation consistent, I will denote it by this. So this denotes the value of the variable X that it takes in the structure M. And then the value of the function F, when I have T1, T2, let us say this is a varity 2, this is the value of this function in the structure M. This is the interpretation of the function in the structure M with the arguments evaluated over the structure M. So it just says you evaluate the arguments which are terms themselves over the structure M, then you look at the interpretation of the function in that structure and you find out what value you get from the universe. So that is what allows us to get values for terms in a given structure and then to evaluate whether a formula evaluates to true or false, we just need to substitute values for these terms in a given structure. And then look at the interpretation of the predicate from the given structure to see whether it evaluates to true or false. So I will just write it down here. So I will use the same notation. So let us say P1 with varity 2 with T1, T2 in the structure M. So this will be whatever true or false value this interpretation gives me on T1 in the structure M and T2 in the structure M. So that is the easy case where I evaluate each of these terms and I know how to evaluate them. Then I just look up the interpretation of the predicate to figure out whether it evaluates to true or false. These are simple. If I want to find out the truth value of phi 1 and phi 2, I take the truth value of phi 1, truth value of phi 2 and both of them evaluate to true. This formula evaluates to true. This is the usual negation. So I could say like this that given a model M, I can evaluate this formula. This is also written sometimes as the model M satisfies this if and only if this thing is true. Now you note that in trying to evaluate the terms, I may actually need to use the values of some variables. So if there are actually variables appearing over there in the terms, then we also need to indicate the assignments of the variables to the values from the universe. So that is usually called an environment. So I will denote it by L which is like the variables to the universe of M. So given a structure and the assignment of variables to values in the universe, I can evaluate a predicate by looking at this and checking whether it is true. And similarly, I can say that M satisfies phi 1 and phi 2 under a given assignment of values to variables if and only if M satisfies phi 1 and M satisfies phi 2. Negation phi is similar. M satisfies negation phi if and only if M does not satisfy phi and the only other thing remaining are the quantifiers. So we will say M satisfies exists x phi of x if and only if this is under certain assignment of the free variables of this formula. So if and only if M with some augmented assignment, so this L assigns the same values of the other variables other than x as L assigns, but to x it assigns some value from the universe if this satisfies phi. So L prime of y is L of y if y is not an x for some L prime and L prime x is in U of M. So it is just saying that there is some way of assigning value to this variable to make this formula true if I remove the quantifier. And the universal quantifier is just obtained. So if and only if M does not satisfy, sorry, it is the universal quantifier, x is x, negation phi x. So this is pretty standard stuff. I do not want to spend too much time on it. So having set our notation right and what we mean by a structure satisfying first order formula. So what I want to now quickly show is that so you know a question to ask is that if I give you a formula phi in first order logic then is it satisfiable or not? This means that does there exist a structure over which this formula evaluates to true, right? And this is a decision question. Now it turns out that if I do not put any restrictions on the structures, which means I am looking at finite as well as infinite structures and all kinds of interpretations for the predicates, this formula is undecidable. But this workshop is primarily about finite model theory where we are going to look at structures that are finite. So an interesting question to ask is that well if I give you a first order logic formula and I ask you that you are only allowed to look at finite structures where this universe is finite. Can we still decide whether this formula is satisfiable or not? It turns out that it is undecidable even in the finite. And this is Strattenbot's theorem and I want to quickly sketch the intuition why it turns out to be undecidable even when we restrict the structures to finite structures. So what we are going to do is the basic idea of the proof intuition is that we are going to take a Turing machine. This is the classical proof approach to show something as undecidable. You take a Turing machine and then you show the halting problem can be reduced to the problem that you are trying to solve and we all know that the halting problem is undecidable. So the given problem must be undecidable. So we are going to take a Turing machine M and keep things simple. We can even take a deterministic Turing machine M and keep things further simple. We can say that let it start with the empty tape. So I have a deterministic Turing machine. I have used M for something else over there so let me call it N. So I am going to take a deterministic Turing machine starting with the empty tape and then I am going to ask does this Turing machine halt. So even this problem is known to be undecidable. I mean this is from classical computational theory that deterministic Turing machines and nondeterministic Turing machines have the same expressive power and starting with an empty tape does not simplify things. So the halting problem for this is known to be undecidable and what we are going to do is we are going to take this problem and we are going to come up with a formula and first order logic over a suitable vocabulary which I will just describe called phi N such that phi N has a finite model which means there is a finite structure that satisfies phi N if and only if N halts. N halts on the empty tape and because we know that this is an undecidable problem this immediately shows that this problem is also going to be undecidable and this is just a first order logic formula on a suitable vocabulary. So therefore, checking the satisfiability in finite must be undecidable. So I do not have much time so I will just quickly try to list down the instead of writing the exact formula what phi N is I just try to list down the different components of the formula and then I think it should be easy to write down explicit formula for the different. We want to take a universe so you know to keep things further simple let me say that the Steering Machine N has states let us say 0, 1, 2, k which I can always do Steering Machine is finite number of states. The Steering Machine will have a certain tape alphabet so these are the states there is a certain tape alphabet. So let us say this tape alphabet is 0, 1, 2, some m and this is a deterministic Turing Machine which means that if I give you a state and a tape alphabet then and an element from this tape alphabet then I can tell you what next state is going to be what the next value that will be written at that position of the head and where the head is going to stay there move left or move right so that is deterministically decided. So what we are going to do is we are going to build the formula phi N as a conjunction of several things and the first thing we will say is that there are at least say k plus 1 elements in the universe and this is easy to state in first order logic you just say that there exist k plus 1 elements all of which are not the same. The second thing I will state is so I should also define what my vocabulary is so my vocabulary will have a predicate which I will call state which will really take two things and if state m, n is true so my vocabulary has a binary predicate let us call it state so state m, n is true if and only if the machine m when started on empty tape is in state m in the nth step. This is a standard trick to use and similarly I can say head this will be another binary predicate so this is true if and only if m when started on the empty state is at the mth position of the tape in step n in mth cell of tape and similarly I can have a predicate let us call it letter a, m so this a is from the tape alphabet so for every letter from the tape alphabet I am going to define one such predicate and this says that this is true if and only if when m when started on the empty tape has a in the nth cell in the mth cell of tape in step n. So we are really trying to capture what the state is what the head is what the letter it is reading in step n and then I should say here that initially I start off in state 0 let us say that is the starting state and initially the tape is empty. So here I have the tape alphabet and I guess I should also introduce another symbol over here called blank so I should say initially the tape is blank which means for all x letter a letter blank makes 0 so in the 0th step every position of the tape is blank because I am starting from the empty tape and initially I am in the first cell of the tape so head 0 0 so this is saying that where I am starting and then I need to say that in every step I am going to proceed exactly as the deterministic Turing machine wants me to proceed so let me just give an example suppose I am in state 0 and I am reading a1 and suppose the deterministic transition says I should go to state 5 and I should write a2 over there and let us say I should just keep the head at the same position so I will say stay so neither move left nor move right. So what does this mean? This means that at any time if this is if I reach this configuration if I reach a configuration where I am in state 0 and reading a1 then I should do this so it is basically saying that for any position of the tape at any time step if I have state 0 so at any time if I am in state 0 and the head is in position x and if the letter there is a1 let us say so at time t if the letter at position x is a1 then in the next step I know this should be the case so I should say that there exists some T prime such that T prime is a successor of t so I will just show let us say success it so this can be very easily captured in first order logic I will just say how it can be done and you know state it should be in state 5 at t prime and since the head is staying wherever it is so the head should be at the same position x at t prime and the letter gets overwritten by 2 so this should be letter a2 x at t prime and because I am just staying there so the rest of the tape should be unchanged so I should say for all y y not equal to x implies for all y and for all such letters for all a's the tape alpha between blank so letter axt equals if and only if letter a prime letter axt prime so this is saying that the rest of the tape does not change for any position other than x for every tape alphabet if at t I had x then t prime also I have x so the only thing I have sort of left out here is what is the successor but actually this is not very hard to encode in first order logic this is the usual way of encoding ordering with a successor relation so all I need to say is that okay in my universe there is an order so let say I will denote that order by this so I will say okay no element for all x it is not the case that x is less than x there is an order and that is the successor relation on the order and for all x either x is less than y or y is less than x or y is equal to x and similarly for all x for all y for all z it is transitive x is less than z so this defines an order and then I want to define a successor relation so I will say for all x for all y successor x y if and only if x is less than y and for all z if x is less than z then it either implies y is less than z or y equals to z right so y is a successor of x if y comes after x and for every z which comes after x either y comes before that y is equal to that so this is really just plain first order logic using the vocabulary of an order relation the successor predicate and so I want to add all of this to all of these formulas and finally I want to say that the machine halts so let there be a halting state here so for convenience let us say the halting state is 1 so I want to add there is some x such that there is some t such that I am going to reach state 1 t but this is the halting state right so if I basically conjunct all of these formulas then you know I think intuitively you can see what I have done is I have basically captured the computations of this Turing machine so if the machine halts then certainly I should be able to find a t where the halting state is reached and if the machine does not halt then for every finite universe I will not be able to reach the halting state for every finite universe means for every finite number of steps because here the universe is really these you know time steps for every time step I should not be able to reach the halting state and so this sort of shows so of course I have not given the proof why a finite model of this implies n halts and vice versa I have not given a formal proof but I think what you can see is that this really captures the computation this is the initial part this is every step for every such transition I have in the Turing machine I have to write something this is specifying order with successor relation and that is specifying there is a halting state okay so so it shows what we have here this is also called and I will stop here