Here at PMC, we've been hard at work with exciting and meaningful projects like the ABCs of abolition, the education and equity panel discussion, and Portland Ryacings City Council panel. These projects allow the public's voice to be heard and help PMC achieve our mission. Let's begin with some exciting news for November and who better to kick things off with than Derry Runlet and his new show. Derry Runlet is back with the latest edition of the Derry Runlet show. This time around, Derry interviews local main celebrity Ed Romanoff. You may know Ed from the audiobook, songs, performances, and dance numbers. Starting off as a child on the Ken McKenzie show, Ed graduated to Broadway actor in no time, landing supporting roles in dozens of plays, musicals, and television shows during his long and successful career. We are so honored to have this Broadway icon step onto the stage of the Derry Runlet show and tell his story. Watch the Derry Runlet show on Channel 5 or on Portland Media's YouTube channel. Next, let's talk about PMC's new board of directors. We at PMC are happy to welcome four new board members. These board members include Anela Linn, development director at WMPG, Jerry Edwards, co-director and collaboration manager of Black-Owned Maine, as well as longtime member of PMC and our resident IT guy Ray Tiley. And joining this all-star cast of board members is co-founder of Visual Integrity and board member of the Maine Irish Heritage Center, Jean Haney. Learn more about PMC's board of directors by going to Portlandmedia.org slash our board. Next up, Luigi Carchelli and his new show Friday Night Matters. PMC is happy to welcome Luigi Carchelli and his new show Friday Night Matters, a half-hour show interviewing local main artists, comedians and filmmakers. This week Luigi interviews comedian Marcus Cardona on his sold-out show at Thompson's Point, Cabin Fever. We also get to hear a live performance from rapper slash poet Miles Bullen. So watch Friday Night Matters 8 p.m. Eastern on Channel 5 or keep an eye out on PMC's YouTube channel for when it comes out later this month. Now let's talk about Africans United of New England. In the current edition of Africans United, Ann Smith interviews a local businessman with a very unique mission. Lawrence O'Kale, originally from Kenya, immigrated to the United States to seek higher education and become an ordained minister. Mr. O'Kale's ultimate goal was to serve others and he found out how to fulfill this by helping African refugees navigate the complicated institution that is the Internal Revenue Service. While he handles the tax accounts of these refugees, he also provides moral and ethical help when they need it, making sure that they can find success in this confusing world. Finally let's talk about freedom and captivity and the ABCs of abolition. PMC has been a community sponsor of the statewide Freedom and Captivity Project and one of the projects PMC has helped create is the ABCs of abolition. Local main residents were asked to suggest words that captured their vision of abolition, that is finding alternatives to incarceration and what it means to them. The ABCs of abolition showcases their words and interpretations, offering a hopeful and compelling porter of the way Maine could be. The Freedom and Captivity Project would like to invite you to join them in imagining a different, better future. Watch the ABCs of abolition by going to Portland Media Center on YouTube. It's amazing to see so many exciting projects happening at PMC this month. PMC has always been about inspiring media in the greater Portland area and I'm so happy to see so many creative minds at PMC this November. Join us next month with more exciting announcements. Until then, stay warm, stay safe, and keep creating.


