Welcome to part 5 of the lecture on machine independent optimizations, today we will continue our discussion on control flow analysis. So, we defined dominators in the last part, so and we were discussing the natural loop structure which is defined by a back edge. So, just to do a bit of recap edges whose heads dominate their tails are called back edges. So, if there is an edge from a to b, b is the head and a is the tail. So, given a back edge n to d the natural loop of the edge is the node d plus the set of nodes that can reach n without going through d again. So, the property of the header is that you know of course, the rather the head is that d is the header of the loop. So, it is a single entry point to the loop that dominates all the nodes in the loop and at least one path back to the header exists, so that the loop can be iterated. Let us now consider the algorithm to find the natural loop structure based on this definition, this is a fairly straight forward algorithm it uses a stack. So, let us say the back edge under consideration is n to d to begin with the stack has been initialized to empty and the set of nodes in the loop has been initialized to d because that is the header. Once we initialize the loop to d it ensures us that we do not look at the predecessors of d which is you know we should not be doing that otherwise we would be going outside the loop. It calls the function insert n which just checks whether the node that is passed as a parameter is in the loop set. So, if it is not in the loop set it is added to the loop set and then it is pushed on to the stack. The reason we do this is to trace the predecessors of each of the nodes which are on the stack. So, now we begin so to begin with we have inserted n. So, that has also been added to the loop and it has been pushed on the stack. So, to begin with we have only n on the stack. So, while stack is not empty do pop it and for each predecessors of m do insert p. So, we go on doing this until the stack becomes empty. So, let us understand this algorithm with an example. So, here we have many back edges. So, the back edges are 7 to 4, 10 to 7, 4 to 3, 10 to 3 and 11 to 1. So, let us just take one of the back edges and understand how the loop can be computed. So, let us say we take the back edge from 7 to 4 why is it a back edge that is because 4 dominates 7 that can be easily checked here 4 dominates 7. In the algorithm we put 4 into the loop which is the header of this loop corresponding to the back edge 7 to 4. So, there is always a back edge to which a natural loop corresponds. So, we are considering tracing the loop structure of 7 to 4. So, we add 4 to it and then we do an insert on 7 which is also added to the loop and it is also pushed on to the stack. So, inside the while loop which keeps popping nodes from the stack we first pop 7. So, then we look at the predecessors of 7. So, these are the 2 predecessors of 7. So, let us say we add we go to 5. So, 5 is not in the loop. So, we add 5 to the loop structure and we also push 5 on to the stack. Then we look at 6 we also push 6 on to the stack and we add it to the loop. But once we reach pop 5 and 5 then we find that it is already added to the loop structure. So, nothing is done nothing is done for 6 as well. But then from 7 5 and 6 are not the only predecessors we also have another predecessors which is 10. So, we actually add 10 also to the loop and it is pushed on to the stack and once it is popped its predecessors is 8. So, 8 is put into the loop and again pushed on to the stack, but nothing more can be added from 8 because 7 and 8 are already in the loop. So, we get 4 5 6 7 8 10 as the loop structure of the back edge 7 to 4. So, 4 5 6 7 8 10. So, this is the loop structure of the back edge 7 to 4. So, let us consider the back edge 10 to 7 and see what happens. So, we add a 7 to the loop we add 10 to the loop and also push it on to the stack when we pop 10 its predecessor is 8. So, we add that to the loop and push it on to the stack and for 8 there are no other nodes to be added because 8 itself has been added to the loop. So, 7 and 8 and 10 happen to be the happen to be the nodes in the loop corresponding to 10 to 7. So far it is ok, but the most unintuitive result is for the loop from 4 to 3. So, we start with 3 added to the loop then we add 4 to the loop structure and once we add 4 the only predecessor of 4 is 7 in this case. So, we add 7 6 and 5 to the loop structure the predecessor of 7 is 10. So, we add 10 and 8 also to the loop structure. So, for this tiny you know seemingly single loop we have added 3 4 5 6 7 8 and 10. The reason why this is correct even though it looks unintuitive is once we start from 3 we can not only go to 4 and go back to 3 we can actually go to 4 then 5 then 7 then we try we can traverse 7 to 4 and then 4 to 3. Remember that to reach the node number 3 we will have to traverse the back edge if we do not do that then this must be the only way we reach 3 otherwise it is incorrect. So, for example, we can go to 4 5 7 8 and 10, but then we can also reach 3 via the other back edge, but that is not considered as a part of this loop for reaching 3 for the loop corresponding to the back edge 4 to 3 we must always traverse the back edge 4 to 3.  So, this is how the entire loop structure this entire thing is added to the loop structure for 4 to 3. So, now it is easy to see you know the loop structure for 10 to 3 obviously, we would add 3 then 10 then 8 gets added 7 gets added 5 and 6 and 4 all these get added to the loop structure automatically because they are all and for the back edge from 11 to 1 the entire flow graph would be all the nodes in the flow graph would be added to the loop structure. Let us change the back edge structure a little bit. So, instead of the back edge from 7 to 4 we actually change it to become the back edge from 7 to 3. Now, the loop structure of 10 to 3 does not change 11 to 1 does not change nor does the loop structure of 10 to 7 changes. The 2 loops which change are 4 to 3 and 7 to 3 7 to 3 now we add 3 then we add 7 we add 5 we add 6 then we add 10 8. So, this is going to be our loop structure. So, for 7 of course, we also add 4 right. So, 3 4 5 6 7 8 10 becomes the loop structure for 7 to 3, but for the back edge 4 to 3 there is a drastic cut. So, we add 3 then we add 4 to the loop there are no other you know predecessors of 4 apart from 3. So, the loop structure is just this particular small loop 4 to 3 3 to 4 and 4 to 3. So, by the back edge you know when we change the loop structure we have changing we are changing the back edge and once we change the back edge the number of nodes in the loop also get changed. So, this is the implication of the back edge on the loop structure. So, the next you know concept that we need to learn is the depth first numbering of nodes in a control flow graph why is this important. In the case of data flow analysis we know that we can visit the nodes of the control flow graph in any order, but I also mentioned that you know visiting the nodes in the depth first search order actually gives us fewer number of iterations compared to any other visit order. So, to understand the DFS order let us actually understand how to do the DFS numbering itself. We are really going back to the data structure course. So, this is a depth first search on the graph just that the numbering of the nodes is going to be slightly different. So, DFS num takes the node as a parameter then it marks the node n as visited as in any depth first search. So, for the for each node as adjacent to n. So, this is exactly the same as in the depth first search if S is unvisited then we add the edge n to S to the depth first search tree T. So, we are constructing the DFS tree and then we call DFS num. So, remember that we have not yet numbered the nodes. So, after all the nodes adjacent to n have been visited we come out of this loop and then number depth first num n as i to begin with i has been initialized to the number of nodes of the control flow graph and then once we do this we decrement i. So, this is the way it gets numbered. Now, a node gets numbered after all its dependence descendants or dependence get numbered the initial call on DFS num is through the entry node of the control flow graph. So, let us understand this algorithm with an example. So, here is the same simple control flow graph that we had before. So, we start our depth first search numbering from the block b 0 and so the counter has been initialized to 9 because we have sorry 8. So, that is because if we start the numbering from 1 then we have 9 nodes if we start the numbering from 0 then we have you know 0 to 8 again 9 nodes, but the numbering is going to be different. So, let us assume that the numbering happens from 1. So, we have initialized the counter to 9 this is the number of nodes in the control flow graph. So, we start our depth first search from b 0 its only neighbor is b 1.  So, because this is the next node which is adjacent, but we have already visited it. So, node b 7 gets the number 9 then we return to b 5 that would get its we have exhausted the adjacency list of b 5. So, it gets the number 8 then we go to node number b 3 now there is one more neighbor to be visited that is node number b 6. So, we visit that and then we find that all its neighbors that is only this has been visited already. So, we number this as 7 and then we return to b 3 that now has exhausted all its neighbors. So, it gets the number 6 then we return to b 2 we still have to visit b 4 and b 8 before we actually number b 2. So, we go to b 4 then we go to b 8. So, this has no neighbor. So, this gets the number 5 b 4 gets the number 4 then we return to b 2 which gets the number 3 then b 1 gets 2 and b 0 gets 1. So, this is the ordering in the depth first search numbering scheme. If we apply the same algorithm to this example we start with the node number 1. So, the numbering actually that already shows the depth first search numbering, but it is possible to number the nodes in a slightly different order also. So, for example, in the in this example suppose we had chosen to from here after visiting 3 suppose instead of going this way if we had chosen this path we would have come to b 4 and then b 8. So, this node would have been number 9 then this would have been number 8 and then we would have gone further to this part of the node this part of the graph. So, the order in which we visit the nodes will also change the depth first search numbering the same is true here. So, we start here then we go to 2 then we go to 3 4 then we visit say 6 then we visit 7 8 then we visit 10 and 11 no more. So, this gets the number 11 this gets number 10 we go back and then visit this gets 9 this gets 8 this gets 7 then we go back to 6 and then this will be this will cannot be numbered in the right now. So, visit this give it 5 and then 4 then 3 then 2 and 1. Whatever has been marked as marked in purple it corresponds to the DFS tree it is a spanning tree. So, these are the tree edges then the back edges are also called as retreating edges and whatever is neither a tree edge nor a cross you know retreating edge would be called as a cross edge. So, this is a cross edge here now what exactly is an inner loop. So, let us understand the inner loop there are unless 2 loops have the same header they are either disjoint or one is nested within the other. So, this is a simple property. So, if but if they have the same header then they need to be neither nested you know not disjoint I will give you an example of this, but otherwise assuming that this is not. So, we check whether the loops you know whether the nesting can be checked very simply by testing whether the nodes of a loop A or is a subset of the nodes of another loop B. So, if it is a subset then there is nesting. Similarly, if the loops have no common nodes then the loops are disjoint, but when the loops share a header neither of these may hold I will show you an example of this and if this happens they should loops share a header and neither nesting nor disjointness is the property we will have to actually combine the loops and transform it. So, let us take this big example. So, we have so many loops here 7 to 3 10 to 7 4 to 3 10 to 3 and 11 to 1. So, if you look at it 7 8 10 is a subset of this set the loop structure of 7 to 3. So, 10 to 7 is nested within 7 to 3 even though it does not appear. So, this is 10 to 7 and this is 7 to 3. So, even though it does not appear. So, it is indeed nested similarly 7 8 10 is nested in 10 to 3 and 11 to 1 as well that is you know visible then 4 3 is nested in 7 3 it is nested in 10 3 and it is nested in 11 1 as well. Now, it is also correct that 4 to 3 and 10 to 7 are disjoint loops. So, these two have no nodes in common. So, they are disjoint loops suppose we had a structure such as this. So, here for example, we have a node a loop which is this right there is another loop which is this. So, for in the loop structure the loop corresponding to the back edge c to a is a b c and the loop corresponding to d to a is a b d you cannot say that one loop is nested in the other and you cannot say that the two are disjoint because they still share a node. In such a case we actually want to transform this to this type of a control flow graph by adding a dummy edge. So, once we add a dummy edge we see that and we can shift the two back edges to rather combine the two back edges into one and make it edge from e to a. So, once we do that the for the back edge e to a the entire loop becomes a single loop. So, here also you know there are difficulties of that kind for example, 10 to 3 of course, there is no structure of this kind which appears, but nesting and disjointness definitely happen to be the case. So, this type of sharing headers, but neither being disjoint nor being nested is not true in this case. We also need to understand the concept of a pre header this will be required in the algorithm for loop invariant code motion. Suppose we have a loop structure with a header and there are many parts coming into this header it is usually convenient to make the header get just one input by actually separating all other inputs to go into a pre header. So, the semantics of this and this are the same it is just that the loop has now become very clean there is only one input from the outside and the rest of the edges are all only the back edges. So, whereas, here there are number of inputs coming from outside. The next thing very which is very important is to understand the convergence of a data flow algorithm I promise this in the last part of our lecture. So, what can we say about the number of iterations that the data flow algorithm iterative data flow algorithm takes. So, let us say we are given a depth first spanning tree of a control flow graph. So, we know how to construct the depth first tree we do the depth first numbering automatically we get the depth first tree. The largest number of retreating edges on any cycle free path in the spanning tree is the depth of the control flow graph. So, let us understand that and then continue. So, here the depth of the control flow graph is 2 that is because when we take the spanning tree which is shown in the picture and we consider the sequence of back edges 10 to 7 and then 7 to 3. This is the maximum number of back edges which can be traversed in the tree right all others would be just this is just 1 and this is again just 1. So, whereas, here we have 2 back edges which can be traversed. So, this is the depth of the control flow graph in this case whereas, in this case the control flow graph has a depth of 3. So, the reason is we go from 10 to 7 then we go from 7 to 4 and then from 4 to 3. So, the depth of this control flow graph is 3 what has the depth of the control flow graph got to do with the convergence of the algorithm. It is here the number of passes needed to for the convergence of the solution to a forward data flow analysis problem is 1 plus the depth of the control flow graph. So, this is the basic result. So, once we know the depth of the control flow graph we can say that this is the number of iterations needed for the convergence. And this convergence this number the this bound can actually be achieved if we traverse the control flow graph using the depth first numbering of the nodes any other order may actually take a few more iterations. One more pass is needed to determine no change and actually therefore, the bound becomes 2 plus depth of CFG. And for a backward data flow analysis problem the same bound holds, but we need to reverse the depth first search rather we need to consider the reverse of the depth first numbering of the nodes. So, instead of doing the traversal in the depth first search order we do it in the reverse order. Any other order will still produce the correct solution, but the number of passes may be more than what is actually predicted. So, that is about some fundamentals regarding control flow analysis. So, now we are ready to discuss the algorithms for machine independent optimizations. So, we are going to consider a few optimizations which are very common the first one obviously would be the global common sub expression elimination. And when we do this we will also need copy propagation and constant propagation is a very simple algorithm. So, we will look at that also and loop invariant code motion is something very different which is an application of the dominator relationship. So, we have already seen global common sub expression elimination a few times, but we did not discuss the algorithm formally. So, let us do that first it needs available expression information. So, we know how to compute the available expressions by data flow analysis. So, that would be a forward flow problem with the operator being intersection confluence operator being intersection. So, basically for every statement s which is of the form x equal to y plus z such that y plus z is available at the beginning of s s block. So, as the statement s is in a particular block. So, the you know rather y plus this is in a particular block and we want to make sure that y plus z is available at the entry of this particular block only then we can actually do some replacement. And we must also make sure that neither y nor z is defined prior to s in that particular block. So, s this is defined, but before that we should not have any definitions of either y or z otherwise y plus z which is reaching the entry point of this block you know will not be useful within the block. And we cannot do any elimination of the common sub expression because y and z have changed their value. So, in such a case if these conditions are met we search backwards from s s block in the control flow graph and find the first block which y plus z in which y plus z is evaluated. So, we actually have to do this for all the parts which go backwards from s. So, we need not go through any block that evaluates y plus z we just have to go until y plus z is evaluated that is it. And that makes sure that y plus z is available right. So, availability is already satisfied now we are finding the blocks in which y plus z is evaluated. So, once we find these blocks. So, we are actually going to replace you know this rather we are going to create a new variable u and replace each statement w equal to y plus z by u equal to y plus z and w equal to u. We saw this already this is just a formal statement of that and then we replace s by x equal to u. So, this we repeat for every processor of the block s and we have already seen that repeated application of GCSC may be required to catch deep common sub expression perform deep common sub expression elimination. So, let me again show you the same example. So, here is y plus z assume that y plus z is available at the entry point of this basic block. So, these are the three paths emerging out of s.  So, now this statement can be replaced by x equal to u. So, we have eliminated the common sub expression here you know this is it is evaluated only once here and then reused. So, what we mean by a deep common sub expression is one which surfaces only after one round of GCSC and one round of copy propagation. So, we have seen this example before also briefly let us see what it does. So, we have x plus y and x plus y here. So, first round of GCSC makes this u equal to x plus y and this is equal to u then a round of copy propagation actually you know makes u star z visible as a common sub expression. So, we can eliminate that also by the same algorithm and thereby improve the efficiency of the code. So, this is what we mean by a deep GCSC. Deep GCSC is SES rather common sub expression and deep common sub expressions actually surface only after one round of GCSC and copy propagation. On the running example there are many places where GCSC is possible. So, here is i minus 1 and here we have 4 star j and then we have you know this 4 star t 6 which will surface later. So, 4 star j has been eliminated you know and then we have other expressions which are possible. So, j plus 1 is possible here and so on and so forth. Then so after one round of GCSC we get this we have still not studied copy propagation. So, we will defer applying copy propagation to the stage after studying this algorithm for copy propagation. So, the next algorithm that we want to understand is the copy propagation algorithm this is a very important algorithm and it is non trivial to solve. The purpose of copy propagation is to eliminate copy statements of the form x equal to y. So, what is this copy propagation we have a large number of users of x and let us say neither x nor y change in before we reach the usage of x. So, in such a case we can replace all these users of x by the value y by the variable y. So, thereby we have actually you know eliminated this copy statement. If x is not used later after all these copy propagation has taken place then we can eliminate the copy statement x equal to y. To do this there are two major conditions which need to be checked. The first major condition is the use definition chain of use u of x must consist of s only. So, here in other words s is the only definition of x reaching u. So, there is a usage of x. So, this copy must be the only definition of x reaching u if there is one more then obviously, we do not know which value is valid at u. So, we cannot actually replace x by this y whereas, if this is the only copy which is reaching this u then we can replace the use of x here by y. This is fairly straight forward to do we can use the use definition chain of that is available that can be constructed using the reaching definitions. The second condition is more complex on every path from s to u including paths that go through u several times. So, cycles are ok for u, but they do not go through s a second time. So, definitions cannot be gone through a second time. There are no assignments to y. So, if there is an assignment to y then the value of y changes. So, we cannot reuse it. This ensures that the copy is valid. So, again this is the reason why we cannot go through the definition in a second time, but we can go through the usages any number of times. That is not an issue and the value of y must not change. The value of x should also not change, but that will be automatically taken care of when we check this. So, we will see that now. To check the second condition is non trivial. So, we need to formulate a new data flow analysis problem. So, let us formulate the problem of reaching copies as we can call it. So, in this problem we again define C gen and C kill and C gen is the set of all copy statements x equal to y in B such that there are no subsequent assignments to either x or y within B after the statement s. So, this is the generation of copies which copies reach the end of the basic block B. So, this is very trivial almost. If a copy x equal to y has to reach the end of the basic block then neither x nor y must be modified within the block after this copy. So, what is the C kill set? It is a set of all copy statements x equal to y and s is not in B. So, very similar to the reaching definitions and available expressions problem. So, there is a you know an assignment to either x or y assigned a value in B. So, an assignment to either x or y not necessarily copy just assignment to either x or y. So, this x or y assignment kills the copy involving x or y. So, if there is a copy involving x or y x and y then assignment to either x or y in the basic block B will be killed. So, we are considering the copy statements all over the program, but the assignments within the basic block this is what we did in the reaching definitions and available expressions problem as well. Let you be the universal set of copy statements in the program. So, what is the C in of a basic block? C in of a basic block is a set of all copy statements x equal to y reaching the beginning of the basic block along every path such that there are no assignments to either x or y following the last occurrence of x equal to y on the path. So, this is something intuitive we just want to make sure that when a copy statement reaches the beginning of the block either x or y have not been assigned a value on that path. So, the same is true for C out. So, it is a set of all copy statements x equal to y reaching the end of the basic block along every path such that there are no assignments to either x or y following the last occurrence of x equal to y on the path. So, after the copy statement we should have no modification of either x or y. So, that is the meaning of both C in and C out. Here are the data flow equations for computing the reaching copies. So, just like the available expressions problem the confluence operator is intersection and this is a forward flow problem because out is being computed in terms of in. And because of the confluence being intersection we have the same initialization as in the available expressions problem C in of b 1 is phi permanently and C out of b is u minus c kill for b not equal to b 1. So, initialization is using the universal set. So, we could also have said C in of b 1 C in of b equal to u. So, for b not equal to b 1, but this is also fine. So, now C out of b is simple. So, take all the copies which generated in the block and then the copies which come into the block at the entry point remove what is killed in the block. So, that is what C out b is this is very intuitive just like the reaching definitions and available expressions problem. And in the case of C in it is an intersection of all the copies of the predecessors. So, again this is intuitive because the same copy must reach the input point via all the predecessors of the basic block b. So, I will show you in the example that mere format of the statement being x equal to y will not make the copy the same it may be a different copy. So, let us see how to actually do the copy propagation. So, we have computed the reaching copies for each of the basic blocks. So, for each copy statement x equal to y we use the definition use chain which is nothing, but a link list of you know linking a definition to all its uses. So, determine those uses of x that are reached by s. So, to compute the d u chain is it is a different problem very similar to the live variable analysis and that is left as an exercise. So, using the d u chain determine those uses of x that are reached by s. So, this will this is just to make the you know checks easy that is all. So, we look at all the uses of x these are the potential places where y a replacement by y can be made. Then for each use u of x found in one we need to check several conditions u d chain of u consist of s only. So, this implies that s is the only definition of x that reaches the block. So, I already mentioned this if there is more than one definition reaching the use u then we are not sure whether it is the copy or the other definition. So, we cannot get rid of the you know x in this usage u s is in the c in of the basic block where b is the block to which u belongs the usage u. So, this make sure that no definitions of x or y appear on this path from s to b. So, this was taken care of in the definition of in itself. So, that is why this is a restatement of a repeated statement of the same property. No definitions of x or y occur within b prior to u found in one. So, this is within the basic block this is across the basic block. So, both have to be made sure of if s meets the conditions above then remove s replace all uses of x found in one above by y. So, we have to be very careful here we must make sure that every usage of x satisfies these properties. Even if one of them does not then we cannot get rid of this copy only when all usages of x satisfy these properties we can replace those usages by y otherwise we cannot get rid of the copy statement. Here is an example of copy propagation adopted from the book. So, we have s 1 which is a copy statement x equal to y s 2 is another copy statement p equal to q s 3 is not a copy statement s 4 is a copy statement x equal to z s 5 is a copy statement x equal to z. So, here I want to emphasize that the copy x equal to z in the block b 2 and the copy x equal to z in the block b 3 are two different copies they are not the same even though their form is similar. The assignment 2 x happens in both the right side is the same, but these two copies are not the same. So, once we have two different statements then the two are different copies unfortunately the copy propagation algorithm is not powerful enough to capture the effect of these two copies being the same. So, even though in this case they are indeed the same our algorithm cannot capture this effect then s this is not a you know s 6 is not a copy statement s 7 is also not a copy statement, but s 8 is. So, to compute the gen and kill I have not shown it here, but it is very trivial. So, here x equal to y and p equal to q are both generated by this basic block and when we consider the kill look at x equal to y. So, all the copies involving x are killed by this copy. So, this is killed this is killed so and that is it these two are killed. So, that is that is it similarly for others as well. So, we will not worry about the gen and kill because it is very simple to compute them. Let us understand what the structure of c in and c out are. So, this basic block has no incoming statement. So, c in of b 1 is always 5 in the case of c out obviously s 1 and s 2 reach this point. So, they are included in the outset for b 2 c in is nothing, but the outset of b 1. So, that would be s 1 s 2 and c out will we actually have x equal to z. So, this is a copy which goes out. So, s 2 s 4 is included and since s 4 is assigning to x the preview this copy x equal to y would be killed. So, that is removed from this set. So, we have s 2 and s 4 obviously statements which are not copies are not included in this set. For this block again c in would be the out of this. So, that is s 1 s 2 and out of this block would be obviously, s 5 is included and it is assigning to x. So, this s 1 would be removed. So, s 2 and s 5. So, here you can see that s 4 here and s 5 here are being maintained as two different copies. In this particular you know block before which has s 6 there is a usage of x here. So, since our copy which reaches from here is nothing, but x equal to z and all the conditions of the copy propagation are satisfied here x and z are not modified here they are not modified here. So, this x has only this particular copy as the reaching definition the rather the defining occurrence. So, this x can be replaced by this z. So, this can really become z plus 6 absolutely no problem about that. When we come here this has another x unfortunately the x which comes from here is s 5 and the x which comes from here is s 4 even though these two are really the same copies they are being you know represented as different copies. So, since there are two definitions or two copies reaching this usage of x we cannot actually replace it by z. Now, there is n equal to p here p has a you know definition in s 2 and that reaches along this path and along this path as well with no modifications to either p or q. So, we can replace n equal to p the p in n equal to p by q and this would essentially become n equal to q. So, this is how the copy propagation algorithm works and let me stress again that even though syntactically these two copies are the same they are being treated differently by the algorithm. On our running example there are many copies here. So, for example there is t 10 here which can be replaced by t 4 and there is t 12 here which can be replaced by t 4 and then there is t 14 here which can be replaced by t 6 etcetera. So, once we do that we get this and it exposes the next level of common sub expressions which can be eliminated. So, we get this right. So, we can now do another copy propagation on this and finally we get a very condensed piece of code. So, that completes our available sorry the copy propagation algorithm. So, now let us move on to the next optimization which is simple constant propagation and constant folding. In fact, constant propagation you know is very similar to copy propagation it is just that the right hand side of the copy now becomes a constant value. So, the algorithm has the same flavor as before, but it is not necessary to solve a different you know data flow analysis problem here. So, we use a statement pile which consists of all the statements in the program. So, we take one statement at a time and then see what to do with it. So, while statement pile. So, we include all the statements in the program into this. So, while statement pile is not empty remove the statement if the statement is not a you know statement of the form x equal to c where c is a constant then we ignore the statement and we actually go to the next statement in the pile. If it is indeed a statement of the form x equal to c then we check all the statements t in the definition use chain of x. So, that means we check the x is definition because it is of the form x equal to c. We see all the usages of x and this d u chain is a very convenient data structure to examine all such usages. Now, if the usage of x in t is reachable only by s. So, this can be checked using the u d chain. So, let me show you what this really means. So, here is a constant definition x equal to 7. Let us say there are two usages for this definition one is here u 1 and the other is here u 2. So, the d u chain consists of both these usages. In the case of u 1 this is the only definition which is reaching this u 1. So, we can simply replace this x by 7 and also simplify this expression 7 plus 6 as 13. So, no problem with that, but if you consider u 2 there is another definition d 2 x equal to 9 which is reaching this x. So, is the value of x here is it 7 or is it 9 that cannot be determined at compile time and therefore, we actually do not replace this x either by 7 or by 9 we just leave it as it is. And if we do that then you know it is not possible to remove either this statement x equal to 7 or x equal to 9. So, this is what we mean by the statement if usage of x in t is reachable only by s. So, if it is true then substitute c for x in t then we simplify the statement t. So, I showed you this already here we could have simplified this to 7 plus 6 why should we do this. Suppose this was y equal to x plus 6 and now after simplification this becomes y equal to 13. So, this is another constant assignment. So, now all usages of y can be actually potentially replaced by 13. So, that is the reason why we require this simplification of t and after simplification we added to the statement pile. This is again required because if this had become y equal to 13 this is a new statement which was not present before. So, we must add it to the statement pile. So, that we examine all the d u chain of y etcetera etcetera as well. So, the statement pile now gets another extra statement now the same loop is repeated until the statement pile becomes empty. So, in this case after the usages of x are replaced by c then x equal to c possibly becomes dead code. If there is still you know some usage of x which is not replaced then it is not dead code otherwise it is dead code and a separate dead code elimination pass can remove such code. So, that is not an issue what have we not done here actually we have not performed what is known as conditional constant propagation this is only simple constant propagation. In the case of conditional constant propagation we consider conditions in the if then statements and if the conditions evaluate to a constant value then we need to choose either the true branch or the false branch at compile time itself the other branch becomes redundant. So, this type of conditional constant propagation is a little more complicated than the simple constant propagation and when we consider the static single assignment form which is more effective for conditional constant propagation we will consider examples and the algorithm to perform it. Thank you we will stop here today and continue the next part thank you.


