1 00:00:01,580 --> 00:00:03,920 The following content is provided under a Creative 2 00:00:03,920 --> 00:00:05,340 Commons license. 3 00:00:05,340 --> 00:00:07,550 Your support will help MIT OpenCourseWare 4 00:00:07,550 --> 00:00:11,640 continue to offer high-quality educational resources for free. 5 00:00:11,640 --> 00:00:14,180 To make a donation or to view additional materials 6 00:00:14,180 --> 00:00:18,110 from hundreds of MIT courses visit MIT OpenCourseWare 7 00:00:18,110 --> 00:00:19,340 at ocw.MIT.edu. 8 00:00:21,455 --> 00:00:23,330 PROFESSOR: Self-driving cars are pretty cool. 9 00:00:23,330 --> 00:00:25,655 It's pretty hot nowadays, so we're going 10 00:00:25,655 --> 00:00:27,200 to use this as an example. 11 00:00:27,200 --> 00:00:31,850 And in the past we have seen how we can give an autonomous 12 00:00:31,850 --> 00:00:35,415 vehicle a goal-- some condition we want it to reach. 13 00:00:35,415 --> 00:00:36,956 For example, we might have a car that 14 00:00:36,956 --> 00:00:38,914 wants to pick up some passengers along the way, 15 00:00:38,914 --> 00:00:44,300 get to some destination, and maybe navigate some worlds. 16 00:00:44,300 --> 00:00:46,800 But let's consider that for something 17 00:00:46,800 --> 00:00:50,870 like a self-driving car, we also have a number of other goals 18 00:00:50,870 --> 00:00:54,590 or requirements that are sort of implicit along the way, in that 19 00:00:54,590 --> 00:00:57,690 we want our self-driving car to obey the rules of the road 20 00:00:57,690 --> 00:00:58,800 as it's driving. 21 00:00:58,800 --> 00:01:01,695 And these aren't just goal conditions 22 00:01:01,695 --> 00:01:04,565 which is a sort of single goal that you're trying to reach, 23 00:01:04,565 --> 00:01:06,190 but these are sort of goals that you're 24 00:01:06,190 --> 00:01:11,090 trying to maintain throughout the path that you're traveling. 25 00:01:11,090 --> 00:01:17,000 So one example of this is a traffic light. 26 00:01:17,000 --> 00:01:19,860 So maybe you guys can help me out with this. 27 00:01:19,860 --> 00:01:21,920 Just in plain English, how would you 28 00:01:21,920 --> 00:01:24,976 describe the rules of how you would 29 00:01:24,976 --> 00:01:30,110 want a car to behave when it comes across a traffic light? 30 00:01:30,110 --> 00:01:30,610 Anything? 31 00:01:30,610 --> 00:01:31,666 It's very simple. 32 00:01:31,666 --> 00:01:32,165 Yes? 33 00:01:32,165 --> 00:01:35,490 AUDIENCE: Slow down when you see yellow, stop when you see red, 34 00:01:35,490 --> 00:01:37,434 go if you see green. 35 00:01:37,434 --> 00:01:38,100 PROFESSOR: Yeah. 36 00:01:38,100 --> 00:01:43,600 So pretty much stop if you see red, go if you see green, 37 00:01:43,600 --> 00:01:46,950 and specifically, if you see red and you stop, 38 00:01:46,950 --> 00:01:48,606 you're going to want to stop until you 39 00:01:48,606 --> 00:01:51,410 see the green, at which point that sort of condition 40 00:01:51,410 --> 00:01:54,883 that you're stopping goes away, and you're able to move on. 41 00:02:01,140 --> 00:02:04,021 And in addition to things like obeying traffic lights, 42 00:02:04,021 --> 00:02:06,020 there might also be some other rules of the road 43 00:02:06,020 --> 00:02:07,970 that we want to follow. 44 00:02:07,970 --> 00:02:09,970 For example, we might want to always stay 45 00:02:09,970 --> 00:02:12,841 within the speed limit. 46 00:02:12,841 --> 00:02:15,340 And then there might also be some other practical conditions 47 00:02:15,340 --> 00:02:19,000 of driving down the road, which is that at some point 48 00:02:19,000 --> 00:02:20,275 we're going to need to refuel. 49 00:02:20,275 --> 00:02:21,766 And if we consider a car that might 50 00:02:21,766 --> 00:02:26,650 be driving for a really long time, one logical statement 51 00:02:26,650 --> 00:02:29,890 we could say about the path that this car takes, 52 00:02:29,890 --> 00:02:32,350 and the sequence of states that it goes through 53 00:02:32,350 --> 00:02:35,020 is that at every point in time we 54 00:02:35,020 --> 00:02:38,470 want the plan to have some future state when we are 55 00:02:38,470 --> 00:02:40,490 going to visit a gas station. 56 00:02:40,490 --> 00:02:42,990 So this isn't just a single goal that we're trying to reach, 57 00:02:42,990 --> 00:02:46,760 but over a very long time, even if we consider 58 00:02:46,760 --> 00:02:49,270 the car to be driving an infinite amount of time, 59 00:02:49,270 --> 00:02:51,340 at every point in the time, we're 60 00:02:51,340 --> 00:02:53,340 going to be thinking ahead that there's 61 00:02:53,340 --> 00:02:57,176 going to be some time when we reach a gas station and refuel. 62 00:03:01,300 --> 00:03:04,600 So these types of conditions, things 63 00:03:04,600 --> 00:03:07,750 like staying at a red light until it turns green, 64 00:03:07,750 --> 00:03:09,980 always staying within a certain speed limit, 65 00:03:09,980 --> 00:03:12,520 or always having some path in the future-- 66 00:03:12,520 --> 00:03:14,990 some state in the future when we reach a gas station, 67 00:03:14,990 --> 00:03:17,250 are things that we can express with a type of logic 68 00:03:17,250 --> 00:03:19,010 called temporal logic. 69 00:03:19,010 --> 00:03:20,560 And there are two things that we hope 70 00:03:20,560 --> 00:03:21,860 you're going to be able to do by the time you 71 00:03:21,860 --> 00:03:22,985 leave this lecture. 72 00:03:22,985 --> 00:03:27,820 The first is be able to model these temporally extended goals 73 00:03:27,820 --> 00:03:30,100 using a specific type of temporal logic called 74 00:03:30,100 --> 00:03:34,110 Linear Temporal Logic, or LTL. 75 00:03:34,110 --> 00:03:36,020 And secondly, we're going to hope 76 00:03:36,020 --> 00:03:39,100 that you'll be able to actually apply this to planning, create 77 00:03:39,100 --> 00:03:41,440 plans with these temporally extended goals, 78 00:03:41,440 --> 00:03:45,130 and in addition just sort of this regular planning 79 00:03:45,130 --> 00:03:47,190 we've been dealing with, actually incorporating 80 00:03:47,190 --> 00:03:50,320 this idea of preferences into your plans. 81 00:03:50,320 --> 00:03:55,630 So a preference basically is not a required condition, 82 00:03:55,630 --> 00:04:00,250 but a desired condition that you can use to select 83 00:04:00,250 --> 00:04:02,647 between alternative paths. 84 00:04:02,647 --> 00:04:05,230 So you know, you might have many different ways that you could 85 00:04:05,230 --> 00:04:07,390 reach your goal, but we can use some 86 00:04:07,390 --> 00:04:09,100 of these temporally extended goals, 87 00:04:09,100 --> 00:04:13,080 like maybe you prefer to break as few of the rules of the road 88 00:04:13,080 --> 00:04:18,459 as you can, and you can use those a preferences to choose 89 00:04:18,459 --> 00:04:21,315 between plans. 90 00:04:21,315 --> 00:04:22,937 So just as an outline, first we're 91 00:04:22,937 --> 00:04:24,520 just going to do a little introduction 92 00:04:24,520 --> 00:04:26,620 to linear temporal logic. 93 00:04:26,620 --> 00:04:28,200 We're going to talk about what this 94 00:04:28,200 --> 00:04:30,815 is-- what LTL is, why we want to use it, 95 00:04:30,815 --> 00:04:33,430 and we're going to go through the syntax and the semantics 96 00:04:33,430 --> 00:04:36,190 of different LTL operators. 97 00:04:36,190 --> 00:04:38,460 Then we're going to walk you through some example LTL 98 00:04:38,460 --> 00:04:41,490 problems, and actually talk about complications to plans-- 99 00:04:41,490 --> 00:04:45,025 how you create plans with these linear temporal logic 100 00:04:45,025 --> 00:04:47,044 and temporal goals. 101 00:04:47,044 --> 00:04:48,960 Finally we're going to incorporate preferences 102 00:04:48,960 --> 00:04:51,235 into this, talk about how you express preferences, 103 00:04:51,235 --> 00:04:53,110 and specifically talk about a language called 104 00:04:53,110 --> 00:04:57,220 LPP that allows you to plan with temporal logic and preferences. 105 00:05:00,650 --> 00:05:05,420 So now for the introduction to linear temporal logic. 106 00:05:05,420 --> 00:05:07,720 Temporal logic at its core is a formalism 107 00:05:07,720 --> 00:05:10,780 for specifying properties of a system that vary with time. 108 00:05:10,780 --> 00:05:13,640 So these aren't just conditions that 109 00:05:13,640 --> 00:05:15,410 are true at single state, which is 110 00:05:15,410 --> 00:05:17,950 what we've mostly been dealing with prepositional logic. 111 00:05:17,950 --> 00:05:24,320 Right, so we've been saying things like, condition A and B, 112 00:05:24,320 --> 00:05:26,410 but not C, are true at a given state, 113 00:05:26,410 --> 00:05:28,294 and that's prepositional logic. 114 00:05:28,294 --> 00:05:29,960 Temporal logic is sort of a layer on top 115 00:05:29,960 --> 00:05:31,960 of that, when we're dealing not just with what's 116 00:05:31,960 --> 00:05:34,690 true at a single state, but actually extending over time 117 00:05:34,690 --> 00:05:37,050 as the system moves through a sequence of states, 118 00:05:37,050 --> 00:05:39,525 and expressing properties on a temporal level. 119 00:05:42,990 --> 00:05:46,200 So you might have a system that can be represented as a state 120 00:05:46,200 --> 00:05:50,360 machine, and a [INAUDIBLE],, and it 121 00:05:50,360 --> 00:05:54,935 can go through a sequence of different states. 122 00:05:54,935 --> 00:05:57,310 And while you might be able to represent the whole system 123 00:05:57,310 --> 00:05:59,950 like this, if we actually execute the system 124 00:05:59,950 --> 00:06:03,045 we're going to get one path through the system. 125 00:06:03,045 --> 00:06:06,220 And that's often called a trace of the system, 126 00:06:06,220 --> 00:06:09,040 and you can also think of it as a timeline of the system. 127 00:06:09,040 --> 00:06:11,410 So one example timeline of this system 128 00:06:11,410 --> 00:06:13,480 is it might start in state A, and then 129 00:06:13,480 --> 00:06:17,340 go to state C, and then go to D, and keep looping around in D 130 00:06:17,340 --> 00:06:18,026 forever. 131 00:06:18,026 --> 00:06:20,539 So that's one trace, or one timeline of the system, 132 00:06:20,539 --> 00:06:22,330 and that's really just a sequence of states 133 00:06:22,330 --> 00:06:23,205 that it goes through. 134 00:06:25,932 --> 00:06:28,720 And in the past we've seen these in some of the problem sets. 135 00:06:28,720 --> 00:06:34,190 For example when we were modeling the warp reactor, 136 00:06:34,190 --> 00:06:36,180 we had the valves that could transition 137 00:06:36,180 --> 00:06:38,452 between open and closed states. 138 00:06:38,452 --> 00:06:41,380 It could also be the whole system-- 139 00:06:41,380 --> 00:06:44,380 the starship going through different planets, 140 00:06:44,380 --> 00:06:47,772 transitioning through a larger set of locations, 141 00:06:47,772 --> 00:06:49,480 picking up passengers, dropping them off. 142 00:06:49,480 --> 00:06:50,813 So these could be quite complex. 143 00:06:54,569 --> 00:06:59,310 And so as I said, previously in our problems 144 00:06:59,310 --> 00:07:01,845 that we've been modeling, we've been going through a system, 145 00:07:01,845 --> 00:07:04,940 and we've been searching for a single state that satisfies 146 00:07:04,940 --> 00:07:07,640 all of our goal conditions. 147 00:07:07,640 --> 00:07:10,130 Maybe we to reach [? Lavinia ?] and save 148 00:07:10,130 --> 00:07:12,280 a certain number of people. 149 00:07:12,280 --> 00:07:15,640 But with temporal logic, we can actually 150 00:07:15,640 --> 00:07:20,200 express goals that are satisfied over a number of states, 151 00:07:20,200 --> 00:07:24,959 and this allows us to do some more expressive goals 152 00:07:24,959 --> 00:07:26,500 than we could capture just by looking 153 00:07:26,500 --> 00:07:28,050 at a single state at the end. 154 00:07:32,460 --> 00:07:36,150 So for example, what if a problem 155 00:07:36,150 --> 00:07:38,630 requires some condition to be met 156 00:07:38,630 --> 00:07:40,465 until another condition is met? 157 00:07:40,465 --> 00:07:42,920 And for example, you know, when you see a red light, 158 00:07:42,920 --> 00:07:47,990 that implies that we should stop until we see a green light. 159 00:07:47,990 --> 00:07:51,350 And if we look at a timeline, or a trace of one 160 00:07:51,350 --> 00:07:54,160 of these systems, that might look something like this. 161 00:07:54,160 --> 00:07:56,610 So we're going along through our system, 162 00:07:56,610 --> 00:07:59,116 and at one of the states, we see the red light. 163 00:07:59,116 --> 00:08:02,960 So that adds this condition that we should stop. 164 00:08:02,960 --> 00:08:04,720 And then that condition will hold forever 165 00:08:04,720 --> 00:08:06,620 until we see a green light, at which point 166 00:08:06,620 --> 00:08:10,820 that condition is dropped, and we can keep moving on. 167 00:08:10,820 --> 00:08:13,400 Another example where we might want to use temporal logic 168 00:08:13,400 --> 00:08:16,130 is, what if our problem requires a condition 169 00:08:16,130 --> 00:08:18,094 to always eventually be met. 170 00:08:18,094 --> 00:08:20,510 And this is what I was talking about with the gas station. 171 00:08:20,510 --> 00:08:23,750 So we want to be going on forever, 172 00:08:23,750 --> 00:08:26,030 and there should always be some point in the future 173 00:08:26,030 --> 00:08:30,110 when we do have a state where we're at a gas station. 174 00:08:30,110 --> 00:08:34,309 So we might start our system at a certain state. 175 00:08:34,309 --> 00:08:37,060 And our plan says that at some point 176 00:08:37,060 --> 00:08:38,809 we do reach a gas station, so that's good. 177 00:08:38,809 --> 00:08:40,482 But then when we get to the next state, 178 00:08:40,482 --> 00:08:42,440 we also want it to be true that from that point 179 00:08:42,440 --> 00:08:46,370 on, we're going to reach another gas station, and after that, 180 00:08:46,370 --> 00:08:50,070 going on and on and on into the future. 181 00:08:50,070 --> 00:08:54,050 These are things that you can't express very easily 182 00:08:54,050 --> 00:08:56,550 with the types of logic that we've been dealing with before. 183 00:08:59,640 --> 00:09:02,230 So one important distinction that we should clear up 184 00:09:02,230 --> 00:09:05,920 before we really dive into the syntax of how 185 00:09:05,920 --> 00:09:08,420 these linear temporal logics work 186 00:09:08,420 --> 00:09:10,950 is the difference between branching time and linear time. 187 00:09:10,950 --> 00:09:13,480 They're really two different models of time 188 00:09:13,480 --> 00:09:14,725 that we can be working with. 189 00:09:14,725 --> 00:09:16,600 There's two different types of temporal logic 190 00:09:16,600 --> 00:09:20,080 that exist to express these different types of time. 191 00:09:20,080 --> 00:09:24,790 So linear time is more similar to the world 192 00:09:24,790 --> 00:09:27,920 that we live in, unless you're living in some sci-fi movie 193 00:09:27,920 --> 00:09:30,820 where time is branching into different realities, 194 00:09:30,820 --> 00:09:32,860 and all sorts of crazy stuff is going on. 195 00:09:32,860 --> 00:09:35,930 You can think of time as just this linear timeline. 196 00:09:35,930 --> 00:09:37,762 So right now, it's one future state 197 00:09:37,762 --> 00:09:39,740 that's going to happen for me. 198 00:09:39,740 --> 00:09:43,170 And you know, regardless of how many options I have, 199 00:09:43,170 --> 00:09:47,180 there's one realization of the time. 200 00:09:47,180 --> 00:09:50,890 And what this lets us do is that it gives us 201 00:09:50,890 --> 00:09:56,600 a single path for our system, and we can reason very exactly 202 00:09:56,600 --> 00:10:01,940 about the conditions that are met within that path. 203 00:10:01,940 --> 00:10:11,680 And this lets us describe what will always happen in a system. 204 00:10:11,680 --> 00:10:14,840 For example, we can guarantee that we always 205 00:10:14,840 --> 00:10:17,180 stop at a red light until we see a green light, 206 00:10:17,180 --> 00:10:23,080 or we always stay within the speed limit. 207 00:10:23,080 --> 00:10:26,820 This is contrasted with a different model of time, 208 00:10:26,820 --> 00:10:28,360 called branching time. 209 00:10:28,360 --> 00:10:32,190 And in this model of time, at each time instant, 210 00:10:32,190 --> 00:10:34,560 we consider all possible futures. 211 00:10:34,560 --> 00:10:38,020 So if we have multiple actions that we could perform 212 00:10:38,020 --> 00:10:40,570 at a given state, we're going to consider different timelines 213 00:10:40,570 --> 00:10:44,730 that branch off for each of those possible behaviors. 214 00:10:44,730 --> 00:10:48,750 And this results in alternate courses of time 215 00:10:48,750 --> 00:10:50,730 that we can reason about as a set. 216 00:10:50,730 --> 00:10:55,250 And instead of thinking about this as always conditions-- so, 217 00:10:55,250 --> 00:10:56,904 our path always does this-- we can 218 00:10:56,904 --> 00:10:58,585 think about this more in possibilities. 219 00:10:58,585 --> 00:11:01,650 And if we're using branching time, we can say, you know, 220 00:11:01,650 --> 00:11:04,290 at this state and time, there exists a future path 221 00:11:04,290 --> 00:11:07,860 in which we will always stay under the speed limit, 222 00:11:07,860 --> 00:11:11,680 or, at this point in time, all our future paths satisfy 223 00:11:11,680 --> 00:11:13,110 a certain condition. 224 00:11:13,110 --> 00:11:15,810 So whereas linear temporal logic is 225 00:11:15,810 --> 00:11:20,930 more about guaranteeing what will happen on a given path, 226 00:11:20,930 --> 00:11:22,980 branching time allows us to reason 227 00:11:22,980 --> 00:11:27,070 about what might possibly happen in the system. 228 00:11:27,070 --> 00:11:29,440 So for our purposes with planning, 229 00:11:29,440 --> 00:11:31,510 in part because it's more attractable, 230 00:11:31,510 --> 00:11:35,000 and in part because it gives us an exact analysis of a given 231 00:11:35,000 --> 00:11:37,384 path, we're going to be doing linear time, 232 00:11:37,384 --> 00:11:38,800 and for that reason, we use what's 233 00:11:38,800 --> 00:11:40,610 called linear temporal logic. 234 00:11:40,610 --> 00:11:42,985 There's a different type of temporal logic. 235 00:11:42,985 --> 00:11:47,255 There's one called CTL and CTL* that deal with branching time. 236 00:11:47,255 --> 00:11:49,240 And those are sort of an extension 237 00:11:49,240 --> 00:11:50,290 of linear temporal logic. 238 00:11:50,290 --> 00:11:52,750 They add a few other operators that 239 00:11:52,750 --> 00:11:55,411 allow you to reason over multiple paths. 240 00:11:55,411 --> 00:11:56,994 But for our purposes, we're just going 241 00:11:56,994 --> 00:12:00,818 to be using the linear time model. 242 00:12:00,818 --> 00:12:04,760 So kind of as a recap, what linear temporal logic 243 00:12:04,760 --> 00:12:05,910 involves-- 244 00:12:05,910 --> 00:12:08,490 we're using this linear time model. 245 00:12:08,490 --> 00:12:10,830 Another important distinction is that we're actually 246 00:12:10,830 --> 00:12:13,900 going to be talking about infinite sequences of states. 247 00:12:13,900 --> 00:12:18,090 So instead of us just reasoning up until a certain goal 248 00:12:18,090 --> 00:12:20,520 condition is met, we're thinking about systems 249 00:12:20,520 --> 00:12:24,000 that could theoretically keep transitioning over time, 250 00:12:24,000 --> 00:12:26,560 over and over and over into the future. 251 00:12:26,560 --> 00:12:28,490 So if you have one of these state machines, 252 00:12:28,490 --> 00:12:30,070 you could think, at each time step, 253 00:12:30,070 --> 00:12:31,860 it's going to visit the new state. 254 00:12:31,860 --> 00:12:33,360 And if you give it enough time, it's 255 00:12:33,360 --> 00:12:35,970 just going to generate an infinite sequence of states. 256 00:12:35,970 --> 00:12:37,800 And we can actually express properties 257 00:12:37,800 --> 00:12:40,290 that can hold over an infinite number of states, 258 00:12:40,290 --> 00:12:42,710 not just the discrete number of states 259 00:12:42,710 --> 00:12:46,300 that we might usually think of to reach a goal. 260 00:12:46,300 --> 00:12:48,390 And linear temporal logic can actually 261 00:12:48,390 --> 00:12:52,470 be modified to work with discrete set of states. 262 00:12:52,470 --> 00:12:56,490 It just requires an additional operator. 263 00:12:56,490 --> 00:12:59,330 But the ability to reason about infinite sequences of states 264 00:12:59,330 --> 00:13:03,615 gives us a lot of power in talking about guarantees 265 00:13:03,615 --> 00:13:05,680 for our system, regardless of how much time we're 266 00:13:05,680 --> 00:13:06,600 talking about it. 267 00:13:09,360 --> 00:13:11,730 Finally, all the operators we're going 268 00:13:11,730 --> 00:13:15,680 to be looking at in our logic system 269 00:13:15,680 --> 00:13:18,010 are what we call forward-looking conditions. 270 00:13:18,010 --> 00:13:21,169 So when we're given a state we're 271 00:13:21,169 --> 00:13:22,710 going to reasoning about what's going 272 00:13:22,710 --> 00:13:26,205 to happen in the future for a potentially infinite amount 273 00:13:26,205 --> 00:13:27,660 of time in the future. 274 00:13:27,660 --> 00:13:31,110 There's sort of a symmetric version of this logic that 275 00:13:31,110 --> 00:13:33,550 reasons about the past. 276 00:13:33,550 --> 00:13:36,570 So for example, we can say-- 277 00:13:36,570 --> 00:13:38,880 talk about guarantees that something will eventually 278 00:13:38,880 --> 00:13:40,472 happen in the future-- 279 00:13:40,472 --> 00:13:42,180 there's sort of a symmetric version where 280 00:13:42,180 --> 00:13:44,500 we can talk about, given a certain state, 281 00:13:44,500 --> 00:13:46,950 we can guarantee that something had eventually 282 00:13:46,950 --> 00:13:48,810 happened in the past. 283 00:13:48,810 --> 00:13:51,832 But for us in that we're going to focus on planning-- 284 00:13:51,832 --> 00:13:54,165 we're typically planning about what to do in the future, 285 00:13:54,165 --> 00:13:57,190 and it makes more sense for us to use this future of updating 286 00:13:57,190 --> 00:14:01,267 the set for operators. 287 00:14:01,267 --> 00:14:03,897 And so I guess one little nuance here 288 00:14:03,897 --> 00:14:05,897 that I sort of pointed out in the previous slide 289 00:14:05,897 --> 00:14:08,980 is that because we're using a linear model of time 290 00:14:08,980 --> 00:14:10,475 and not a branching model of time, 291 00:14:10,475 --> 00:14:12,940 we're going to be expressing properties that happen over 292 00:14:12,940 --> 00:14:16,430 a single path of states, and not properties that happen over 293 00:14:16,430 --> 00:14:17,584 several path of states. 294 00:14:22,260 --> 00:14:24,645 So finally I'm just going to talk about a couple 295 00:14:24,645 --> 00:14:28,580 of the main application for linear temporal logic 296 00:14:28,580 --> 00:14:31,530 before Ellie will dive in, and actually 297 00:14:31,530 --> 00:14:34,460 talk more about the semantics and syntax of how 298 00:14:34,460 --> 00:14:37,080 we use this logic. 299 00:14:37,080 --> 00:14:40,670 So the first menus is verification and model 300 00:14:40,670 --> 00:14:42,390 checking. 301 00:14:42,390 --> 00:14:45,990 We can use this linear temporal logic 302 00:14:45,990 --> 00:14:50,765 to create guarantees about a system, 303 00:14:50,765 --> 00:14:56,020 and formally verify it for a couple different properties. 304 00:14:56,020 --> 00:14:58,390 For example, we can talk about the safety of the system. 305 00:14:58,390 --> 00:15:01,160 We can say, over the course of this system, 306 00:15:01,160 --> 00:15:03,690 we guarantee that it will never enter 307 00:15:03,690 --> 00:15:05,664 a state of a certain condition. 308 00:15:05,664 --> 00:15:08,610 We could also talk about the maintenance of properties. 309 00:15:08,610 --> 00:15:11,830 So over the entire lifetime of this system, 310 00:15:11,830 --> 00:15:14,598 we guarantee that a certain condition will always hold. 311 00:15:18,190 --> 00:15:20,565 The other main application for temporal logic, 312 00:15:20,565 --> 00:15:24,260 the one that we're going to be focusing on, is for planning. 313 00:15:24,260 --> 00:15:26,460 And this planning using these temporally 314 00:15:26,460 --> 00:15:28,680 extended goals that I've been talking about, 315 00:15:28,680 --> 00:15:30,860 and it actually extends nicely to talking 316 00:15:30,860 --> 00:15:33,280 about temporally extended preferences. 317 00:15:33,280 --> 00:15:37,130 So this is given that we have a number of different paths 318 00:15:37,130 --> 00:15:39,570 that could reach a goal, we can actually look at all those 319 00:15:39,570 --> 00:15:43,860 and see which paths satisfy certain conditions 320 00:15:43,860 --> 00:15:48,030 over the sequence of states, and use those conditions 321 00:15:48,030 --> 00:15:51,400 as a way of choosing which ones we prefer. 322 00:15:51,400 --> 00:15:55,020 So with that, Ellie is now going to talk about some 323 00:15:55,020 --> 00:15:58,995 of the syntax of linear temporal logic. 324 00:16:02,771 --> 00:16:03,396 ELLIE: Hi guys. 325 00:16:03,396 --> 00:16:06,174 My name is Ellie, and I'm going to be talking 326 00:16:06,174 --> 00:16:10,220 about the syntax of LTL. 327 00:16:10,220 --> 00:16:14,250 So an LTL formula is a series of states. 328 00:16:14,250 --> 00:16:16,870 And at each state, you can have various propositions 329 00:16:16,870 --> 00:16:19,400 than can be either true or false. 330 00:16:19,400 --> 00:16:23,394 So for example-- is it OK if I erase this, Steve? 331 00:16:23,394 --> 00:16:23,894 STEVE: Yeah. 332 00:16:23,894 --> 00:16:24,394 Go ahead. 333 00:16:28,253 --> 00:16:33,640 ELLIE: So for example you can have a [INAUDIBLE] animation 334 00:16:33,640 --> 00:16:39,131 show that has a series of states that goes on to infinity. 335 00:16:39,131 --> 00:16:42,470 And at each state you can have propositions 336 00:16:42,470 --> 00:16:44,150 that are either true or false. 337 00:16:44,150 --> 00:16:45,900 So the traffic could be red could be 338 00:16:45,900 --> 00:16:47,120 an example for a proposition. 339 00:16:47,120 --> 00:16:53,024 We could be stopped, et cetera. 340 00:16:57,452 --> 00:16:59,710 And there's various logical operators 341 00:16:59,710 --> 00:17:01,760 that we can apply to these formulas-- 342 00:17:01,760 --> 00:17:04,540 these sets of states, and we can determine 343 00:17:04,540 --> 00:17:07,880 if these logical operators are either true or false 344 00:17:07,880 --> 00:17:14,079 about each set of states-- each formula. 345 00:17:14,079 --> 00:17:16,730 So there's the not operator, the or operator, the and, 346 00:17:16,730 --> 00:17:20,896 the implies, if and only and, and like I said, the state-- 347 00:17:20,896 --> 00:17:25,636 each proposition of [INAUDIBLE] can either be true or false. 348 00:17:25,636 --> 00:17:30,530 So just to go through some examples of these, 349 00:17:30,530 --> 00:17:34,315 the logical operator true says that-- 350 00:17:34,315 --> 00:17:38,160 essentially what the operator true says is it's not saying, 351 00:17:38,160 --> 00:17:39,940 oh, this state is true. 352 00:17:39,940 --> 00:17:41,570 The operator just true says that there 353 00:17:41,570 --> 00:17:43,180 are states for all infinity. 354 00:17:43,180 --> 00:17:44,990 So true is always true. 355 00:17:44,990 --> 00:17:47,500 So no matter what you had for your state here, 356 00:17:47,500 --> 00:17:50,490 the logical operator true holds. 357 00:17:50,490 --> 00:17:53,290 However, when you talk about the logical operator 358 00:17:53,290 --> 00:17:57,330 true with respect to a certain state or a certain proposition, 359 00:17:57,330 --> 00:17:59,130 then it can either be true or false. 360 00:17:59,130 --> 00:18:04,460 So for example, here, the logical operator red light 361 00:18:04,460 --> 00:18:08,100 is true at the first state. 362 00:18:08,100 --> 00:18:10,535 If this was green, then the logical operator red 363 00:18:10,535 --> 00:18:11,990 would be false at the first state. 364 00:18:11,990 --> 00:18:13,796 Does that make sense? 365 00:18:13,796 --> 00:18:16,060 All right. 366 00:18:16,060 --> 00:18:19,660 One important thing to note about the logical o operators 367 00:18:19,660 --> 00:18:23,580 is that they just apply to the very first state 368 00:18:23,580 --> 00:18:24,880 in your statement. 369 00:18:24,880 --> 00:18:26,840 So when we're discussing logical operators, 370 00:18:26,840 --> 00:18:29,290 we haven't gotten to the point where 371 00:18:29,290 --> 00:18:33,430 we can express temporal information 372 00:18:33,430 --> 00:18:34,900 about our sequence of states. 373 00:18:40,400 --> 00:18:42,400 The next operator is, not. 374 00:18:42,400 --> 00:18:46,120 So as you can see here, the traffic light 375 00:18:46,120 --> 00:18:48,200 is read at the first state. 376 00:18:48,200 --> 00:18:50,460 So the traffic light's not green. 377 00:18:50,460 --> 00:18:53,480 Hold, because the proposition green is not 378 00:18:53,480 --> 00:18:55,850 true at the first state. 379 00:18:55,850 --> 00:19:00,130 And the logical operator, and, at this first state 380 00:19:00,130 --> 00:19:03,350 is we're at the red light, and we're getting gas. 381 00:19:03,350 --> 00:19:06,606 And so both that we're at the red light 382 00:19:06,606 --> 00:19:08,814 and that we're getting gas holds for the first state. 383 00:19:12,272 --> 00:19:16,584 And then the operator, or, essentially says-- 384 00:19:16,584 --> 00:19:18,250 I guess a lot of this is probably review 385 00:19:18,250 --> 00:19:19,980 for you guys-- logical operators-- 386 00:19:19,980 --> 00:19:23,985 but essentially if you have red or green 387 00:19:23,985 --> 00:19:26,110 then you could either have the traffic light be red 388 00:19:26,110 --> 00:19:28,870 or the traffic light be green at the first state. 389 00:19:28,870 --> 00:19:31,547 And as long as one of those two hold, or both of them 390 00:19:31,547 --> 00:19:33,942 hold, then it's true. 391 00:19:33,942 --> 00:19:39,110 And one thing to note about or lies in if and only 392 00:19:39,110 --> 00:19:43,170 if these can be re-written with just the logical operators, 393 00:19:43,170 --> 00:19:44,700 and, and, not. 394 00:19:44,700 --> 00:19:47,830 So another way of expressing red and green 395 00:19:47,830 --> 00:19:52,010 is to say that you can't have the scenario where both is not 396 00:19:52,010 --> 00:19:54,180 red, and it's not green. 397 00:19:54,180 --> 00:19:56,350 And I'm not going to go over that for, implies, 398 00:19:56,350 --> 00:20:00,962 and, if and only if, just for the sake of time. 399 00:20:00,962 --> 00:20:04,091 So that's just a review of the logical operators, 400 00:20:04,091 --> 00:20:06,340 and now we're going to go into the temporal operators. 401 00:20:06,340 --> 00:20:09,490 So when we're talking about our autonomous car, 402 00:20:09,490 --> 00:20:12,360 what are some useful temporal operators? 403 00:20:12,360 --> 00:20:13,899 Because up until now, we just are 404 00:20:13,899 --> 00:20:16,065 describing of the first state in our sequence, which 405 00:20:16,065 --> 00:20:18,130 isn't really useful if we want to talk 406 00:20:18,130 --> 00:20:22,937 about the entire set of sequences [INAUDIBLE] states. 407 00:20:22,937 --> 00:20:25,270 So what do you guys think are some mutual things that we 408 00:20:25,270 --> 00:20:26,890 want to be able to describe? 409 00:20:26,890 --> 00:20:29,189 I know Ben touched on some of them at the beginning, 410 00:20:29,189 --> 00:20:30,980 but if you guys could recount some of them. 411 00:20:30,980 --> 00:20:31,480 Yes. 412 00:20:31,480 --> 00:20:32,847 AUDIENCE: State connection. 413 00:20:32,847 --> 00:20:33,430 ELLIE: Mm-hmm. 414 00:20:33,430 --> 00:20:34,830 State connections. 415 00:20:34,830 --> 00:20:38,510 So exactly. 416 00:20:38,510 --> 00:20:40,756 So if I'm in a state right now, might there 417 00:20:40,756 --> 00:20:42,130 be concerns about the next state? 418 00:20:42,130 --> 00:20:44,192 Is that kind of like what you're saying? 419 00:20:44,192 --> 00:20:44,691 Exactly. 420 00:20:44,691 --> 00:20:45,190 Yeah. 421 00:20:45,190 --> 00:20:47,399 So next is one of the things that we 422 00:20:47,399 --> 00:20:50,216 might be concerned about, the next state. 423 00:20:56,677 --> 00:21:00,156 Are there any other tings you guys can think of? 424 00:21:00,156 --> 00:21:01,647 AUDIENCE: Always or [INAUDIBLE] 425 00:21:01,647 --> 00:21:02,638 ELLIE: Yes, exactly. 426 00:21:02,638 --> 00:21:03,138 Always. 427 00:21:09,599 --> 00:21:16,485 So like Ben said, we always want to follow the speed limit. 428 00:21:16,485 --> 00:21:18,330 We always want to be under 35 miles an hour, 429 00:21:18,330 --> 00:21:20,332 or whatever the speed limit is. 430 00:21:20,332 --> 00:21:22,169 Anything else? 431 00:21:22,169 --> 00:21:22,835 AUDIENCE: Until. 432 00:21:22,835 --> 00:21:23,570 ELLIE: Until. 433 00:21:23,570 --> 00:21:24,640 Yep. 434 00:21:24,640 --> 00:21:27,470 So like he said, you want to be stopped 435 00:21:27,470 --> 00:21:29,995 until the light turns green. 436 00:21:29,995 --> 00:21:30,495 Yes. 437 00:21:30,495 --> 00:21:31,445 AUDIENCE: Eventually. 438 00:21:31,445 --> 00:21:31,920 ELLIE: Eventually. 439 00:21:31,920 --> 00:21:32,420 Yep. 440 00:21:32,420 --> 00:21:38,152 So we eventually want to get gas. 441 00:21:38,152 --> 00:21:42,982 And eventually. 442 00:21:42,982 --> 00:21:43,931 Any other things? 443 00:21:43,931 --> 00:21:44,431 Yes. 444 00:21:44,431 --> 00:21:45,397 AUDIENCE: At this state. 445 00:21:45,397 --> 00:21:45,880 ELLIE: At this state. 446 00:21:45,880 --> 00:21:46,380 Yep. 447 00:21:46,380 --> 00:21:49,824 And so, at this state, is kind of what the logical operators 448 00:21:49,824 --> 00:21:51,240 were doing at the beginning, but I 449 00:21:51,240 --> 00:21:53,580 agree that's something we have to be able to express. 450 00:21:53,580 --> 00:21:56,499 So that's not a specific temporal operator, 451 00:21:56,499 --> 00:21:58,040 but it's included in the logical one, 452 00:21:58,040 --> 00:22:00,330 so I'll just write it up here for you. 453 00:22:00,330 --> 00:22:01,627 AUDIENCE: Can I ask a question? 454 00:22:01,627 --> 00:22:02,210 ELLIE: Uh huh. 455 00:22:02,210 --> 00:22:03,668 AUDIENCE: So the logical operators, 456 00:22:03,668 --> 00:22:06,320 are they acting on the-- so they're acting for a state? 457 00:22:06,320 --> 00:22:08,844 They're not acting on the entire chain. 458 00:22:08,844 --> 00:22:10,010 ELLIE: They act for a state. 459 00:22:10,010 --> 00:22:14,460 And so if you just wrote the logical operators, 460 00:22:14,460 --> 00:22:16,200 just by the definition of LTL, it 461 00:22:16,200 --> 00:22:18,940 means let's just analyze the first state 462 00:22:18,940 --> 00:22:20,510 and see if it's true. 463 00:22:20,510 --> 00:22:22,760 And so it won't tell us anything about the third state 464 00:22:22,760 --> 00:22:25,160 or the fourth state or the second state, which is why we 465 00:22:25,160 --> 00:22:27,059 have to look at the next state. 466 00:22:27,059 --> 00:22:29,015 So yeah. 467 00:22:29,015 --> 00:22:32,438 Any other questions? 468 00:22:32,438 --> 00:22:34,883 OK. 469 00:22:34,883 --> 00:22:39,024 So like you said, next is an important one. 470 00:22:39,024 --> 00:22:43,748 So right here we consider OK, the next light will be green. 471 00:22:47,412 --> 00:22:50,750 And until is the one that she mentioned, 472 00:22:50,750 --> 00:23:00,050 so the light will be red until it becomes green eventually. 473 00:23:00,050 --> 00:23:02,880 So the light will eventually at some point in the future 474 00:23:02,880 --> 00:23:03,620 turn green. 475 00:23:03,620 --> 00:23:06,270 So you might be waiting at the red light for a long time, 476 00:23:06,270 --> 00:23:09,826 but eventually it's going to turn green for us. 477 00:23:09,826 --> 00:23:11,932 The light will always be red, so I 478 00:23:11,932 --> 00:23:14,720 guess you're stuck at the traffic light for a long time, 479 00:23:14,720 --> 00:23:18,660 or globally-- that's another name for always. 480 00:23:18,660 --> 00:23:25,040 And lastly, this on is a little bit less intuitive. 481 00:23:25,040 --> 00:23:27,370 So what this is saying is the light 482 00:23:27,370 --> 00:23:32,050 will always be red until another circumstance coincides 483 00:23:32,050 --> 00:23:33,542 with the same state. 484 00:23:33,542 --> 00:23:36,540 So the light will be always red until the car gets gas. 485 00:23:36,540 --> 00:23:40,520 And then after it gets its gas, then the red is released, 486 00:23:40,520 --> 00:23:43,670 and the light can be either green or red after that. 487 00:23:43,670 --> 00:23:49,100 So you have red red red red red until we have both red and gas. 488 00:23:49,100 --> 00:23:51,514 And then it can be green or it can be red [INAUDIBLE] 489 00:23:51,514 --> 00:23:52,930 it's not constrained to being red. 490 00:23:52,930 --> 00:23:53,864 Does that make sense? 491 00:23:53,864 --> 00:23:56,956 That one's a little bit less intuitive, so-- 492 00:23:56,956 --> 00:23:57,920 is that good? 493 00:24:01,294 --> 00:24:04,020 OK. 494 00:24:04,020 --> 00:24:04,520 All right. 495 00:24:04,520 --> 00:24:07,687 So now that we've gone over just the intuitive 496 00:24:07,687 --> 00:24:09,520 understanding of that, I'm going to give you 497 00:24:09,520 --> 00:24:12,138 the actual syntax for that. 498 00:24:12,138 --> 00:24:16,570 So x is representative of next. 499 00:24:16,570 --> 00:24:20,765 So in the first state, we don't care if p is true. 500 00:24:20,765 --> 00:24:22,370 p could be not true, p could be true. 501 00:24:22,370 --> 00:24:23,390 It doesn't matter. 502 00:24:23,390 --> 00:24:25,592 But in the second state, the next one 503 00:24:25,592 --> 00:24:29,610 up in the first state, p, has to hold in order for xp 504 00:24:29,610 --> 00:24:32,750 to be a true statement about our sequence of states. 505 00:24:32,750 --> 00:24:43,169 So what do you guys think if I wrote this? 506 00:24:43,169 --> 00:24:44,642 What would that mean? 507 00:24:49,061 --> 00:24:51,016 AUDIENCE: Different state [INAUDIBLE] 508 00:24:51,016 --> 00:24:51,516 ELLIE: Yep. 509 00:24:51,516 --> 00:24:53,355 So this one over here? 510 00:24:53,355 --> 00:24:53,980 AUDIENCE: Sure. 511 00:24:53,980 --> 00:24:54,636 [INAUDIBLE] 512 00:24:54,636 --> 00:24:55,136 ELLIE: Yeah. 513 00:24:55,136 --> 00:24:57,624 Perfect. 514 00:24:57,624 --> 00:24:58,124 All right. 515 00:24:58,124 --> 00:25:00,116 The until operator. 516 00:25:00,116 --> 00:25:04,650 The until operator essentially says, like Ben said, 517 00:25:04,650 --> 00:25:07,580 we're stopped until the light is green. 518 00:25:07,580 --> 00:25:11,402 So if you have p until w, you just p 519 00:25:11,402 --> 00:25:13,980 has to be true at every state until w, and after that point, 520 00:25:13,980 --> 00:25:16,110 p can be whatever it wants to be. 521 00:25:18,730 --> 00:25:21,340 p eventually, or future operator, 522 00:25:21,340 --> 00:25:26,198 says that at some point in the future we will get gas. 523 00:25:26,198 --> 00:25:27,600 However it's important to note-- 524 00:25:27,600 --> 00:25:29,600 I know when we talked about getting gas we said, 525 00:25:29,600 --> 00:25:32,840 oh, we have to always get gas at some point in the future, 526 00:25:32,840 --> 00:25:36,260 but the future eventually operator is just 527 00:25:36,260 --> 00:25:38,050 at one point in the future. 528 00:25:38,050 --> 00:25:40,240 So once you get gas, you don't have to get it again. 529 00:25:40,240 --> 00:25:40,750 Yes. 530 00:25:40,750 --> 00:25:42,208 AUDIENCE: On the previous slide you 531 00:25:42,208 --> 00:25:44,640 had a not at the bottom that said that w 532 00:25:44,640 --> 00:25:45,764 is required to become true. 533 00:25:45,764 --> 00:25:48,310 Does that mean an until operator also 534 00:25:48,310 --> 00:25:50,746 implies a future operator on w? 535 00:25:50,746 --> 00:25:51,246 ELLIE: Yeah. 536 00:25:51,246 --> 00:25:51,715 AUDIENCE: All right. 537 00:25:51,715 --> 00:25:52,215 [INAUDIBLE] 538 00:25:52,215 --> 00:25:53,591 ELLIE: Yep. 539 00:25:53,591 --> 00:25:55,565 But it's the added condition that p 540 00:25:55,565 --> 00:25:56,940 will be true until the w. 541 00:25:56,940 --> 00:25:59,475 AUDIENCE: But like whenever you use until, you say p 542 00:25:59,475 --> 00:26:02,940 until w that you'd also have to add 543 00:26:02,940 --> 00:26:04,791 at some point in the future [INAUDIBLE] 544 00:26:04,791 --> 00:26:05,291 ELLIE: Yeah. 545 00:26:05,291 --> 00:26:06,405 Yep, you're right. 546 00:26:08,816 --> 00:26:11,440 AUDIENCE: Well, I mean, it would be possible that this stays p, 547 00:26:11,440 --> 00:26:12,210 right? 548 00:26:12,210 --> 00:26:12,595 ELLIE: It could. 549 00:26:12,595 --> 00:26:13,094 Yeah. 550 00:26:13,094 --> 00:26:16,203 But then if your system-- that would be totally fine if you 551 00:26:16,203 --> 00:26:20,140 had your system just be p, but then the operator p until w 552 00:26:20,140 --> 00:26:23,770 wouldn't hold unless you had a w at some point in that sequence 553 00:26:23,770 --> 00:26:25,388 of p's. 554 00:26:25,388 --> 00:26:26,264 Does that make sense. 555 00:26:26,264 --> 00:26:26,888 AUDIENCE: Yeah. 556 00:26:26,888 --> 00:26:29,232 [INAUDIBLE] I guess it does if that's the way to do it, 557 00:26:29,232 --> 00:26:32,170 but it doesn't make sense [INAUDIBLE] it. 558 00:26:36,255 --> 00:26:37,796 ELLIE: So you're saying that we could 559 00:26:37,796 --> 00:26:39,355 have a bunch of p's, right? 560 00:26:39,355 --> 00:26:41,210 Is that what you're saying? 561 00:26:41,210 --> 00:26:46,009 And I'm saying that this is a fine state to have. 562 00:26:46,009 --> 00:26:47,300 You can have whatever you want. 563 00:26:47,300 --> 00:26:51,755 And we're just analyzing if a sentence is true about it. 564 00:26:51,755 --> 00:26:54,890 So this statement, it's not true-- 565 00:26:54,890 --> 00:26:55,660 or, sorry. 566 00:26:55,660 --> 00:27:03,010 I'm saying that it's not true that we have p and lw 567 00:27:03,010 --> 00:27:05,460 because there's no w in our state. 568 00:27:05,460 --> 00:27:10,070 But if we add in a w somewhere and we keep all the p's, then 569 00:27:10,070 --> 00:27:14,963 it's true because we have p up until we get to a w. 570 00:27:14,963 --> 00:27:15,909 Did that make sense? 571 00:27:15,909 --> 00:27:17,784 AUDIENCE: It made sense that that's the rule, 572 00:27:17,784 --> 00:27:19,497 but it doesn't make sense to me why. 573 00:27:19,497 --> 00:27:20,872 Because the statement [INAUDIBLE] 574 00:27:20,872 --> 00:27:22,850 true and if w never appears. 575 00:27:22,850 --> 00:27:26,280 You have p until w, which never happened. 576 00:27:26,280 --> 00:27:26,780 ELLIE: Yeah. 577 00:27:26,780 --> 00:27:29,759 If w never happened, then it wouldn't be true. 578 00:27:29,759 --> 00:27:32,050 AUDIENCE: I mean, technically, for the English language 579 00:27:32,050 --> 00:27:33,329 it would be true. 580 00:27:33,329 --> 00:27:34,495 AUDIENCE: I guess it's not-- 581 00:27:34,495 --> 00:27:37,094 AUDIENCE: If you have p out to infinity, 582 00:27:37,094 --> 00:27:39,120 and you never have w's. 583 00:27:39,120 --> 00:27:41,364 p until w is true. 584 00:27:41,364 --> 00:27:43,280 AUDIENCE: p until anything is true [INAUDIBLE] 585 00:27:43,280 --> 00:27:44,770 AUDIENCE: Like if you say that I'm 586 00:27:44,770 --> 00:27:46,830 hungry until I eat, and you never eat, 587 00:27:46,830 --> 00:27:48,125 then you will always be hungry. 588 00:27:48,125 --> 00:27:50,040 ELLIE: Oh, I see. 589 00:27:50,040 --> 00:27:51,845 So that makes sense in a logical sense, 590 00:27:51,845 --> 00:27:53,553 but that's not how it's described in LTL. 591 00:27:53,553 --> 00:27:55,303 PROFESSOR: There's also an operator that's 592 00:27:55,303 --> 00:27:57,850 sort of unofficial called the weak until, 593 00:27:57,850 --> 00:28:01,720 and that's sort of saying p until w, or always p. 594 00:28:01,720 --> 00:28:04,390 So that kind of gets rid of the condition 595 00:28:04,390 --> 00:28:05,740 that it reaches w at some point. 596 00:28:05,740 --> 00:28:07,593 AUDIENCE: It aligns more with the English, too. 597 00:28:07,593 --> 00:28:08,056 PROFESSOR: Yeah. 598 00:28:08,056 --> 00:28:08,520 ELLIE: Yeah. 599 00:28:08,520 --> 00:28:09,640 AUDIENCE: But just the until operator on its own 600 00:28:09,640 --> 00:28:11,860 is just sort of like a strong until. 601 00:28:11,860 --> 00:28:12,360 ELLIE: Yeah. 602 00:28:12,360 --> 00:28:13,111 PROFESSOR: So it adds the-- 603 00:28:13,111 --> 00:28:14,053 AUDIENCE: Yeah, that's fine. 604 00:28:14,053 --> 00:28:14,524 ELLIE: OK. 605 00:28:14,524 --> 00:28:16,024 PROFESSOR: This is the way it works. 606 00:28:16,024 --> 00:28:16,540 ELLIE: Yeah. 607 00:28:16,540 --> 00:28:18,410 Sometimes-- yeah, I get confused about this sometimes. 608 00:28:18,410 --> 00:28:20,030 I'll be like, why they necessarily 609 00:28:20,030 --> 00:28:21,930 [? chose any of these, ?] but, OK. 610 00:28:21,930 --> 00:28:24,076 And then the globally one, which we 611 00:28:24,076 --> 00:28:25,500 said-- this is the one that you were just describing here 612 00:28:25,500 --> 00:28:26,875 [INAUDIBLE] when you were talking 613 00:28:26,875 --> 00:28:30,295 about the p at every single state in the future. 614 00:28:30,295 --> 00:28:32,730 And then the release operator is you 615 00:28:32,730 --> 00:28:36,750 have to have p until you have w, but p and w also 616 00:28:36,750 --> 00:28:41,614 have to share the same state when they switch from-- 617 00:28:41,614 --> 00:28:46,110 so in until, you don't have to have the p here, 618 00:28:46,110 --> 00:28:48,940 but with release, you have to have the p and w occur 619 00:28:48,940 --> 00:28:50,522 in the same state. 620 00:28:50,522 --> 00:28:52,502 Does that make sense? 621 00:28:52,502 --> 00:28:53,002 Yes? 622 00:28:53,002 --> 00:28:53,502 OK. 623 00:28:57,466 --> 00:29:01,786 So just like before, operators can be described using not 624 00:29:01,786 --> 00:29:03,160 and and. 625 00:29:03,160 --> 00:29:06,030 The future, released, and the globally operators 626 00:29:06,030 --> 00:29:13,030 can also be described using other temporal operators. 627 00:29:13,030 --> 00:29:17,790 And so just as an exercise, can any of you guys tell me which-- 628 00:29:17,790 --> 00:29:20,170 these are not in order-- which of these line up 629 00:29:20,170 --> 00:29:23,720 with the other-- like, whichever ones they line up with. 630 00:29:23,720 --> 00:29:25,553 And I'll give you guys like three minutes 631 00:29:25,553 --> 00:29:28,178 to just think about it, and then we'll work through it together 632 00:29:28,178 --> 00:29:29,174 on the board. 633 00:30:53,336 --> 00:30:54,830 All right, so have any of you guys 634 00:30:54,830 --> 00:30:57,818 thought about which ones might correlate to which ones? 635 00:30:57,818 --> 00:31:00,804 Does anyone have any suggestions? 636 00:31:00,804 --> 00:31:01,304 Yes. 637 00:31:01,304 --> 00:31:02,798 AUDIENCE: The first one's the top one. 638 00:31:02,798 --> 00:31:04,089 ELLIE: This one is the top one. 639 00:31:04,089 --> 00:31:05,446 That's exactly right. 640 00:31:05,446 --> 00:31:10,870 So let's continue this state again. 641 00:31:10,870 --> 00:31:16,149 So the statement, true, doesn't say anything 642 00:31:16,149 --> 00:31:17,855 about what the propositions are. 643 00:31:17,855 --> 00:31:20,996 It's just something that's true for all states, right? 644 00:31:20,996 --> 00:31:23,129 So if we're saying, true until pi, 645 00:31:23,129 --> 00:31:24,670 that means that you can have whatever 646 00:31:24,670 --> 00:31:28,350 you want until p occurs. 647 00:31:28,350 --> 00:31:30,766 So does that make sense that, at some point in the future, 648 00:31:30,766 --> 00:31:36,590 p has to occur, exactly because we had the strong until, right. 649 00:31:36,590 --> 00:31:38,430 Does that make sense to everyone? 650 00:31:38,430 --> 00:31:40,280 You guys want to see some [INAUDIBLE]?? 651 00:31:40,280 --> 00:31:42,280 All right and now what about this one? 652 00:31:42,280 --> 00:31:46,460 We have not as not p. 653 00:31:46,460 --> 00:31:54,110 So this is saying that at some point, if you 654 00:31:54,110 --> 00:31:56,720 can't get a p set at some point in the future, 655 00:31:56,720 --> 00:31:57,830 you don't have p. 656 00:31:57,830 --> 00:32:00,360 So what do you think that would correspond to? 657 00:32:00,360 --> 00:32:02,312 If at some point in the future, you 658 00:32:02,312 --> 00:32:04,510 can't have the situation where there's not p. 659 00:32:04,510 --> 00:32:05,510 AUDIENCE: The third one. 660 00:32:05,510 --> 00:32:06,385 ELLIE: The third one? 661 00:32:06,385 --> 00:32:09,262 [INAUDIBLE] So that would be if you 662 00:32:09,262 --> 00:32:12,207 have p at every single state, then 663 00:32:12,207 --> 00:32:16,376 you would never have a situation where you don't have p, right? 664 00:32:16,376 --> 00:32:17,750 And so that leaves this last one. 665 00:32:20,262 --> 00:32:27,738 You don't have a scenario where you have not p until not w. 666 00:32:27,738 --> 00:32:33,686 So if you have not-- 667 00:32:33,686 --> 00:32:34,186 OK. 668 00:32:34,186 --> 00:32:36,170 It's still a little hard. 669 00:32:36,170 --> 00:32:40,650 But I'll come back to that one at the end, OK? 670 00:32:40,650 --> 00:32:44,878 But it's just important to remember that you can describe 671 00:32:44,878 --> 00:32:48,075 these operators with similar to them 672 00:32:48,075 --> 00:32:49,450 so that your planner doesn't have 673 00:32:49,450 --> 00:32:53,185 to deal with the global operator or these operators-- eventually 674 00:32:53,185 --> 00:32:58,200 operator, it can have less [INAUDIBLE] to deal with. 675 00:32:58,200 --> 00:33:00,140 So yeah, you guys were right. 676 00:33:00,140 --> 00:33:01,595 Perfect. 677 00:33:01,595 --> 00:33:04,600 And then this is just a recap of the different operators 678 00:33:04,600 --> 00:33:10,205 and the other ways that you can express them. 679 00:33:10,205 --> 00:33:12,950 And so there's a few more really cool things 680 00:33:12,950 --> 00:33:15,780 that you can do combining these different operators, 681 00:33:15,780 --> 00:33:19,090 and the first is that-- 682 00:33:19,090 --> 00:33:23,130 remember when Ben was describing that we need to get gas? 683 00:33:23,130 --> 00:33:25,090 And we need to get it in the future, 684 00:33:25,090 --> 00:33:26,838 but even after we get gas, we're going 685 00:33:26,838 --> 00:33:30,830 to have to get it again some time in the future. 686 00:33:30,830 --> 00:33:32,886 So it's important that we can describe something 687 00:33:32,886 --> 00:33:35,010 that happens infinitely often. 688 00:33:35,010 --> 00:33:38,680 And the way that we describe that is saying that we always 689 00:33:38,680 --> 00:33:44,660 have the scenario where you will eventually reach p. 690 00:33:44,660 --> 00:33:49,105 So I'm trying to think of another way to describe that, 691 00:33:49,105 --> 00:33:52,510 but does that make sense that right now in the future, 692 00:33:52,510 --> 00:33:53,782 I'm going to get gas. 693 00:33:53,782 --> 00:33:57,520 And even after I get that gas, I will eventually in the future 694 00:33:57,520 --> 00:34:00,177 also need to get gas again, because your car will always 695 00:34:00,177 --> 00:34:01,742 be needing to get gas. 696 00:34:01,742 --> 00:34:04,658 Does that make sense? 697 00:34:04,658 --> 00:34:05,630 Cool. 698 00:34:05,630 --> 00:34:08,580 And then eventually forever is another scenario 699 00:34:08,580 --> 00:34:11,067 that's important to describe. 700 00:34:11,067 --> 00:34:13,192 So let's say that the traffic light will eventually 701 00:34:13,192 --> 00:34:15,169 turn green forever. 702 00:34:15,169 --> 00:34:17,985 We need to be able to say that at some point in the future, 703 00:34:17,985 --> 00:34:21,126 although we don't know when, the traffic light will turn green. 704 00:34:21,126 --> 00:34:26,710 So the future operator says that at some point in the future, 705 00:34:26,710 --> 00:34:28,844 you will have something come true. 706 00:34:28,844 --> 00:34:34,570 And so at this state, p becomes true, but the global operators 707 00:34:34,570 --> 00:34:38,480 that happened from this state forever afterwards, 708 00:34:38,480 --> 00:34:43,690 which is saying that you eventually will always 709 00:34:43,690 --> 00:34:45,231 have this state B be true. 710 00:34:49,062 --> 00:34:50,687 Do you guys have any questions on that? 711 00:34:50,687 --> 00:34:52,111 Did I explain that good enough. 712 00:34:52,111 --> 00:34:54,610 AUDIENCE: It seems weird to me that the gas tank is becoming 713 00:34:54,610 --> 00:34:57,570 this occasional temporal operator instead of just 714 00:34:57,570 --> 00:34:59,420 like the state that we actually have gas, 715 00:34:59,420 --> 00:35:04,817 would just be the logical thing that [INAUDIBLE] 716 00:35:04,817 --> 00:35:05,650 ELLIE: Oh, yeah, I-- 717 00:35:05,650 --> 00:35:09,360 AUDIENCE: Why is the act of getting gas showing up here 718 00:35:09,360 --> 00:35:12,529 like that, versus just, you always need quantity of gas. 719 00:35:12,529 --> 00:35:13,320 ELLIE: That's true. 720 00:35:13,320 --> 00:35:14,880 We do always need some quantity of gas, 721 00:35:14,880 --> 00:35:16,671 and you would describe that, like you said, 722 00:35:16,671 --> 00:35:18,410 just with the always operator, but I 723 00:35:18,410 --> 00:35:19,861 guess my action of getting gas is 724 00:35:19,861 --> 00:35:22,350 I was thinking of actually driving up to the gas station 725 00:35:22,350 --> 00:35:24,760 and filling it up with gas. 726 00:35:24,760 --> 00:35:29,830 And if you didn't do that, you wouldn't 727 00:35:29,830 --> 00:35:31,952 be able to always have gas. 728 00:35:31,952 --> 00:35:33,766 Does that make sense? 729 00:35:33,766 --> 00:35:35,140 AUDIENCE: Right, so I would think 730 00:35:35,140 --> 00:35:38,062 that always having gas would make [INAUDIBLE] of you plan 731 00:35:38,062 --> 00:35:38,836 [INAUDIBLE] 732 00:35:38,836 --> 00:35:41,086 ELLIE: Yeah, and depending on how you make your model, 733 00:35:41,086 --> 00:35:43,040 you definitely could do that, and that definitely 734 00:35:43,040 --> 00:35:44,220 would satisfy the condition. 735 00:35:44,220 --> 00:35:45,080 [INTERPOSING VOICES] 736 00:35:45,080 --> 00:35:47,752 AUDIENCE: --the usual way to deal with it? 737 00:35:47,752 --> 00:35:49,460 ELLIE: Well, it depends on the situation. 738 00:35:49,460 --> 00:35:53,490 Maybe you [INAUDIBLE] want to say 739 00:35:53,490 --> 00:35:56,209 at some point in the future, the light will always be green, 740 00:35:56,209 --> 00:35:58,500 because you want to make sure that cars can go through, 741 00:35:58,500 --> 00:36:00,041 and there's a difference between red, 742 00:36:00,041 --> 00:36:02,097 and some point it will be green in the future. 743 00:36:02,097 --> 00:36:03,930 So it really depends on your model and how-- 744 00:36:03,930 --> 00:36:05,830 I think the way you're saying it, 745 00:36:05,830 --> 00:36:07,490 where you always want to have gas, 746 00:36:07,490 --> 00:36:13,692 and the proposition gas is how much gas you have in your tank, 747 00:36:13,692 --> 00:36:15,150 and if you have it or don't, then I 748 00:36:15,150 --> 00:36:16,730 think that that would be a really good way to model it, 749 00:36:16,730 --> 00:36:17,270 too. 750 00:36:17,270 --> 00:36:19,728 AUDIENCE: Because this way, if you said, I have to get gas. 751 00:36:19,728 --> 00:36:22,885 I planned it for next week, but I've run out of gas this week. 752 00:36:22,885 --> 00:36:25,592 Do you know what I mean, like, you have to somehow be tracking 753 00:36:25,592 --> 00:36:26,941 the quantity of gas also. 754 00:36:26,941 --> 00:36:27,566 ELLIE: I agree. 755 00:36:27,566 --> 00:36:28,080 I agree. 756 00:36:28,080 --> 00:36:30,890 I was just using it as an example to explain the concept, 757 00:36:30,890 --> 00:36:32,801 but I agree that that definitely probably 758 00:36:32,801 --> 00:36:34,092 could be better with more work. 759 00:36:34,092 --> 00:36:35,890 AUDIENCE: Well, I think in both cases 760 00:36:35,890 --> 00:36:39,460 what it could represent is having gas all the time, 761 00:36:39,460 --> 00:36:44,088 or explicitly saying that you're going to be in gas stations 762 00:36:44,088 --> 00:36:46,056 eventually-- 763 00:36:46,056 --> 00:36:48,024 always eventually. 764 00:36:48,024 --> 00:36:49,475 It depends on how-- 765 00:36:49,475 --> 00:36:53,260 maybe we'd want to always have gas from a station, 766 00:36:53,260 --> 00:36:55,290 and also getting gas from it. 767 00:36:55,290 --> 00:36:58,950 So depending on how you want to model it, but I think 768 00:36:58,950 --> 00:37:00,124 both will work. 769 00:37:03,980 --> 00:37:06,170 AUDIENCE: So infinite and often, doesn't really 770 00:37:06,170 --> 00:37:07,947 care about how frequently-- 771 00:37:07,947 --> 00:37:09,780 ELLIE: Yeah, it doesn't care how frequently. 772 00:37:09,780 --> 00:37:11,791 AUDIENCE: But [INAUDIBLE] for instance something 773 00:37:11,791 --> 00:37:13,950 that happens every 60 years. 774 00:37:13,950 --> 00:37:16,304 My system lifetime server is 30 years, 775 00:37:16,304 --> 00:37:17,970 which means something happens only once. 776 00:37:17,970 --> 00:37:20,573 So in this case, infinite and often, 777 00:37:20,573 --> 00:37:22,320 how can you filter a switch operator 778 00:37:22,320 --> 00:37:24,364 could be the same, right? 779 00:37:24,364 --> 00:37:26,547 ELLIE: Can you repeat that again [INAUDIBLE] 780 00:37:26,547 --> 00:37:28,005 AUDIENCE: So for instance something 781 00:37:28,005 --> 00:37:29,970 happens every 60 years. 782 00:37:29,970 --> 00:37:31,540 My system lifetime goes to 30 years. 783 00:37:31,540 --> 00:37:34,210 After 30 years, I have to get a re-up on the system. 784 00:37:34,210 --> 00:37:37,790 Then so during this [INAUDIBLE] only one thing happened. 785 00:37:37,790 --> 00:37:39,814 And so it happens off into infinity, 786 00:37:39,814 --> 00:37:41,230 but in the lifetime of the system, 787 00:37:41,230 --> 00:37:43,480 it only happened once, and therefore 788 00:37:43,480 --> 00:37:46,570 in this condition, the infinite and often should 789 00:37:46,570 --> 00:37:49,435 be set the same as the future, right, in the current state. 790 00:37:49,435 --> 00:37:50,810 Something happened in the future, 791 00:37:50,810 --> 00:37:53,960 I would say something could never happen again. 792 00:37:53,960 --> 00:37:55,200 ELLIE: Kind of. 793 00:37:55,200 --> 00:37:57,303 So when you're talking about a system that's 794 00:37:57,303 --> 00:38:02,320 dying after 30 years, the LTL doesn't actual model something 795 00:38:02,320 --> 00:38:03,294 that ends. 796 00:38:03,294 --> 00:38:05,070 It would model something to infinity, 797 00:38:05,070 --> 00:38:06,870 although there is an extension to LTL that 798 00:38:06,870 --> 00:38:12,590 can incorporate that into it, having it have an actual end 799 00:38:12,590 --> 00:38:13,335 goal state. 800 00:38:13,335 --> 00:38:16,430 And I think in that case, then infinitely often would 801 00:38:16,430 --> 00:38:19,384 be different, and would-- 802 00:38:19,384 --> 00:38:22,055 I don't know exactly how that would find that situation. 803 00:38:22,055 --> 00:38:23,052 Do you know, Ben? 804 00:38:23,052 --> 00:38:25,909 I know you had kind of-- 805 00:38:25,909 --> 00:38:28,450 BEN: So there's something called metric temporal logic, which 806 00:38:28,450 --> 00:38:31,704 associates a time scale of each of these operators. 807 00:38:31,704 --> 00:38:33,870 So I think you'd have to use that if you were trying 808 00:38:33,870 --> 00:38:37,210 to express that you had to always meet those conditions 809 00:38:37,210 --> 00:38:38,354 still within your lifetime. 810 00:38:38,354 --> 00:38:41,740 You could have some sort of qualifier to these operators 811 00:38:41,740 --> 00:38:44,730 to specify an actual time [INAUDIBLE] where that operator 812 00:38:44,730 --> 00:38:45,237 [INAUDIBLE] 813 00:38:45,237 --> 00:38:46,612 AUDIENCE: So which would you file 814 00:38:46,612 --> 00:38:48,608 for the instance infinitely often [INAUDIBLE] 815 00:38:48,608 --> 00:38:50,850 scenario something at a little bit more frequent 816 00:38:50,850 --> 00:38:53,230 of a general system by the time, right. 817 00:38:53,230 --> 00:38:56,290 Now we have something you know [INAUDIBLE] 100 years ago 818 00:38:56,290 --> 00:38:57,570 for years. 819 00:38:57,570 --> 00:39:00,362 BEN: You know, it's important that the LTL 820 00:39:00,362 --> 00:39:02,820 we're explaining here is only dealing with infinite states. 821 00:39:02,820 --> 00:39:04,575 So I agree, it's a little bit-- you 822 00:39:04,575 --> 00:39:06,200 have to think about that process of how 823 00:39:06,200 --> 00:39:09,219 do apply something that goes on forever to a real system. 824 00:39:09,219 --> 00:39:10,760 It obviously doesn't model correctly. 825 00:39:10,760 --> 00:39:12,259 AUDIENCE: There has to be a way to-- 826 00:39:12,259 --> 00:39:14,330 I mean the future thing, if he has a system that 827 00:39:14,330 --> 00:39:17,052 lasts 30 years, and you say future p, 828 00:39:17,052 --> 00:39:18,635 somewhere in your design of the system 829 00:39:18,635 --> 00:39:21,095 is going to say that the constraint on future p 830 00:39:21,095 --> 00:39:23,290 is that it has to happen within 30 years, right? 831 00:39:23,290 --> 00:39:25,793 Because future p here, for getting gas, 832 00:39:25,793 --> 00:39:27,750 has to happen before I run out of gas. 833 00:39:27,750 --> 00:39:30,350 It's not just-- this representation says it just 834 00:39:30,350 --> 00:39:33,554 happens in the future, but somewhere in your constraint 835 00:39:33,554 --> 00:39:35,362 checking, it's going to say, hey, we 836 00:39:35,362 --> 00:39:37,580 didn't get gas in this plan soon enough, right? 837 00:39:37,580 --> 00:39:38,195 ELLIE: Yeah. 838 00:39:38,195 --> 00:39:38,560 AUDIENCE: Somehow. 839 00:39:38,560 --> 00:39:40,018 ELLIE: Yes, that's definitely true. 840 00:39:40,018 --> 00:39:43,917 And these are just tools to help you model it, 841 00:39:43,917 --> 00:39:46,755 but it's definitely not the entire model of your system 842 00:39:46,755 --> 00:39:49,505 obviously, and so I agree that we definitely would 843 00:39:49,505 --> 00:39:50,671 have to incorporate that in. 844 00:39:50,671 --> 00:39:54,145 And for finance systems you have to account for that. 845 00:39:54,145 --> 00:39:56,270 And that's why they have the extension of LTL which 846 00:39:56,270 --> 00:39:59,520 is the finance systems, which we can certainly 847 00:39:59,520 --> 00:40:01,870 drop a link of of the papers, and where 848 00:40:01,870 --> 00:40:04,120 we got the information, to the class if you guys would 849 00:40:04,120 --> 00:40:06,514 like that. 850 00:40:06,514 --> 00:40:08,930 AUDIENCE: Yeah, I think you guys have done a very good job 851 00:40:08,930 --> 00:40:10,430 of answering the questions. 852 00:40:10,430 --> 00:40:13,005 The three extensions to LTL that I've 853 00:40:13,005 --> 00:40:14,880 found to be the most relevant kinds of things 854 00:40:14,880 --> 00:40:17,691 that we're doing is metric temporal logic, 855 00:40:17,691 --> 00:40:19,440 which is the first one that you mentioned, 856 00:40:19,440 --> 00:40:22,070 also to be able to have it over bounded time, which is related, 857 00:40:22,070 --> 00:40:22,820 and you mentioned. 858 00:40:22,820 --> 00:40:24,975 And then the last one is to deal with uncertainty, 859 00:40:24,975 --> 00:40:28,129 and is then a problem of linear temporal logic. 860 00:40:28,129 --> 00:40:28,629 ELLIE: OK. 861 00:40:28,629 --> 00:40:29,129 Cool. 862 00:40:29,129 --> 00:40:31,587 All right. 863 00:40:31,587 --> 00:40:34,545 So I meant to have this as two separate slides, 864 00:40:34,545 --> 00:40:39,490 but what are some true statements about LTL 865 00:40:39,490 --> 00:40:42,173 that you guys can tell me about to look at this, 866 00:40:42,173 --> 00:40:44,855 or do, and explain why if you look at it. 867 00:40:50,190 --> 00:40:54,235 OK, so why is the next red true? 868 00:40:54,235 --> 00:40:55,776 AUDIENCE: The next step is slow down. 869 00:40:55,776 --> 00:40:56,740 ELLIE: Yep, exactly. 870 00:40:56,740 --> 00:40:57,906 Because the next one is red. 871 00:40:57,906 --> 00:41:00,380 Why is it true that in the future, that it's green? 872 00:41:00,380 --> 00:41:01,766 [INAUDIBLE] 873 00:41:01,766 --> 00:41:03,731 Because in the future, it's green. 874 00:41:03,731 --> 00:41:06,612 And why is it true that there's red until green? 875 00:41:06,612 --> 00:41:09,438 AUDIENCE: It keeps being red until it's green. 876 00:41:09,438 --> 00:41:10,307 ELLIE: Exactly. 877 00:41:10,307 --> 00:41:11,890 So it makes sense that if all of these 878 00:41:11,890 --> 00:41:15,786 are true, that this culmination of the and statements 879 00:41:15,786 --> 00:41:17,510 between all of them is also true, right? 880 00:41:17,510 --> 00:41:19,618 And so you could do that with or as well, 881 00:41:19,618 --> 00:41:21,170 or you could do that with-- 882 00:41:21,170 --> 00:41:23,932 if you had sequences behind here, 883 00:41:23,932 --> 00:41:26,410 you could put a future around this whole thing, 884 00:41:26,410 --> 00:41:28,930 and it would be true that at some point in the future, 885 00:41:28,930 --> 00:41:30,084 all of this would hold. 886 00:41:30,084 --> 00:41:31,912 Does that make sense? 887 00:41:31,912 --> 00:41:32,826 Yes? 888 00:41:32,826 --> 00:41:33,740 OK. 889 00:41:33,740 --> 00:41:35,073 AUDIENCE: Why keep it red there? 890 00:41:35,073 --> 00:41:37,160 Your red is the next step. 891 00:41:37,160 --> 00:41:37,660 ELLIE: Yep. 892 00:41:37,660 --> 00:41:38,159 Exactly. 893 00:41:38,159 --> 00:41:41,330 I was just saying if you had more in the past, 894 00:41:41,330 --> 00:41:43,856 and you were considering it from the previous-- 895 00:41:43,856 --> 00:41:46,419 All right so now Nadia's going to talk 896 00:41:46,419 --> 00:41:48,726 about expressing LTL in PDDL3. 897 00:41:57,920 --> 00:42:03,270 So Ben and Ellie have guided through how 898 00:42:03,270 --> 00:42:05,768 expressive LTL formulation is. 899 00:42:05,768 --> 00:42:11,820 I'm going to formulate the LTL in a classical planner 900 00:42:11,820 --> 00:42:13,010 like PDDL3. 901 00:42:13,010 --> 00:42:19,340 Now I'm using PDDL3, which is an composed extension of PDDL2.2, 902 00:42:19,340 --> 00:42:26,170 which supports some of the LTL operators. 903 00:42:26,170 --> 00:42:29,670 So these are the basic operators that you 904 00:42:29,670 --> 00:42:31,920 can use to express the constraints 905 00:42:31,920 --> 00:42:34,230 and goals of your plan. 906 00:42:34,230 --> 00:42:37,875 So you have at end, always, sometimes, within, 907 00:42:37,875 --> 00:42:43,020 at-most-once, sometime-after, sometime-before, always-within, 908 00:42:43,020 --> 00:42:44,910 and hold-during. 909 00:42:44,910 --> 00:42:50,940 So again, now here is a numeric controls that you can specify, 910 00:42:50,940 --> 00:42:57,550 and the ellipses represents an already-existing [INAUDIBLE] 911 00:42:57,550 --> 00:42:58,050 goal. 912 00:42:58,050 --> 00:42:59,956 This is a goal description-- 913 00:42:59,956 --> 00:43:00,870 [INAUDIBLE] 914 00:43:00,870 --> 00:43:05,580 So some of the operators may look familiar to you, 915 00:43:05,580 --> 00:43:09,450 because they can also be used to express the constraint in STN, 916 00:43:09,450 --> 00:43:13,200 the Simple Temporal Network, that we learned in class. 917 00:43:13,200 --> 00:43:15,870 And there are some operators that 918 00:43:15,870 --> 00:43:19,450 are unique to LTL or other kinds, 919 00:43:19,450 --> 00:43:24,910 like metric temporal network, like always, for example. 920 00:43:24,910 --> 00:43:27,370 So now we are going to take a look 921 00:43:27,370 --> 00:43:35,144 at how you can express the operators using 922 00:43:35,144 --> 00:43:39,960 the PDDL3 language. 923 00:43:39,960 --> 00:43:44,090 So we can use, within one occurrence to the next, 924 00:43:44,090 --> 00:43:48,410 because there is no explicit next in the PDDL3. 925 00:43:48,410 --> 00:43:52,625 And you use always until to express until. 926 00:43:52,625 --> 00:43:56,220 And in the future, you use sometimes after, 927 00:43:56,220 --> 00:43:59,320 and globally, you can use always. 928 00:43:59,320 --> 00:44:02,130 And for release, since it can always 929 00:44:02,130 --> 00:44:09,930 be omega or always until omega when you see p. 930 00:44:09,930 --> 00:44:13,964 You can use all costs, too, although this [INAUDIBLE].. 931 00:44:17,380 --> 00:44:19,980 OK, let's see some examples. 932 00:44:19,980 --> 00:44:25,877 So if your goal is to have the traffic light turn 933 00:44:25,877 --> 00:44:29,110 red in the next state, you would want 934 00:44:29,110 --> 00:44:36,775 to formulate it using within one occurrence, 935 00:44:36,775 --> 00:44:38,260 the traffic light would turn red. 936 00:44:41,730 --> 00:44:45,320 And let's take a look at a more complicated example. 937 00:44:45,320 --> 00:44:49,290 So if you want to model a goal saying that the traffic 938 00:44:49,290 --> 00:44:56,558 light would be green until it turns red, at which point 939 00:44:56,558 --> 00:44:58,850 it would be red forever. 940 00:44:58,850 --> 00:45:03,862 So this is temporal logic of predicates 941 00:45:03,862 --> 00:45:08,046 that express this goal. 942 00:45:08,046 --> 00:45:13,800 And then if you want to model that using PDDL, 943 00:45:13,800 --> 00:45:15,580 there is a direct mapping. 944 00:45:15,580 --> 00:45:17,828 You can see the direct mapping between the predicates 945 00:45:17,828 --> 00:45:20,220 and the PDDL. 946 00:45:20,220 --> 00:45:25,740 So this is basically saying, it would always 947 00:45:25,740 --> 00:45:28,226 be green until it turns red. 948 00:45:28,226 --> 00:45:31,740 And turning red implies it will always turn red. 949 00:45:36,520 --> 00:45:42,640 So next, [? Arleese ?] will tell us how to map between the LTL 950 00:45:42,640 --> 00:45:44,795 to PDDL with a Buchi Automata which 951 00:45:44,795 --> 00:45:46,494 is a specialized automata. 952 00:45:50,752 --> 00:45:51,585 GUEST SPEAKER: Cool. 953 00:45:51,585 --> 00:45:54,880 So I'm [? Arleese. ?] I have bridged the gap between LTL 954 00:45:54,880 --> 00:45:56,404 and the planning world. 955 00:45:56,404 --> 00:45:58,434 So this is kind of the framework for how 956 00:45:58,434 --> 00:45:59,850 you would go from taking a problem 957 00:45:59,850 --> 00:46:03,000 with temporally extended goals all the way to a plan. 958 00:46:03,000 --> 00:46:05,376 So as you can kind of imagine from what 959 00:46:05,376 --> 00:46:07,040 Ben and Ellie were talking about, 960 00:46:07,040 --> 00:46:08,195 LTL is pretty expressive. 961 00:46:08,195 --> 00:46:10,236 You can express a lot of different types of goals 962 00:46:10,236 --> 00:46:14,170 that include more temporal properties than just a time 963 00:46:14,170 --> 00:46:17,140 window for a goal to be completed. 964 00:46:17,140 --> 00:46:19,196 So once we have a kind of defined problem 965 00:46:19,196 --> 00:46:21,140 with these temporary extended goals, 966 00:46:21,140 --> 00:46:26,021 then you want to model it in a language like LTL or PDDL. 967 00:46:26,021 --> 00:46:27,520 So if you have a language like PDDL, 968 00:46:27,520 --> 00:46:30,117 and you have a planner that can do an algorithm called 969 00:46:30,117 --> 00:46:32,200 progression, which I'll talk about a little later, 970 00:46:32,200 --> 00:46:34,770 you can go directly to a plan. 971 00:46:34,770 --> 00:46:38,503 Basically how progression works is it's kind of an algorithm 972 00:46:38,503 --> 00:46:40,670 that tells you when you're analyzing a state, 973 00:46:40,670 --> 00:46:43,370 and you're analyzing LTL-like formulas that 974 00:46:43,370 --> 00:46:47,360 are true in a specific state, how to push formulas 975 00:46:47,360 --> 00:46:50,087 that you need to evaluate later on to the next state, 976 00:46:50,087 --> 00:46:52,045 and how to keep track of things that you 977 00:46:52,045 --> 00:46:56,890 need to continue to evaluate for satisfaction in future states. 978 00:46:56,890 --> 00:47:00,375 Another way you can do this is by taking LTL formulations 979 00:47:00,375 --> 00:47:02,640 and translating them into Buchi Automata. 980 00:47:02,640 --> 00:47:05,710 So Buchi Automata are basically finite state machines 981 00:47:05,710 --> 00:47:10,530 that are extended to handle an infinite sequence of states. 982 00:47:10,530 --> 00:47:14,110 And I'll get into more about how Buchi Automata work. 983 00:47:14,110 --> 00:47:15,664 After you have a Buchi Automata, you 984 00:47:15,664 --> 00:47:17,620 can then translate that into PDDL2, 985 00:47:17,620 --> 00:47:19,304 which you guys are all familiar with, 986 00:47:19,304 --> 00:47:22,390 and then that PDDL2 can be used from the classical planner, 987 00:47:22,390 --> 00:47:23,582 and get a plan. 988 00:47:26,778 --> 00:47:28,528 So a little bit more about Buchi Automata. 989 00:47:28,528 --> 00:47:30,270 Again, like I said, it's an extension 990 00:47:30,270 --> 00:47:31,780 of a finite state machine. 991 00:47:31,780 --> 00:47:32,432 Oh, yes. 992 00:47:32,432 --> 00:47:34,973 AUDIENCE: Why would have a Buchi Automata when you could just 993 00:47:34,973 --> 00:47:38,925 use a planner that will go from PDDL3 straight to the plan? 994 00:47:38,925 --> 00:47:41,060 GUEST SPEAKER: I guess it just depends on how-- 995 00:47:41,060 --> 00:47:42,930 what kind of planners we have access to, 996 00:47:42,930 --> 00:47:44,320 what other systems you have. 997 00:47:44,320 --> 00:47:45,602 It's done both ways. 998 00:47:45,602 --> 00:47:47,951 So PDDL3 is still kind of new, and so there's not 999 00:47:47,951 --> 00:47:50,284 a lot of planners that actually have progression and can 1000 00:47:50,284 --> 00:47:51,228 handle PDDL3. 1001 00:47:54,060 --> 00:47:57,990 AUDIENCE: And it's also the case that the particular algorithms 1002 00:47:57,990 --> 00:48:01,350 that are trying to either be verification or planning, maybe 1003 00:48:01,350 --> 00:48:04,180 exploiting particular properties of the Buchi Automaton, 1004 00:48:04,180 --> 00:48:06,384 as opposed to the properties of the native language. 1005 00:48:09,287 --> 00:48:11,870 GUEST SPEAKER: So you guys are all familiar with regular state 1006 00:48:11,870 --> 00:48:12,395 machines. 1007 00:48:12,395 --> 00:48:14,822 Buchi Automata has a very similar formulation. 1008 00:48:14,822 --> 00:48:17,210 Some slight differences-- you have a set of states, 1009 00:48:17,210 --> 00:48:21,050 you have an initial state, and you have a transition relation, 1010 00:48:21,050 --> 00:48:23,020 and then you have a set of accepting states. 1011 00:48:23,020 --> 00:48:24,603 These accepting states are essentially 1012 00:48:24,603 --> 00:48:27,545 what replaces finite states in the state machine. 1013 00:48:27,545 --> 00:48:30,570 We also have a set of symbols that are again simply 1014 00:48:30,570 --> 00:48:33,040 the transitions between states. 1015 00:48:33,040 --> 00:48:35,630 So what an accepting state is, is a Buchi Automata 1016 00:48:35,630 --> 00:48:39,810 can only be valid if the sequence of transitions 1017 00:48:39,810 --> 00:48:42,954 visits an accepting state an infinite amount of times. 1018 00:48:42,954 --> 00:48:44,974 So I'll get into a couple examples. 1019 00:48:44,974 --> 00:48:48,660 So let's say you want to model the ticking-tocking of a clock. 1020 00:48:48,660 --> 00:48:51,690 This is just a regular finite state machine. 1021 00:48:51,690 --> 00:48:54,560 As you can see, after some number of ticks and tocks, 1022 00:48:54,560 --> 00:48:56,630 you get into S2, and you're in S2 1023 00:48:56,630 --> 00:48:59,350 because you can be in transition only [INAUDIBLE] 1024 00:48:59,350 --> 00:49:01,900 So you're in S2 basically forever once you get to S2. 1025 00:49:01,900 --> 00:49:03,920 So we can model this as a Buchi Automata 1026 00:49:03,920 --> 00:49:07,970 by making S2 an accepted state. 1027 00:49:07,970 --> 00:49:09,722 This example, making it a Buchi Automata, 1028 00:49:09,722 --> 00:49:11,180 doesn't really do anything for you. 1029 00:49:11,180 --> 00:49:14,030 It's just kind of to illustrate what the accepting state does. 1030 00:49:14,030 --> 00:49:17,470 So the accepting words are a sequence of transitions. 1031 00:49:17,470 --> 00:49:20,600 In this case it would be an infinite combination 1032 00:49:20,600 --> 00:49:24,512 of ticks and tocks that would make this Buchi Automata valid. 1033 00:49:24,512 --> 00:49:27,218 Does that make sense. 1034 00:49:27,218 --> 00:49:30,401 Questions about that? 1035 00:49:30,401 --> 00:49:31,900 Here's another example, for example, 1036 00:49:31,900 --> 00:49:34,780 if I have changed what my accepting state was. 1037 00:49:34,780 --> 00:49:36,516 So if our accepting state was S1, 1038 00:49:36,516 --> 00:49:38,780 I now have to visit S1 an infinite amount of times 1039 00:49:38,780 --> 00:49:40,980 for this Buchi Automata to be valid. 1040 00:49:40,980 --> 00:49:43,620 That means the only valid sequence 1041 00:49:43,620 --> 00:49:46,589 of transitions I could have is tock tick tick tick 1042 00:49:46,589 --> 00:49:48,130 tick for an infinite amount of times. 1043 00:49:48,130 --> 00:49:50,830 So you can kind of represent different things 1044 00:49:50,830 --> 00:49:52,420 and different sequences of inputs 1045 00:49:52,420 --> 00:49:55,030 you might want to have based on which accepting state you use. 1046 00:49:57,596 --> 00:49:58,740 This is another example. 1047 00:49:58,740 --> 00:50:01,920 If you wanted your clock to be tick tock tick tock tick tock, 1048 00:50:01,920 --> 00:50:03,795 you can have more than one accepting state, 1049 00:50:03,795 --> 00:50:08,030 and now I have to visit S0 and S1 an infinite amount of times 1050 00:50:08,030 --> 00:50:11,620 if I want this Buchi Automata to be valid. 1051 00:50:11,620 --> 00:50:13,800 So then the sequence of transitions I get 1052 00:50:13,800 --> 00:50:15,772 is tick tock tick tock tick tock. 1053 00:50:15,772 --> 00:50:17,938 Does anyone have any questions to really think about 1054 00:50:17,938 --> 00:50:22,231 in general with Buchi Automata? 1055 00:50:22,231 --> 00:50:24,620 OK. 1056 00:50:24,620 --> 00:50:28,758 It might help to see how we model LTL as Buchi Automata. 1057 00:50:28,758 --> 00:50:32,800 So here's an example of of these LTL formulas 1058 00:50:32,800 --> 00:50:35,192 modeled as a Buchi Automata. 1059 00:50:35,192 --> 00:50:36,660 I guess take a few minutes and see 1060 00:50:36,660 --> 00:50:40,066 if you can get which one this one might be. 1061 00:50:53,954 --> 00:50:55,450 AUDIENCE: [INAUDIBLE] 1062 00:50:55,450 --> 00:50:56,590 GUEST SPEAKER: Yeah. 1063 00:50:56,590 --> 00:50:59,620 Just so that everyone can kind of see that, and future events, 1064 00:50:59,620 --> 00:51:01,865 we remember that means that eventually p 1065 00:51:01,865 --> 00:51:04,540 has to be true at least once. 1066 00:51:04,540 --> 00:51:09,740 So from any sort of input state, you go to S0, 1067 00:51:09,740 --> 00:51:12,440 and then I do have amount p for some amount of time, 1068 00:51:12,440 --> 00:51:15,674 but as soon as I have p, I have to get to p, 1069 00:51:15,674 --> 00:51:17,340 because I have to be in my subject state 1070 00:51:17,340 --> 00:51:18,506 an infinite amount of times. 1071 00:51:18,506 --> 00:51:20,340 So I have to execute p at some point 1072 00:51:20,340 --> 00:51:23,650 to get to my accepting state for this Buchi Automata 1073 00:51:23,650 --> 00:51:24,212 to be valid. 1074 00:51:24,212 --> 00:51:26,680 And then once I'm at S1, I can have 1075 00:51:26,680 --> 00:51:28,050 any other amount of inputs. 1076 00:51:28,050 --> 00:51:33,435 I'll always be in S1, and that's what the true label means. 1077 00:51:33,435 --> 00:51:34,810 AUDIENCE: And it's also something 1078 00:51:34,810 --> 00:51:36,351 stronger, right, which is you could-- 1079 00:51:36,351 --> 00:51:37,875 it's eventually globally? 1080 00:51:37,875 --> 00:51:40,150 GUEST SPEAKER: Right. 1081 00:51:40,150 --> 00:51:45,730 Yeah, so actually in this case, after it gets here, 1082 00:51:45,730 --> 00:51:46,990 my input could be anything. 1083 00:51:46,990 --> 00:51:50,260 So this basically just says that for my initial state, 1084 00:51:50,260 --> 00:51:52,046 I have to execute p at least once to get 1085 00:51:52,046 --> 00:51:54,420 to this accepting state, and once I'm there, 1086 00:51:54,420 --> 00:51:55,720 I can be there-- 1087 00:51:55,720 --> 00:51:56,730 I'm always there. 1088 00:51:56,730 --> 00:51:59,576 Any input will believe me in S1. 1089 00:51:59,576 --> 00:52:02,455 AUDIENCE: So just to make this clear for myself and maybe 1090 00:52:02,455 --> 00:52:04,730 for others, the data string executed 1091 00:52:04,730 --> 00:52:09,390 that's at R state something that's on the loop. 1092 00:52:09,390 --> 00:52:11,650 If you go from s0 to s0, that's essentially 1093 00:52:11,650 --> 00:52:13,967 saying that one of the nodes is not p. 1094 00:52:13,967 --> 00:52:17,250 If you go from s0 to s1, it's saying that one of the nodes 1095 00:52:17,250 --> 00:52:18,134 is p. 1096 00:52:18,134 --> 00:52:18,576 GUEST SPEAKER: Yeah. 1097 00:52:18,576 --> 00:52:19,950 AUDIENCE: If you go from s1 to s1 1098 00:52:19,950 --> 00:52:25,010 and take whatever it would be because you set it true. 1099 00:52:25,010 --> 00:52:27,430 AUDIENCE: So if you put p where the true is right now, 1100 00:52:27,430 --> 00:52:29,370 then you you won't have to go through. 1101 00:52:29,370 --> 00:52:30,078 PROFESSOR: Right. 1102 00:52:30,078 --> 00:52:32,020 That's what I missed. 1103 00:52:32,020 --> 00:52:35,287 By the way, you guys have 25 more minutes. 1104 00:52:37,604 --> 00:52:39,520 GUEST SPEAKER: So that's what we talked about. 1105 00:52:39,520 --> 00:52:41,232 This is future. 1106 00:52:41,232 --> 00:52:44,550 So the accepted sequence of propositions 1107 00:52:44,550 --> 00:52:46,230 would be not to not p. 1108 00:52:46,230 --> 00:52:47,600 Then you have p. 1109 00:52:47,600 --> 00:52:49,450 Then it can be anything after you get to p. 1110 00:52:49,450 --> 00:52:52,180 And then in this case, for Buchi Automata states, which 1111 00:52:52,180 --> 00:52:54,980 are like [INAUDIBLE],, slightly different than the LTL states 1112 00:52:54,980 --> 00:52:56,153 we've been talking about. 1113 00:52:56,153 --> 00:52:57,350 In this case, you're in s0. 1114 00:52:57,350 --> 00:52:59,716 And then once you get to s1, you're forever in s1. 1115 00:53:03,470 --> 00:53:06,690 So globally, looks pretty similar to this. 1116 00:53:06,690 --> 00:53:08,840 Take a few minutes to think about how 1117 00:53:08,840 --> 00:53:11,950 I might change this Buchi Automata to [INAUDIBLE] 1118 00:53:11,950 --> 00:53:21,845 globally after [INAUDIBLE] 1119 00:53:21,845 --> 00:53:24,597 AUDIENCE: [INAUDIBLE] 1120 00:53:24,597 --> 00:53:25,805 GUEST SPEAKER: Yeah, exactly. 1121 00:53:29,290 --> 00:53:32,170 So you have initially, your first state by your n 1122 00:53:32,170 --> 00:53:34,810 because p has to be true forever after you 1123 00:53:34,810 --> 00:53:35,940 get to this first state. 1124 00:53:35,940 --> 00:53:38,320 You have an accepting state in p. 1125 00:53:38,320 --> 00:53:40,715 You can also model not p. 1126 00:53:40,715 --> 00:53:42,090 If you want to, you can also just 1127 00:53:42,090 --> 00:53:44,420 have this single see which would encapsulate 1128 00:53:44,420 --> 00:53:47,552 exactly what Buchi is. 1129 00:53:47,552 --> 00:53:50,940 This is how you go from LTL to Buchi Automata. 1130 00:53:50,940 --> 00:53:54,304 In a real-world scenario, we have multiple LTL formulas all 1131 00:53:54,304 --> 00:53:54,846 combined. 1132 00:53:54,846 --> 00:53:57,220 You're Buchi Automata are going to look a little bit more 1133 00:53:57,220 --> 00:53:58,930 complicated than this. 1134 00:53:58,930 --> 00:54:02,290 Try multiple accepting states. 1135 00:54:02,290 --> 00:54:04,800 There's a full weighted model of what 1136 00:54:04,800 --> 00:54:07,150 an LTL is trying to represent. 1137 00:54:09,826 --> 00:54:12,684 AUDIENCE: If we have the not p transition out of there, 1138 00:54:12,684 --> 00:54:16,600 Like it's possible you can come into s0 to accept the Buchi 1139 00:54:16,600 --> 00:54:19,465 Automata because it would go to s1, right? 1140 00:54:19,465 --> 00:54:21,690 GUEST SPEAKER: Accepting a Buchi Automata after that, 1141 00:54:21,690 --> 00:54:22,799 it's a little confusing. 1142 00:54:22,799 --> 00:54:25,090 A Buchi Automata is only valid if the infinite sequence 1143 00:54:25,090 --> 00:54:28,345 of states satisfies it. 1144 00:54:28,345 --> 00:54:33,129 If I were to go the p instead of not p, 1145 00:54:33,129 --> 00:54:36,456 my sequence would accept a transition of p, p, not p. 1146 00:54:36,456 --> 00:54:38,810 Then that would not be a valid sequence 1147 00:54:38,810 --> 00:54:41,214 of transition for this Buchi Automata 1148 00:54:41,214 --> 00:54:43,380 because I'm transitioning out of my accepting state, 1149 00:54:43,380 --> 00:54:46,240 which I need to have been in for at least the amount of times. 1150 00:54:46,240 --> 00:54:49,346 And there's no way I can get back to success. 1151 00:54:56,436 --> 00:54:59,700 Also, a more defined algorithm [INAUDIBLE] an intuitive way 1152 00:54:59,700 --> 00:55:02,444 to build a Buchi Automata, or is an algorithm. 1153 00:55:02,444 --> 00:55:04,110 The other one that's most popularly used 1154 00:55:04,110 --> 00:55:05,830 was developed by [INAUDIBLE]. 1155 00:55:05,830 --> 00:55:09,885 This is a pseudocode version of the algorithm. 1156 00:55:09,885 --> 00:55:11,380 We go from LTL to Buchi. 1157 00:55:11,380 --> 00:55:13,960 As you've noticed, it actually uses progression, 1158 00:55:13,960 --> 00:55:18,990 which is something that planners that take PDDL use to generate 1159 00:55:18,990 --> 00:55:20,210 plans. 1160 00:55:20,210 --> 00:55:21,770 An important thing to note, which 1161 00:55:21,770 --> 00:55:24,570 I won't go into too much detail, this algorithm 1162 00:55:24,570 --> 00:55:26,250 generates a generalized Buchi Automata, 1163 00:55:26,250 --> 00:55:30,019 which you then change to a simple Buchi Automata. 1164 00:55:30,019 --> 00:55:32,060 The difference is, the generalized Buchi Automata 1165 00:55:32,060 --> 00:55:35,940 has a set of sets of accepting states. 1166 00:55:35,940 --> 00:55:39,200 For a generalized Buchi Automata to be accepted, 1167 00:55:39,200 --> 00:55:41,325 you need to visit an accepting state 1168 00:55:41,325 --> 00:55:43,393 in each one of those sets of accepting states. 1169 00:55:43,393 --> 00:55:46,220 At least one of those states has to be listed. 1170 00:55:46,220 --> 00:55:48,430 For a simple Buchi Automata, you only 1171 00:55:48,430 --> 00:55:49,950 have one set of accepting states. 1172 00:55:49,950 --> 00:55:52,855 And you can visit any one of those for the Buchi Automata 1173 00:55:52,855 --> 00:55:54,255 to be valid. 1174 00:55:54,255 --> 00:55:56,630 On the translation between those two is a little bit more 1175 00:55:56,630 --> 00:55:57,640 complicated. 1176 00:55:57,640 --> 00:56:00,052 We'll have paper in the preference that will 1177 00:56:00,052 --> 00:56:01,465 walk through how to do that. 1178 00:56:01,465 --> 00:56:04,291 But we're not going to do that now. 1179 00:56:04,291 --> 00:56:07,800 This is a progression algorithm. 1180 00:56:07,800 --> 00:56:12,260 Basically, it just tells you how if have a LTL formula f 1181 00:56:12,260 --> 00:56:14,180 and some current state N-- 1182 00:56:14,180 --> 00:56:16,776 and usually they involve some time step 1183 00:56:16,776 --> 00:56:18,900 because we're in the real world and we can't really 1184 00:56:18,900 --> 00:56:21,770 model infinite amount of time, and we 1185 00:56:21,770 --> 00:56:23,890 have to make it discrete. 1186 00:56:23,890 --> 00:56:28,125 So we have some time step, which means successive state. 1187 00:56:28,125 --> 00:56:31,820 How do you push certain LTL formulas onto next states 1188 00:56:31,820 --> 00:56:33,792 to be evaluated later? 1189 00:56:33,792 --> 00:56:37,530 For example, I'll take this next f as an example. 1190 00:56:37,530 --> 00:56:40,730 So if f was a next f of some LTL formula, 1191 00:56:40,730 --> 00:56:44,936 you need to append that formula to the next state 1192 00:56:44,936 --> 00:56:46,820 to be evaluated in the next state 1193 00:56:46,820 --> 00:56:49,486 to see if that's going to be true or not. 1194 00:56:49,486 --> 00:56:51,204 Similar things for LTL. 1195 00:56:51,204 --> 00:56:54,770 And I won't go through this [INAUDIBLE] 1196 00:56:54,770 --> 00:56:58,492 it's here for reference. 1197 00:56:58,492 --> 00:57:00,950 The next step to this process is going from Buchi Automata, 1198 00:57:00,950 --> 00:57:03,050 that's a PDDL2. 1199 00:57:03,050 --> 00:57:04,465 This process is confusing. 1200 00:57:04,465 --> 00:57:06,960 At least it is confusing for me to understand. 1201 00:57:06,960 --> 00:57:09,440 The first thing I'll say is that Buchi states are not 1202 00:57:09,440 --> 00:57:11,330 equivalent to traditional PDDL states. 1203 00:57:11,330 --> 00:57:14,570 In a PDDL state, if you have two states, 1204 00:57:14,570 --> 00:57:17,540 you have the same propositions that are true and false, 1205 00:57:17,540 --> 00:57:18,902 those states are identical. 1206 00:57:18,902 --> 00:57:23,133 In the Buchi Automata, that's not necessarily true. 1207 00:57:23,133 --> 00:57:24,880 In the Buchi Automata you also have 1208 00:57:24,880 --> 00:57:27,360 to encapsulate which transitions you can make out 1209 00:57:27,360 --> 00:57:28,560 of each Buchi state. 1210 00:57:28,560 --> 00:57:33,020 So s1 and s2 couldn't have the same set of propositions 1211 00:57:33,020 --> 00:57:35,830 that are [INAUDIBLE] hold. 1212 00:57:35,830 --> 00:57:37,290 But out of s1-- 1213 00:57:37,290 --> 00:57:38,815 actually, back up. 1214 00:57:38,815 --> 00:57:42,230 This is the Buchi Automata for FutureGlobally, 1215 00:57:42,230 --> 00:57:44,480 which is what [INAUDIBLE] was talking about. 1216 00:57:44,480 --> 00:57:46,760 So if I enter an f1, the star means 1217 00:57:46,760 --> 00:57:52,560 I can have any transition that I want in s1. 1218 00:57:52,560 --> 00:57:54,560 At some point, I make the transition p 1219 00:57:54,560 --> 00:57:57,530 and whatever the s2, I have to take transition p forever. 1220 00:58:00,240 --> 00:58:05,380 However, if I get a sequence of inputs, let's say I get p 1221 00:58:05,380 --> 00:58:11,000 and then b, and p again, and then p again, 1222 00:58:11,000 --> 00:58:12,730 it's not clear if I'm in s1 or s2 1223 00:58:12,730 --> 00:58:16,070 because in s1 I can execute any kind of state I want. 1224 00:58:16,070 --> 00:58:19,140 In s1 I can execute any transition I want in s1. 1225 00:58:19,140 --> 00:58:21,500 2 I have to execute only p. 1226 00:58:21,500 --> 00:58:25,560 So if I got a sequence of p's, I could be in either state. 1227 00:58:25,560 --> 00:58:29,120 You need something else to activate PDDL2 to basically 1228 00:58:29,120 --> 00:58:31,355 to determine which state you're and which transitions 1229 00:58:31,355 --> 00:58:34,644 you can make from that state. 1230 00:58:34,644 --> 00:58:37,074 Does that make sense to everyone? 1231 00:58:40,490 --> 00:58:42,620 So there's two ways we can transform 1232 00:58:42,620 --> 00:58:47,020 PDDL2 to encapsulate what a Buchi Automata encapsulates. 1233 00:58:47,020 --> 00:58:48,650 The first thing is you can create 1234 00:58:48,650 --> 00:58:51,640 new actions that can encapsulate the allowable transitions 1235 00:58:51,640 --> 00:58:53,490 of each state. 1236 00:58:53,490 --> 00:58:55,530 So basically, for every action you 1237 00:58:55,530 --> 00:58:57,320 have in your traditional PDDL, you 1238 00:58:57,320 --> 00:59:02,279 have create a repetitive action for each one of these states 1239 00:59:02,279 --> 00:59:03,820 so you know exactly which transitions 1240 00:59:03,820 --> 00:59:06,420 you can take out of that state. 1241 00:59:06,420 --> 00:59:08,280 This can get long because you have 1242 00:59:08,280 --> 00:59:10,940 to make a new action for every single one 1243 00:59:10,940 --> 00:59:13,760 of these states for every action that you want to take. 1244 00:59:13,760 --> 00:59:15,295 That is one way you can do it. 1245 00:59:15,295 --> 00:59:19,186 Another way you can do it is introducing derived predicates. 1246 00:59:19,186 --> 00:59:20,560 Derived predicates are predicates 1247 00:59:20,560 --> 00:59:22,060 that don't depend the actions at all 1248 00:59:22,060 --> 00:59:25,267 and just depend on some other formula in your plan. 1249 00:59:25,267 --> 00:59:27,100 For example, we can have a derived predicate 1250 00:59:27,100 --> 00:59:30,170 that explicitly tells you whether you're in s1 1251 00:59:30,170 --> 00:59:31,540 or whether you're in s2. 1252 00:59:31,540 --> 00:59:33,590 And you can use these predicates in your actions 1253 00:59:33,590 --> 00:59:38,120 in PDDL2 to make sure, even though which state, x1 or x2, 1254 00:59:38,120 --> 00:59:40,240 you're in in your Buchi Automata. 1255 00:59:40,240 --> 00:59:42,080 And then, in your formulation of your plan, 1256 00:59:42,080 --> 00:59:46,747 you set your final state to be one of the accepting states. 1257 00:59:46,747 --> 00:59:48,830 I guess that answers one of the questions, though, 1258 00:59:48,830 --> 00:59:51,800 how you go from being infinite to finite. 1259 00:59:51,800 --> 00:59:53,570 The accepting state is usually what 1260 00:59:53,570 --> 00:59:55,298 you place as your final state. 1261 00:59:55,298 --> 00:59:57,006 AUDIENCE: Then in the derived predicates, 1262 00:59:57,006 --> 00:59:59,437 you're purely in the pre-conditions? 1263 00:59:59,437 --> 01:00:01,020 Or do they also appear in the effects. 1264 01:00:01,020 --> 01:00:02,936 GUEST SPEAKER: They also appear in the effects 1265 01:00:02,936 --> 01:00:07,610 because you need to know how to transition out of s1 to s2. 1266 01:00:07,610 --> 01:00:10,520 So you'd likely have a derived predicate for both s1 1267 01:00:10,520 --> 01:00:12,690 and a derived predicate for s2. 1268 01:00:12,690 --> 01:00:16,572 And that is also a lot of work to add to the PDDL2 problem. 1269 01:00:16,572 --> 01:00:18,600 But it's definitely shorter than the first way. 1270 01:00:18,600 --> 01:00:20,350 And it definitely encapsulates everything, 1271 01:00:20,350 --> 01:00:22,774 by the Buchi Automata [INAUDIBLE] 1272 01:00:22,774 --> 01:00:26,040 Does anyone have any questions about that? 1273 01:00:26,040 --> 01:00:27,916 AUDIENCE: So you're changing the action then? 1274 01:00:27,916 --> 01:00:28,748 GUEST SPEAKER: Yeah. 1275 01:00:28,748 --> 01:00:30,220 You're changing the action but you 1276 01:00:30,220 --> 01:00:33,960 don't need make a new action for every state. 1277 01:00:33,960 --> 01:00:38,030 In the first formulation, let's say 1278 01:00:38,030 --> 01:00:40,799 I have some traditional action, like move blue block, 1279 01:00:40,799 --> 01:00:41,340 or something. 1280 01:00:41,340 --> 01:00:42,840 I have to create a move block action 1281 01:00:42,840 --> 01:00:44,790 for each one of these states because I 1282 01:00:44,790 --> 01:00:46,450 need to know exactly which transitions 1283 01:00:46,450 --> 01:00:47,747 I can take out of that action. 1284 01:00:47,747 --> 01:00:49,080 AUDIENCE: In the second example? 1285 01:00:49,080 --> 01:00:50,579 GUEST SPEAKER: And in the second one 1286 01:00:50,579 --> 01:00:52,710 I can just have one move block. 1287 01:00:52,710 --> 01:00:55,050 But in my move block I'll have a derived predicate 1288 01:00:55,050 --> 01:01:00,800 that tells me which state I'm in when I execute that action. 1289 01:01:05,280 --> 01:01:07,210 The number of actions you have to write 1290 01:01:07,210 --> 01:01:09,340 is less because you explicitly have 1291 01:01:09,340 --> 01:01:14,533 predicates that are telling you which state that you're in. 1292 01:01:14,533 --> 01:01:17,005 Now I'm going to hand it over to-- 1293 01:01:17,005 --> 01:01:19,254 if there are no more questions-- hand it over to Mark. 1294 01:01:19,254 --> 01:01:21,524 And he's going to talk about preferences. 1295 01:01:25,172 --> 01:01:27,697 MARK: We're getting a little low on time. 1296 01:01:27,697 --> 01:01:29,280 Now I'll transition to talking about-- 1297 01:01:29,280 --> 01:01:31,370 we talked about temporally extended goals. 1298 01:01:31,370 --> 01:01:34,230 We said that goals are things that always have to be true. 1299 01:01:34,230 --> 01:01:35,860 So now let's talk about preferences. 1300 01:01:35,860 --> 01:01:37,735 Preferences are things that don't necessarily 1301 01:01:37,735 --> 01:01:41,470 have to be true, but are things that you'd like to be true. 1302 01:01:41,470 --> 01:01:43,050 In the classical planning problem, 1303 01:01:43,050 --> 01:01:44,750 we can formulate it like that. 1304 01:01:44,750 --> 01:01:48,860 We can set a state S, set a state s0, a set of operators, 1305 01:01:48,860 --> 01:01:50,220 and a set of goal states. 1306 01:01:50,220 --> 01:01:52,980 The problem is transition from the initial states 1307 01:01:52,980 --> 01:01:53,880 and any state. 1308 01:01:53,880 --> 01:01:57,645 But those are goal states using the operators [INAUDIBLE] 1309 01:01:57,645 --> 01:01:59,020 Preference based planning problem 1310 01:01:59,020 --> 01:02:01,636 introduces a traditional field R, 1311 01:02:01,636 --> 01:02:05,840 which is a partial or total relation expressing preferences 1312 01:02:05,840 --> 01:02:06,942 between plans. 1313 01:02:06,942 --> 01:02:10,490 And this is a little preference symbol right there. 1314 01:02:10,490 --> 01:02:12,690 That tells you, if there are multiple plans 1315 01:02:12,690 --> 01:02:14,590 you need to accomplish your goal, 1316 01:02:14,590 --> 01:02:17,049 which one do you want to use. 1317 01:02:17,049 --> 01:02:18,590 And again, preferences are properties 1318 01:02:18,590 --> 01:02:20,506 that are desired but not necessarily required. 1319 01:02:23,740 --> 01:02:25,770 There are two [INAUDIBLE] different types 1320 01:02:25,770 --> 01:02:28,752 of preference languages, quantitative and qualitative. 1321 01:02:28,752 --> 01:02:31,120 As you would expect, in quantitative languages, 1322 01:02:31,120 --> 01:02:34,575 we actually assign a numeric value to the different plans 1323 01:02:34,575 --> 01:02:36,190 in order to compare them. 1324 01:02:36,190 --> 01:02:38,790 So these plans are a weight of four, and a weight of two, 1325 01:02:38,790 --> 01:02:40,740 and that tells you which one to prefer. 1326 01:02:40,740 --> 01:02:42,870 Here are some languages that do that. 1327 01:02:42,870 --> 01:02:45,150 For qualitative languages, they actually 1328 01:02:45,150 --> 01:02:48,420 just have a plan with this property 1329 01:02:48,420 --> 01:02:51,810 is preferred to this other plan with this property. 1330 01:02:51,810 --> 01:02:53,870 But we don't actually know any information that 1331 01:02:53,870 --> 01:02:55,993 knows how much we prefer one to the other, 1332 01:02:55,993 --> 01:02:56,951 or something like that. 1333 01:02:56,951 --> 01:02:59,326 An important element of this is when 1334 01:02:59,326 --> 01:03:02,250 you have quantitative languages, they're totally comparable. 1335 01:03:02,250 --> 01:03:04,350 Any two sets of plans you can determine 1336 01:03:04,350 --> 01:03:06,056 which one is preferred. 1337 01:03:06,056 --> 01:03:07,430 Whereas in qualitative languages, 1338 01:03:07,430 --> 01:03:09,638 you could have situations where plan one is preferred 1339 01:03:09,638 --> 01:03:11,940 to plan two, and plan one is also preferred to plan 3, 1340 01:03:11,940 --> 01:03:14,440 but that doesn't give you any information about whether plan 1341 01:03:14,440 --> 01:03:16,938 two is preferred to plan three. 1342 01:03:16,938 --> 01:03:21,210 So it's a little bit less expressive [INAUDIBLE].. 1343 01:03:21,210 --> 01:03:24,972 To go into how you actually express preferences in PDDL3, 1344 01:03:24,972 --> 01:03:26,930 like we talked about temporally extended goals, 1345 01:03:26,930 --> 01:03:29,800 there is a PDDL3 syntax to do this. 1346 01:03:29,800 --> 01:03:33,150 There's a preference label here that you can put on fluents 1347 01:03:33,150 --> 01:03:36,647 to represent things you prefer. 1348 01:03:36,647 --> 01:03:38,480 And then there's a function call is-violated 1349 01:03:38,480 --> 01:03:40,940 that essentially returns the number of times 1350 01:03:40,940 --> 01:03:43,990 that any fluent that has a preference label 1351 01:03:43,990 --> 01:03:45,960 was not satisfied in your plan. 1352 01:03:45,960 --> 01:03:47,707 For example, if you have a preference, 1353 01:03:47,707 --> 01:03:49,710 "Traffic light is green until it turns red." 1354 01:03:49,710 --> 01:03:51,620 Here's our PDDL3 template. 1355 01:03:51,620 --> 01:03:54,378 It extended this kid's preference, 1356 01:03:54,378 --> 01:03:57,030 in which we label it with a preference label here. 1357 01:03:57,030 --> 01:03:58,830 And this is just a name. 1358 01:03:58,830 --> 01:04:02,710 And then or plan tries to minimize the number of times 1359 01:04:02,710 --> 01:04:04,990 that this preference is violated. 1360 01:04:04,990 --> 01:04:08,460 That's one way to express preferences directly in PDDL3. 1361 01:04:11,530 --> 01:04:13,950 So now we talk about LDP. 1362 01:04:13,950 --> 01:04:16,620 LDP is a different language that is 1363 01:04:16,620 --> 01:04:18,980 quite expressive in terms of types of preferences 1364 01:04:18,980 --> 01:04:20,390 you can represent. 1365 01:04:20,390 --> 01:04:22,210 It is a quantitative language, which 1366 01:04:22,210 --> 01:04:25,660 means we're going to have weights for each of our plans 1367 01:04:25,660 --> 01:04:26,999 to express our preferences. 1368 01:04:26,999 --> 01:04:29,290 We can actually express the strength of the preference. 1369 01:04:29,290 --> 01:04:33,736 So Goal A is preferred twice or three times as much as Goal B. 1370 01:04:33,736 --> 01:04:36,456 It's an extension of an older language named PP. 1371 01:04:36,456 --> 01:04:39,133 Here is the paper if you want to actually check out 1372 01:04:39,133 --> 01:04:41,060 these details. 1373 01:04:41,060 --> 01:04:43,180 The formulas are constructed hierarchically. 1374 01:04:43,180 --> 01:04:45,920 I'll go through quickly how we actually construct 1375 01:04:45,920 --> 01:04:47,670 these preference formulas. 1376 01:04:47,670 --> 01:04:51,230 The lowest level is called a Basic Design Formula, or BDF. 1377 01:04:51,230 --> 01:04:53,130 That just expresses our temporally extended 1378 01:04:53,130 --> 01:04:53,810 proposition. 1379 01:04:53,810 --> 01:04:55,645 So this is just a straight up LTL, 1380 01:04:55,645 --> 01:04:57,436 basically, that we saw in the first section 1381 01:04:57,436 --> 01:04:58,404 of the presentation. 1382 01:04:58,404 --> 01:05:00,070 I'm going to use that I'm cooking dinner 1383 01:05:00,070 --> 01:05:02,170 example for these slides. 1384 01:05:02,170 --> 01:05:04,610 In this case, we always use the future operators. 1385 01:05:04,610 --> 01:05:07,040 At some point, I might want to cook this program plan. 1386 01:05:07,040 --> 01:05:10,160 Maybe I want to order takeout to eat dinner. 1387 01:05:10,160 --> 01:05:12,770 And then I have some eating spaghetti or eating pizza. 1388 01:05:12,770 --> 01:05:14,470 Those are two different things, two different options 1389 01:05:14,470 --> 01:05:15,678 that I could have in my plan. 1390 01:05:15,678 --> 01:05:17,481 I don't have to have either of those. 1391 01:05:17,481 --> 01:05:19,766 Those are just options that I could have. 1392 01:05:19,766 --> 01:05:21,070 That's the lowest level. 1393 01:05:21,070 --> 01:05:24,590 The next level is called Atomic Preference Formulas, or APFs. 1394 01:05:24,590 --> 01:05:27,670 There are where we express our preferences between the BDFs 1395 01:05:27,670 --> 01:05:29,920 that we formed in the previous slide. 1396 01:05:29,920 --> 01:05:31,729 So in this example I'm using weight, 1397 01:05:31,729 --> 01:05:33,270 specifically to represent preference, 1398 01:05:33,270 --> 01:05:35,870 with lower weight being preferred. 1399 01:05:35,870 --> 01:05:39,292 Here we're saying, we prefer to cook over ordering takeout. 1400 01:05:39,292 --> 01:05:40,750 This is you where you have to cook, 1401 01:05:40,750 --> 01:05:42,748 this is where you have to order takeout. 1402 01:05:42,748 --> 01:05:45,496 And we apply weights to those two expressions. 1403 01:05:45,496 --> 01:05:47,120 The first one's preferred, and how much 1404 01:05:47,120 --> 01:05:49,214 it is preferred over this plan. 1405 01:05:49,214 --> 01:05:53,794 And here is you prefer to eat spaghetti over eating pizza. 1406 01:05:53,794 --> 01:05:55,150 So that's the second level. 1407 01:05:55,150 --> 01:05:59,060 Third levels called General Purpose Formulas, or GPS. 1408 01:05:59,060 --> 01:06:01,420 These are where we can do conjunctions or disjunctions, 1409 01:06:01,420 --> 01:06:04,200 or qualification of our previous formulas. 1410 01:06:04,200 --> 01:06:07,110 So for example, if we want to say-- 1411 01:06:07,110 --> 01:06:09,093 because in the previous slides we had two APFs. 1412 01:06:09,093 --> 01:06:13,217 We had prefer to cook and prefer to eat spaghetti. 1413 01:06:13,217 --> 01:06:14,800 And here we can express that we really 1414 01:06:14,800 --> 01:06:19,040 don't care which one of these we want to satisfy. 1415 01:06:19,040 --> 01:06:20,540 You can think of this as we actually 1416 01:06:20,540 --> 01:06:23,010 tried to satisfy APF at the lowest weight. 1417 01:06:23,010 --> 01:06:25,114 So if we have this "or" operating here, 1418 01:06:25,114 --> 01:06:27,405 that means that our planner is going to try and satisfy 1419 01:06:27,405 --> 01:06:29,515 the lowest weight among all these different options here, 1420 01:06:29,515 --> 01:06:31,570 which means that he doesn't prefer to cook. 1421 01:06:31,570 --> 01:06:33,610 That's its first goal. 1422 01:06:33,610 --> 01:06:36,510 You can also use a handoff rigor, for example. 1423 01:06:36,510 --> 01:06:38,620 And that's going to minimize the maximum weight 1424 01:06:38,620 --> 01:06:40,160 against both of those options. 1425 01:06:40,160 --> 01:06:42,076 Basically, what's it going to try and do-- 1426 01:06:42,076 --> 01:06:44,230 oops-- what it's going to try and do 1427 01:06:44,230 --> 01:06:47,600 is minimize the highest weight among these two options. 1428 01:06:47,600 --> 01:06:52,059 So it's going to try and cook, and then it's 1429 01:06:52,059 --> 01:06:53,850 going to try and eat spaghetti versus doing 1430 01:06:53,850 --> 01:06:54,683 these other options. 1431 01:06:58,100 --> 01:07:00,020 So those are GPFs. 1432 01:07:00,020 --> 01:07:02,616 I'm now moving on to Aggregated Preference Formulas, which 1433 01:07:02,616 --> 01:07:04,380 are the highest level. 1434 01:07:04,380 --> 01:07:07,232 So with APFs, these define the order 1435 01:07:07,232 --> 01:07:09,190 in which our different preferences are relaxed. 1436 01:07:09,190 --> 01:07:10,965 You can, of course, express a lot of different preferences 1437 01:07:10,965 --> 01:07:13,000 for your planner, but not all of them 1438 01:07:13,000 --> 01:07:14,670 may be achievable, especially if you're 1439 01:07:14,670 --> 01:07:17,170 trying to achieve a large number of preferences at the same. 1440 01:07:17,170 --> 01:07:20,250 You may not actually be able to achieve all of those. 1441 01:07:20,250 --> 01:07:23,670 So how do we produce our set in the correct order, 1442 01:07:23,670 --> 01:07:25,980 in the preferred order so that our plan we end up with 1443 01:07:25,980 --> 01:07:28,640 isn't even the most preferred plan? 1444 01:07:28,640 --> 01:07:31,050 That's what APFs like to do. 1445 01:07:31,050 --> 01:07:36,744 You can express, using this preference operator. 1446 01:07:36,744 --> 01:07:38,660 First, I want to try and satisfy both of these 1447 01:07:38,660 --> 01:07:40,550 in the previous slide. 1448 01:07:40,550 --> 01:07:43,620 Then if I can't, I want to relax it so I only satisfy G2. 1449 01:07:43,620 --> 01:07:45,250 And then if I can't do that, then I 1450 01:07:45,250 --> 01:07:47,450 want to relax it so I only try and satisfy G1. 1451 01:07:47,450 --> 01:07:50,760 So that gives us the order in which things are relaxed. 1452 01:07:50,760 --> 01:07:53,456 It's important here that if you have these situations where 1453 01:07:53,456 --> 01:07:55,080 you can't distinguish from one another, 1454 01:07:55,080 --> 01:07:57,390 or you don't really care, we can establish some order. 1455 01:07:57,390 --> 01:08:00,300 So at the very lowest type of level, 1456 01:08:00,300 --> 01:08:02,425 we can sort them alphabetically, or something, just 1457 01:08:02,425 --> 01:08:04,141 to provide some sort of order. 1458 01:08:08,280 --> 01:08:11,330 This is just a review of what I've been talking about. 1459 01:08:11,330 --> 01:08:13,590 BDFs are the lowest level, which express 1460 01:08:13,590 --> 01:08:15,425 temporally extended propositions. 1461 01:08:15,425 --> 01:08:18,840 We can apply preference to those using APFs. 1462 01:08:18,840 --> 01:08:25,470 Then we can combine or join APFs using tell preference formulas. 1463 01:08:25,470 --> 01:08:29,210 And finally, we can aggregate those preference formulas 1464 01:08:29,210 --> 01:08:31,630 to determine the order in which you shouldn't 1465 01:08:31,630 --> 01:08:35,810 relax the propositions to allow yourself to plan it right. 1466 01:08:35,810 --> 01:08:39,260 So using this scheme in LPP, we're 1467 01:08:39,260 --> 01:08:43,224 using both LTL syntax and rules that we talked about 1468 01:08:43,224 --> 01:08:45,439 in the first section to express temporally extended 1469 01:08:45,439 --> 01:08:46,750 preferences. 1470 01:08:46,750 --> 01:08:50,222 The plans that's actually used to solve these types 1471 01:08:50,222 --> 01:08:51,830 of problems is called P Plan. 1472 01:08:51,830 --> 01:08:54,288 P Plans can actually handle templates, and the preferences, 1473 01:08:54,288 --> 01:08:55,750 and a goal at the end, as well. 1474 01:08:55,750 --> 01:08:58,281 And it does basically a best first search 1475 01:08:58,281 --> 01:08:59,656 among all your different options. 1476 01:08:59,656 --> 01:09:02,114 It's actually one of the planner that uses the left branch. 1477 01:09:02,114 --> 01:09:04,700 But the one we showed uses progression to take 1478 01:09:04,700 --> 01:09:06,947 LTL formulas at each point in the plan 1479 01:09:06,947 --> 01:09:09,155 and determine whether you've satisfied those formulas 1480 01:09:09,155 --> 01:09:09,655 or not. 1481 01:09:09,655 --> 01:09:12,774 And if not, it will push them to the next state, 1482 01:09:12,774 --> 01:09:15,149 so that in the next state you can evaluate whether you've 1483 01:09:15,149 --> 01:09:16,460 satisfied those formulas. 1484 01:09:16,460 --> 01:09:19,119 That's how it prunes the search space 1485 01:09:19,119 --> 01:09:21,819 and tries to always find the most preferred plan to meet 1486 01:09:21,819 --> 01:09:24,290 your goal. 1487 01:09:24,290 --> 01:09:25,670 All right. 1488 01:09:25,670 --> 01:09:28,500 So that's our presentation. 1489 01:09:28,500 --> 01:09:29,990 Any questions from anyone? 1490 01:09:35,974 --> 01:09:37,265 AUDIENCE: [INAUDIBLE] question. 1491 01:09:37,265 --> 01:09:39,760 I have a question about [INAUDIBLE] presentation. 1492 01:09:39,760 --> 01:09:43,819 You guys [INAUDIBLE] and then believes omega. 1493 01:09:43,819 --> 01:09:46,688 Would you say that omega has to hold 1494 01:09:46,688 --> 01:09:52,390 if p happens, and they have a conjunction in one state? 1495 01:09:52,390 --> 01:09:55,620 ELLIE: Omega doesn't have to hold until we [INAUDIBLE].. 1496 01:09:55,620 --> 01:09:59,250 Omega just has to hold at the last state of p. 1497 01:09:59,250 --> 01:10:02,270 Essentially what it's saying is omega releases p. 1498 01:10:02,270 --> 01:10:05,890 So once omega happened, p has to happen at the state. 1499 01:10:05,890 --> 01:10:07,940 And the omega has to release p. 1500 01:10:07,940 --> 01:10:10,280 Now it happens, so p, you can don't you want. 1501 01:10:10,280 --> 01:10:12,454 You can be true, you can be false. 1502 01:10:12,454 --> 01:10:13,120 AUDIENCE: Sorry. 1503 01:10:13,120 --> 01:10:16,722 So p has to hold until omega happens. 1504 01:10:16,722 --> 01:10:17,222 ELLIE: Yep. 1505 01:10:17,222 --> 01:10:18,190 And then omega-- 1506 01:10:18,190 --> 01:10:19,160 [INTERPOSING VOICES] 1507 01:10:19,160 --> 01:10:22,847 AUDIENCE: So the definition is just switched to p [INAUDIBLE].. 1508 01:10:22,847 --> 01:10:24,007 ELLIE: This is an occasion. 1509 01:10:24,007 --> 01:10:25,340 Occasionally, you have pR omega. 1510 01:10:29,384 --> 01:10:30,814 But like intuitively-- 1511 01:10:30,814 --> 01:10:32,522 AUDIENCE: It's just the definition-- oh-- 1512 01:10:32,522 --> 01:10:33,775 [INTERPOSING VOICES] 1513 01:10:33,775 --> 01:10:35,900 AUDIENCE: That's all I was wondering because then I 1514 01:10:35,900 --> 01:10:36,790 saw that and it was confusing. 1515 01:10:36,790 --> 01:10:37,457 So that's all. 1516 01:10:37,457 --> 01:10:37,959 OK, sorry. 1517 01:10:37,959 --> 01:10:38,750 ELLIE: That's fine. 1518 01:10:44,830 --> 01:10:48,540 MARK: Any other questions? 1519 01:10:48,540 --> 01:10:50,580 AUDIENCE: Since there are multiple ways 1520 01:10:50,580 --> 01:10:57,125 to express the same formula using the grammar, is there 1521 01:10:57,125 --> 01:11:02,330 any notion of canonical forms, or a least complicated form, 1522 01:11:02,330 --> 01:11:03,626 or something like that? 1523 01:11:03,626 --> 01:11:04,810 MARK: Yeah, there is. 1524 01:11:04,810 --> 01:11:10,560 Typically they actually-- let me find the slide. 1525 01:11:10,560 --> 01:11:14,690 So to simplify the algorithms they typically apply 1526 01:11:14,690 --> 01:11:16,812 the kind of reductions that we showed in the slide 1527 01:11:16,812 --> 01:11:18,395 to reduce the release and the globally 1528 01:11:18,395 --> 01:11:20,882 and the future down to just the [INAUDIBLE] of an x. 1529 01:11:20,882 --> 01:11:22,465 Otherwise, your algorithms going to be 1530 01:11:22,465 --> 01:11:24,831 able to handle fewer cases. 1531 01:11:24,831 --> 01:11:26,330 And then they apply the usual rules, 1532 01:11:26,330 --> 01:11:28,246 trying to push nots out to the left-hand side. 1533 01:11:40,760 --> 01:11:41,852 All right. 1534 01:11:41,852 --> 01:11:42,560 Thanks, everyone. 1535 01:11:42,560 --> 01:11:44,410 [APPLAUSE]