good morning it's in progress I'm going back to bed okay so this morning we're gonna have to go down here crossing this river to come up on the other bank here fall over about there give up take a flight home good morning world welcome back to our circumnavigation around the globe by motorcycle good morning we're here at a small campsite near the village of Yostsema in the Altai region of eastern Russia and look at the scene behind us we camped next to this beautiful river and this beautiful forest behind yeah we had actually a really good night it was quite raining during the night but the raindrops on our tent were quite soothing like you go on YouTube and you search like bedtime relaxing background sounds this is what it was so we have only two rides left here in Russia before we reach the border to Kazakhstan which is really good because our visa is very close to expiring the plan for today is to reach at least the city of Barnau which is about four hours away if we can get a little bit further it would be even better so we still have to pick up everything and it's already 9 o'clock so better hit the road let's go goodbye peaceful river rib update still hurts but a little bit less than yesterday which is good all right I'll see you in Kazakhstan with the suspension broken it's actually easier to get the bike up right wow look at this now the Sun's coming out it's just beautiful hey it was raining a little bit this morning as well so I'm so glad just as we're about to leave just seems to be brightening up maybe we won't get wet today okay let's go update our suspension is still broken ribs still broken it's like a pension still broken yeah it's like in the worst condition such a big surprise how quickly the suspension broke but anyway we have just two days left here in Russia in Kazakhstan we will have visa which probably is for like 30 days or something so we have the time to fix it yeah the moment whatever happens we just have to keep going we do not want to overstay so yeah not a lot of time left we really really just got to get through the next two days broken ribs broken suspension and all we just have to make it to Kazakhstan yeah and we're still surrounded by the beautiful tiger forest just look at this place it is literally wilderness forest mountain paradise here in Altai yeah Altai is so far one of my favorite regions actually it's just so lush so mountainous the rivers are beautiful oh look I think we're gonna cross one of the rivers now the river Katya or Katya Katya wow look at that yeah that's a big fast-flowing river coming straight down from the glaciers yeah I mean can't get better than that yeah amazing I mean this is just the land of mountains forests rivers and bears this is Siberia baby just have to do a quick turn around to show you guys this place look at this it's an upside-down house what is going on that's really really funny yeah I've never ever seen anything like that in my life what look at this place there's a car there's a pram there's some streetlights wow look there's a reception here which is also upside down do you think the inside is also upside down don't have a look inside cool so this is the kids room wow nice oh that's so cool look the whole building is like on an angle it's kind of freaky hey yeah it's weird hey it's like gravity is off the bedroom oh wow it's totally weird when you stand and you just see the room okay let's go upstairs oh look there's a gorilla yeah the brain doesn't really like that you know my brain is like kind of makes me feel a bit sick nice bathroom oh do you think if I played this entire video upside down it would look like we're walking on the roof okay I'm gonna do that this is a real test of wife material whoa here we go that's amazing oh well that's such a cool place it was actually cooler than expected I think the best thing is the pictures that you can take in there are so funny it was like really really fun that was cool is that gourmet or what so we've left the mountains behind and it's mad busy here we've basically just been following like a line of traffic for the whole day we've done a hundred miles now and we've got about another hundred to get to bar now but I don't know how long that's gonna take a little bit of a different ride than yesterday that's for sure still stuck behind a lot of cars and trucks but I have important news for you guys we just hit 36,000 miles on the road bumblebee is still bleeding I thought actually all the oil was gone already but apparently bumblebee is still dripping oil it's really really bouncy look at that oh man I hope we can get a replacement in Almaty after today for more rides and then bumblebee gets a complete new service a new shock we will clean it up perfectly that we can make sure the bumblebee will make it all the way back home fingers crossed so it is not looking very good ahead here is rain and over here is rain there is blue skies I think we're starting to get wet already yeah and I can see now the cars coming the other way I've got their windscreen wipers on I reckon it's time for us to stop and put our rain gear on let's do it I'm not really ready to go but I've got to go anyway so we're just heading out of Varnal now we decided that we would push on through and get a little bit closer to the Kazakhstan border just to make our day tomorrow a little bit easier so we're going to be heading to a town which is about 70 miles further towards the border and the GPS says that's going to take us another hour and a half yes and tomorrow it's then two and a half hours to the border and then about one hour 45 to the next place where we're gonna have a rest for a couple of days we've made really good progress we've already done 200 miles today the mountains have disappeared yeah the mountains disappear the road got bigger and busier so we may as well just make distance to be honest yep all right we're coming into the town of Al Niesk Al Niesk Al Niesk we checked on Google Maps they have a couple of hotels here so hopefully we can find something but first we have something else to do ah yes yes a far more important mission than finding accommodation so it's open so we just stopped at this place and this place is actually a pizza place and we successfully ordered a pizza but then she told me it's like 40 minutes waiting time so anyway we ordered the pizza we said no worries we will head now to the hotel first and then in 40 minutes we go back and pick up our nice vegetarian pizza very soon we're going to be chilling in a room with a pizza which I'm very excited about my ribs are still pretty killing me to be honest but anyway one more day and we are in Kazakhstan and then we can have a real good rest yeah this is kind of funny no imagine you have like a giant pipe outside the front of your house wow looks like it is a military place here oh just here yeah yeah I saw tons of military people the back streets of Balneysk exactly the bouncy back streets yeah wow the whole day was totally fine now we're taking this one road and we are just bouncing around like crazy oh man really hope we can get it fixed okay let's hope that the place where we're trying to get to is real okay it looks like it's somewhere here it's basically next to the railway what yeah apparently so yeah maybe it's this one over there here yeah this orange one here okay I think it's this one here but yeah like you said it's like right there right next to the railway it is it is literally I mean it's the railway here okay I think this is it yeah let me check out the price this really is like the middle of nowhere yeah okay okay five minutes later so this was unfortunately a no-go she just looked at me and said yet yet and I'm like what yet fool and she's like no no no no yet yet so either she didn't want to give us a room or there were no rooms available but I'm not 100% sure which one so let's just pray that the next hotel will have some rooms for us yeah there aren't very many hotels in town so yeah we don't have a lot of options fingers crossed on the next one 15 minutes later so yeah there was a no-go as well yeah second hotel fully booked apparently yeah I don't know I think that the hotels here are just booking out all of their rooms to workers or in this case military people yeah so the whole town is actually pretty much full with military people yeah so anyway we're back at the pizza place we're gonna pick up our pizzas yeah and then we're gonna have to move to another town because there is no options here pizza so we looked on the map and it seems like the next hotels are 59 miles down the road in the next big town oh yes okay sure okay all right wow that looks like an awesome pizza it's full of stuff I really needed that absolutely unsuccessful in this town and we didn't want to ride around too much because there were a lot of military people in this town and we thought it's a good idea just to move on we are quite tired but there is another place an hour away from here so we're just eating our pizza here the side of the road now and then we move on so there's a symbol for a bed here says 400 meters yeah let's check it out hey bed this way okay bed this way that's exactly what we want exactly come on there's like nobody here there's like two cars and one truck if they don't have space for us then they don't build hotels properly in Russia is all I can say seriously yeah let's check it out fingers crossed fingers crossed I just want a bed so badly hello how are you I don't know what you are saying oh what are you saying English, German, German English hey, good to meet you you saw the sign there sorry, the sign is in Russian in Russian party man party man I don't know what it means party man party man party man party man party man party man very kind words, right? you sleep here? I don't know don't wear where are we going? in Kazakhstan yeah, we sleep here and tomorrow in Kazakhstan in Semay where are you from? Europe, Africa, Brazil, USA, Canada oh yeah, like it's raining, it's raining we got here, and it's raining really hard yeah, yeah, yeah yeah, yeah, yeah thank you thank you, thank you thank you yes, they had a room for us, thank god and it's not a bad room and it was only 10 pounds for the night and the lady here, she even made our beds like everything is nice, fresh, washed it's so cool, I'm so happy yeah, because I was a little bit worried before like all the hotels in that town were fully booked and although the people there, the locals they seemed so friendly like seriously, they came up to us they asked us a lot of questions they were really smiling, hugging us they were so happy to see us but on the other side, it was full with military people as well so it's like this big contrast I just didn't feel really comfortable with all these military around, I was just like this is not the right town to stay in we've got to move on, we've got to move on yes, and we did, and we found this lovely place here we will have breakfast tomorrow morning here as well, I think yeah, because it's a cafe with a hotel and it wasn't even on Google Maps it wasn't on iOverland, it was on nothing we just saw the sign on the side of the road it was like, bed, that way and we were like, okay it's the perfect option plus we did a lot of distance today we were supposed to do only around 200 miles and finish in Bar now but we ended up doing 350 miles and now we are only one and a half hours from the Kazakhstan border so that's positive, that's really good yeah, so that means we can have breakfast nicely tomorrow here, and then we can just hit the road, quite relaxed because we don't have too far to go and then tomorrow we'll be reaching the city of Seme and there will be our first big rest stop so I'm really looking forward to that the holidays! I can't wait and that's it from us today, we hope you enjoyed the video if so, please give us a thumbs up, subscribe to the channel share the video with your friends and family, comment below and we will see you next time