Onapatiwa point. Felana is like a daughter to me. Do you know nili miss kwenda launch ya Alikiba? I had to choose between Felana and Alikiba. Alikiba lituma ticket. Ali weka paka kwa titake kuna screenshot nda kutumia weke. Aka sema kasi polu kuja. Erikwano wush called me. Waki kua kwa airportu na ningojiya asubui na konvoi. Medius za tanzania zikwanoza na ningojiya. Belamama kutafu terikwano wush. Nili kwanga niko nituus between Felana and Alikiba. And because Felana nili do tawango when nili mementa, nili memshkilia mkono, nili mempigia mbuembu from zero, I had to choose Felana. So, yo te tanu tisa ni akwamba. Watu yun na dhania nima rafke zako? Sio rafke zako. Nili kutafu, nili mementa. Yakuwamba. Una viyodani sivyo ndivyo? Sivyo. The people that you think are snitch. Ao ndo anakwani marafiki. Na when you na dhania ni marafiki, ao ndo must snitch. I respect the fact that we had something like business together. I respect the help that am I in a pair. And that's why I will not talk against you. I want to request you so far. Please, dame jumefa ni enaf. Watu yun shia na apu? Watu yun shia apu? Tu baki twesimiana. Na tu tazidi twesimiana, I hold no graduate against you, but the person that is advising you, mwambia watu? You will need me tomorrow. I will need you tomorrow. We need each other. Onapatu point. Mled. Just stop. This thing is affecting so many people. Mimi numtumkubo kwaimani neneote. Neme you hold, but so many people are crying. Please, leave it. The first time you did it, this is the second time. Don't do it the third time. I'm human. Na nimi weke shima. Na nakuomba kwaishima. Please, don't go beyond that. Na kama kuna kituomba wakeni ameskia, nisawa, uyo sofa na mwambia kwaimana, na kanyagi apu. What's up, good people. Welcome back to Sfm Buzz. My name is Shiko Gita. We are right here, Zandani Street. We have a doctor in Munewe, Kasipul. Janatuliaza kona mwambia aliaza kutukia because we had sofa. After learning in the country, kanzaku aliaza kusima maneni wambia, kina go yaliko na mwafekt shehe, ama yaliko na mhusut kwa pizuitweza kuskia. This other side of the story, karebusana, doctori? Na shkuru, labda, yoko salama. Mampia. Jamani lakini, ni homa? Ni homa, not homa ni ko. You know the all week ni me kwa busy, ni me kwa gig after gig. Ni me kwa Sunday ni lukwa tala, nga na totoa kike. Asubu yaki tu lukwa nga tukwa church. Saturday tu lukwa kwa babya captain na moya David. Tuki luncho club. Friday ni lukwa na kuru. Kwa county government ni lukwa na kuru kwa mani peya job flani. Thursday yaki ni lukwa ni kukisumu. Io teniku, roro. Kuna ma podcast, tumefanya podcast na Nimrod. Nimrod na nimrod, tumefanya na Ezra. So, ni me kwa nikiyongia. Back to back, back to back. Ya, lakini ko sababu, sekozote shiko okiniita na kubaliawimu toa ko. Ni ko sababu, nile sema seita ko sakuongia. Ko sababu, ni kenyamaza piya kutukuongia, koa itafa na kazi. So, iyono kazi hangu, iyono naniwekam jinia. Weli, kama inalipa una piga kazi? Una piga kazi. Uza kwa kiskiya maleriya kido kwa zendo ofisi. Penda kaziako, neshimo kaziako. Una labda shehe jana mamba liezaku kutukiasu, kama liezaku ono? Mambo gani. Tuleza kuma na sofa ya kizingunza pali evo aeapots. Kukuhusu? Nesawa. Nesawa. Onadiwa Chamsiingini shiko, nambu one, nile kwa mena gombiakiti chawgevana. Ya Nairobi. Nani kwa very keen. Nani kwa focused. Kwa sababu. Siko zote okifotili ya kitu kamaisha. Lazimu kwa focused na lazimu wanembele. Nile ambiamtu. Watu idadi kubu aeapigakura niwana haki. Naa sihezio nesha pichiambaya kwa kwa sakumana mkehote. Uwe umedyo tu mehanzana e waiba kama 2 years ago. Niga kwa mbia kwa interviu zangu misi wenge nani? Wenge lele angiwa, wanem keviba. Onadiwa. Mebi lavda. Sasa? Iotitana uti saa? Ion do kitamao mimi siwezi wuka mipaka kwa kumu wenge lelea dadaetu amao memtaja jina. Siwezi wenge lele vibaya. Nasi wezu skumu wa nimu wenge lele vibaya. Ama ni jibu inyama wenge. Mapato punti. Mimi nimutu ama ni mejenga brandi angu from nothing. Mapato punti. Jina angu. Kusio Kenya pikiake. Tanzania. Uganda. Wewana yua. Nini naji na kubu Anata na ni ya. Mutu ote. Anamuka. Anna fungu oma domo. Anasema. Ya kwa mba, ni ABCD. Nakuwamiya co-prete. Jamama lifanya. Iema kosa. Wele naunajiwa, nili kwa natakalabatu eziku skiza.  When was the last time you talked to Sofa? I mentioned that I have been working for five months Have you ever heard of any media in which you are now at goal of traveling? Was it in your time that you came to see sofa? 1.2! 2.1. 3.2. 4.2. 5.2. na ni kawasifu ya. That is how much I am. I don't attack women. Despite ya na ni come out clean. I'll surprise you. Poa sana. Do you know my wife and as a kumya, she can attest to that. When we had differences with software, not even differences, I just went mute. I just went mute because nilifika pali penye ni hisi, ya kumya tuta kusia ne shima. As a man, you go mute. Shida ilikwa ma kimalipo. No ya na kumya. Nili kumya sita toa zandani. Ya na sama mi na zatoa zandani. Siwezi, I will never, I will never toa zandani. Zake. Siwezi. Wei wuku na zandani. Skeza, siwezi. Toa zandani. Now, my wife na ya na juwa, my wife was surprised one day and came to me and said, what do you guys have differences with software? Because even my wife sikwa imu amia, I'm having issues with software. Anapigia nge bibiangusimu, wanongia, despite mimi na hei tokwana differences at wongia. My wife used to ask me, kasi pulu your friend and she's doing well ni ni na amia, she's fine, she's okay, she's doing well ni ni. I never discussed my matter and my issue with software and my wife. Because at the end of the day, Iyo tunaweka said. I'm that kind of a person that nikianda tuki kwa sana, I don't go around talk about about someone. Software tunawefa ni na eka zi. Na wakasi tukwana fa ni na eka zi, wei in good terms. My entire time ni tomefa ni na kazi na software. All the ways aki kuja kuya airport, tukimu tukwa, moki kuja kucava, it was brilliant. Upepo ilu wongia na enda. Truth be told. Truth be told. Na aki kata, nisha ori aki. I am the one who went to do software to you people. In a good way. Despite what happened, on a particular point, I was with software. Mimi ni teme na software. You know it. Press ya kwanza. Software kuwongia. Ni mimi ni nifana. Na neluwa ita. In business, kuna kuna difference. Na de? Na kuna interest. I don't inherit enemies. From the speech. From the speeches of Alia Zakpiana or whatever she said Palikonya Airport, looks like you guys had differences in terms of payment. Nothing like payment. Respect? I have never disrespected her. She knows. She knows very well. I have never disrespected her. I have never. I don't disrespect women. For your information, I have worked with you and your colleagues for the past I don't know how many years. Tell me even one day nimaiku disrespect. No, tell me. Have I ever disrespected you? Even your colleagues? Ukiwuliza wa tuwa online media's work around. Uwata kuwambia kasi pulun do the only person who is a gentleman mwenya disrespect of Tua Kike. They can attest to that. Kama kuna mwaja inom kuna seme kasi pulu disrespected me. Are you getting my point? Now. I don't know how you are disrespect. Onapata? Yeah, disrespect. Ya ke misi, you are disrespect. You say mkwamba you are not loyal? Loyalty nita kuwambia kitu mwaja loyalty inakuja na build up. You don't just wake up one morning na nakuwa loyal kuwako. You must show me that you are loyal to me. And then I become loyal to you. It's a build up.  It is a transaction. Transaction means what? Bring your product to sale Siku ni contractimation tu na hachanaban Did you have a contract so far? Uugungu na fanya kazi kwa iw mungai Saiu kuapa The fact that okona SPM does it mean that tu na fanya interview bro does it mean that the fact that you left iw mungai you are disloyal to iw mungai you left iw mungai because contractimation na kanga liya palpengine pakuena nobody is condemning you because it's about opportunity. Once we are done with business with you it doesn't mean that I have to spend time with you I have to be talking with you I have to be doing at that moment ni tu na fanya biesha and I'll talk to you even if you want me to talk to you 3 hours a week We have something in common that we are discussing together Are you getting a point? And so many ladies na si nini mada dazitu tu na wa elewa na tu na nanga strategybu when it comes to business you become emotion you get attached to someone like a friend and whatever but you don't know how to differentiate between emotions and business Let me ask you Kasipu na jokiyo ngeiwa watu kuleinja wa takamapu Do you at any point feel so far I was unable to differentiate between business and now being attached or rather the emotions I understand because we we did business and we became family we became family to an extent so far I know my children so far I know my wife I know the brothers I used to go to Sophia's house na butiwa poin we used to share with Sophia Zandani by for instance there are things that we could talk like hey I don't have this and this na isn't Zandani ni saidi na pesa nge tuma na butiwa poin mpe credit kama bada kwa life she used to send me money and I used also to help kwa mawazo na kwa kuhaip na butiwa poin we shared a lot and we were very close and I used to call her my sister and she used to call me my you know her brother so the emotional part of it na na dania ili kwa ni sosa ekwe ni kama loyalty and enemies were there not per se enemies but na kwa kwa na ikamp na ikamp two different camps with two different people and on the other side labda wali to piga pa ali na to kwa mark and you know me am a politician mimi so long as interest is taken care of I will talk where by there is a guy called Dawidi Anguka Anguka what he did ili kwa kwa kwa kwa na disagreement flan nye I think we are the people who will deal with this agreement kwa sababu kwa nye tulu kwa na he tulu kwa tume mwa mpe atofa uti nye kwa mpe this camp kwa na to piga kwa kwa kwa kwa kwa na he kwa kwa kwa kwa na he kwa kwa na exchange na nini na gani na nini and then kuna jaman ito civilizer civilizer is my guy na tumeto kanae na nimi na siya samanzango at some point ikonikitu nina kwa escaletic kwa isasa beef na ita kwa beef nbaya sana what did I do I had to look for Anguka and civilizer to make peace so that tomorrow we will need them I think that Indonesia kwa mba I am a traitor na pato point nina kwa mbaya I have never seen anyone like itu kwa any media so I looked for civilizer you can look for civilizer and Anguka I sat them down and listen this disagreement is between us and you guys nye nye mmejipata mminga kwa shidanya haiko pwa pwa mmejipata mginga civilizer had like 50 goons kwa yuwa ntaka kuni mwa ako and nika realize sana vitae meto keze wa to meto ana binduki palenani tukitoka inje the goons wala kwa nga literally wala ntaka kuni maaliza kwa zona jwa mini hadui guess nano linsaidiya kwa magoons na civilizer na daudi Anguka nika sema tunapigana nini nika sema tunapigana nini waka piz that was being disloyal according to so far according to her but I felt I don't need to fight other men number 2 I came back to Nairobi and a guy called Moya David when he met me kwa niki tosi you know very well in fact at the reason why we met with so far was because of David Moya I met so far at David's Moya na yosiku wana fanya interview na Eve Mungai na Trevor so ika ena bili handa my body gets waka nipigia o le matuins waka ni ambia ni ABC nika sema no nita sawa zeshi o maneno now guess what when nani called me Moya called me kuna bieshara apa kwa kula bibia captain mimi umeni ungevi baya but you are my guy I don't take things personal I'll put it aside kujet fanya bieshara you know Moya is a young man is like a small brother to me now mimi mone ni kipiga moya mendo kupanya kazi na e mimi mone ni kipiga moya mone ni metusi moya ita unupaka moya jiaipu mwa moya na hekimaka na piximi akana ni call na nani ambia bro hi kazi na takana kupe I felt like uniki jana mdogo na narizu na eevi why not I reached out tu kakwanae a kindle that is being disloyal are you getting my point that is being disloyal according to to her I don't blame her I don't know what happened between them whatever but at some point if you see me with the people the so called enemies to think at times I am working out something with them God knows moya knows nili mwami e heivi yakuwamba you used to work with software weka ro chini trudifanya kazi kupa mwanya I went there to make peace look for moya I went to make peace with anguka look for anguka every body when it will fill the enemy when it will grow grow to an extent whereby sinidu kukakatikati yawatu na pegyana and I enjoy differences by bringing them together so that is where disloyalty came from now when it come to secret of the company I will be very honest with you and this nizakulia kiappu kwa jina mama angu I have never signed any contract with software now you are part and parcel of team software that is number one number two I have never been to any office ambainitua software entertainment I don't know whether it exist in Kenya I only know one nini office niya ostia na pegyana video na nini I have never been to any of the offices apu so how do I remove secret of the company nasi jai kwa kufesiyoate nasi jai kwa isa in contractiyoate nasi jai kwa mdiakaziwaki mimi nikuwa nga influencer una kuja una nchi kwa na pege influencing to nanda of course kwa process to li tengenezura fiki so kusu secret of the company akuna secretary company exist in office nambatu siku kwa contractiyo siku kwa contractiyoate na na kampuni on up at your point now I will be very honest with you kusu bing relabo you know once you are done omifanya bideshara na mutu na mutu ame travel ame road back ostria you have to look for other business to do it's life it's life I do interviews in the morning I am a father I have to take care of my kids wangina labla nia opela keshulene lasi mani kimisha ma deals nia mikuwa ngukiyona 1 2 3 4 places so at times you call me I am not available that does not mean that I am not reliable na tafuta na fana vituzango na tafutu ugavana na tafutu anini ya koni kama part time job so unless you employ me on your kwa permanent wich angeza kuni employ permanent you cannot afford to give me me misuzango za kila muizi nili penyumba nini vitu nini I have to have like 3,000 US dollars to 400 US dollars 4,000 US dollars converted into Kenyan shillings 400,000 500,000 I have kids I have to pay school fee I have to do this and that so I cannot depend on software so reliability is either woman worker or woman worker we have to do this we have to do this we have to do this we have to do this and maybe Labda, I think this will be my final question has this probably whatever happened yesterday has it affected you business wise probably deals vituka mahiwia? it has affected me big time because I am a brand ambassador who is a company called Tano do you remember? there is a company in Mombasa for logistics we just signed a deal the other day there is a company betting company yesterday the CEO called me when I was in Ghana you know like your brand ambassador what is this? kuna in itua one pick credit I am the brand ambassador on a particular point I have a company I have a medical so more than seven companies are calling you because they are calling you because they are calling you because they are calling you because they are calling you because I will be very honest with you what I am doing when we go do the advertisement for the company camera man, extras production team it is a job job opportunity nye wakia mwa kujitoa ame umiza otu ongape not even to talk about wale, mido mongape zina Fidnaizo on a particular point my kids nye uke zima nye wangapu mwa umiza you know we need to grow and to grow above vitu zengine to see kwaetuna takatumu wemwe maybe looking at this camera as we were in the port would you tell so far are you ready for table talks so far I have never I have never personally I have never personally started a fight with software I will tell you she called mimi nye mubahia sana vitu ndo chakula ame I eat war nye mimi kwaetuna itu okupige defamation ame domo mimi nye atari sana but I have got so much respect for you you remember the first time naka mention paka jina angubabu owi no I didn't even comment despite you guys looking for me because I gave her like nene first chance ya kwa mbea tunneza rekebisha we had a conversation even had a conversation with my wife the second time anarudia nanarudia direct kwa kuwangalesha kitu nyanajua so far knows very well that tumifanya nene kazi nene memfanya kazi mzuri sigia emuibia nene mbebe mamsalaba ake nene sigia wai kutua zakizandani kusabubu niki toa pianajua but sitawai paka suku niantanda 6 feet anda I will never never ever because I am not that kind of a person kasi pool the other side because tuki kwanorafiki nae na kwa naivyo so I was surprised the people that surrounded sofaya all of them I am sorry to use kusemi a kwa mba kutini viniagwa ango menonimwa chonga kutiniagwa maome kichonga aki wa zekushitua everybody that surrounded sofaya kwa kwa airport kutini viniagwa ango kila mutuni mumu ekeli amkona yoti miote nimi mumu ekeli amkona naona yuwa naona yuwa kasi pool kama tu na mongeni apart from one person aituwa Kenon Onapatiwa point Filana is like a daughter to me do you know nili miss kwenda launch ya Ali Kiba I had to choose between Filana and Ali Kiba Ali Kiba li tuma ticket Ali weka paka kutiti ake kuna screenshot na kutumi eke aki sema kasi pool kujia Eric Kwanwush called me waki kwa kwa airport na ningodia asubui na konvoi medias za tanzania zikwana na ningodia bela mamangut after Eric Kwanwush Nili kwa nga niko ni choose between Filana and Ali Kiba and because Filana nili do tawango na nimi mementa na nimi memskili amkona na nimi mempigia mbuembo from zero I had to choose Filana So yuote tanotisa ni Yakwamba Wato yuna na nili marafke zako Siora fke zako Kwa situation niote it has taught me something Yakwamba unaviodani sivyo nivyo sivyo I know that you think as niche now when you know that as niche I respect the fact that we had something like business together I respect the help that am I in a pair and that's why I will not talk against you but I want to request you so far Please Damage my family enough What is she an apple What is she an apple to back it to a Shimiana Na to tazidi kwa Shimiana I hold no grudges against you but the person that is advising you Mambia watch You will need me tomorrow I will need you tomorrow We need each other On a particular point Let's just stop This thing is affecting so many people We need each other We need each other I hold but so many people are crying Please leave it The first time you did it This is the second time Don't do it the third time I am human Nani miweke shima Nama kwa kwa shima Please don't go beyond that Nani kama kuna kitu Mbawa Kenya miskiya Uyo sofa na mambia kwa camera Kana giyapu


