 Así que nuestro trabajo con mis colegios Leonid y Pablo, es sobre las expresiones regulares de parámetros. Así que, bueno, las expresiones regulares de parámetros son solo expresiones regulares con variables. Entonces, ¿qué vamos a entender por variables? Estamos trabajando con una alfabeta fina, que lo llamamos, como usual, sigma. Creo que vamos a asumir a todo el documento que será solo el símbolo 0 y 1. Y también vamos a considerar un set de variables. Así que tenemos tantos variables que queremos. Así que ahora consideramos expresiones sobre esta combinación del alfabeto usando sigma y v variables. Entonces, tenemos dos ejámbulos. Así que estos dos son parámetros de expresiones regulares sobre el alfabeto 0 y 1. Ahora, tenemos estos variables. Así que ahora queremos decir, ¿qué es la lengua? Obviamente, estas expresiones se definen en una lengua sobre esta combinación del alfabeto. Pero esto no es interesante. Lo interesante es hacerlas definir lenguajes sobre sigma. Entonces, para esto, lo que tenemos que definir primero es el concepto de evaluación. Entonces, la idea aquí es que estos variables pueden representar diferentes interpretaciones que vamos a darles a dos símbolos del alfabeto. Así que, ahora mismo, vamos a ver algunas extensiones. Luego, vamos a asumir que variables son interpretadas como símbolos de sigma. Entonces, un ejemplo, de nuevo, tenemos esta expresión. Entonces, 0 x star 1 x y star. Podríamos tener esta evaluación enviando x 2, y 2, y 2, y 1. Entonces, la evaluación de esta expresión llegamos a esto. Entonces, 0 0 star 1, 0 1 star. Ahora, usando estas evaluaciones, hay dos opciones, dos opciones para semánticos. Entonces, llegamos naturalmente. Entonces, la primera cosa que podríamos hacer, es tomar la unión de toda esta expresión de aplicar todas las posibles evaluaciones. Entonces, nosotros llamamos el diámetro de la posibilidad de semánticos. De nuevo, vamos a dar un ejemplo. Entonces, tenemos estas expresiones, lo mismo que antes. Entonces, ahora, la lengua de esta expresión sería, bueno, la lengua de esta expresión, que básicamente, cuando enviamos las dos variantes a 0, junto con la lengua de esa expresión, enviamos, creo que, x 2, 0, y 2, 1, junto con la lengua de esta expresión y la lengua de cuando enviamos los dos a 0. Entonces, esta es la definición de la posibilidad de semánticos. Y, bueno, la otra opción, puedes probablemente verlo. Perdón. Entonces, puedes ver, por ejemplo, que esta lengua es en la segunda expresión, en la lengua de la segunda expresión, entonces, digamos que es de la posibilidad de semánticos. Y, bueno, puedes ver que la otra opción es, obviamente, tomar la intersección. Entonces, llamaremos estas ciertas semánticos o botas. Entonces, de nuevo, tenemos un ejemplo. Entonces, solo una expresión diferente. Entonces, nada que quieras, x, y, y nada más. Entonces, la idea aquí es, esta representaría la lengua de la intersección de todas estas cuatro expresiones. Entonces, son todos los resultados de diferentes evaluaciones que nos damos a x y y. Entonces, ahora sé esto, es bastante interesante. Cualquier palabra que corresponde a la lengua, a una cierta lengua de esta expresión, tendrán que contener estas botas, 0, 0, 0, 1, 0 y 1, 1. Dice, por ejemplo, esta palabra. Entonces, puedes claramente ver que contiene estas botas. Pero la cosa es, según que estás básicamente haciendo esta secuencia de lengua de 2 semánticos, entonces, ningún palabra con lengua de menos que 4 tendrá que corresponder a las ciertas semánticos de esta expresión. Entonces, vamos a usar esto más tarde para mostrar cómo conseguimos obtener alguna representación de las lenguas regulares. Pero, pero solo, sí, déjame continuar con esta definición. Entonces, esto es también bastante obvio. Hay un número de valores posibles de las variaciones que usamos para el alfabeto. Entonces, tenemos lenguas regulares para las botas semánticos. Ahora, déjame mostrarles algunas aplicaciones. Voy a comenzar con las bases de grafas. Entonces, esto es cómo encontramos estos objetos. Y esta es una aplicación donde vamos a usar ciertas semánticos. Ahora, los datos de grafas están estudiados en literatura de datos, como una manera de modelar lo que estas aplicaciones hacen. Por ejemplo, RDF o semánticos, o social networks, o semánticos web, científicos de data. Entonces, básicamente, vas a tomar el modelo que es un graf de h label. O si quieres una NFA sin inicial y final estados, algo así. Y ahora vas a un paso más y dices, OK, en estos datos de grafas podría haber perdido información. Entonces, esto ha sido notado antes, para mostrar un ejemplo. Ahora, supongo que tienes algunos datos científicos. Entonces, tienes algunos proteínas, p1, q1, p2, q2. Y dices, OK, sabemos que estos proteínas son interrelados entre ellos. Sabemos que es la misma relación, pero no sabemos qué relación es. Entonces, lo que hacemos es poner un X aquí en ambos de ellos. Entonces, esto es una variabilidad. Es una especie de escondido, pero dices, OK, están relacionados con la misma cosa. No sabemos qué es. Entonces, esto es como un modelo natural cuando te desinformas en una database de grafas. Entonces, es solo un graf de h label, pero ahora los labels pueden ser también variables. De nuevo, esto es una NFA sobre este alfabeto combinado. O, como veréis, el siguiente, puedes empezar a usar las expresiones regulares de parametriz. Entonces, para poner estas grafas, estamos ahora interesados en ciertas respuestas. Esto es lo que normalmente hacemos con información en databases. Entonces, básicamente, las respuestas que siguen sobre todo las posibles interpretaciones que nos damos a variables. Entonces, déjame mostrarles cómo vamos a usar estas expresiones regulares de parametriz. Entonces, tenemos un ejemplo de una grafa. Déjame decir que estamos interesados en todos los pasos de N3, 2, y 5. Así que vamos a estar concentrados en estas edificaciones, básicamente. Y puedes ver que la expresión regular definiendo los labels de todos los pasos de N3, 2, y 5 corresponde a este objeto aquí. Entonces, esto es B star, representando la grafa y a, de nuevo, B star x o B star x y. Entonces, esta es la expresión regular. Y lo interesante es que, si queremos ser ciertos, que hay una palabra que siempre está elevando una grafa aquí, no importa qué es la interpretación que nos damos a estas variables, entonces sabemos que esta palabra va a estar elevando este paso, si y solo si, si se corresponde a las ciertas semánticas o las posibilidades de esta expresión. Ok? We, there will, I mean, this word will be leaving this pass, if and only if, it belongs to this expression, again, overall possible interpretations of the variables. So, if you want to start completing certain answers and caring about paths in a complete graph databases, then you need to be working with parameterized regular expressions. So, this is an example of the certain semánticas, let me get to the possibility case. So, this is program analysis. So, what you do in program analysis, normally you get an alphabet of some operations that you can do, and you also have some variables that now you treat them as placeholders for different data that you might encounter. So, pointers, files, whatever you want that will be changing. And now you want to use something like this to specify some undecided behavior. So, this is just basically meaning anything in my language which is not defined x and then use x. So, this is use x before it's been defined, so I don't like this. So, this is unspecified behavior. And the idea now is to create a graph that will serve as an abstraction of this program and evaluate this expression over this graph. Now, obviously, there is some interpretation of the variable x such that this is true on my graph. Then it will mean that I've seen a path which has this undecided behavior. So, in this case, I will sort of reject and say that my program analysis returns in failure. So, then again, notice that we're using the possibility semánticas. We now want one interpretation of the variable x to belong to the language of the expression. So, this is an example of the possibility semánticas. Now, what do we do in this paper? We're just starting to study this. So, we study some theoretical problems, some decision problems, just the usual thing that we want to do with formal languages, emptiness, universality, containment, and membership. And we're also interested in seeing how concise are these representations. So, what would be the cost of representing this into an effect, for instance? So, this is what I will be talking for the remainder of the talk. So, I'm going to begin with some easiest or maybe brute force upper bound technique. We're sending variables to symbols of the alpha. Now, clearly, there can be exponentially many evaluations. So, my possibility is to the power of the number of variables that I have. Now, if we take the union of all these expressions and just do the standard union construction, then we will have an exponential NFA for the possibility semánticas. This is just using brute force. And if we take the intersection, we take the product of all this automaton, we will have double exponential NFA. I will show you later that these are tight bounds, but this is just to say that the interest rate is not really on the other bounds, but we're interested in seeing, OK, is it true that these are actually that difficult or that representative? So, this is what we show first in the decision problems. So, given that we found along in our study that the problems with the complexity was kind of high, we tried to lower this complexity. So, we sort of defined two fragments of this expression that might result in lower complexity. So, the first thing would be to forbid repetitions of variables, so something like this. So, only use x once, this is just a syntactic condition. And the other thing would be, well, just to take away clean start at all, OK, so finite languages. So, let me begin with non-emptiness. So, non-emptiness for the possibility, it's quite easy. It's basically the same. Clearly, the possibility semantics language for this expression is always non-empty, right? It's a regular expression. Now, for the box semantics, the certainty semantics, the case is absolutely different. So, we can actually prove an expi space completeness. So, the upper bound, again, is by using this brute force construction and checking on the fly. And we also prove the lower bound in the paper. Perhaps, what's even more interesting, we can actually show that even if you don't repeat variables still, it is still expi space hard. And even if you force no clean start, then it is still difficult to check for non-emptiness. So, yeah, let me just focus here on this theorem. We get a number of interesting things out of it. So, this is one of my favorite. It shows you that the behavior, it's kind of strange. So, what this is saying, this is the tool that we're using for hardness. This is just saying that if you have a set of parameterized expressions, n-parameterized expressions, then you can construct one which is empty if and only if the intersection of all of them is empty, OK? And more interesting, you can construct it in polynomial time, OK? Now, assume now that these are just regular expressions, no, not parameterized. And try to do this with regular expressions, you will obviously cannot, right? So, you cannot really construct this in polynomial time for the case of regular expression. You can, for the case of parameterized regular expressions. So, this we use for the lower bound. And yeah, from this tool, we immediately get p-space hardness by sinking on the regular expressions case. And this is also quite interesting, since we are basically reducing from the Turing machine execution, at the end, we can actually show that you can construct very complicated expressions, but you can construct nonetheless expressions in which the language, the certainty language, does not accept any word which has no double exponential size, OK? So, you have a very tiny thing, which is accepting very incredibly big words and nothing else. So, I will just show you the exponential bound, because double exponential bound, it's much more complicated. So, consider an expression of this form, OK? So, fixa number n, and you will have basically anything that you want. This is over alpha at 0 and 1, as usual. Then, the concatenation of n variables, and then anything that you want again. So, this is just similar to the example that I'll show you. Given that I'm considering the intersection of all of these for all possible valuations, notice that by doing all valuations, what I'm going to do here, I'm going to create all possible n-bit strings, OK? And I'm going to take the intersection of all these whatever I want, then an n-bit string, then whatever I want. So, if a word belongs to the certainty semantics of this language, then it must contain each of these n-bit strings, right? So, then again, yeah. So, this is the brilliant sequence of order n, and this is of size exponential. So, this is the exponential size. You can see in the paper, the double, in the full version at least, the double exponential. So, for the universality, it's completely the opposite. Now, it's going to be easy for the case of box semantics. But it's going to be difficult for the possibility semantics. This is basically, because now what you need to show, you need to show that all your valuations create this universal language. So, you need to really check all possible valuations for the case of possibility, but not for the case of certainty. So, for the case of certainty, this will only be space complete. So, yeah. So, we also prove this containment for box semantics. So, in this case, circle could be diamond or box. But it is immediate from the other provencent that we have. Sorry, yeah. So, given that since a language is empty, if and only if, if it is subset of the empty language, and a language is universal, if and only if the universal language is a subset of this language, then we immediately get that containment for both semantics is exp space complete. And then, again, even it restricted to simple expressions. So, this is quite interesting as well. And for membership, so this is more or less obligation driven, the study of now I have a word. So, my input is a word and an expression. And I want to know if this word belongs to a language of the expression. So, yeah, easily by guessing evaluation, for the possibility case, I will go into guess evaluation that witness the membership of the word. For the certainty case, I will guess evaluation that does not witness the membership of the word. And then, all that you need to do is to prove that this bounds at type. So, we do that in the paper as well. So, membership is NP complete and co-NP complete respectively. So, yeah, I'm not going to be stopped that much on this, but we can do a much fine analysis. And this will show you that the membership problem is hard unless you take simple and start height zero expressions, OK? So, this is basically a very, very, very simple case of a parameterized expression. So, you don't repeat variables, and you don't have cleanest start. But again, even if you don't have cleanest start, then the problem is still intractable. So, this is quite bad news. If you want to think about bad news. So, yeah, so we do more things. I'm not going to show it to you. I will run out of time. We examine what happens with containment when we are fixing one expression, same with the word. So, what is, if the word now is fixed, is containment still hard? And also, we try to intersect these things with regular language, and now check for emptiness. So, the interesting thing, so these problems are quite motivated by the obligations. This is why we study. Yeah, so, computational problems. So, this is perhaps a bit more interesting to see. So, yeah, so we want an NFA that captures this language. They will see the language, or the certainty language. Now, we already saw that by using just brute force, we get this exponential, double exponential bound, and we prove that these bounds are tight. So, you cannot really. So, there is a family of expressions such that the certainty, an NFA for the certainty language would be double exponential for all of them, and an NFA for the possibility language would be exponential for all of them. So, the proof, yeah, so we're going to be using the same tool constructing a pooling set. So, yeah, I will just browse through it. But, yeah, so the idea is that you need to build this pooling set that you can easily construct it. So, the proof of this is in the paper. You can see it. So, yeah, so this is the study of parameterized regular expressions. So, in the paper, we finish with a note about extending semantics. So, now you could think, OK, what if I'm replacing variables by, say, words? Or, maybe, what if I'm replacing variables by complete languages? So, for the case of possibility semantics, this has been studied before for infinite alphabets. But, it's not very interesting, or at least for us. You can easily get non-regular languages. So, if you have something like this, and now you're saying that you're going to be mapping x to any possible word in sigma star, then this represents the language of squared words. So, no regular, and we don't study it, because we don't like non-regular. For box semantics, it's also quite interesting. Not only the language keeps being regular, but the same complexity bounds apply. Even if you now let the variables to be mapped by any word in your alphabets, in any language. So, this might be surprising at first. But the thing is, that if you allow some variable to map to an infinite, a language with infinitely many words, then you're not going to be using it for certainty. So, this is sort of the intuition. So, yeah, I will just finish with some things that we want to do next, which we think they are interesting on their own, but maybe they can hint possible obligations for these objects. So, yeah, so we basically proved that the minimal NFA, that except this intersection, again, now if you have two parameterized regular expressions, you want to take the certainty language of each of them, you want to intersect them. We have proved that if you want an NFA for that, then it is necessary of double exponential size. But so now the question is, well, what if you want to keep staying on the language of parameterized regular expressions? So, this is the thing that is not letting us sleep. So, perhaps it's possible to create an expression whose certainty language represents the intersection of two certainty languages of some parameterized regular expression. So, if this is true, and we cannot prove that it's not true, but we also cannot construct it yet. But if this is true, then it would mean that you could basically operate, start intersecting regular NFAs or expressions, operating them staying in the language of certainty, and not moving out, and basically doing everything in polynomial time until at the end, you get your final blow up, double exponential that you will not be avoid. But perhaps along the way, there are easy heuristic things to find that your language is empty, and you will not even need to transform this back into a regular expression. So, this might give you the possibility of really speeding up operations on NFA when you need intersection and stuff like that. So, you can define this for all operations that you would think about. So, union, concatenation, complementation. So, this is what we're planning to work next. So, thanks.