One thing that really sets you apart and candidates like you apart from the establishment is that you actually Can empathize with people who are feeling apathetic about the political process and even turned off by it because you know You do see this general sense of well I want to check out of electoral politics because it's not working I don't want to vote and even I felt that instinct that I had to fight You know earlier this year when Joe Biden started to push ahead. I'm sure we all felt that way, right? So it's like I I think that the fact that you're able to Empathize it puts you in a unique situation to where you're able to communicate with people who feel the same way because like when you look at Individuals within the establishment like your opponent Jimmy Gomez Gomez You know, they have no idea why people are so turned off by the political process Like some of the comments that I've seen more, you know from out-of-touch elite celebrities Is how could any millennial be upset with Joe Biden as the nominee look at his platform? He has the most progressive platform in American history But I mean if you ask them to name three policies on that platform that was written by consultants He probably couldn't so I mean like things aren't changing and where things are changing for the better They're not changing fast enough so I'm so glad that you're able to speak to that and You know people know about that and they know that you're aware of this But I want to talk a little bit more about Jimmy Gomez because this is an individual who he is losing popularity And he just he he hasn't met the moment now I alluded to the fact earlier in this interview that he is a corporate Democrat But can you expand upon that because during COVID-19 if you're not there for your constituents when they need you the most I think that that really speaks to a failure in leadership and speaks to the necessity of replacing him So talk through in your opinion why you think he needs to be ousted because a lot of people don't necessarily know who Jimmy Gomez is He's not like one of these high-profile Democrats, you know, that's a rising star with a lot of name recognition So people may not be aware but in terms of like the need for your future constituents. How has he failed in your opinion? It's gonna be a long list I'm I'm sure Well, I mean to me, I mean just to make clear I don't know him personally. I've never met him and I'm sure he's he's a great guy and then a great friend to a lot Of people but when it comes to Legislating on the behalf of 700,000 people in your district. It becomes a very serious matter. So if you don't have If you don't have a plan on what's your first 100 days of Congress or what your first two years will look like Why are you in office? And what does that look like like what are you standing for? We need to see that in an elected official and a representative and before I go to the corporate aspect. I think the corporate aspect Is just an example of what I'm getting at is just this lack of conviction this this this urgency that's that's lighting a fire inside of you where everything you do is for your community right now because It's really a life or death for a lot of people in terms of finances and debt and where they're going and And to realize that this job in position isn't a position to be taken lightly at all that if it were a job at Like all of us that had jobs, but we understand that if we Performed below a certain standard or certain levels of expectations that our time would be very up would be up And so what what got us to to shape up and do our jobs is is that fact and realization and knowing that? But because our elected officials Continue to be reelected continue to not be challenged continue to be elected into the office by campaign and corporate funds There's no there's no measure of accountability or oh, I should actually be doing what I was called to do or reminder system in place Because we have all of this corporate money. And so there's there's also the campaign finance part of that where For a community or a district no representative should be determined based on how much Corporate money they were able to fundraise like that's ridiculous Shouldn't somebody that's elected from the community be elected based upon their platform their visionary ideals What they envision and and their track record and what they've done and how they spent their time and what they've learned like isn't isn't that more all more important when it comes to electing somebody into office and so Even and and so these are these bigger things where we have they're not able to really take firm stances on policies for the people and an example of that is And that's also because they're tied to their corporate interests because they just basically are puppets and and when I say Corporate Dems or corporate Republicans. I think they're all the same because in the at the end of the day You're just part of the status quo and you're enabling the transfers of wealth that are happening between the masses of working people To the few and privileged are that are wealthy And even in this pandemic we've seen the biggest transfers of wealth happen to the wealthy and the privileged and the few where this oligarchy Doesn't is is doesn't seem like it's going to be ending soon if the people really don't rise up and so the thing about My opponent Jimmy is he's not taking firm stances on issues that hurt and the hurt the district the most Yes, he might have done this and that but where are we in our People experiencing homelessness. Why is it that we have 45,000 brothers and sisters living unhoused? Why is it that people continue to live in financial distress?  No, and it's not and I know it sounds unfair to put it on one person but if you're in a situation where Los Angeles is known for being local corrupt politics with the pay-to-play developer scheme and and if Los Angeles is known for its homelessness crisis and the lack of affordable housing and And and that wouldn't that be your main goal in fixing and addressing heard Addressing the areas where people are hurting the most and so when you're not doing that either it makes you think is this person really connected and hearing the constituency in the communities or even able to relate to the suffering or is even making any effort and engaging in Regular office hours for the constituents or regular town halls and when you look at it the questions are all no He hasn't fought for housing legislation of any kind He hasn't taken a stance on recurring monthly cash relief He hasn't taken a stance on rent and mortgage cancellation and in all of these things It's like come on like we're supposed to be one of the arguably the most progressive districts in the nation But you're not like you say you're progressive, but I don't really see it I don't see you being big and bold and I'm not saying you have to scream and Do everything all day like not in a physical sense, but I don't see that I don't see that that that conviction that passion where you really want to fight for the people happening Why is it that you're doing town hall sessions right before reelection time? Why is it why is it that you're doing it at once a year? Isn't it something where if you're representing to the people? It's not you doing your job and giving the people an update. You're doing the job with the people You're listening to the people in terms of what are your concerns and issues? What are you going through? What's your suffering?  Okay? Let me go back to DC and this is what I'll try to fight for that's the conversation that should be happening But it's not happening with him It's not happening with all of these corporate incumbents that are in office right now And that's the thing we need to bring that focus around to the people where it's not just lip service anymore and one of the things that prevents them from Being able to carry out their promises to be able to carry out where it's not like my opponent where he's like I'm for Medicare for all guys, but then his biggest donors are pharmaceutical companies and health care companies Are they for Medicare for all? No talk with your donors first or cut them off I'm for free education. It's like But your donors are student debt collectors. What are you talking about like what are you saying? Why are you at Black Lives Matter police police brutality? Protests are labeling them as police brutality when you're taking money from police union packs and private prisons Why are you doing this? Why are you saying that you're leading and speaking at USPS rallies? When you're taking money from its competitor and it's not to say that they can't coexist Yeah, they can but when you're taking money from both conflicting conflicts of interest like how are you going to say that? You're fighting in the best interests of USPS is so as you're claiming and so I think it's just a deeper realization of like What are elected officials doing? Yes, we talk about being progressive on social issues But what does that mean on a practical level as well? Like are we putting our money where our mouth is? Why do we continue to? Fund the Pentagon as it is and I am actually I give I give him props for voting for the 10% decrease and a lot of people I've been saying it's because I mean it's re-election time and and what that's that's one of the benefits Mike us running for office is to push them closer to the needle to do their job and that's what he's feeling and that's a great outcome of it and and And that's a great thing but for I think right now it's for us to really realize like what's going on Bernie's called it out in the early 90s when he said hey guys like we're being run by an oligarchy and an oligarchy is one Where just the few and the privileged are controlling everyone. That's what's going on right now We are being controlled through poverty Through through money right now. Why is it that? Ubi which seems something that could be dressed so easy and simple where bam It goes through your maybe set up a separate direct federal bank account where it goes separately just straight to you Where that happens and you're able to get instant access to that. Why is that something so hard? Because it bypasses the government it bypasses hands that can make money off of it that can all of these bureaucratic Types of things it goes straight to the people and that would be giving the people too much freedom too much money too much power It's not even too much money But too much power because when the people start waking up We know that with all of these protests that have been happening even within communities when people start waking up they know how to organize and protest and so Imagine if each of us were given pre-covid a thousand dollars a month This would give us the levers to say hey, I don't want those kind of minimum job horrible working conditions I don't want to be taken advantage of like that I I will be able to now start for a different career lift for that It would empower even labor unions because now they have a bigger leverage power in that sense as well So it would empower everyone and give that extra hope and give that extra Assistance But the thing that's going against it is that's not the priority of our elected officials right now That's not their priority. Their priority is to their corporate donors. Their priority is to Passing a $1,200 stimulus check for the people and then passing huge transfers of wealth that they won't talk about in their town halls To you because they don't they probably didn't even read those pages Because they were fumbling just to even give you what the benefits of the $1,200 stimulus check work Because they barely read the bill. I've seen my opponent stumble trying to answer very basic questions about Major highlights of a bill. So it's like why are you not doing your job in Congress? And so I know I kind of beat around the bush I mean not beat around the bush but answer that in so many different ways, but with this corporate Incumbent idea. It's so dangerous. It's it changes everything Why is it that corporate interests like? All a lot of his corporate donors were bailed out first in this pandemic Why why do we continue? Why did we give away 20? Why are we giving away 20? 20 plus billion dollars to defense contractors in a pandemic like this And yes, they might say on the on the superficial on the surface level It's coven 19 related But if you see how the payment scheme and what they could have done to do all of that No, it's just another handout like why are we not calling out these handouts to corporate interests? But then talking about where are we gonna get the money when we're when we're talking about prioritizing the people and it's this brainwashing of manipulation that we've also undergone as the American people right now and so the corporate I think the biggest thing that in addition to Proposing all of these flagship policies that are prioritizing people We really need to take money out of politics because we can't have our elected officials pledging their allegiance to corporate interests to the few in-party leadership that are controlling the entire Congress and House and All of that really needs to stop Yeah, I think that really you hit the nail on the head in calling out the conflict of interest I think that a lot of people they They know that there's this you know, they have a sense of money in politics being an issue But like really directly tying votes and specific legislative actions to specific donors That is something that I think is missing and I'm glad that you did that because it's important like when we live in this Late-stage capitalist society and we have commodified every single sector of society Healthcare education even human beings, you know, we are viewed as commodities now with regard to our labor Like you you have to speak to the money angle with regard to governing Otherwise, you're gonna miss the mark. You're not going to be able to diagnose the problems the many of which we face