All right. Thanks, Nick. Tom. Thanks, Jaron. So I understand that you wear a mask and have advocated mask wearing on this show. So my question is, do masks work? And if your response to that is yes, how do we know that enough to subscribe to choosing to wear them by an informed choice, not simply by a mandate or an act of faith that they're working? Well, I mean, I think, I think we don't know fully the extent to which they work. We understand some of the mechanisms, but we don't fully understand them and we don't have yet a good sense of the probabilities of how much they work. But there's significant evidence coming out in the scientific literature that they do work. There's an understanding about how they block viruses. So people say things like the virus is smaller than the holes in the mask that goes through. But there's a number of flaws in that argument. One is the virus is never alone. It's usually a part of a water particle and the water particle within which the virus is bigger than the holes in the mask and it doesn't get through. There's also, and I forget the physics term for it, there's also forces, magnetic forces and other forces in the material in the mask, that draw the virus prevented from going through. So it's not just size, it's not just a physical size. It's also the interaction between the material of the mask and the material of the thing. We know, for example, that an M95 or whatever it's called a mask is used in hospitals, clearly proven and is used every day to prevent viruses from going in and out, you infecting patients and patients infecting you. We know that surgical masks at least work for some things because surgeons wear them and there's a huge body of evidence that that is good for surgery. So I would say that logic, understanding of the physics of it and then the use of masks by doctors in hospitals and noses in all evidence that in certain contexts masks work. I'd also add that in a sense anecdotally, the fact that in Asia, they use so many masks and maybe correlation is not causation here and you could make that argument. But the fact is that Asia has done like a gazillion times better than we have. Logic thing, because they test, trace, isolate but also because they wear masks and it's just a given that they wear masks. It's not required, but they just do. And if you've been to Asia, you know that they wear masks during flu season even when there's no COVID. So I think when you add up all of that, I would say there's a very, very good chance that in closed environments, in environments where the air does not circulate much, where there is reasonable social distancing. I think if you, if you scrunch up against one another, I'm not sure the mask works anymore. But if there's a reasonable amount of masks work, if you just think of the physics of it, even if the virus gets through the mask, the mask slows it down by slowing it down causes it to drop to the ground faster. It spends less time in the air.  It's just, to me, it's, I can't prove it. So I say it's common sense, but I think it's more than common sense. I think there's real scientific evidence here as well. Now outdoors at the beach where there's a breeze, where there's, you're 12 feet away from everybody else.  There's no reason to wear a mask, but indoors when you're, you know, less than six feet apart from each other and where there's not great circulation of air and we know air conditioning filters these things through, wearing a mask creates one more barrier between you and the virus. It's an o-brainer in my mind. It's just an o-brainer. Now the question is, do you care if you get the virus, right? How much do you care, right? Is the convenience worth it? So if you're young, maybe you don't care and that can be rational. If you're 85 and there's a, the people around you might be infected, you should wear a mask.  Some 85, you'll say the hassle of wearing it, I'm going to die anyway in the next two years.  I don't, and that's rational too. But you have to make that estimate for your own life. But to me, if you're concerned about the virus, a mask reduces, I think, significantly the probability that you will get it from somebody else in your close environment in an indoor space. So as far as limitations though, what you're describing would then be applicable to any other type of communicable ailment. So what's the limitation? Yeah, I mean, I think we're wearing masks all the time going forward to as a mitigation factor against any type of communicable disease. No, I mean, it depends on the, on how bad the disease is. It depends on how communicable it is, right? How, how, how easy it is to get it from other people. You know, so some people who might have a high probability of dying if they get the flu might make sense for them to wear a mask when they interact with other people. Most people, the flu is no big deal. Or it's, it's not a big deal enough to wear a mask. Asians don't like the flu, right? They don't mind wearing masks, stay with them. I wouldn't wear a mask. I probably wouldn't wear a mask in most situations, even with COVID, unless I was concerned about the other person getting it. So I've said this before, you know, I have a friend 87 years old, when I go to see him, I get a test before that, because I don't want to wear a mask, right? I'd like to be able to see him and him to see me.  And I don't want to be the one giving it to him, right? I don't want him to get it. So I get a test. If I couldn't get a test, I'd wear a mask. When I interact with him, now if there was another disease I had or thought I might have that would kill him, and a mask would help, I'd wear a mask. So it's completely contextual. It's completely situational. It's completely within the scope of your decision-making about the type of disease. But look, let's say MERS, the Middle Eastern Respiratory, MERS, S, what's the S stands for? Syndrome, Middle Eastern Respiratory Syndrome. Basically, if you get it, 50% of the people who get it die. I think that's a number. Maybe it's 40%, right? 40 to 50% of the people get it die. Right now, it's very hard to get it.  Yeah, I've heard human-to-human transmission is extremely rare. Yeah, but imagine it wasn't. Imagine MERS was in the air and it was not easy to get, but it was likely to get, right? If you were in an elevator stuck with somebody who had it, you would get it. Would you wear a mask? Yeah. If you thought it would slow it down. You have to make the decision on a virus-by-virus basis, on a situation-by-situation basis, who you're with, what's the context, how deadly is the disease, and how communicable is it? All of us need to make those assessments within the context of our values. That's why the government cannot make that decision for us. We have to make it. And, you know, the 87-year-old has to make the decision is my life is another few years of life worth it to the inconvenience or not. Only he can make that decision within the context of his values. That's why it cannot be forced. It cannot be a decision made from the top. But yeah, we should make it. I mean, I've been tested for, because I travel a lot for hepatitis. Hepatitis, I think, is a communicable disease. I'm not sure exactly how you get it from person to person. But if I tested positive, it's a problem. I would have to change some of the way I live. If you test positive HIV, you would have to change some of how you live in terms of how you interact with other people, sexually at least. So each disease is going to cause you to each communicable disease. It's going to cause you to think about how you interact. Now, cold is not, but we all, you know, when I ran the institute, I would tell people, if you've got a cold, don't come to work because I don't want you cold. You know, I don't want to get it from you. So stay home if you've got a cold. Even if you want to work, you don't work from home, whatever. Don't come to work because I don't want to get your cold. And I certainly don't want to get your flu. So we know this about communicable diseases. What about, what about airing on the side of caution then in the, in the way you're describing that you don't know because you're asymptomatic that you have any type of a communicable ailment. And why then wouldn't you then advocate for us to wear masks all the time as a safety precautionary measure? Because I don't believe in the precautionary principle. There has to be a reason for you to think you might have it. With COVID, because we know that asymptomatic people do give it because we know that what is it? Six million people have had it in the United States, probably 20 to 30 million Americans have had it, maybe more. It's in the air, it's out there, it's everywhere. Then you're careful because it's a problem. So you're not, when there's no problem, why be careful, right? When the problem rears its ugly head, then you have to start thinking about, should I wear a mask or shouldn't I wear a mask? But COVID is a reality. It's not a myth. It really is here. I'm not, I'm not, I'm not arguing that it's a myth. I think that's a strong man argument. But what I'm saying is that what you're describing, if we replace the word coronavirus with the flu, everything else is the same, right? The flu exists, it has existed for a long time. Many people, many thousands, tens of thousands of people every year die from it. Malaria is a similar type of ailment. Yeah. Why are we not then advocating for similar type precautionary measures along the same lines? Why do people in, you know, tropical climates not wear full body plastic suits so that they don't contract malaria from mosquito bites? Well, because they can't, they can't live that way. And it is a problem, right? So they do, they do live with nets laced with DDT, which could be harmful for other things if, you know, in certain quantities. I would suggest using more DDT if malaria was a big problem. I would suggest bioengineering mosquitoes, you know, to eradicate the species of mosquitoes that carries malaria. You know, the fact that malaria exists would cause me to act, not to passively say, well, malaria is here, so I'm not going to do anything about it. It's just, you have to look for the right kind of response. Once we get a vaccine, there's no point in wearing a mask if you're vaccinated, right? So that's odd. So you want to look for solutions. Now, with the flu, most of us have come to the conclusion that the risk is worth it with COVID because certainly early on death rates from COVID were multiples of death rates from the flu, multiples of five and six, which is significant. So instead of point one, it was point six. That's a big difference. We decided, some of us decided that in this case, it's worth it to wear a mask. If there was a really, really bad flu season one year, a lot of people getting it in with particular severe, I might wear a mask. I mean, I don't think, I don't think that, you know, in Asian cultures, for example, they came to the conclusion, many people, not everybody, some people in Tokyo came to the conclusion that the flu was so inconvenient that they would rather wear a mask. So my point is you have to make a decision based on the information you know at the time, based on your values, based on what you think is right to do, given the information you have. And you don't assume the worse, right? There's no COVID, there's no flu and you're going to put on a mask. That would be silly. But in flu season, let's say you've got the flu season and I don't know, your kids are getting married in a few weeks and you really, really, really don't want to get the flu.  And you know from past years that you're susceptible and you didn't get vaccinated or the vaccine this year is not right for the flu strain. Would you wear a mask? I think it would be a rational thing to do is to wear a mask to say, I don't want to risk getting the flu this year because I don't want to miss the wedding, right? Or something like that, right? I'm making stuff up. I'm trying to illustrate that you have to take all the evidence into account and make the best rational decision you can on the basis of the facts. Yeah, to the extent in your flu example, but only to the extent to which a mask can be effective, right? So it becomes a rational decision if you decide to do it based on the understanding that it would have some efficacy. You think masks don't have any efficacy? Obviously you don't use them. But I would look into it because I don't think that's true. I think masks are efficacious. They're not 100%, they're far from 100%. But I think they are efficacious at stopping viruses, at stopping the flu, at least to some extent, and stopping COVID. And masks are not going to stop HIV, obviously. But you're not aware of any double-blind studies or anything along those lines that have shown this to be the case with not just coronavirus but viruses in general? Next time I have Amesh Adulji on the show, I'll ask him. I don't know. I've seen, but I haven't dug into it because I've kind of, I did my COVID thing and I'm trying to get away from it. So I haven't been keeping up with the literature. I have seen, because I get regular emails from John Hopkins University with all the most recent studies. I have seen some reports of studies that show the masks are effective, but I'm very reluctant to use those without digging deep into them and getting to know the methodology and double-blind and whether the sample sizes were big enough. I'm skeptical of statistics and how people use them, but I wouldn't be surprised if we have some studies. Look, CDC, Amesh Adulji, a lot of doctors were very skeptical of masks before COVID. Obviously Asians were not. It looks like doctors in the U.S. and researchers in the U.S. have changed their minds, not people that have changed their mind for political reasons because they don't have anything political. Amesh certainly doesn't. And I know other doctors who don't, they've changed their mind about masks. We'd have to dig deeper into why they changed their minds and what research they're basing that and how confident they are in it. But again, I think to me it just makes common sense. It just seems like any barrier you put between me and another person is going to reduce the probability that they get infected from me and I get infected from them. So would you then revise your statement that you had made to Keir or Peacock back in August saying that masks are political? I think that people's responses to masks are political. There's no question in my mind. But how do you make that determination if you're saying that there's no objective? I can see they behave. You've got the mask Gestapo. We're leftists, not even leftists, just people who are panicking and are nuts. Want you to wear a mask outdoors while you're running, where there's a breeze and where the science is zero that a mask's matter or that you can even give COVID or get COVID in those circumstances. And you've got people on the right who as a principal, not having researched it and thoughtfully about it, are claiming that is that God given right is not to wear a mask and no scientific evidence would ever change their minds. I think it's very political. I think the beta's political is one of the problems of discussing it. It's because it's infused now with politics. So if you say I think masks reduce the probability of getting COVID, you're branded a leftist. And if you say no, I've looked at the scientific evidence and I think masks are no good, you're branded a right wing Trumpists and it's all politics. Part of the fact that we don't, that I don't trust the studies and part of the reason why I don't have studies at my fingertips is because, because I think even the media is afraid of, depending on the media, is afraid of disclosing studies and really being scientific because they don't want to be because it's all political. It's not about science. It's not about facts. It's not about reality. If it was, I think most people would have this curious attitude towards masks. Huh? I wonder if they work or they don't work. Let me think about it. Let me go read the studies or let me, let me ask my doctor. Let me do what my physician tells me to do. Right? Like I do on other health related issues, but I don't see that curiosity among people. I see people taking stands based on whether, based on politics, not based on science or based on curiosity. I would love to see people curious. People say, you know, I don't know. I wonder, but that's not what I see. Yeah. I mean, I can say certainly I'm curious and I'm not accusing you Tom of anything, right? No, I know. I know. And this isn't personal. I'm saying out there, when I look out there into the world, when I see the people who are trying to force us to wear masks on the one hand and the people who say, no, no, the masks are the biggest violation of my liberties ever. All I see is politics. I don't see curiosity in science. Yeah. I mean, I think there's a desperate need. I think I speak personally that I have it this desperate need to understand if it is effective. So I can make an informed decision and it seems like it's still up in the air. So to claim that to do it or not do it is some sort of a political thing, I guess is some, you know, I'm saying that most people are using it or doing it or not doing it based on political thing. I'm not saying any particular individual's choice is political. I'm saying as a broad observation, it has become completely politicized in the culture. Okay. All right. Thanks for the time. What we need today, what I called a new intellectual would be any man or woman who is willing to think, meaning any man or woman who knows that man's life must be guided by reason, by the intellect, not by feelings, wishes, whims or mystic revelations. Any man or woman who values his life and who does not want to give in to today's cult of despair, cynicism and impotence and does not intend to give up the world to the dark ages and to the role of the collectivist. All right. Before we go on, reminder, please like the show. We've got 163 live listeners right now. 30 likes. That should be at least 100. I figure at least 100 of you actually like the show.  But at least the people who are liking it, I want to see a thumbs up. There you go. Start liking it. I want to see that go to 100. All it takes is a click of a thing, whether you're looking at this. And you know the likes matter. It's not an issue of my ego. It's an issue of the algorithm. If you like something, the more the algorithm likes it. So, you know, and if you don't like the show, give it a thumbs down. Let's see your actual views being reflected in the likes. But if you like it, don't just sit there. Help get the show promoted. Of course, you should also share. And you can support the show at your own book show. Dot com slash support on Patreon or subscribe star or your own book shows and show your support for the work, for the value, hopefully you're receiving from this.  You'll know what shows are on, when they're on. You'll get notified. So, yes, like, share, subscribe, support. Like, share, subscribe, support. There you go. Easy. Do one or all of those, please.


