Hi and welcome back to program analysis. This is video number three of this lecture on operational semantics and what we'll do in this lecture is to look at an abstract machine for this simple language that we have syntactically defined in the previous video. So in this video and the next and the one afterwards we look at three different ways to define the semantics of the simple language and these three different ways of defining the semantics are at different levels of abstraction. We here now start at the lowest level where we will define an abstract machine for that language. You can think of this as basically a computer or a machine designed specifically for executing this one language only and we'll use this hypothetical machine as a device to explain what this language really means. So let's get started by defining this abstract machine for the simple language. This machine that we're going to define will have four elements and you can think of them as basically four parts of the hardware of this hypothetical machine and of course this machine is not really implemented, but this is just a thought experiment if you want to explain what this language really means. So one of these four elements is a so-called control stack which we'll denote with C and what this control stack is doing is to store all the instructions that we still need to execute. So essentially what happens here is that once we begin executing a program we put all its instructions on this control stack and then the machine will execute them one by one. Next we have another stack which is called the auxiliary or also result stack and we'll denote this one with R. So what this does is to store intermediate results. So whenever we have for example the result of a computation we're going to store it on this auxiliary or result stack in order to then use it later on. So now we have these stacks, but of course we also need something in our computer that performs the actual computations and similar to a real computer or to a real machine, this is called the processor. What this processor does is to perform all the operations that we have in our simple language and specifically this means it's performing arithmetic operations, comparisons and also Boolean operations. And then finally of course a computer also needs some way to store its current state and this is done in our abstract machine using the memory or also called state which we denote with M. Now you can think of this state or memory as a function that maps locations to values and this is a partial function because not all locations may have a value. So it's a partial function that maps locations to values and specifically in our case to integers because these are the values that simply is really operating on. Let's introduce a little bit of notation here. So if we have a given state M and now we want to write something into our memory then we write this like this where we say we take M and then update the location L so that it now points to the value N. So this means update our function M with a new mapping that maps the location L to the integer value N. So for example if we after doing this look up what is at this location that means we take the memory update it with this new mapping and then look up what's at location L afterwards then obviously we're getting the value that we've just written there whereas if you take this memory including the update and then look up any other location L prime then this should still contain the value that was at this other location before so this should be true for all L prime that are not equal to the location L that gets updated. So now you know what parts this abstract machine consists of but you still do not really know how this machine is working and how it can execute programs and to do this we're going to describe this abstract machine using one formula that we've already seen in the first video and this is a transition system. So we'll basically define what happens when this machine executes by defining transitions from one state or configuration to another and these transitions will correspond to executing commands of our program. So in order to define such a transition system we need to first define what the configurations or states of the system look like. So let's do this. So each configuration of our abstract machine is a triple consisting of three things namely our control stack C, the result stack R and the memory M and let's be a bit more precise and let's really say what can be in these three elements of the tuple. So in the control stack we can have three things actually two things sorry one is nil which just means the stack is empty there's nothing to execute or we can have an instruction i and we'll define what this could be in a second followed by the rest of the stack. Okay so just to add here what this really means so nil corresponds to the empty stack meaning there's no command to be executed and that typically happens at the very end of the execution of a program and this here means that we have a new instruction i that is pushed on top of our stack and because it's a stack when it's going to execute the commands it will look first at the top of the stack so this instruction i is the one that is going to be executed first. So now I also should tell you what these instructions i can actually be so let's also define what they are. So an instruction i can be any program p and this is the same p that I've used earlier when we defined the syntax of the simple language. It can also be an operation and again this is a simple we've seen earlier so this refers to all the operations that we have in our program then it can also be this negation operator it can be the logical and it can be a boolean operator it can be an assignment or it can be the if keyword or the wild keyword. So you've seen all these symbols before so you have an intuitive idea what they mean and what we'll now here do is to define the semantics of actually executing them and then we also have the result stack which can consist of a couple of things so one of them similar to the control stack is that it's just nil which again means that it's empty or we can store some programs here so we can have a sequence of commands followed by the rest of the result stack or sometimes we want to remember a location so we can also put a location here followed by the rest of the result stack. So now I said we want to use this transition system to actually describe how an execution of this abstract machine looks like so we are going to model the execution of programs as a sequence of transitions from one state to another namely from the initial state which describes what we know at the very beginning of executing program to a final state and you'll see in a second what this final state means. So the initial state looks as follows we have a triple as we've seen on the previous slide where we have our command or program here and then followed by nil so nothing else on the control stack we start with an empty result stack so this is nil and we start with some memory which could be empty or could already have some values inside and that what we want to reach is a final state where we have executed all commands so we should have only nil on the control stack and we hopefully have used all our intermediate results so we also have nil on the result stack and we'll have some memory again which is typically different from the memory we've started with because otherwise the program wouldn't have had any side effects so just to explain this a little more what this really means here is that we execute our program c in a given memory state which is the simple m and then here we stop with the execution when all stacks are empty. So now the question is how do we get from this initial state to the final state and this is what we need to define next and as you can guess whenever we want to define a transition system we define the configuration and a set of transition rules so in this case we are also going to define the transition rules which tell us how to get from an initial state to a final state so how to really execute a program in the simple language so these rules are denoted with this arrow and essentially what they will tell us is how to get from one of these triples c, r and m to another one where we then have an updated control stack and updated result stack and an updated memory so I'm now going to define the transition rules for all parts of our simple language and I'm starting with the most simple element of this language which are the arithmetic expressions so I'm going to define first how one can evaluate expressions so let's start with the most simple possible expression which is an expression that is already evaluated actually because there's just a number and in this case on our command on our control stack we will have a number followed by the rest of the control stack some result stack r and some memory and in order to evaluate this very simple expression that only consists of a number what we're going to do is to pop it from the control stack so only c remains and the n which was on top of it is now popped and instead we push it on the result stack so that we can then use it for some other operation that follows afterwards and the memory m stays the same as before because this does not really write anything into the memory so let me just put this down here in words again so we're popping n from the control stack c and instead push it onto the result stack r so that we can use it for the next computation a slightly more complicated expression is one that reads from memory so in this case what we'll see on our control stack is this kind of expression where we say read the value at location l and this is followed by some other commands we have some result stack and some memory and now in order to evaluate this we're actually going to look up the value at location l so we again pop this read l expression from the command stack so that only c remains we're putting some value n onto the result stack and n is what we actually read in the memory from at location l so we can only do this if m of l gives us n so again just to put this down here in words so we read the memory at location l and then we push it onto r so this is very similar to the first transition rule just now that we've not um had a constant but we've read some value from memory so now you know how we can get values um but of course expressions also need some operations otherwise they are kind of boring so let's have a look at how we can evaluate complex expressions that also involve some operations so let's say we have some expression that looks like this on top of our control stack so we have some expression e1 followed by an operator and then some expression e2 and this is the top of the stack which yeah has some other commands in c and then we have the result stack and some memory now what we're going to do in order to evaluate this whole expression is three things first we need to evaluate this expression e1 so we put it on top of the control stack then we need to evaluate the expression e2 so we put it next and then once we have these two and we've put the resulting values onto the intermediate step then we're going to execute our operation and to not forget about this we put the operator here onto the control stack and then we do whatever follows afterwards in this program and this is only affecting the control stack so the result stack and the memory here stay as they are so in a sense you can think of this rule as basically unwrapping this expression we take this command that contains the expression and disassemble it into its components and put all of these components in the right order onto our control stack now once this is done and once we have actually evaluated these expressions e1 and e2 for example using the first two rules that you see here then at some point we will reach a situation where we have just the operator left on the control stack and where we have put some values onto our result stack namely value n2 and n1 and then there's potentially something else on the result stack then what we're going to do is to execute this operation by removing it from the control stack and putting the result of this operation which we here call n on the result stack all of this does not affect the memory so this stays the same m and this n is actually the result of applying operator um what the operator op 2 and 1 and n2 so if we do this for example if we add two numbers then op would be plus and the result is n then n is our result which we then put on the result stack now all of this is for integer expressions it's very similar for boolean expressions so i'm not going to write it down explicitly here but you'll actually have access to the complete set of rules in the ilias course where i'll upload a page with all these rules so one question that often comes up here is why the order of these values n2 and n1 is like this and not the other way around well it's simply because if we start from a state that looks like this and then evaluate first the expression e1 then we'll put this expression e1 first on our stack so we basically put this here so this is the top of the stack then and then we evaluate in e2 and then because we can just sneak it in somewhere we also put it on top of the stack which means they look like they are in the wrong order but we correct for this by um basically knowing that the second operant is the one that will be on top of the stack whenever we evaluate a binary integer operation so given the set of rules that we've just defined we can now write down what are the semantics of expressions in our simple language and specifically specifically this will be the following so we say the value of an expression e in some state m so we are evaluating e in this state of the memory m is a value v if and only if there is a sequence of transitions where we are starting with this expression e on top of our command stack and we're starting with some result stack and the given memory m and then there's some sequence of transitions so I'm using the transitive reflexive closure here that leads us to a state where we have um evaluated the expression so only the rest of the control stack is left and where the value v is now on top of our result stick and in principle this may update the memory so let me just put m prime here and not just m but actually because evaluating expressions in this simple language simp that we're looking at here does not have any side effects um actually m prime is always equal to m for simp but you could of course think of a slightly more complex language where evaluating arithmetic expressions does have side effects so where it can actually also write to the memory for example think of the plus plus operator in most languages which does not only yield a value but also updates the memory and in that case m prime would not be equal to m but you could actually change the value when you evaluate an expression now this is the semantics of integer expressions and again all of this is very similar for boolean expressions so I'm not going to write it down again because it looks more or less the same so to make all of this a little bit more concrete let's now have a look at a at a concrete example where I'm going to give you an expression in simp and an initial memory so a state in which this expression is going to going to be evaluated and then the question for you is what is actually the result of this um of evaluating this expression and to answer that question you should write down the sequence of transition rules that we can apply so that we compute the value of this expression I'm going to show you the question then I'm also going to show you the solution but I actually recommend to stop the video once I've explained the question so that you can first try yourself and then see on the solution afterwards so let's have a look at this example so the question is what is the value of the following expression so the expression e is read a and added to read b and we're going to evaluate this expression in the following state m it's a state where a is mapped to three and b is mapped to one so before you're going to now think about the transition rules just understand the intuition behind this so this is basically adding a and b a and b are values written at memory locations and you can look up in the memory what its values really are so there are three and one so the result will obviously be four but now the question is how to formally show this using the transition rules we've just seen and you should try to do this um yourself before you look at the solution all right so let me show you the solution so in order to evaluate this expression we're going to put this expression on top of our control stack so we have read a plus read b followed by in this case nothing else because we just want to evaluate this expression we start with an empty result stack nil and then have the memory m as defined above and now we're going to use the transition rules that we've just defined so the first step that we will take here is to actually decompose this expression into its different components which in this case are hey we need to read the first expression of this binary operation plus which is read the a we put this on a stack followed by the second sub expression which in this case is read the value of b and then followed by the operator itself which in this case is plus and then followed by whatever else was on the stack which here was nothing such as nil and this doesn't affect the result stack and also not the memory so now next we're going to go through our um control stack one by one and evaluate these different parts starting with read a which means we're going to pop read a from the stack so only read b and plus and nil remains and now we do not just pop it and forget about it but we pop it and read the value of a in our memory which if you look at the memory above is three so we're going to put this result three on the result stack so instead of just nil we now have three on top of nil and the memory stays as it is next we're doing the same with the value of b so we are removing this read b from the stack so only plus and nil remain b is one so we put this on top of the stack three is still there and then nil so the end of the stack and then what's left to do is to actually perform the operation so we remove the plus from the control stack so the control stack afterwards will be empty and we put the result of applying this plus operator to three and one because these are the two values that we have on the stack two yeah two two plus and three plus one gives four so at the end we'll have four on the result stack which means that the answer here is four because that's the value that remains on the result stack after we've executed the entire expression cool so now you know how to execute expressions that's great next we'll also look into how to execute commands because our simple language does not only have arithmetic expressions but it also has more complex commands so the most simple command that we've introduced was this command called skip which does exactly what the name suggests namely nothing and in order to express this we have this transition rule that says whenever we have skip on top of our control stack we can just remove it so we just skip it and everything else stays the same a slightly more interesting command is the assignment command where on top of our control stack we'll have an assignment that says write to location l the value of evaluating some expression e and then there may be something else on a control stack and what our abstract machine does in order to evaluate this kind of command is two things first it needs to evaluate the expression e and then it should write the result into this location l and now here in the abstract machine we're doing this in multiple steps one is that we put this expression e on top of the stack and then the next thing we'll do is to perform the actual assignment so we put this assignment symbol next on the stack and then we have whatever else was on the stack before and we also need to remember the location where we should store this the result of evaluating e so to do this we're putting this location l on our result stack so that later on once we have evaluated e we still know where to actually write it so just to make this more clear let me write it down here so what we do here is we push this location l on our auxiliary stack so once we have evaluated e we will reach the situation where on top of our stack we have this assignment symbol so let's have a look at what we'll do in this case so if we have this symbol on top of the control stack and then we also need to have some value n here which will be the result of evaluating e and we have this location l here followed by whatever else is on the result stack then what we do is the following we are removing this assignment symbol so only c remains on the control stack we are removing both n and l from the result stack so only r remains and now we're doing the actual assignment so we are updating our memory by now taking the old memory m and we add this new mapping which maps l to n so which is essentially writing two location l the value n so this is writing n two location l so now you know how to handle the skip command you know how to handle assignments let's next have a look at this chaining command that we've seen before we're using a semicolon we can combine multiple commands so if you see something like this in a program and if this chain of commands is on top of our control stack what are we going to do in our abstract machine well as you might guess from the syntax what we're going to do here is to first compute the result of c1 and then also execute c2 so we put c1 here first followed by c2 followed by whatever else was on the stack before so this is basically just a rule to again decompose this syntactical command that combines two commands into something that we can then execute one by one next let's have a look at if commands where we have something like this on top of our stack so we have an if with some boolean expression b and then the two branches the then branch where we want to execute command c1 and the else branch where we want to execute command c2 and this is on top of our stack followed by something else and we have a result stack and of course some memory and now if we evaluate this we'll do the following so the first thing we have to do if you see an if like this is to evaluate the boolean expression so we put this on top of our control stack and then we need something that reminds us that oh actually we did this because we're here because of an if statement so we put if next followed by whatever was was on a stack before and of course we need to somehow remember what the two branches of this if are and we use our result stack for that purpose so we put c1 and c2 on top of our result stack so that we know what to do once we have evaluated the boolean expression so this is sort of similar to what we've done here with the location l where we have just put it on the result stack in order to remember it for later and here we do the same where we store these commands for later and later means once we have evaluated the boolean expression b so now let's have a look at what happens once we have evaluated this boolean expression there are basically two cases one is that we are reaching this state so we then have only the if left on the stack followed by whatever was there before and then because we have evaluated the boolean expression b we will have put its result on top of our result stack and one case is that this result is true so we will have true here on the on the stack followed by c1 and c2 which we've put there before followed by whatever else was on the result stack and as you might guess from knowing the semantics of if statements in other languages what we're doing here is to take the then branch so we forget about c2 and also discard true value because now we've used it and put instead c1 on top of the stack and the the remaining result stack and the memory stay as they are and very similarly if we get in a similar situation but now with false instead of true so this will look like this then what we're going to do is to execute c2 or let's say to schedule it for execution by putting it on the control stack so that in the next transition c2 will be executed so essentially what these two rules here are are saying is that we execute either the if branch or the else branch so now if you remember the different commands that we have initially defined for our simple language you may wonder about one that we have left out so far and this is the while command which is used to express loops in our language so if you have a while on top of the control stack so something like while b to c with some state of r and m then what we're going to do is similar at first to what we've done for the for evaluating or for executing if statements we're going to decompose this syntactic command into the different components that need to be handled here and the first thing you do once you reach a while command like this is to actually reason about the boolean expression so we're going to evaluate this first then put this while keyword on top of our stack to remember that we still need to continue with this while loop and in order to not forget the body of the loop we also put that on the result stack and on top of that we also put the boolean expression here again and the reason is that once we have executed the body of the loop once we're going back to executing the boolean expression because this is a loop so we may have to do this again and again and again so this first rule is just to decompose the syntactic command and now what we'll do next is to define two more rules for the case that the boolean expression evaluates to true and to false so in the true case we'll have while on top of our control stack and true will be on top of our result stack followed by this boolean expression and the loop body c that we've put there using the previous transition rule and if this is the case so if the expression b evaluates to true what the program should do is to first execute the body of the loop c and then afterwards we essentially back at the beginning of this first rule that you see here because then we are back at the beginning of the loop and again want to figure out whether we need to enter this loop or not and a simple way to express this is to just put another while b to c command on top of the stack followed by whatever was on the stack before they can just make this c a little larger so that it's yeah clear that there is the lower case c for the remaining control stack and the upper case c for the body of the loop so this was the case where the boolean expression is true of course this boolean expression may also be false and hopefully at some point it is false otherwise we have an infinite loop so if you reach this state with false on top followed again by b and c then what are we going to do well if the expression that controls a loop is false then we do not enter this loop so we simply skip over it which in this case means we just continue with whatever else is left on our control stack and we are discarding false and b and c from the result stack and just just leave there what was there before and also the memory in this case stays untouched excellent so now using the transition rule set we've defined we can now write down what the semantics of a complete simp program is so we can say what are the what is the semantics of simp commands and it is the following so if you have a program c and we are executing this program c in some state m and if this we say that this program terminates successfully and it produces some resulting state which we call m prime so we can say that this is the case if and now we're using our transition rules if there is a sequence of transitions as follows where we start with c on top of our control stack and there's nothing else and we start with an empty result stack and this memory state m and then we have some number of applications of our transition rules that eventually leads us to an empty control stack so we've executed the entire program c an empty result stack so we've used any intermediate values that we may have pushed onto this result stack and we may have updated our memory into m prime and if we have such a sequence of transition rules then we can say that the program c executed in state m successfully terminates and produces state m prime okay lots of transition rules to make this more concrete let's again have a look at an example and again i'll invite you to think about the example yourself flip back on the slides to look at the transition rules and see if you can actually use them to compute what happens when we execute the program that i'll give in this example and only then look at the solution that i'm providing so here's the example it's a program c that goes as follows so it says while whatever is at location l is larger than zero do the following we update the value of variable f by taking the old value of f and multiplying it with the current value of l and then we use the semicolon and afterwards we are updating l by removing one from the old value of l and we also need to define in what state we are executing this program so here's the initial memory where l maps to four and f maps to one so now to define what happens when this program is executed let's write down these transition rules and because i'm a bit lazy i'm going to use some placeholders here so this is going to be called b and all of the commands these two commands that are in the body of the loop i'll just call them c prime so this is just to save some effort while writing now in order to um save what the semantics of this program are we start by putting our program c on top of an empty control stack also start with the empty result stack and start with the memory m that we see above and now we apply one rule after the other until eventually we hopefully reach a state with nil nil and some updated memory okay so what are we going to do here well we start by looking at this um um outermost command which in this case is a while command so we are um taking the boolean condition of the while command which i've lazily called b put this on top of our command stack followed by the while um keyword and then followed by nil so just going back to the corresponding slide so we're basically using this rule here in order to decompose the while command and part of this rule also said that we need to remember b and the loop body in this case c prime and to do this we put those two on the result stack and m here stays the way it is so now let's think about what could be the next transition so on top of the stack we now have this expression b which is the value of l larger than zero so in order to evaluate this expression we need to use one of the rules that we have defined earlier for expressions namely this one where we start by decomposing this expression into its components by saying hey we need to first evaluate the first expression then the second expression and then perform the actual operation so in this case the first expression is going to be read the value of l the second expression is just take this value zero and then once we have evaluate these two sub expressions we're going to perform the actual operation which in this case is a comparison of these two values and then all the rest of the control stack stays the way it is so we still have the wild keyword here followed by nil so the end of the stack and then the result stack doesn't change in this transition so we still have b and c prime and nil here and m still is what it was before all right so now next we need to evaluate um what is on top of our control stack so reading this value at location l um we have seen a rule for that which basically says hey look it up in the memory and then pop it from the control stack so only zero remains here followed by all the rest and we now put the result of reading l from the memory on top of the result stack so this will be four because up here we see that four is the value that l maps to and then we still have all the rest of the result stack here so b the loop body c prime and nil and our memory is still unchanged and now this goes on and on and on like this so we're basically using one transition rule after another and in the exercise you will have the chance to actually go through this example and other examples in more detail here i'm just putting dot dot dot but of course you're invited to actually try it out and then maybe ask about it in the exercise session until eventually hopefully you're reaching this state where you have two empty stacks and where our memory has been updated so that eventually l um points to zero and f now points to 24 and as you've maybe figured out by now this is actually the factorial function and this is the result which is stored here in value f which is 24 all right and this has brought us to the end of this video so we've now defined the abstract machine that can execute simp and this is one way of defining the semantics of this language as you've seen some of it is pretty mechanical so for example if you have a complex expression or a more complex command on top of our control stack then we first disassembling this into its components and this is maybe a bit tedious so the next video will see a more compact way of defining the semantics of a language which will be structural operational semantics thank you very much for listening and see you next time