Anyway, so we are here in lecture six, and we'll talk about programming in prologue. It's an introduction to what we'll see later in the lecture, because why? For several reasons. First, you are now working on PA2, implementing coroutines, and there will be a little bit of a pain to implement, but then on top of them, you can build relatively easily an interpreter in prologue, and then using prologue, we can explain many things that come later in the semester, such as parsing, typing friends, type checking, and even AST rewrite and interpretation itself. So next week, when you work on PA3, you will be implementing prologue, and for that would be good to know how to program in this language. So what we'll do today is a gentle introduction into the language, and then you will get an assigned reading, which is a prologue tutorial with more problems than we can do here. You'll have fun to actually just working through these examples. So normally on Thursdays, we don't do laptops, but today you are welcome. Download SWI prologue, which is the prologue we'll be using, we're not using our own. And of course, we assume that since you are downloading and playing with it, I can ask you to help us with the solution in the exercises that we are working on here. So if you want to download it, just use Google. The usage is, at this query here, you enter the name of the file, brackets, and the dot, and the file loads in, and the content of the file may look like this. It gives the facts, the facts in this case, all named by the programmer, is that there is somebody called John, somebody called Mary, and they are in this likes relationship. It's our agreement here that what we mean by likes is that John likes Mary, rather than the other way around, even though the other way around might be true as well. But we don't see it stated here. So unless it's stated that Mary likes John, unless such a fact is here in our database, or we can deduce it with additional rules, we'll talk about rules today we should assume that Mary does not like John. And after the file is loaded, you can ask queries at this prompt with variables. This query asks, who likes Mary? The answer is John. Then we can type a semicolon, which means is there anybody else who likes Mary? The answer is false, which means we have enumerated all the answers. So this is just a really brief introduction of how you work with prologue programs. You load the files, essentially it initializes the database of rules and facts. Here are our facts here, and now you can ask queries. The queries try to deduce answers from those facts and additional rules. The rules we don't see here yet, but we'll see them here. So let's go slowly through what prologues allows us to do. So on the top you see two simple facts terminated with a dot. They do not need to be on the same line. Then you can ask Boolean queries, which do not contain variables, which means the answers to them are true or false. In this case, given those facts, we have to conclude that John does not like Jim, so the answer is false. You could ask queries with variables. They are called existential, because what we are really asking, does there exist some x such that x likes Jim? So essentially we're asking for a value of x such that that query when that value is substituted into x is true. And in our database, yes, Mary, if you substitute it for x is true, because likes Mary, Jim is in the database. So the terminology we have the so-called ground, yes. Can you speak louder? All right, so that's an excellent question, and I am going to cover it here. So variables always start with capital letters. And the names of objects are so-called atoms. They always start with small letters. So you cannot confuse the name of a person with a variable because atoms always start with lowercase letters. Therefore, we are writing Jim and Mary and John with lowercase letters. Excellent question, though. So to elaborate on this, in the language we can have so-called ground terms, which do not contain any variables. And both facts here and queries can be ground. They can be free of any variables. Then there are these non-ground terms which contain variables. So what are we really saying here? We are saying that everybody likes himself or herself. Because we have a fact in which we have a variable, but it's the same variable in both positions. So when that variable is instantiated for some atom, for some name of a person, presumably, it's the same in both positions. So it would be likes Mary, Mary, likes John, John. And queries, of course, can be non-ground, meaning they have free variables for which we are looking for a substitution with the value. So variables in facts are universally quantified, such as here. We are saying for any x that you can plug in, for any atom that exists in the database, this likes xx is true. And somehow, logically, the variables in the queries are existentially quantified, which means we are asking, does there exist some at least one x? That we can plug in here. So this is universally quantified, and this is existentially quantified. So it starts getting more interesting here soon. But let's ask a question, because this must be clear before we go on. Yes. That's right. Can you ask the question again? Aha. So if there is an exception, if there is an exception, meaning there is somebody who doesn't like himself, then we cannot state this rule. I know you would like to have the freedom to state this rule and say, this is true, except when something is, well, OK. We could do it. Simple answer is, you could not use this rule. Because for some x, it is not true that x likes himself. But we'll get to rules soon. And when we cover the rules, I can then show you how to actually do it, so that we can write it more concisely. So hold that thought for a few slides. So how do we do actually computation in this language? What we saw so far was probably intuitively clear, which is good. But what is really going on? There is two deduction principles going on. One is generalization, and one is instantiation. Generalization is this. You have this fact with specific names, specific atoms. And you ask a query, which is a generalization of this rule, because it has a variable. And in the process of answering the query, we are instantiating x for something by finding a substitution for x, a value that we plug in into x. Instantiation is the opposite, rather than writing that plus of 0 and 1 is 1. So this is another way of writing and writing this rule and so on. We could write these two simpler rules, which in mathematical algebra mean this. So this here is a generalization of these facts. And then the query here does what it takes. This rule here, and instantiates this rule to the query, to look like a query. So in this case, the substitution that we use is x equals 3. We found a rule that was more general. We made it specific to match the query. We could answer yes or true. So here are the rules. The rules are essentially implications, which tell you if x is the father of y, then y, sorry, x is the parent of y. Which rule would typically accompany this rule? If I press space again, what rule will show up? Well, it could. Essentially, you could say that if somebody is a child of somebody, then it is a parent. But you probably wouldn't want to have both of these. Well, it could lead to complications if you add both of these rules into the database, because you have a parent rule between these two and a child rule between the opposite. And you could get into troubles with program getting into cycles. So another attempt that both rules will follow when I press space. Mother should be the other rule, because we may have more specific rules about father and mother. And from those, we are trying to define what it means to be a parent. So when we write these two rules together, are we writing an and relationship or an or relationship between them? So it is clearly an or. So the fact that we have two definitions of the two rule means that one and the other as well is true in the sense that a parent is when it is a father or a mother. It is not the case that the second rule overrides the first one. Both of them are in the database, and they essentially mean or. We could define a grandfather rule. And the grandfather rule says what? Says that x is a grandfather of y. If there exists a z, some z such that x is a parent of z, and z is a parent of y. And it is the same z in both of these positions, so it must be the same person, and hence you get a transitive two step relationship. So we are asking here, so this is an or. This comma here, as you by now figured out, is an and. And here with z, we are asking, does there exist a z such that both parent xz and parent zy are true? Colon dash essentially means if. Yes, essentially it says if the things on the right hand side are true, then the left hand side is true. Essentially, you could say you are establishing new relationships from those that exist on the right hand side. So we can now load the program here. I'll load it using the consult statement, which I believe raises all the statements that are already in the database. But I'll also want to show you the program. Let's maybe not do that. If I ask a grandfather x, y, all right. So here is the file. Make the font a little bit bigger. Zoom all right. So we have just a mother rule and a father rule. Here is the grandfather rule, which you saw before. Now I can ask for all pairs of grandfather and presumably grandchild. And in this case, here is one. I do a semicolon. There is no more. So the enumeration of solution stops. This should be hopefully straightforward. So with that, you can do interesting database programming. So let's try to write a rule brother, which given some family relationship tells you who is the brother of who. Given a brother can find the brother of that person, all of them, or give you all pairs of siblings such that one of them is a brother. So I have two rules. Remember, these commas are ends. I have these two clauses on the right hand side. The right hand side is here. I have two of them so far. They make sense. The brother and the sibling need to share the same parent. There needs to exist a parent that the two share. But that's not enough to get a good brother rule. So what other conjuncts do we add on the right hand side? Well, that could be. You could say that what I have here is perhaps half brother, the other full brother, because they share only one parent. So excellent. But let's assume that half brother is enough to count as brother. They're not equal to themselves, so that you don't come out to be your own brother. Fantastic. And what else, perhaps? It's not a sister, so we want to say that it is a male, the brother, the sibling could be a sister. And the two are different. So exactly, as you said. So what I wrote here is an infix operator, not equal. But it's the same as calling it in this functional notation, just for convenience, the language provides the infix syntax as well. So now we can return to your question of how would I write with these rules that everybody likes everybody if I want to exclude someone. So can you suggest how to write these general rules like likes, x, x, with a list of exceptions? What you see here on the slide should be sufficient for that. So would you see how to do that? I want people to think a little bit, because that will really force you to understand the rules of the language, especially the rules of the rules. So when I have left-hand side and right-hand side, when does the left-hand side hold? I see your hands, but I want people to think about it. So we'll do like, x, x, when it is a fact. It's a fact with variable, so not ground fact, but it's a fact. It always holds for any x. Now, if it is a rule, now I turn it into a rule, this will hold if this right-hand side holds. So what do we put on the right-hand side so that it holds only for the right people? Right, so x is not equal, and maybe Jimmy doesn't like himself, so we'll put it here. So far, so good. Now, what if I want to exclude two people? Let's see, I'll do this. And Mary doesn't like herself either. So am I done? Somebody can see a problem with this. Right, so by adding this extra rule, I have now, again, got into a situation that everybody likes. Everybody why? Because there is an orb between these rules, which means that it is sufficient to find a valid right-hand side for one of these two rules. And if I do, then the left-hand side holds, and we have somebody like somebody. So if I put these rules into the database, and I ask the query, likes Mary, Mary. I ask the question. It's better handwriting, but I ask this question. How would the interpreter answer this question? It would look at the first rule, and it would say, OK, I can take Mary and plug it in for x. So it is able to match the x variable to Mary. So it will take this Mary, and it can plug it here, and it can plug this here. So far, so good. Now it checks the right-hand side and asks, is the right-hand side true? And the right-hand side is true. So Mary likes herself. So what do we do here? How would we fix the problem? All right, so that would be indeed the right solution that we would say likes x, x. And now we do x must be different than Mary, comma, which is n, and x must be different from Jimmy, and so on. And even better would be to say x is not in a list of people who are excluded, but I'll show you the list in a few slides. Right now, we don't know about lists. OK? Yes. Yes, that would be nice. So this is actually a nice solution. So you could say on the right-hand side, I like that. OK, so I'll write it here. You could say like x, x. And there is an operator, not, which would say not. What is the name for somebody who doesn't like himself? What was the name? I'll call it a dislike curve. And then you could have the set of dislike curves, or self-dislike curves. And there would be Mary here. And OK. And so here, what do we do? When we want to check whether somebody likes herself, it must be the case that person is not a dislike curve, is not in the set of facts. So that's a nice solution as well. In fact, this is a sort of pure solution without lists. Really nice. OK? So we will show you how to translate once we know about parsing and more about compilation, sort of simple SQL-like queries into prologue for illustration of how you can take such a database and translate SQL into it. But it's sort of a silly thing to do because prologue can answer queries that are much richer than SQL. In particular, they can ask recursive queries. So do you see the recursion in this prologue query? Which, by the way, you cannot easily express in SQL, not without an outer program, as far as I know. It could be that there is a typo, descendant, the father. Did I get it? It looks like I got it the other way around, right? Descendant, excellent. I think it's, isn't it correct if we are saying, yeah, OK, I should have, and I'll do it right away. Good. My intention was good, but yeah, I screwed it up. So usually, you want the agreement when naming these predicates be that if it's a binary predicate, then y is a descendant of x because y is in the left-hand side position. So this is almost correct. I think this should be, why is he, is this correct now? I could never get those right. x is the father of z, yes, it should be, OK. So x is the father of z, and now I don't know where I am. And I'll put it here. No, all right, this is rocket science. Perhaps this is what I wanted to achieve, to have you really think about it. OK. It has educational purpose, after all. All right, so now let's do something more interesting. And we'll start looking at applications of prologue to the class itself, to programming languages, to compilation and interpretation. So compound terms are terms like these, right? So far, we have seen only, so far, we have only seen something like a, b, and c, these simple facts, a name of a fact, and then some arguments. But we could nest them, OK? And so what you see here is an sd term. If you took 61a, you remember Scheme, and you know that lists are created by consign values into a chain. So this is a potential representation of a list. So what we'll do with it, we can define a rule like car, which given a list will output the head of the list. So I want you to look at that rule and think about what sort of query you would write. A query so that given a list, you extract from the list the head. OK, so the query could look like this. We'll do a car and x for a variable. And we put the list here. For example, this entire list could go in here, right? And the answer will be here, what? It will be x equals a. So let's look at the, so if you pay attention to the first rules, you will realize that I can write it much more compactly. These two are the same. Well, let's see what is going on. Does this one work? This one is OK. All right, so maybe there was a parenthesis missing somewhere. So these rules are equivalent, and now you can see how the variable list is only there to link the right-hand side and the left-hand side. It must have the same value. So you might as well put the entire cons head and tail into the left-hand side of the rule, and then the right-hand side disappears. And now we have something much more compact. Now what would happen if instead of asking this query, which extracts a head from the list, I will ask this query. Let me write it here. So I am now asking, what would you expect the system to return? So it could find all the lists that have this property. How will it instantiate them? In particular, what will it put for the tail? So the answer is correct, by the way, but there are some subtleties. And one of them is, what about the tail thing? So here is our rule. So if I raise a query, car A, X, then X is going to be so-called unified with cons head and tail. And we know that head equals A. Therefore, this is going to be an A. What about the tail? So it could start with an empty list, but look at the rules that we have here. We really have here no definition of lists. Really, the only rule I have here is what? I say that car extracts the left element of the cons. I have no definition of what the list means. In fact, the program here has no clue what is a list. This is the only rule I have here. This is indeed what I have. That's the only rule. Here is the query. So the only thing it can do is create an answer, a value for X, for which we get the correct answer. And what did it put for tail? This is a variable that is not bound to anything, because it has nothing to bound it to. Essentially, the underscore G333 is some internal representation for this tail variable here, for which we had nothing to substitute for. But notice this was the only answer. I did not get a choice to enter a semicolon enumerate more. It could start inventing various values for tail, but it doesn't have any other rules of what could go there. So this is, in a sense, the most general answer. It is telling us that no matter what you put here, this cons a is still a correct answer to this query. It could tell us something more specific, but it would not quite be a correct answer, because indeed anything can go for tail. And still, this is the right answer to this query. Well, which example do you have in mind where we had something different? So let's go to those. For example, the one here at the bottom, right? No, it wouldn't. So let's try it. Let's go here and go to the likes program. I will show you the likes program. So these are just these two rules. And now I can ask likes x, gives me John and nobody else. I can, in fact, ask likes x, y. And it will now enumerate the entire database. And why does it do that? Why doesn't it insert a free variable? Because we do have a set of facts for likes, and it assumes that we are in a closed world that these likes facts are the complete facts that we have. There is nothing more. Like number one, any number is that number. There's a different number of numbers, but not anything to do. Right, so in that case, it could start enumerating them. But if we look at our program here, the one where we do nothing but just ask for a list. So we are now asking the query, what does it have? It says, well, x can be equal to this. And then it tries to look for what it should instantiate for tail. And it has no constraints on tail. It can be anything. In other words, the program is looking for substitutions given the facts that it has that it can plug in for x. And what can it plug in for x to satisfy the query? The most general substitution is, so x can be, you could think of it as these three cons with head on the left, but this head equals a, and tail here. So it finds x to be equal to this tree, and it finds head to be equal to a. So it builds this so-called substitution. It says, head must be equal to a. X must be equal to these three cons with head on the left and tail on the right, both of them are variables. And as soon as they satisfy them, the query answers them. But it finds no constraints on tail. And therefore, the best it can answer is say, I have no constraints for tail. It's a free variable. We'll talk more about the substitution principle later. But if you are bothered why it cannot provide anything specific, look at the rules and try to find whether there are any rules that it could use to instantiate anything specific for tail. It just doesn't have any such rules in the database. OK, well, what answer would you expect? So let's ask this query. Clearly, Adam is not in the database, right? And so now we are asking a question, can we find some substitution, some value for x, such that when we plug it here, this will become a fact that is in the database. And you cannot invent such a value for x, right? Because none of the facts we have in the database have Adam in them. So the answer here will be false. OK, let's see. So let's try it. I have a syntax error somewhere. So it didn't. And I wish I had the better explanation that I do, but I don't. So I'll promise the explanation on Tuesday so that it is all clear. Tuesday is also when we'll talk about the algorithm that the interpreter uses. And that will be also a better context to explain this. So let's leave that till Tuesday. And let's look at what we can build now on top of the compound rules. So what I want to do is now build an interpreter, a very simple interpreter. We'll start by defining an abstract syntax tree. So this here is a tree corresponding to value 3. This one would be plus 3 and 2. And this one is plus 3 minus 2 and 3. So you can think of these functors, these compound statements as nothing but Python tuples that we used to construct our AST. There are three representations of the same representation of three different trees. Now, how do we evaluate it? Let's look at the first rule and see what it does. The first thing you want to try to understand when looking at the rule is how many parameters does it have? And what goes into one parameter, what goes into the next one? So this eval rule has two parameters, right? What would be the first parameter? It's the argument to eval. It's the tree that we want to evaluate. What would be the second parameter? It's the result of the evaluation. In Prolog, these rules are not functions where you put the input into one parameter and the result comes out. You have these variables. And one of them acts as input. One of them acts as output. And sometimes it's reversed in the sense that one of them could become all of a sudden input. We bind it to a value. And the other one is a variable. And we instantiate it to something. OK, so here is the first of three rules that we have here. What does this rule say? That when we reach a leaf that is an integer, the evaluation of it is the value of the leaf. So let's just see whether it works. OK, here is the same thing written slightly different notation. I think I'm doing something wrong with these queries here. So now I can ask eval. And the AST is nothing but one leaf. And I need to give it a variable. And the result goes here. The result is three, all right? So clearly, we want a recursive rule. And here is the rule for the case when the top of the tree that we want to evaluate is a plus with two sub-trees left and right. This is the case when it's a plus. And the entire sub-tree is bound to L. And the other sub-tree is bound to this variable R. Here we evaluate them. And Rv will contain the result of the evaluation. And then this variable here gets the value of the addition. So there is something special I had to do here. I wrote the rule as res is the value computed in the evaluation plus the value computed in the evaluation of right-hand side. Why didn't I say the same thing except with the equal operator? Can you take a guess what the difference would be? So let me first run this query here. Correctly evaluates. Now, if I change this to and reload the program, that's how it's true. This is the result I got. I guess I don't know how to write comments in prologues, hence these errors. So look at the result. So what happens in the case of equals? We get something from the sub-tree and something from the other sub-tree. And rather than performing an addition on them, we'll form another tree out of them with the plus as the symbol in the root. So no evaluation happens, actually. You take a tree, a structure, and another tree, a structure, and form it into a bigger structure. This is what happens when you use equals. The same operator as when we are taking a variable and substituting another value to it. If you do is, then the right-hand side is actually evaluated. So what we need here is indeed a command to the language to evaluate this right-hand side here. Now the evaluation actually took place as we went bottom up. So as an exercise, take a paper and pencil and change this interpreter to a disugaring system. So what comes in is an AST, like you have in the parser, on the output of the parser. And you want to write a few simple rules to change it into a system that produces AST that are disugared. So you want to write the rules that essentially rewrite part of the tree into something simpler. It's enough when you write one rule that convinces you that you would be able to do it. Say rewrite if into a call to ITE. Question. What would happen if we do that? Well, we need to invent a new variable. Let's just call it x. Now we do eval. I understand that this is what you want to do. You want to take the Lv plus Rv and think of it as a new tree, evaluate that. The result would go to variable x. And then x and res will be the same. And the result would appear here, right? So before even running it, what do you think would happen? So let me give you a hint. What we wrote here is the same as this. The plus can be in the infix position, but it's really the same as this particular pattern. So we are now running eval on a tree that has plus in the root, and it has children Lv and Rv. And now you need to look at the rules here on the left-hand side in here and ask, do we have a rule for eval that matches this plus? Not the plus the word, but plus the symbol. So here we have a tree. We formed a fine tree with plus, not the word, but plus with a subtree. And now we ask, what would be an x that the query eval would answer through? And it wouldn't match anything, right? Because none of these rules here have plus in them. Well, what we have really done here is we have rewritten the tree from a node where the operator was called plus the word into a node where it is now has a different name, but it's a different tree, same structure with the different nodes in them. So the sugaring essentially is a process like that, but you do not want to call eval again on it, but perhaps you want to call a rewrite on that, to rewrite the right-hand side further, right? Perhaps the sugar vial into lower-level operations. So this one works. So rewriting, how would we proceed? Any ideas? Let's create a new file, and we'll start from here. And how about if we change, if we do a simple optimization, I want to rewrite. So I would like to rewrite two times e into e plus e because multiplication is expensive. So whenever I find two times e, I would like to optimize it into a cheaper operation. Never mind that it doesn't always. It's more efficient, but let's try to implement this rewriting rule, okay? So I have here something that looks like a promising beginning of a program. I change eval to rewrite so that we don't get confused. Let's see what we need to do here. Let's put this at the end, and let's first deal with this special rule. So we want to do that. And whenever I find a tree with times in the root, two on the left-hand side and some are on the right-hand side, I want to somehow create a result that is, what do I do here? So let's see. This might work. Still need to take care of the base case, which somehow just copies the rest of the tree and only rewrites times. But before we go there and take care of the rule that just does the copying, are we happy with that? Do we want to rewrite R? I think that's the question. Do we need to do something special so that R is recursively rewritten? Okay, so let's try to do this. So rewrite R into rewritten R. I'll call it RR. And does that sound better? Well, do we want to make the equal sign is? What was is the use for? On the right-hand side, we had a structure, essentially a tree, which we wanted the interpreter to evaluate, because we knew it was an arithmetic tree. There was a plus and values on the side. So is essentially force that evaluation. Here we actually want the tree. So I think we are happy with just getting that tree. And res will be just bound to that tree. Or you could say we found a substitution value for that res. Now, we could also write it this way. It would be equivalent, right? We'll say this is the plus. And here what we do is we use the right-hand side to get the value for RR given a value of R. So, so far so good. What do we do about the base case? Could we just say that the rest is rewritten like that? So let me write here a query that we may want. Want to rewrite times int to... See, we would like to obtain four plus four on the output. So how do we take care of that case when we have encountered a node that does not need to be rewritten? I do have a rule here that might look promising. We find a tree. We do not want to rewrite it. So we'll make the tree to be the result. Is that going to do the trick? So is it the question here that we may wanna ask, if I write a rule like this, are we gonna decompose the tree into smaller chunks and process them? In another words, are we going to descend down the tree and rewrite it? Or are we just taking the whole tree and copying it to the output? This rule does not do any recursion, right? So we need to somehow have a rule which says, okay, times maybe L, R, is going to be rewritten into what? We don't change this R. We don't change the times, but we want to put something here and something there. What goes there? So what do we put here? So who likes this answer? Okay, so what is wrong about that? I have now decomposed the tree and got access to the left and right subtrees, but I missed something. Okay, how do I call it recursively? So do I do, now I'm invoking the recursion on that subtree both left and right. So what is still not correct? Okay, so we definitely do need to do the rest, right? We need to do plus in a similar way. So yes, we need that, okay? Let's assume for now that our tree only contains times, but line two is still not done. What do we need to do, fix in line two? Who knows the answer? Okay, all right, so not everybody. So what happens here? So we call it with something like this. By the way, I need to put here the answer. The result will go here. So we'll call the query, rewrite query, and this is our three times in two in four. So is this going to match our query? It is, right? L is going to be in two and R is going to be in four, right? So we'll be, after we call it, this will be in two. R is going to be in four, right? Now we need to construct the tree that will be the result. Now I'm constructing a tree with the same L and same R, which in this particular case is enough. But what if I do here times in two? So now I have a tree that is, contains twice the instance of two times something. So the rewrite should happen twice. So now L is in two and the right is times in two, in eight. So do I need to do something with R? I need to rewrite it, and I'm calling rewrite on R. Where do I get the result of the rewrite? In which variable is it stored? So who can see the error in the program? So that's a beautiful answer. The way I wrote it, which is incorrect on purpose, is essentially making the program work only for those cases where the input into the rewrite and the output is the same. So I'm insisting that the R is the same in both positions. Input must be the same as output. Whereas of course I want to handle cases where some tree comes in and a different rewritten tree comes out. So I need a different variable here and a different variable here to store the result of the rewrite. And in fact, if all goes well, our R should be now plus, plus int eight, eight. This is what we want the result to be. Now LR will be the same int two. That's not rewritten during this time, okay? So are we happier now? In other words, we have decomposed the tree here into times L and R. Well, L and R. Here we are rewriting L into a new tree called LR. And here we are rewriting in R into a new tree called RR. And now on the way back, we use these rewritten subtrees and compose them into a new tree. So we have now a rule four times that is special. This is the simplification rule. And now we have the rule four times that doesn't do anything. It just recursively goes down and rewrites subtrees and then puts them together back the same way, okay? And we'll omit plus. And now let's see whether this actually will work. It would be surprised if it did, but maybe we'll get lucky. Oh, at least no syntactic error. So let's try the rewrite. And the result goes here. And now I'll create a three times into the one that should be rewritten. Okay, so on the output we expect in three plus in three. And we didn't get it, okay? And now let's try to understand what is going on. Okay, so what is missing in the program? No base case. So what base case do we need? So how about this one? So when we run into a leaf that is an ind, we are not rewriting it back, okay? So let's try this. Hey, look at this. And but notice what happened. We have now two rewrites. It has, the program has multiple solutions, right? It has rewritten it the way we wanted, but it also did what? It produced the original. So what about this rewrite here? This is the bigger tree. Now we have four possibilities because there are two possible rewrites and the system produced a tree in which both of them were rewritten, one of them, none of them, right? The first one is the best. So how would we deal with this situation? Okay, so we could do, we could say here that L must be, let me put it right here. L must be different than two, right? So let's see, with a little prayer, maybe it will work. Great, and we've got no other choices. So we have done the right thing, but sometimes, yes, please. Okay, let's see. So let's look at the program here. So we are simply, in this case, making sure that the rules are mutually exclusive, right? That for any time's node, either the first rule fires, which performs the simplification into E plus E into R plus R, or the second rule fires, but not both. Oh, I see. Okay, perfect. You are really saying something else, if I understand correctly, you're saying that we really need also this rule, it should be actually L, okay? And similarly, we should, oh, okay. See, now I'm at a situation where I want it to be, to explain the so-called cut operator, right? Now I want to make sure that the rules are truly mutually exclusive, only one of them fires, so that we don't get so many possibilities. When we only handle two times R, it was easy because we added this L, must be different than two. Now it's harder, now the rules become messy. So there is this so-called cut operator, which, what it does, it says that, as soon as one of the rules from the possibilities fires, the others are automatically excluded. And I believe it will work like this. It's this exclamation mark. And essentially it says, if the execution gets all the way here, then we consider the left-hand side rule, a rewrite, to be done, and it will not then visit the other rules, okay? So here, if we match one times, sorry, two times R, right? We'll get all the way here, and then this rule and that rule will not be visited. So let's see if we get it to work. And it does, right? Now the rules are mutually exclusive, not by the set of conditions that we have attached to them, but operationally by this command, which says, if you match this left-hand side, right, it really matches only this. You get after this operator, which always matches, but once the execution gets here, then this rewrite and that rewrite are automatically excluded. You do not recurse into them. Okay, so instead of this you are saying, we could say maybe the proposal seems to be, say do this. So now I think what you want to support is, and you want to make it very easy in this program to support the rewrites of trees with arbitrary operators, right? So now I should be able to write a tree with power and minus and division and all of it without really adding extra rules. So think about it, would this achieve the purpose? I see, for the base case, which was the int case, okay? So you want to really replace this, okay? The rule where we had int x, int x, you want to replace with the one on the left. For the base case where we do not need to recurse deeper, that would work. We would still need the rules for plus and minus where we need to decompose the tree and recurse deeper, but this would indeed, yes, the rewrite x, x would be a way to catch the base case, excellent, right? If you can have a variable for a rule, so you want to do a, there is a way to do metaprogramming in it, essentially manipulate programs that are prologged programs, but not as simply as attaching these rules to two variables. But you could ask things like, how many solutions does this program have? Does it have one or more? So that's sort of simple metaprogramming where you enumerate solutions you can do. I believe not easily, some prologged systems have extensions for maybe doing some of it, but I'm not familiar how to do it, but look into the manual, okay? So I think that, yes, how about if I answer the question offline at the end of the lecture. So this is just gentle introduction to get you a feel for prologged. There is a reading assigned, which is going through a tutorial. Presumably, you will download the system and play with it, since by reading it, it may really be hard to get the hang of it. And that's it for today.