This episode brought to you by noble gold check out this free coin offer for my viewers our friends at noble gold can keep you safe and Protect you whatever happens next by starting a precious metals IRA or 401k You can fight the coming wave of inflation and write out the storm with your savings intact and as a bonus and thank you You get a free five ounce solid silver America the beautiful bullion coin with each qualifying plan you start this month visit noble gold investments.com or call us at<PHONE_NUMBER> That's<PHONE_NUMBER> make sure to tell him drone tech sent you or just use the link in the description or pinned comment Threat to Americans is not jihadist overseas.  Domestic terrorism has been steadily increasing and that that threat needs to be addressed Domestic terrorist groups are really starting to surge in this country. It's a big concern We know that domestic terrorism is a is a grave threat But what can we do to stop it what we need is to take the laws? We already have and apply them to white people white people are committed to being villains in the aggregate, right? And that's the thing that white people don't trust us to do because they are so corrupt You know their thinking is so morally and spiritually bankrupt The thing I want to say to you is we got to take these motherfuckers out, but I know but like we can't say that right? We can go after international terrorists. Why can't we do it at home today? We're mostly looking at our neighbors rather than a Osama bin Laden that's far off in Afghanistan bin Laden and code didn't have supporters and sympathizers among the house Republican caucus the Republican party is basically a domestic terrorist cell at this point and they should be treated as such There are elements of the GOP that are starting to look like the jihadist Al Qaeda wasn't umbilically linked to the american conservative movement in the way that these domestic extremists Clearly are this belief that the election Was fraudulent that the covet restrictions are unnecessary all of those ideologies pushed by donald trump But but my question for you is around incitement We had a policy and it was very controversial was carried out under the bush years of going after and killing Um, an american a many american with a drone strike for the crime of inciting violence As my was talking about is exactly right If you took what president trump said and you instead put it in anwar aulaki's mouth We would be talking about a drone strike domestic terrorist vote and international terrorist don't maga and the domestic terror threat Is much more worrisome than any Foreign threat al qaeda wasn't white And white terrorists have a certain advantage a certain what's the word i'm looking for privilege And now an elected prosecutor in lounging county finds herself in the middle of a firestorm Over the arrest of a father accused of scuffling with deputies at a school board meeting in june That showed up to the meeting looking for answers after his daughter reportedly was sexually assaulted at school Right when the media is stoking flames and we've went forward on that prosecution because of the actions within that board room Which if you've ever seen the video It really has the hints of the insurrection on january 6 as far as the the mob mentality The heated rhetoric. It just was a very unsafe situation White terrorists don't cause widespread fear or panic in the same way that brown terrorists with big bids tend to It is domestic white terror that is the greatest threat to our way of life right wing domestic violent extremism Is the single greatest threat facing this country? There is a serious right wing domestic terrorism problem in this country president Trump is gone right and the extremists are not the republican party is the getaway driver for these domestic terrorists What i would call maga terrorists you're either With them or with us you have a republican party That sits mute While domestic terrorists plot the next overthrow of the u.s government So people at home are making the bombs loading the guns sharpening the knives Getting ready to aim their venom at whoever tucker carlson says is the next target It's an extremely volatile situation that we're in right now white parents are allowed to erase centuries of truth from us history That entitlement that incredible sense of white privilege Which boils down to complete impunity for them while the rest suffer Alrighty then my mind and soul have been sufficiently punished So if you enjoyed this video, please do me a favor and hit that like button I post daily if nothing else is shorter too So hit that subscribe button and then let me know what you think in the comments