on everyone. Sam here with late in sports cards and I am doing um let me one second this is 2021 Penini national treasures prism football hobby four box mixer 23 tiered random teams um gonna see what we have in this one and then uh we'll go oh show the random sorry about that gonna show you guys the random one more time again yeah yeah random hit threw me off for a second there we did a random hit last uh last break so I threw me off for a second we've got here's the results if you need them they're on the website as well as uh link and chat too so here we go start with prism and with nt got gary brightwell rookie got ice uh blue ice to 125 joey bossa or to 99 joey bossa there you go chargers and kyle pits fireworks oh i thought blue ice was 125 that basketball maybe got rookie tommy tremble panthers and cadarius tony behind that one giants got orange darnell mooney to 249 and silver ryan tanahill titans they ran out of vanilla ice cream that's tragically got jeremiah awusu kora moa rookie tutu atwell rams got j2 fele purple ice to 225 jaguars and ben rockless burger silver and a backwards amari cooper in the middle of the pack nice josh allen cranked harvey nishon right got george kittle hyper to 125 49ers and davanta smith break rookie oh 175 175 excuse me that prism basketball and optic have thrown me so off now got felipe frank's rookie as well as a zack wilson rookie there you go jets nice one there got tyree kill blue ice to 99 and christian mccaffrey that is to 199 two numbered cards in that uh pack andy dalton bears devin mccordy trey lance base rookie niners christian barmore emergent cadarius tony got jc horn penne school rookies got chris herndon to 225 purple ice and silver terris marshall jr rookie there you go panthers tmj uh marshall folk chris herndon uh nice skridge dwayne escarage joe tryon got jameson crowded a 175 hyper and silver auto jacob harris for the rams there you go rams not numbered tom brady base got patrick jones rookie amir smith marcett rookie and blue ice hype to a tag of iloa to 99 84 of 90 dot nico collins and trey mckitty got orange isaiah simons 249 cardinals and trey lance fireworks rookie backwards antonio gates nice got a camo coming up here got uh naji harris base rookie there you go steelers got a um elie michael behind that hype chase claypool and nice navy camo nico collins to 25 nice rookie there i just go on ebay honestly flanders it's going on in norway though thanks for jumping in trey nixon josh palmer rookie chargers got purple james robinson red wave tony rome james robinson is to 125 tony rome is to 149 got all out josh jacob's and kid reporter i think we got shorted in auto we'll make a note that the uh auto was shorted so why they put on average we don't we don't know uh when the next all the next guys not yet i'm sure it'll be announced soon announced soon yeah relatively soon for sure that'll be fun kind of like card ladder maybe is another one uh flanders got chuba hubbard rookie demetric felton got miles jack to 125 purple and silver dalvin cook vikings heck yeah account for snakeskin coming up here got jacob harris rookie chris evans we've got snakeskin denver broncos jake plumber congrats joseph m on the super short print case hit jake plumber nice one there got new recruits travis etn chris evans again gold vinyl coming up now nice pox we got ourselves here ryan tanahill kyle trask got jabril cox got indianapolis colts karson wence gold vinyl four of five nice hit their colts that is joseph m on the tier two gold vinyl karson wence silver wilfowler bach manders washington yeah back in the nfc east not sure yet uh sim victor it'll be announced soon hopefully jaylen philips rookie erik stokes got elisha michael nice blue wave to 199 rookie 49ers there you go and jeremy shocky they came as they once they came in once oh yeah who said that was it toke heck yeah didn't even realize that for a second sam ellinger uh tylen wallace rookie got purple ice quitty payda 225 and wild card points we'll do a random for this at the end of the break you know how to do that jamar jefferson rookie jaylen waddle behind that there you go got joe showbert to 199 and silver mica parson's rookie there you go cowboys harper b thought we had a true gold for a second there orange trevon morrig tray sermon rookie niners got orange hunter ren fro to 199 and emergent jamar chase rookie went on the ir uh seth williams rookie broncos kenneth gainwell uh eagles got chris herndon red wave to 149 jets and maholms brilliance getting cornier by the minute in chat right now there's herbert second year greg russo rookie jaymond davis got purple ice to 225 camera and jordan sainz and hype chase claypool steelers cleal herbert rookie quitty pay got blake martinez blue wave to 199 and nice nagi harris silver rookie auto steelers congrats eric r nice nagi not numbered silver auto ambrie thomas rookie amari rogers rookie got nice color match javante williams orange wave rookie to 60 40 out of 60 congrats joseph m with the broncos had the wence earlier and now the javante lockdown miles garrett kid reporter magda mica parson's rookie terris marshall jr rookie got von miller hyper to 175 broncos and aj brown fireworks all right that will do it for rich is going to start collecting the kid reporters for his kid that'll do it for prism let's do mt guys good luck let's pull pull a shield we didn't get a logo man so let's pull a shield instead a skrid shield dude if i pull a skrid shield i will lose my absolute mind this invicta absolute mind will be lost first up starting off for the midnight alvin kamara 14 out of 20 there you go saints followed by a jesson jefferson base to 99 nice j jettas their bikes got 54 out of 99 that is clinton portis broncos on the century materials next up we've got dual patch browns and browns 7 out of 25 nick chubb kareem hunt game used on the kareem hunt nice dirty patch their browns got jailing darden dual patch two color three color 26 out of 49 buccaneers there you go stewart z nice darden got trey lance 15 out of 25 on the dual jersey there you go niners trey lance rookie patch got true rpa for the ravens tyson williams 46 out of 99 three colored patch michael stott 12 of 25 autograph buccaneers next up we've got erin rogers 59 out of 99 patch autograph packers congrats eric r on the tier two hit and nice way to end it number two of 89 cadarius tony rpa jersey numbered parallel congrats giants that is harper b on the tier two giants hit nice hit there harper empty see something big now i'm trying to leave me alone i'm trying stuck there geez the box was stuck to the uh top basically still sealed on the inside so guys we've got corduroy paterson bookend one of 20 falcons on the midnight base we got uh super bowl immortality to 55 torell davis nice td there you go broncos got treasured patches sean alexander seahawks 18 of 99 sweet hit there seattle we got century materials that is cliff harris 21 of 25 dallas cowboys nice hit here treasured uh tremendous treasures russell wilson one of 10 jumbo three colored patch seahawks player worn on the russell wilson that is not scrid shield number 23 he got three of 99 davis mills dual jerseys houston texans nice one there brian got redemption crossover rookie patch materials rishad bateman congrats mat a on the tier two hit with the bateman that'll go ravens confident that we've got uh randall cob three of 25 jersey autograph packers there you go eric r with the randall cob corn on the cob yeah this one's cool we've got 76 of 99 warren moon nice auto there that is oilers will go titans oilers will go titans congrats brice l tier two hit with the warren moon i hope so boss and to finish it off we've got jumbo prodigy rpa jail in waddle three colored 48 out of 99 congrats harper nice jail in waddle all right guys um should i do the points first or after i'm doing first first gonna do a random for the wild card points just give me a second to input everybody's names in would you do names or teams names all right um all right guys going to switch over to the random cam for a second so going on we're doing the random for the wild card points i've inputted everybody's names and we will roll the die and see how many times we were gonna random whoever is on top will get the points good luck everyone we're gonna go six and two eight times one two three four five six seven and eight harper b will get the wild card points congrats harper there you go got a quick recap for you guys here empty got karson wence gold vinyl to five jake the snake plumber snakeskin jacob harris silverado rams we've got naji harris silverado uh steelers warren moon auto oilers will go um titans randall cob patch auto packers we've got rashad bateman raven's redemption rand our davis mills dual jersey texans russa wilson patch to 10 seahawks cliff harris patch to 25 cowboys got shawn alexander patch for the uh seahawks mike alstaw auto to 25 bucks clinton portis to 99 broncos jersey dual nick chub kareem hunt patch to 25 browns jaylon darden 26 out of 49 patch for the buccaneers treyland's dual patch to 25 uh niners tyson williams to 99 true rpa ravens and cadarius tony jersey number parallel to 89 giants got a couple of magged cards as well we had the erin rogers 59 out of 99 packers and jaylon waddle 48 of 99 uh prodigy rpa dolphins that's going to do it for this break thanks again everyone for joining next up flawless tiered random themes looking forward to that