He's always gonna say hello. Hello. I was like, where you at? I'm at work. It's a Saturday. I'm at work I'm like, okay. I'll call you later. Yeah. Yeah. Yeah. I love you Love you, too My name is Lance Corporal Silla. I'm from an island in the Northern Maranan Pacific called Saipan But that he works as a construction worker. It was um an opportunity for my dad to Give me a better life overusing his body even to this day, it's it still Surprises me that his body can still function 2015 it was a big typhoon back home called a typhoon Sotolor and We were lining up for MREs. I saw a Marine. I still remember what he said He said are you gonna enlist to be a Marine? At the time, I didn't know what a Marine was But if it looked like him, I said yes, sir. I would love to My dad gave me this some Long stare and he said this is an opportunity that present itself and you're gonna take it This is gonna be good for you at the time. I didn't I didn't know what he meant by that So one night what keeps me going is my dad still I Just see a man who's put his family first in himself for three decades and I tend to keep telling myself that you're here for three years. You can do it You're that's gonna be home safe and sound do what you gotta do in the Marine Corps Provide for your dad your family If he can struggle for 30 plus years I could struggle for three months in boot camp and I want to make him live like the rest of his lives in a Easy way and that's what kept me going


You may or may not have seen Will Smith recently posted a photo in front of his old kingdom. 30 years after Will started as the Fresh Prince of Bel Air that made him who he is today, he's giving fans the chance to book the famous abode on Airbnb. The classic white mansion in the Fresh Prince where Will's character lived with his rich aunt and uncle is arguably one of the most recognizable homes in pop culture. It's an estate I'm sure we've all wished we could visit and if you can make it out to LA in time to book a stay, stay tuned because today we're taking a look. The Fresh Prince of Bel Air was an American sitcom that originally aired on NBC from 1990 to 1996. It was created by Andy and Susan Borowitz and starred Will Smith as a fictionalized version of himself. He was a street smart teenager from West Philadelphia sent to move in with his wealthy aunt and uncle in their Bel Air mansion after getting into a fight in his hometown. However, his lifestyle often clashes with the lifestyle of his upper class relatives. The Fresh Prince ran for 148 episodes over 6 seasons and there was the desire to go longer but Will wanted to move on to other things in his career. Regardless, fans of the show are happier than ever. Considering the Fresh Prince of Bel Air reunion special is set to stream on HBO Max this year. Surviving cast and original will be taking on their same roles. Like I mentioned decades later, the Fresh Prince himself has teamed up with the vacation rental company Airbnb to rent out a portion of the famous mansion that was used as the exterior for the hit show. We can see Will is excited about it from his Instagram post. With its rounded balcony, lush topiaries and colonial style windows, the property has always been a masterpiece. But there are a couple things to note about the Fresh Prince house. Firstly, it's not actually located in Bel Air, California, but instead located in Brentwood, California. And like most shows, the interior scenes were filmed on a specially designed set, not inside the mansion. However, once you see the Fresh Prince mansion in current times, I don't think you'll be disappointed. Hey guys and girls, it's Kara and today we're bringing you another house tour here on Famous Entertainment. This one is going to be a little different because in honor of the Fresh Prince of Bel Air's long-awaited reunion and the famous mansion from the series being up for rent, that's exactly the home we're going to look at. So if you live too far from Brentwood to visit, don't worry because we'll take a look at all of the rooms in their glory. If you liked this video, make sure you're subscribed and ring that bell for notifications so you never miss one. We've also done a bio on Will Smith if you want to learn more about the Fresh Prince in real life as well as other celebrity house tours and we'll link to some at the end. Follow me on Instagram to chat and as usual let me know who's house tour is next in those comments down below. Now let's get into this video. Before we get into the details of the home, for those who aren't too familiar with the Fresh Prince, the theme song and opening sequence set the premise for the show. If you know that, then you get what the series is all about. Will is a street smart teen, West Philly born and raised while playing street basketball. He misses a shot and the ball hits a group of gang members causing a confrontation that scares his mom. She sends him to live with his wealthy aunt and uncle, the Banks family in the posh hood of Bel Air Los Angeles. It's not too far from Will Smith's actual life if we're being honest because he too grew up in West Philly but moved to LA full of charm and talent ready for Hollywood. But anyways back to the Fresh Prince. Will, the TV show version of him ends up clashing with the upper class world of the Banks family in humorous ways due to his working class background. Will's uncle Phil and Aunt Vivian and their children Will's cousins spoiled Hillary and titled Carlton and impressionable Ashley. The lavish mansion used for the exterior shots of the Banks mansion is a house located on North Bristol Avenue Los Angeles which was built in 1937. As I mentioned, this home is actually in Brentwood, not Bel Air. Interior scenes were shot on a soundstage on pre-made sets like any show. After season 1, the mansion sets were completely rebuilt. In season 2, the kitchen and living room sets were made much larger with a more contemporary style as opposed to the formal layout of the first season and were connected directly by an archway. This allowed scenes to be shot continuously between sets. Any fans of the Fresh Prince if you ever wished you could visit this iconic house now Will is making that possible. According to the Airbnb listing, he himself is the host so I guess he can add that to his resume. Starting September 29th, 5 One Night Stays for groups of up to 2 people will be made available where you can stay in his TV kingdom or rather a private wing in the Banks mansion. Each day will cost 30 bucks a night in honor of the show's anniversary and will be open to Los Angeles County residents only. So if you're not included in that group, good thing you're tuning into this. The 5 Stays will take place October 2nd, 5th, 11th and the 14th and according to Will's listing he says, Remember, these one time one night stays are not a contest. Easier said than done. The Fresh Prince mansion is located in Brentwood, Los Angeles which is another nice area on the west side of LA. There isn't too much difference between the two places except Bellaire's Hilly and Brentwood is flat. The producers likely chose this house because it looks upper crust and conservative and it's a very old school American house. Since the Fresh Prince was set the living room, kitchen, pool house and the rest weren't real but looking at the photos of the place you're in for even more of a treat. Imagine the Fresh Prince house was modernized and upgraded. This is what you might get. On Airbnb, Will says, Ready for the freshest staycation ever, if this place looks familiar that's because it's just as fly as when I first rolled up the driveway. I'm back and this time I'm handing you the keys so you have my wing of the mansion all to yourself but my sneaker collection is off limits, right? According to Realtor, the mansion spans 6438 square feet with five beds and five baths. The home seems to be a neoclassical style, slightly colonial with a columned rotunda right at the front entry. It kind of has that White House look. As they in the mansion offers access to what would have been Will's bedroom and bathroom on the show or what he says is his wing of the mansion. Not to mention you can enjoy the poolside lounge area to go for a swim, the outdoor patio and the Ritzy dining room. Guests will be greeted by bold graffiti art, posh interiors, family portraits and of course Philly cheese steaks served on silver plaits. The vibe here is a definite nod to the 90s sitcom so you could really take a trip back in time and feel like the Fresh Prince. While you won't have access to the kitchen, all meals will be provided and served on those silver platters. Guests are able to have a fashion show though as they're welcome to go through Smith's wardrobe and epic sneaker collection or according to Will's listing, royal perks include lacing up a fresh pair of Jordans for shooting some meatball in the bedroom. So as you likely guessed, the bedroom has a basketball boot. Not to mention the closet is stocked with Fresh Prince looks from Argyle, prepster to all-star athlete, which makes for a great Instagram photo shoot. The mansion has a lavish master suite with fireplace and even a games room with foosball table and piano. For entertainment, there's a turntable similar to DJ Jazzy Jeffs where you can spin throwback classics all night if you choose. You can also soak up the sun outside or indulge in a swim at the pool. DJ Jazzy Jeff will even virtually welcome you to the poolside area if you want to catch some rays. And don't worry, the Fresh Prince mansion kept social distancing protocols at the top of mind. Comfort and safety is a priority for this staycation and Will Asher's guests will have a wing of the manor to themselves from check-in to check-out with no other guests around during this day, not even a family member from Philly. The Airbnb listing also reads, and you can rest easy in your prince or king-size bed knowing that I've committed to cleaning prior to your arrival in accordance with Airbnb's enhanced cleaning protocol which is informed by guidelines from the US Centers for Disease Control and Prevention. So, you're safe by the sounds of it. Finally, Airbnb will also put some of the proceeds towards a one-time donation to a local organization from Will's hometown, the Boys and Girls Clubs of Philadelphia. This program supports youth including those in the greatest need offering skill building and development programs, recreational activities, and more. For fans outside of the Los Angeles area, it sucks that you can't book a stay, but DJ Jazzy Jeff will alternatively offer an Airbnb online experience where they'll teach some tips and tricks for DJing. Fans can request to book the $100 session online with the actual event taking place on October 1st. Alright, so I think I'll bring this house tour to an end here. I think I've given you all the details possible about the iconic Fresh Prince of Bel Air mansion or rather the one that's actually a house, not just a set. To see any more of the place, you're just gonna have to book a stay yourself, which seems like it might prove slightly difficult. Also, $30 sounds like a steal. Until the Fresh Prince reunion airs this year, that might be all we get to see the Banks mansion. What did you guys think? Did they do a good job ducking the place out like the Fresh Prince or is it not the same? Would you guys wanna spend a night there? Be sure to let me know what you liked or didn't like down in the comments. I also recently launched a personal channel so if you wanna get to know me better, watch my latest vid and subscribe. Here's a clip. While it might look like lingerie, I promise this is a dress. I'll let you in on a little secret. If you ever want a bikini like this and you plan on wearing something this flashy, I got this from AliExpress was like 10 bucks and that's one of my secrets. Something that I would wear to a beach party or beach club. I was actually saving this for Vegas. It's from Fashion Nova, but I didn't get to travel this year so this would be a blast from the past but I still think they're hot. Thanks for tuning in. Don't forget to follow me on Instagram and let me know whose house tour is up next. I'll see you on the next one. Bye.