In a 267-157 vote, the House has successfully codified Obergefell at V. Hodges' meaning that they voted to make marriage equality the law of the land, secure that as a civil right before the Supreme Court inevitably tries to strike it down. And also, this bill formally repeals the 1996 Defense of Marriage Act signed into law by Bill Clinton. Now, that was actually overturned by the Supreme Court in 2013 in the Windsor case, but what they're doing here is just trying to take steps to make sure that these rights that we've secured through the Supreme Court are actually protected. That's the first reason why this is really important, but the second reason why this is important is for political reasons. We don't necessarily know if this is going to pass in the Senate because of the makeup of the Senate, but still this is interesting because it's going to force Republicans to show their cards after for years they've tactically retreated on the issue of same-sex marriage until basically this year when we saw a resurgence of homophobia. But with 71% of voters now supporting marriage equality, it's no wonder why the GOP was forced to tactically retreat. So with these votes, they've got to take a stand. There's no more being silent on this issue. You have to say, do you or do you not support marriage equality when its popularity is at an all-time high? Now of the 211 Republicans in the House of Representatives, surprisingly not all of them voted against codifying Obergefell V. Hodges, but still the numbers aren't great. So less than a quarter of Republicans in the House voted to codify Obergefell V. Hodges, just 47. So look, credit to that 47 and we'll look at who in particular voted in favor of codifying Obergefell. But for the overwhelming majority of the Republican caucus to take this stand publicly, it goes to show you how out of step this party is with the American public. Now let's get to some of these names here. In no particular order, this includes Andy Biggs, Lauren Boebert, Mo Brooks, likely closeted homosexual Madison Cawthorne, Dan Crenshaw, Myra Flores, Matt Gaetz, Louis Gohmert, Paul Gosar, Marjorie Taylor-Green, Jody Heiss, who last week asked if a woman can give birth to a taco. Literally, Jim Jordan, Debbie Leshko. I believe this is the woman who recently claimed that she loved her grandchildren so much she would shoot them. So, yeah, leader Kevin McCarthy, Chip Royce, Steve Scalise and many, many more. So all of these Republicans, they're coming out and they're admitting that they are against freedom. I mean, it's 2022. So being gay, being in a same sex relationship no longer implies that that couple is definitely going to be democratic voting.  Dave Rubin, Glenn Greenwald, for example. So they are looking at their allies and they're saying, even if you go out of your way to defend us at every step of the way, we still refuse to acknowledge your basic humanity.   For example, Glenn Greenwald tweeted out yesterday. Gates was one of the House Republicans to vote against codification of Obergefell same sex marriages that no vote wasn't due to opposition to marriage equality. Sure, Glenn, but to his view, that individual states have always regulated marriage, not the federal government. And as my Twitter mutual, Jack will then points out here in response, find you something that's as important to you as defending Republicans. 24 seven is the Glenn Greenwald. Exactly.  Because if you support it, you believe that that right should be guaranteed, regardless of what state you're in. And this isn't a state's rights issue. Marriages are inextricably linked to federal and state governments. And Obergefell, the Hodges and Lovik, the Virginia, these are not cases that just determine whether or not states can or can't ban gay marriages. This was about interstate travel. And we'll get to that in an article by Ross Story.   I mean, Marjorie Taylor Greene assumed that there was a gay person who was like a fellow QAnon or agreed with everything, thought the insurrection was good, was anti-vax, but just happened to be in the same sex marriage. Marjorie Greene, still, even if that person is a political ally, would vote to overturn their marriage.  It's just it's astonishing that in 2022, Republicans are still this shameless. But I've got to give credit, I guess, to the 47 Republicans who did the right thing. In no particular order, these Republicans voted to codify marriage equality. This includes Kat Kamek, Liz Cheney, Tom Emmer, Daryl Iza, Adam Kinzinger, Scott Perry, Elise Stefanik, Jefferson Van Drew, among others. And I know what you're going to say, Mike, we shouldn't have to give these folks credit for doing the bare minimum and just being decent human beings and allowing people the freedom to live. But you've got to understand the bar here in America is very, very, very low. So if a Republican does something that is reasonable, I feel inclined to give them credit. Now, we've talked about the House, but we've got to talk about the Senate because that will ultimately determine the fate of this bill and it doesn't really look good. You're already seeing some pretty hard no votes.   Another one is so-called populist Josh Hawley. Now, again, we looked at the numbers. Seventy one percent of Americans support marriage equality, but this populist Josh Hawley is saying, no, don't support it. So as Sarah Ferris of Raw Story explains, Senator Josh Hawley said that he didn't support the marriage equality decision in 2015, when the Supreme Court legalized a same sex marriage nationwide in the Obergefell V. Hodges decision. According to Hawley, the decision shouldn't have been up to the Supreme Court because marriage is a state's rights issue. What the court addressed at the time is the interstate conflict. The problem with Obergefell is that I don't think there is any constitutional basis for the Supreme Court to say this is what the definition of marriage is according to the Constitution. I don't think the Constitution has marriage in it. Hawley told Raw Story and I think the states traditionally that has been because the definition of marriage that has been a big controversy in this country all around the country and the states have defined it in one way or another. And I think that that's the right difference. Senator Marco Rubio agreed with Hawley saying that states decide marriages. You can get married in Las Vegas by an Elvis impersonator in two hours. Neither Rubio nor Hawley clarified whether they supported the interracial marriage ruling the Supreme Court decided in 1967. In that case, too, the couple was married in an area of the country where interracial marriage was legal. When they moved to Virginia, where it was illegal, they were charged with violating the state's anti-miscegenation statute, found guilty and sentenced to a year in prison unless they agreed to exile. And both Loving and Obergefell, the Supreme Court justices, ruled that the Equal Protection Clause of the 14th Amendment requires all states to recognize the marriages granted in other states. So because they know that their position against same sex marriage is unpopular, well, they have to try to cloak their bigotry in some sort of a legal defense. But their legal defense doesn't necessarily make sense, unless you also agree that interracial marriages should be left up to the states as well. But they're not willing to go that far. They don't want to say, well, you know, I'm consistent and I support states' rights on the issue of marriage entirely. So, yes, that includes interracial marriages. But they don't want to say that. They don't want to say that states should have the power to ban interracial marriages. So they're stuck in this awkward position where they're doing this weird tap dance where they don't want to come off as bigots. But they are. But they also, you know, they want to make a legal justification. But they know that it's pretty murky because if you're against gay marriage for legal reasons, you are going to have to be against interracial marriages if you're consistent. So it's just weird and awkward. And I love watching them squirm. Now, as to whether or not other Republicans in the Senate will support this, you know, there's at least one firm, yes. But there's also a lot of awkward tap dances from people who don't really want to say from Republicans, to be clear, who don't want to say their position. And they're hoping that this doesn't come up for a vote. So raw story continues, retiring Senator Rob Portman is a co-sponsor of the Senate version of the bill to eliminate the Defense of Marriage Act and codify marriage equality in the national statutes. He is one of at least four Republicans willing to support the marriage equality bill. Another is Senator Lisa Murkowski, who told reporters, I have long been a supporter of equality in marriage. But Senator Mitt Romney said that it was a pointless bill because the law isn't changing and there's no indication that it will delusional. When Ross Story asked him about Justice Clarence Thomas opening that door, Romney said, well, he's opened a lot of doors that no other judges have walked through. Senator Chuck Grassley told reporters asking him about the law, that same-sex marriage is, quote, the law of the land. So was Roe, but Roe no longer is, Ross Story said back to him. Grassley refused to respond. We don't know if the bill is coming to the Senate, said Senator John Thune in a conversation with ABC News' TJ Holmes.  They are desperately hoping that this doesn't come up because they know this is another issue that they're going against the American people. They recognize that Roe v. Wade was something that the American people, the overwhelming majority of the American people supported. They're seeing the stories of how women are being forced to carry dead fetuses for two weeks because they're being denied abortions. And so they know that if there's another victory for their side that's unpopular, it could end up undermining them and it could hurt them as the Roe decision now is demonstrably hurting them, at least politically, at this point in time with regard to polls, but they know that this is unpopular. They know that they're on the wrong side of history and against the American people.  That's already the law of the land. Oh, what's that? You think it's going to be overturned? Well, it probably won't. So don't worry about it. They don't want to show their cards. And this is why this is brilliant. Democrats should bring up a bunch of other popular policies and force them to show their cards, interracial marriage, force them to vote on that. Other things, you know, when it comes to contraception, sodomy forced them to make their positions known because they're very uncomfortable because as dumb as Republicans may seem, they're at least savvy enough to acknowledge when they are or aren't against public opinion. And in these issues, most Americans just don't agree with them. So forcing them to show their cards is really important politics. But on top of that, the substance itself is more important because these rights are under threat and in order to protect them, you have to be proactive and take action to codify them. So all around, I don't know how the Senate vote is going to go. If I had to guess, it's going to fail. But just showing these Republicans or watching them show their cards in and of itself has been a victory to me because this is really great to see. I love to see them squirm. Love it. Better have her way.