Labour are doing pretty well in the polls, but there are new concerns about the political direction of the Labour Party under Keir Starmer. This came this weekend when the Times gave a pretty worrying report about attempts by the Labour Party by its new leadership to try and woo back rich, wealthy donors. So we can get up part of this report from the Times. So Keir Starmer has launched a charm offensive to attract Labour donors who ended their support under Jeremy Corbyn in an attempt to reduce its reliance on trade union funding. Now let's just stop there for a moment because Keir Starmer has launched a charm offensive to attract Labour donors who ended their support under Jeremy Corbyn in an attempt to reduce its reliance on trade union funding. So it's very explicit, they don't want to be reliant on the vehicles of organised Labour, they want to be reliant on rich people. What policies do you think being reliant on organised Labour encourages? What policies does being reliant on big business encourage? You can work it out. The Labour leader is believed to have begun sending personalised letters to lapsed donors asking them to consider renewing their support for the party. If the fundraising drive is successful it could return Labour to the Blair era in which it competed with the Conservatives in raising millions from the rich and famous, some of new Labour's biggest supporters included JK Rowling. But this is the big one, this final paragraph. So among those who have received letters from Sir Keir is David Abraham, the new castle property tycoon who donated more than 650,000 to the party under Tony Blair. So Mr Abraham said that Sir Keir had got off to a good start but there's still a lot of resistance to what he's doing and we said that he wanted to see the expulsion of members who made anti-Semitic comments. This is someone who wants to see more expulsions, obviously it depends what he interprets as an anti-Semitic comment. But this issue I want to focus on is the 650,000 pounds this man donated to the Blair years. We've already heard, you know, this time's right up which is from a briefing is saying this could return the party to the Blair years. Now I've got a clip for you which I'm really pleased to be able to show you. I was delighted when I found out the, you know, the relevant clip today when I was looking through this and for a background on this guy. So he was a massive donor as it says to new Labour 650,000 pounds to the party under Tony Blair. This was very controversial at the time and because he was a property developer, Labour were in government and just as you've seen with Robert Jenrick you had a big donor to a political party having decisions made in their favour. Now for background to this we're going to go to our old friend Paul Mason hosting a news report 12 years ago. This is property and that means he's routinely involved with seeking planning permission for projects here in the North East. At the highest level planning is a political process both in Whitehall and in the Labour-controlled councils of the North East. As you can see there are quite a lot of them. It's politicians that get to decide on Mr Abraham's projects. So knowing whether he's giving them money is above all relevant to that. In July 2005 Abraham's company Durham Green Developments submitted plans for a business park next to Junction 61 on the A1. Two directors of the company Ray Ruddick and Janet Kidd had already given 77,000 pounds of Mr Abraham's money to Labour. By October the highways agency had blocked the project but one year later and 182,000 pounds more donated to Labour the agency lifted its objections. Another area of the North East Mr Abraham's took an interest in was Sedgefield the then constituency of Prime Minister Tony Blair. In 2005 and again this year a Mr D Martin of Acorn Residential Estates is listed as a consultee for Sedgefield's local development framework. Actually Mr Abraham's and D Martin are the same person. So what representations did Mr D Martin make to the borough council? Actually none says the council. However with the constituency Labour Party it was different. He was said one local Labour politician a hanger on. Another said he often sent a note to Tony congratulating him. He was invited to Blair's farewell speech says one source as someone you could rely on not to stand up and heckle. Despite not living there nor having any business with the council he came along to various things of Tony's as a member. I was when Paul Mason was still an anti-capitalist model at the heart of the British establishment and it's very real blast from the past there. Anyway let's focus on the issue at hand. So we should say Abraham's was cleared by the police of any wrongdoing because he ended up being under investigation for donations he made to the Labour Party which were related to the fact that he was he was donating to the Labour Party by proxy and so obviously we have laws in this country whereby if you donate more than five thousand pounds to a political party it has to be completely public so that people can assess and analyse conflicts of interest. In this case there were clearly lots of conflicts of interest because he was trying to develop properties where you know the government and local councillors had had control over whether or not it got approved or not but he was donating to the party via proxy so via mainly his employees and this was so controversial that Labour's general secretary at the time had to resign right because this was such a scandal this took up the time of like Gordon Brown it was a you know took up the news cycle this was literally we were in government he was Prime Minister at the time and you know it just seems surprising to me this is what we want to go back to. Abraham's also an interesting character according to Channel 4 News report from the time he won selection to be a prospective Labour Party candidate but was then deselected after it emerged that the people who he introduced as his wife and child at the selection meeting were just pretending to be his wife and child so in return for him paying for their accommodation and the boy's school fees so this is someone who was this is the kind of people you know who as Paul Mason says in that report this was someone who was you know very close to Tony Blair often had a front front row seat at Tony Blair speeches and this is who you know a new Labour were in bed with property developers people who wanted decisions from from the government to be made in their favour and yes I mean it seems like there's no there was no smoking gun as to ah yeah he gave the money so he gave him the you know the the go the go ahead for this particular building which means that the police have said no no no law has been broken but you can see how going back to this period of time where Labour can very easily and plausibly be accused of corruption because they've got you know these very wealthy people giving them money which they've become reliant on Labour at that time had very few members who can then use that leverage to get decisions made in their favour I mean this is really not the direction we want the party to go in actually before I go to you I've got one more fact about this guy's very interested character so he got deselected after that selection where he introduced his fake wife and fake child it then turned out that he said he was 41 and he was actually 46 but let's talk about instead of sort of strange pathological lies let's talk actually he's probably got loads of money to sue us and say he lied twice maybe it's not pathological Labour desperate to become the party of landlords instead of the party of trade unions what do you make of it yeah it's really strange because the one thing that's inarguable about the Corbyn period was they the party had money the party had money you can just go through their sort of annual you know the the end of year kind of projections and forecasts and the financial year behind etc they were regularly raising more money than in terms of party in the run-up to the election last year they were struggling because it was you know it was a very short turnaround but in the period of Jeremy Corbyn's leadership 2015-2020 they raised a lot of money and you have to remember in 2008 Labour was almost bankrupt right and that is and that was the period of time you just brought up with that clip that seems to be the plan in terms of what they want to go back to regarding resources and I know lots of people say actually having lots of members is bad fewer members is good but members pay subs right that's that's indisputable again you know having lots of members means you have lots of money and I don't know I think the kind of the the management of Labour on this side I think it's it could get very messy if they lose lots of members and they have we don't know how many because you get there's a six months kind of stay with regards to direct debits being cancelled we don't know yet but if they lose you know a couple hundred thousand members unions start sort of playing silly buggers they will again have to go with a begging bowl to property developers and millionaires and that's not good it's not it's not the people oh the brand what was it a good brand to have Peter Mandelson have to resign because of this kind of stuff the Hinduja brothers the Eccleston affair was that good for the brand no it wasn't you know for whatever good things Labour did in government with regards to policy I don't think many people say yeah they're dealings with millionaires and billionaires looked really good reflect really well on the project nobody thinks that so why when people say it's a return to your labour I said that's not quite true come on Stammer's his own person but this looks like a return to you know it's like the worst thing you would want to do when you say return to your labour what do you mean you mean you mean when in general elections you mean you know initiating a mixed bag of policies you mean often quite brave constitutional reforms like devolution and we all want a professional campaigning organization right no no one's disagreeing with that we all want well written speeches but what we don't want is a party that's in hoc to landlords because one I mean it looks really bad and two it's incredibly bad for democracy I want to bring up one one more bit of evidence with relation to this particular story because not only is courting big donors a threat to our democracy and completely undermining of the the radical potential the potential radical potential of the Labour Party not just obviously very much waning since Stammer became leader but anyway it's also very tacky so these these campaigns to try and get the wealthy to donate money to the Labour Party well tacky as hell let's get up this graphic it's a a page from a brochure which was sent out to wealthy donors this was shared by Gabriel Pogrand from The Times and it invites you to join the chair circle membership I don't why they call it like it sounds real freemason stuff doesn't it you can join the chair circle jerk society where you all sort of suck up to kids don't call it what it is caviar with care that's what it should be called let's get it back up because we can see what you get by by becoming part of the chair circle why do they call it the chair circle um you can get regular communication from the party's fundraising he's very exciting invitation to a branch ahead of Labour leaders speech at annual party conference not clear if Stammer's going to be there or not um invite only you know I think you just sit in a room with a load of dry rich people while you get served sort of like ex-benedict or something and then that's sort of like yeah we're in the chair circle it's very exciting um the strategy updates is probably the most sort of you know strategically interesting because that's when you get proper access um to people at the top of the party to put forward your concerns and sort of say in hush tones sort of like if you don't you know do x y z we're probably not going to find you anymore you know just just saying it I'm not I'm not this isn't me trying to bribe you this is just me saying the fact um and then finally invitation to a chair circle welcome reception at Labour Party Conference hosted by Angela Rainer um so one more one more chance where you can have some some access for cash have y'all with gear or canapes with gear you decide I like caviar with gear caviar with gear and maybe I should work as the sort of headline writer for so many times you should be in charge of high value donors at the Labour Party I think that would be do you imagine oh that would be very successful um well all you say it just looks it looks so sleazy how can we make this look as sleazy as possible the fucking chair circle as I because it's not even it's like that is you're getting a bit conspiratorial you know someone said you oh there's this thing called the chair circle which is a very high values true for the Labour Party and they're all very close to to Keir Starmer who was on the trilateral commission imagine now he's joined that now he's joined the chair circle imagine Dave Evans the general secretary of Labour and Morgan McSweeney brainstorm imagining the guy I'm thinking magic circle magic circle kind of accountancy firms yep okay I'm seeing that and we power civil society business chair yeah we can't call it directors because we don't want people to think they actually have power but it has to imply they have power but also be deniable so we won't call it the director circle we'll call it the chair circle it could be a game it could just be just be a game that you play we all sit in the circle and share a bit like musical chairs but with lots of money and lots of interest and people sort of asking if you can give them planning permission in this particular local authority real new labourese