of Allah, the beneficent, the merciful. As-salamu alaikum warahmatullahi wabarakatuhu madhiaviwiz. And during difficult circumstances, persevering in the face of complication and unpleasant issues, without exhibiting the destructive trait of anger, especially when under strain are all common characteristics of patients. A virtue that seems so simple to follow and act upon and is mentioned and praised upon in every religion is not only essential and vital to our everyday lives, but also not as easy to take on as it sounds. Patients can take on in numerous forms, with the most prevalent and common one being, being patient through trials and hardships without losing hope and faith in Allah. As Allah states in the Holy Qur'an, Chapter 8, Verse 46, Indeed, Allah is with those who patiently endure. Here, through the Holy Qur'an, Allah is not only giving a guaranteed promise that He will assist those who are patient in difficult situations, but also provides a beautiful lesson that being patient is a virtue that is never left without an award. When the verse states that Allah is with those who patiently endure, it is trying to explain that Allah is truly on the lookout for those persevering through difficulty at that one point the patient will be rewarded and with ease and solutions for the hardships. This is also mentioned by the Prince of the Imams and the Commander of the Faithful, Imam Ali, as he stated in one of his inspiring and magnificent Hadiths. Be sure that there is something waiting for you after much patience to astonish you to a degree that you will forget the bitterness of the pain. Here, the Imam is trying to expand on what Allah has already promised in his Holy Book. As he stated, that those who persevere through hardship while still having faith in Allah will be rewarded with such ease that they will forget the pain they endured during their time of their hardships. Here, Imam Ali is also trying to expand on the idea of Allah's mercy and the greatness of his love towards us. As he stated, that the reward from Allah to those who are patient is so great that they will be so astonished they will forget the discomfort and pain they felt during their hardships. Now one might wonder, is being patient only going to benefit me because I had faith in Allah and I was simply patient or does patience actually benefit me as a person? As a virtue, patience helps an individual growth both mentally and spiritually. Mentally, patient assists in countless of things, including decision-making, happiness and thinking process. As for spiritual growth, patients assist in the development of a human as persevering an active individual who focuses on the growth of their abilities that they are used for the correct purposes. This is an obvious result of patience, for Allah does not advise his creations to take on a specific virtue without having positive and life-changing results. Now patience is not only rewarded during one's lifetime, but also after life in paradise. Many of the most powerful role models that exist in Islam that possess all moral excellence and properly portray the virtue of patience to perfection were in fact awarded after their death. Role models like the Ahlul Bayt who took on the toughest challenges and were faced with such harsh conditions that they out of all Allah's creations could handle. During their lifetime, they were not rewarded with wealth or anything of materialistic value. Instead, they lived this world and moved on to paradise where their actual rewards remain. By being patient, the Ahlul Bayt left beyond a powerful legacy filled with inspirational messages and lessons for the world in its eternity to benefit from and are remembered and commemorated by generations after generations. One of the greatest examples of Ahlul Bayt's patience is the powerful story of Imam Hussain's patience. A fun word to list an amount of examples from the life of Imam Hussain's that one would witness the virtue of patience, there simply wouldn't be enough time no words to describe the patience of this great Imam. However, we will try to include a few of their many inspirational examples that portray patience from the life of Imam Hussain. The most common example that the world is familiar with in terms of Imam Hussain's patience would be the day of Ashura, where he was killed along with his companions and several members of his holy household. However, many don't realize that there are several of different occasions other than the day of Ashura that reveals the greatness of Imam Hussain's patience. Ever since he was a child, Imam Hussain, along with his family went through many tough obstacles and challenges. The first one being the murder of his mother, Sayyida Fatima al-Zahra who also happened to be the greatest woman that ever existed out of all the worlds that exist.  They later witnessed the way the people at that time oppressed their father Imam Ali as they took what was rightfully theirs. This requires a lot of patience and even though Imam Hussain was very young, he still became an inspirational to millions across generations by revealing that having high hopes in Allah and being patient through tough obstacles that does not have anything to do with age nor circumstances. These are two very broad and general examples from the early life of Imam Hussain al-Salam and the way he was patient and hopeful regardless of the severity of the situations he was in. In addition to his early life, we also witnessed Imam Hussain al-Salam patience on the day of Ashura which was the most heartbreaking day for the world to witness. This patient was so great and beyond what a human could possibly handle, they remained and will continue to remain and will inspire and continue to inspire for the rest of eternity.  Imam Hussain al-Salam's patience is worthy of being called the greatest example of patience as he endured this without losing any of his hope nor faith in Allah. This is what one should truly follow and look upon when going through a tough situation or obstacle for one should always remember that far greater people have been through much harder situations without losing a touch of their faith in Allah. In conclusion, through examples from the holy Quran, the Hadith of the Imams as well as examples from the life of members of the Ahl al-Bayt al-Salam one learns that patience is truly a virtue that not only benefits an individual during their life in this world but also in the afterlife as well. Patient helps an individual grow both spiritually and physically hence having an overall impact in one's life. Through examples from the life of Imam Hussain al-Salam, one learns that no matter how difficult the situation might be one must be patient and never lose hope in Allah's praises upon him.