I am Shelly Menocha and I am Professor of Learning Technologies and Social Computing in the Faculty of STEM. Our research program has been nominated for the Outstanding Impact of Research on Society and Prosperity. Our research program is on digital health variables and specifically activity monitors. Activity monitors are off-the-shelf devices from Fitbit, Garmin and Samsung that record activity levels, sleep patterns and heart rate. And our aim has been to investigate how these devices can help to support active and healthier lifestyles in later life. These devices are generally designed for younger people. So we wanted to find out what challenges and usability problems older people would face with these technologies, the privacy and the security issues with the data from these devices and the ethical considerations of using this data in medical interventions. Given the UK's aging profile and as a part of the active and healthy aging agenda and digital NHS, there is an increasing focus for people to maintain active and healthier lifestyles in later life to preserve their motor and mobility skills. And there is an increasing emphasis on self-monitoring of health and medical conditions. And our previous research has shown that if people are more physically active and out and about, it helps to address the problem of social isolation and loneliness in later life and in caring responsibilities.


Good morning. This is Alex. This is a lock that I got from my good friend Bosnian Bill. About five inches long. Two inches tall. This part is steel and I'm going to zoom in. I hope you can see this is a thing is probably a hundred years old. It's definitely older than probably Bill and me combined. Which has a lot really. If you look at it in the light you can see some, it's kind of out of focus, but you can see that it's been, I can't remember what that's called, but when it was new it would have been very shiny. It has all these little sort of polish marks on it. I'm going to assume it's a safe deposit box. I guess before they went to sort of the standard of having a safe deposit box. I suppose it could be a mailbox, but that's a heck of a chunk of steel for mailbox. So I'm going to assume that it's some kind of safe deposit box. Now I spent a little time fiddling with it and immediately concluded that it was old and gummy and I know that Bill hadn't tried to open it or he hadn't opened it. So I took off the screws in the back, which were here and I don't know where they went, somewhere in the back. You can see that they even bothered to polish the back of the lock, which this, well you would see this part, but you'd never see this part. And it says, I think that's a G or a C, maybe that's a 6, 62, something like that. And this is a, you just see this hunk of steel, look at that. That's what, it's a half an inch of steel. I'm not going to go try to scratch it or anything, but that's massive. Here's the lock itself, you know the brass. At the very top there, it says patent number, patent August 30th, 1898. It doesn't even have a patent number. So I'm going to assume, I'll assume it's American, but we actually don't know, except that whatever, it is an English speaking country. Now the lock is presently in unlocked condition. There's some signs of corrosion.  And you can see the lever pack aligned. You'll also notice that there's some, it's like it's been beat up a little bit on here. There's a small notch here where the key would align there for key retention. So there'd be a notch in the key that would get caught behind this little lip here. I was just checking. I had to go find my magnet, but actually none of the parts that are superficially visible are, is made of steel that I can tell. So it's either brass or bronze. So similar in construction to the SMG and Yale locks that we looked at before. So at any rate, the, I could not manipulate the bolt back out. And I don't know why. And Adrian might come and order a fatois or something against me here, send the German police to punish me. But I'm going to open this up and see what's going on, because I think it's a beautiful lock. And I'd like to be able to open it, maybe even make a key for it and add it to my collection. So for the first time ever, I am loosening the screws on the front of this little guy. I have no idea how this comes apart. I'm hoping that it wants to come apart with the top coming up, because the alternative is that a bunch of stuff is going to dump out. But that feels good. Okay, now what do we have? We have the curtain. Make sure I'm still in frame. Move this up a little bit. So I have the curtain, just a piece of brass. The key sits in there. I don't have a, doesn't look like I have a key shaped thing laying around. But the key would go inside there. We have the front cover, and there's the back. Interestingly, this is the nose, which is this part that extends out. And that actually would, when assembled, comes through this steel plate like that. So it's protected by steel, so I guess you don't really need any steel inside the lock. But anyway, that's actually very interestingly, camera wanted to refocus for me. It's actually very interestingly sort of swaged in there. So it's a separate piece instead of part of the casting. It's kind of neat, but you can kind of tell it's stamped sheet metal. Anyway, so I've lowered the camera so I can get a better macro view. Now we see inside this lock a lot of dirt and detritus. And a few things that I've not seen before, interestingly. So it has your standard lever pack. One, two, three, four, five, six, seven, eight or nine levers, probably eight. And the first thing I notice, apart from the dirt, the first thing I'm noticing here is this bit right here. If I turn this slightly, maybe not. But in one of the other locks we looked at, this thing acted like a master mechanism. Mastering mechanism and allowed you to set all or most of the levers without the proper key. So that's kind of interesting. So this might actually be a postal lock or something of that sort. Because you wouldn't think that a safe deposit box would have that sort of feature. Maybe it was off of a hotel, who knows. So I'm going to try to retract the bolt now that I can get better leverage on it. Okay, so I've managed to very gently make the bolt release. There's a lot of go in here, a lot of dirt you can see. Actually, that's an insect. So Bill sometimes jokes about bugs and spiders and stuff in his locks. But that appears to be a, I don't know, a little beetle or something maybe. I'm not sure. We have a bug expert in our midst. Maybe they can identify that. Maybe get a country of origin or some CSI kind of thing like that. At any rate, there we go. So we set the bug aside next to the screws. Piece of history there. I may even put him back in. So I'm going to very gently remove the levers and set them aside. So first thing I notice, this top lever has an oblong hole in it. It also appears to have an additional notch here. It's kind of interesting. That may have some significance in the master locking system. You can also see it's relieved in the back, which as we've talked about before can help reduce the ability to decode the lock visually. This is some dirt. More pieces of that bug on there. And a hand frame. And then we'll go to the second lever. This one has a round hole. You can see that this wire is swaged, possibly brazed in place, and it is made of knot steel. So probably brass or bronze or something like that. I am not seeing any numbers on these. That may have a two-scratch number, but I can't quite tell. This one has a one-scratched into it. I didn't do that, so maybe some locksmith did. This one's a three that I'm going to get, but it's just to remember the order to put them back in. But it could be that those are mine.  What is it meant here? I don't see what I'm on about. So I've removed all the levers, and the key would come up and push this around. This is a curious little notch here. The bolt is actually there. So the bolt is out. This is certainly not going to be able to retract it in any way. It has a little stop here. It stops on the post there and has this little notch. Now you'll notice that the first lever has a notch that lines up with that, and it has the ability to move in and out, which is curious. I have a feeling that if you are able to set this in this gap here, that if you were to line the other levers up on the post, that the lock would open. You'll even notice here that this has a little curve or a little slope on the face of it, which does not appear to be a where mark and leads me to believe that that wants to catch a lot of the bottom of the stump to slide right up in there. The stump has a little groove this way down it so that these little teeth on the things will actually grab in here. Two little clunks there. This little mastering device which is made out of at least four pieces of metal that are attached to this plate. One, two, three, four pieces of metal. Also quite dirty.  There's your bolt. Let's see where the key is scraped against it. So keep it interact with this and probably grab this notch here and grab the key if it were like this. My, I'm still in the frame right now. The key would come around as it turns and push this away to draw it out and then as it comes back out it's going to go down there and you can see corresponding where marks along here. The key would have been engaging. The mark is from when I was trying to pick it. So pretty cool little gizmo. Okay, I've got the, but it moves too much. I have the back case of this lock out of all the guts inside. This appears to be a casting. You can, sand casting even. You can see the roughness in here, here at my. I'm going to stop using that because it's just too rough. In here, some of these areas are machined. Probably where the important points are. It's supposed to be a piece of drill rod that was brazed in there. There's some other areas that are machined. You can see that but there's a little slot here for one of these things to operate in. There's just a little pin that is a stop for that mastering thing and all that. So I think I'm going to gently clean this. Which is to say I'm not going to use any kind of abrasives. I'm just going to put a little soap and water. Just to get the dirt out and get the black off all of these levers. This one goes here. The black off all the levers. Nope, that's another one. And put a little bit of lube in there. About three in one oil or grease or something. Put it back together and see if we can't figure out how it's supposed to work. So at any rate, I've not seen a lot made this way before. Maybe some of you have and can provide some information. I think I'll post this disassembly part on its own. And see if we can get this in here. Maybe I can get some more information. And please if this is some kind of historical relic or something. Please let me know. So I don't bugger it up too much. But anyhow, beautiful lock from 1898. I mean I've said 1896 before, 1898. So a hundred and, jeez, 115 years old. With a beautiful brass hinge on that. I don't see that stuff anymore. So somebody's box number 221. So there you go. Thank you for watching. Sorry if this ran a little long. But I find these things very interesting. I hope you do too. Please subscribe if you're not already subscribed and you enjoy my work. And as always, have fun with your lock sport activities while keeping them legal. So we can all continue to have fun. Thanks for watching. Cheers.


Okay folks, Larry Pesevento setting in for Larry Pesevento today to do the mid-morning update before my show, actually it's afternoon over there in New York at one o'clock. We've got two stock indices up, that's the Dow Jones and the Russell and we've got two stock indices down, the Dow Jones and also the E-mini S&P. Now the important thing from my perspective today is the fact that the E-mini S&P did take out that magical low that we talked about at $39.48 and we immediately rallied 25 handles to the upside. So either that day was off by a couple days or something else is happening. So we're watching this market very, very closely in here. Another market that I posted in here to the Tiger folks and the Tiger Den is to take a look at the Treasury bond market because the Treasury bond market did go down and make a new lower low than the other day. We went below that $123.09 level, we got down to $123.06. It also rallied just a little bit. So we are at such a critical level today in these stocks and bonds folks and it's just really, really an incredible thing to behold. From my perspective, I've been doing this for a long time. I did my first trade in 1959 and here I am doing it all these years and I woke up today with so much excitement that I just can't tell you. I was talking to my friend John Jameson over at the Isle of Man and he was telling me what was happening in the market and some things to look for because we had found some things that we had looked at but he was trying to put it together in a different way and I'm going to share that with you folks when my show comes up here in a few minutes. But you know, it's really fun to stop and think I've been doing this for so long, met so many wonderful people along the way. And while heading towards my 83rd birthday and I still love it. I mean, it's just I really feel blessed. In fact, Sarah was laughing at me today.  And I said, yeah, thank God of that.  I just don't remember why. Anyway, that's what we're looking at today folks. Always some excitement going on, but it's not the end of the world. You can see it from the edge of town, but it's not going to happen today. And remember, we've been on this planet for somewhere between five and eight billion years, they say, and we'll find out how much longer we got to go, but it's going to be a lot longer than some people think it would be. My guess, even though times in some of these countries are a little crazy, it all works out in the long run. So live every day in an attitude of gratitude and stay tuned for my show.<PHONE_NUMBER>.