-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlogic_program.txt
More file actions
386 lines (386 loc) · 15.8 KB
/
logic_program.txt
File metadata and controls
386 lines (386 loc) · 15.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
:- violatesRule(car1, stopAtSign).
laneFromTo(road415_lane1, road8_lane1, road9_lane1).
laneFromTo(road507_lane0, road8_lane1, road44_lane2).
laneFromTo(road415_lane0, road8_lane0, road9_lane0).
laneFromTo(road489_lane0, road8_lane0, road45_lane0).
laneFromTo(road416_lane1, road9_lane3, road8_lane3).
laneFromTo(road476_lane0, road9_lane3, road44_lane3).
laneFromTo(road416_lane0, road9_lane2, road8_lane2).
laneFromTo(road455_lane0, road9_lane2, road45_lane1).
laneFromTo(road444_lane0, road45_lane3, road9_lane0).
laneFromTo(road553_lane1, road45_lane3, road44_lane3).
laneFromTo(road467_lane0, road44_lane1, road9_lane1).
laneFromTo(road552_lane1, road44_lane1, road45_lane1).
laneFromTo(road481_lane0, road45_lane2, road8_lane2).
laneFromTo(road553_lane0, road45_lane2, road44_lane2).
laneFromTo(road499_lane0, road44_lane0, road8_lane3).
laneFromTo(road552_lane0, road44_lane0, road45_lane0).
laneCorrectSignal(road415_lane1, off).
laneCorrectSignal(road507_lane0, left).
laneCorrectSignal(road415_lane0, off).
laneCorrectSignal(road489_lane0, right).
laneCorrectSignal(road416_lane1, off).
laneCorrectSignal(road476_lane0, right).
laneCorrectSignal(road416_lane0, off).
laneCorrectSignal(road455_lane0, left).
laneCorrectSignal(road444_lane0, right).
laneCorrectSignal(road553_lane1, off).
laneCorrectSignal(road467_lane0, left).
laneCorrectSignal(road552_lane1, off).
laneCorrectSignal(road481_lane0, left).
laneCorrectSignal(road553_lane0, off).
laneCorrectSignal(road499_lane0, right).
laneCorrectSignal(road552_lane0, off).
overlaps(road415_lane1, road415_lane1).
overlaps(road415_lane1, road507_lane0).
overlaps(road507_lane0, road415_lane1).
overlaps(road415_lane1, road415_lane0).
overlaps(road415_lane0, road415_lane1).
overlaps(road415_lane1, road489_lane0).
overlaps(road489_lane0, road415_lane1).
overlaps(road415_lane1, road416_lane0).
overlaps(road416_lane0, road415_lane1).
overlaps(road415_lane1, road455_lane0).
overlaps(road455_lane0, road415_lane1).
overlaps(road415_lane1, road553_lane1).
overlaps(road553_lane1, road415_lane1).
overlaps(road415_lane1, road467_lane0).
overlaps(road467_lane0, road415_lane1).
overlaps(road415_lane1, road552_lane1).
overlaps(road552_lane1, road415_lane1).
overlaps(road415_lane1, road481_lane0).
overlaps(road481_lane0, road415_lane1).
overlaps(road415_lane1, road553_lane0).
overlaps(road553_lane0, road415_lane1).
overlaps(road415_lane1, road552_lane0).
overlaps(road552_lane0, road415_lane1).
overlaps(road507_lane0, road507_lane0).
overlaps(road507_lane0, road416_lane1).
overlaps(road416_lane1, road507_lane0).
overlaps(road507_lane0, road416_lane0).
overlaps(road416_lane0, road507_lane0).
overlaps(road507_lane0, road553_lane1).
overlaps(road553_lane1, road507_lane0).
overlaps(road507_lane0, road467_lane0).
overlaps(road467_lane0, road507_lane0).
overlaps(road507_lane0, road552_lane1).
overlaps(road552_lane1, road507_lane0).
overlaps(road507_lane0, road481_lane0).
overlaps(road481_lane0, road507_lane0).
overlaps(road507_lane0, road553_lane0).
overlaps(road553_lane0, road507_lane0).
overlaps(road507_lane0, road552_lane0).
overlaps(road552_lane0, road507_lane0).
overlaps(road415_lane0, road415_lane0).
overlaps(road415_lane0, road489_lane0).
overlaps(road489_lane0, road415_lane0).
overlaps(road415_lane0, road455_lane0).
overlaps(road455_lane0, road415_lane0).
overlaps(road415_lane0, road444_lane0).
overlaps(road444_lane0, road415_lane0).
overlaps(road415_lane0, road553_lane1).
overlaps(road553_lane1, road415_lane0).
overlaps(road415_lane0, road467_lane0).
overlaps(road467_lane0, road415_lane0).
overlaps(road415_lane0, road552_lane1).
overlaps(road552_lane1, road415_lane0).
overlaps(road415_lane0, road481_lane0).
overlaps(road481_lane0, road415_lane0).
overlaps(road415_lane0, road553_lane0).
overlaps(road553_lane0, road415_lane0).
overlaps(road415_lane0, road552_lane0).
overlaps(road552_lane0, road415_lane0).
overlaps(road489_lane0, road489_lane0).
overlaps(road489_lane0, road552_lane1).
overlaps(road552_lane1, road489_lane0).
overlaps(road489_lane0, road552_lane0).
overlaps(road552_lane0, road489_lane0).
overlaps(road416_lane1, road416_lane1).
overlaps(road416_lane1, road476_lane0).
overlaps(road476_lane0, road416_lane1).
overlaps(road416_lane1, road416_lane0).
overlaps(road416_lane0, road416_lane1).
overlaps(road416_lane1, road455_lane0).
overlaps(road455_lane0, road416_lane1).
overlaps(road416_lane1, road553_lane1).
overlaps(road553_lane1, road416_lane1).
overlaps(road416_lane1, road467_lane0).
overlaps(road467_lane0, road416_lane1).
overlaps(road416_lane1, road552_lane1).
overlaps(road552_lane1, road416_lane1).
overlaps(road416_lane1, road481_lane0).
overlaps(road481_lane0, road416_lane1).
overlaps(road416_lane1, road553_lane0).
overlaps(road553_lane0, road416_lane1).
overlaps(road416_lane1, road499_lane0).
overlaps(road499_lane0, road416_lane1).
overlaps(road416_lane1, road552_lane0).
overlaps(road552_lane0, road416_lane1).
overlaps(road476_lane0, road476_lane0).
overlaps(road476_lane0, road416_lane0).
overlaps(road416_lane0, road476_lane0).
overlaps(road476_lane0, road553_lane1).
overlaps(road553_lane1, road476_lane0).
overlaps(road416_lane0, road416_lane0).
overlaps(road416_lane0, road455_lane0).
overlaps(road455_lane0, road416_lane0).
overlaps(road416_lane0, road553_lane1).
overlaps(road553_lane1, road416_lane0).
overlaps(road416_lane0, road467_lane0).
overlaps(road467_lane0, road416_lane0).
overlaps(road416_lane0, road552_lane1).
overlaps(road552_lane1, road416_lane0).
overlaps(road416_lane0, road481_lane0).
overlaps(road481_lane0, road416_lane0).
overlaps(road416_lane0, road553_lane0).
overlaps(road553_lane0, road416_lane0).
overlaps(road416_lane0, road552_lane0).
overlaps(road552_lane0, road416_lane0).
overlaps(road455_lane0, road455_lane0).
overlaps(road455_lane0, road553_lane1).
overlaps(road553_lane1, road455_lane0).
overlaps(road455_lane0, road467_lane0).
overlaps(road467_lane0, road455_lane0).
overlaps(road455_lane0, road552_lane1).
overlaps(road552_lane1, road455_lane0).
overlaps(road455_lane0, road481_lane0).
overlaps(road481_lane0, road455_lane0).
overlaps(road455_lane0, road553_lane0).
overlaps(road553_lane0, road455_lane0).
overlaps(road455_lane0, road552_lane0).
overlaps(road552_lane0, road455_lane0).
overlaps(road444_lane0, road444_lane0).
overlaps(road444_lane0, road553_lane1).
overlaps(road553_lane1, road444_lane0).
overlaps(road444_lane0, road481_lane0).
overlaps(road481_lane0, road444_lane0).
overlaps(road553_lane1, road553_lane1).
overlaps(road553_lane1, road467_lane0).
overlaps(road467_lane0, road553_lane1).
overlaps(road553_lane1, road553_lane0).
overlaps(road553_lane0, road553_lane1).
overlaps(road467_lane0, road467_lane0).
overlaps(road467_lane0, road552_lane1).
overlaps(road552_lane1, road467_lane0).
overlaps(road467_lane0, road553_lane0).
overlaps(road553_lane0, road467_lane0).
overlaps(road467_lane0, road552_lane0).
overlaps(road552_lane0, road467_lane0).
overlaps(road552_lane1, road552_lane1).
overlaps(road552_lane1, road481_lane0).
overlaps(road481_lane0, road552_lane1).
overlaps(road552_lane1, road553_lane0).
overlaps(road553_lane0, road552_lane1).
overlaps(road552_lane1, road552_lane0).
overlaps(road552_lane0, road552_lane1).
overlaps(road481_lane0, road481_lane0).
overlaps(road481_lane0, road553_lane0).
overlaps(road553_lane0, road481_lane0).
overlaps(road481_lane0, road552_lane0).
overlaps(road552_lane0, road481_lane0).
overlaps(road553_lane0, road553_lane0).
overlaps(road499_lane0, road499_lane0).
overlaps(road499_lane0, road552_lane0).
overlaps(road552_lane0, road499_lane0).
overlaps(road552_lane0, road552_lane0).
isOnRightOf(road8_lane1, road44_lane1).
isOnRightOf(road8_lane0, road44_lane1).
isOnRightOf(road8_lane1, road44_lane0).
isOnRightOf(road8_lane0, road44_lane0).
isOnRightOf(road45_lane2, road8_lane1).
isOnRightOf(road45_lane3, road8_lane1).
isOnRightOf(road45_lane2, road8_lane0).
isOnRightOf(road45_lane3, road8_lane0).
isOnRightOf(road9_lane2, road45_lane2).
isOnRightOf(road9_lane3, road45_lane2).
isOnRightOf(road9_lane2, road45_lane3).
isOnRightOf(road9_lane3, road45_lane3).
isOnRightOf(road44_lane1, road9_lane2).
isOnRightOf(road44_lane0, road9_lane2).
isOnRightOf(road44_lane1, road9_lane3).
isOnRightOf(road44_lane0, road9_lane3).
hasStopSign(road9_lane2).
hasStopSign(road9_lane3).
realLTE(S, T) :- lessThan(S, T).
:- lessThan(S, T), realLTE(T, S).
realLTE(S, T) :- equal(S, T).
realLTE(T, S) :- equal(S, T).
:- lessThan(S, T), equal(S, T).
:- lessThan(S, T), equal(T, S).
realLTE(T1, T3) :- realLTE(T1, T2), realLTE(T2, T3).
:- realLTE(T1, T2), realLTE(T2, T1), T1 != T2, not equal(T1, T2), not equal(T2, T1).
arrivedAtForkAtTime(ego, road9_lane2, t_ego_0).
signaledAtForkAtTime(ego, left, road9_lane2, t_ego_0).
enteredForkAtTime(ego, road9_lane2, t_ego_1).
enteredLaneAtTime(ego, road416_lane0, t_ego_1).
enteredLaneAtTime(ego, road455_lane0, t_ego_1).
enteredLaneAtTime(ego, road553_lane1, t_ego_2).
enteredLaneAtTime(ego, road467_lane0, t_ego_2).
enteredLaneAtTime(ego, road415_lane1, t_ego_3).
enteredLaneAtTime(ego, road553_lane0, t_ego_4).
enteredLaneAtTime(ego, road415_lane0, t_ego_5).
enteredLaneAtTime(ego, road552_lane1, t_ego_6).
enteredLaneAtTime(ego, road481_lane0, t_ego_6).
leftLaneAtTime(ego, road416_lane0, t_ego_7).
leftLaneAtTime(ego, road553_lane1, t_ego_8).
leftLaneAtTime(ego, road467_lane0, t_ego_9).
leftLaneAtTime(ego, road415_lane1, t_ego_10).
leftLaneAtTime(ego, road553_lane0, t_ego_11).
leftLaneAtTime(ego, road415_lane0, t_ego_12).
leftLaneAtTime(ego, road481_lane0, t_ego_13).
exitedFromAtTime(ego, road45_lane1, t_ego_14).
leftLaneAtTime(ego, road455_lane0, t_ego_14).
leftLaneAtTime(ego, road552_lane1, t_ego_14).
arrivedAtForkAtTime(car1, road45_lane3, t_car1_0).
signaledAtForkAtTime(car1, off, road45_lane3, t_car1_0).
enteredForkAtTime(car1, road45_lane3, t_car1_1).
enteredLaneAtTime(car1, road444_lane0, t_car1_1).
enteredLaneAtTime(car1, road553_lane1, t_car1_1).
enteredLaneAtTime(car1, road415_lane0, t_car1_2).
enteredLaneAtTime(car1, road415_lane1, t_car1_3).
enteredLaneAtTime(car1, road467_lane0, t_car1_4).
enteredLaneAtTime(car1, road455_lane0, t_car1_5).
enteredLaneAtTime(car1, road416_lane0, t_car1_6).
leftLaneAtTime(car1, road444_lane0, t_car1_6).
leftLaneAtTime(car1, road415_lane0, t_car1_7).
enteredLaneAtTime(car1, road416_lane1, t_car1_8).
enteredLaneAtTime(car1, road476_lane0, t_car1_9).
leftLaneAtTime(car1, road415_lane1, t_car1_10).
leftLaneAtTime(car1, road467_lane0, t_car1_11).
leftLaneAtTime(car1, road455_lane0, t_car1_12).
leftLaneAtTime(car1, road416_lane0, t_car1_13).
leftLaneAtTime(car1, road416_lane1, t_car1_14).
exitedFromAtTime(car1, road44_lane3, t_car1_15).
leftLaneAtTime(car1, road476_lane0, t_car1_15).
leftLaneAtTime(car1, road553_lane1, t_car1_15).
arrivedAtForkAtTime(illegal, road9_lane2, t_illegal_0).
signaledAtForkAtTime(illegal, left, road9_lane2, t_illegal_0).
enteredForkAtTime(illegal, road9_lane2, t_illegal_1).
enteredLaneAtTime(illegal, road416_lane0, t_illegal_1).
enteredLaneAtTime(illegal, road455_lane0, t_illegal_1).
enteredLaneAtTime(illegal, road553_lane1, t_illegal_2).
enteredLaneAtTime(illegal, road467_lane0, t_illegal_2).
enteredLaneAtTime(illegal, road415_lane1, t_illegal_3).
enteredLaneAtTime(illegal, road553_lane0, t_illegal_4).
enteredLaneAtTime(illegal, road415_lane0, t_illegal_5).
enteredLaneAtTime(illegal, road552_lane1, t_illegal_6).
enteredLaneAtTime(illegal, road481_lane0, t_illegal_6).
leftLaneAtTime(illegal, road416_lane0, t_illegal_7).
leftLaneAtTime(illegal, road553_lane1, t_illegal_8).
leftLaneAtTime(illegal, road467_lane0, t_illegal_9).
leftLaneAtTime(illegal, road415_lane1, t_illegal_10).
leftLaneAtTime(illegal, road553_lane0, t_illegal_11).
leftLaneAtTime(illegal, road415_lane0, t_illegal_12).
leftLaneAtTime(illegal, road481_lane0, t_illegal_13).
exitedFromAtTime(illegal, road45_lane1, t_illegal_14).
leftLaneAtTime(illegal, road455_lane0, t_illegal_14).
leftLaneAtTime(illegal, road552_lane1, t_illegal_14).
realLTE(t_ego_0, t_ego_1).
:- realLTE(t_ego_1, t_ego_0).
realLTE(t_ego_1, t_ego_2).
:- realLTE(t_ego_2, t_ego_1).
realLTE(t_ego_2, t_ego_3).
:- realLTE(t_ego_3, t_ego_2).
realLTE(t_ego_3, t_ego_4).
:- realLTE(t_ego_4, t_ego_3).
realLTE(t_ego_4, t_ego_5).
:- realLTE(t_ego_5, t_ego_4).
realLTE(t_ego_5, t_ego_6).
:- realLTE(t_ego_6, t_ego_5).
realLTE(t_ego_6, t_ego_7).
:- realLTE(t_ego_7, t_ego_6).
realLTE(t_ego_7, t_ego_8).
:- realLTE(t_ego_8, t_ego_7).
realLTE(t_ego_8, t_ego_9).
:- realLTE(t_ego_9, t_ego_8).
realLTE(t_ego_9, t_ego_10).
:- realLTE(t_ego_10, t_ego_9).
realLTE(t_ego_10, t_ego_11).
:- realLTE(t_ego_11, t_ego_10).
realLTE(t_ego_11, t_ego_12).
:- realLTE(t_ego_12, t_ego_11).
realLTE(t_ego_12, t_ego_13).
:- realLTE(t_ego_13, t_ego_12).
realLTE(t_ego_13, t_ego_14).
:- realLTE(t_ego_14, t_ego_13).
realLTE(t_car1_0, t_car1_1).
:- realLTE(t_car1_1, t_car1_0).
realLTE(t_car1_1, t_car1_2).
:- realLTE(t_car1_2, t_car1_1).
realLTE(t_car1_2, t_car1_3).
:- realLTE(t_car1_3, t_car1_2).
realLTE(t_car1_3, t_car1_4).
:- realLTE(t_car1_4, t_car1_3).
realLTE(t_car1_4, t_car1_5).
:- realLTE(t_car1_5, t_car1_4).
realLTE(t_car1_5, t_car1_6).
:- realLTE(t_car1_6, t_car1_5).
realLTE(t_car1_6, t_car1_7).
:- realLTE(t_car1_7, t_car1_6).
realLTE(t_car1_7, t_car1_8).
:- realLTE(t_car1_8, t_car1_7).
realLTE(t_car1_8, t_car1_9).
:- realLTE(t_car1_9, t_car1_8).
realLTE(t_car1_9, t_car1_10).
:- realLTE(t_car1_10, t_car1_9).
realLTE(t_car1_10, t_car1_11).
:- realLTE(t_car1_11, t_car1_10).
realLTE(t_car1_11, t_car1_12).
:- realLTE(t_car1_12, t_car1_11).
realLTE(t_car1_12, t_car1_13).
:- realLTE(t_car1_13, t_car1_12).
realLTE(t_car1_13, t_car1_14).
:- realLTE(t_car1_14, t_car1_13).
realLTE(t_car1_14, t_car1_15).
:- realLTE(t_car1_15, t_car1_14).
realLTE(t_illegal_0, t_illegal_1).
:- realLTE(t_illegal_1, t_illegal_0).
realLTE(t_illegal_1, t_illegal_2).
:- realLTE(t_illegal_2, t_illegal_1).
realLTE(t_illegal_2, t_illegal_3).
:- realLTE(t_illegal_3, t_illegal_2).
realLTE(t_illegal_3, t_illegal_4).
:- realLTE(t_illegal_4, t_illegal_3).
realLTE(t_illegal_4, t_illegal_5).
:- realLTE(t_illegal_5, t_illegal_4).
realLTE(t_illegal_5, t_illegal_6).
:- realLTE(t_illegal_6, t_illegal_5).
realLTE(t_illegal_6, t_illegal_7).
:- realLTE(t_illegal_7, t_illegal_6).
realLTE(t_illegal_7, t_illegal_8).
:- realLTE(t_illegal_8, t_illegal_7).
realLTE(t_illegal_8, t_illegal_9).
:- realLTE(t_illegal_9, t_illegal_8).
realLTE(t_illegal_9, t_illegal_10).
:- realLTE(t_illegal_10, t_illegal_9).
realLTE(t_illegal_10, t_illegal_11).
:- realLTE(t_illegal_11, t_illegal_10).
realLTE(t_illegal_11, t_illegal_12).
:- realLTE(t_illegal_12, t_illegal_11).
realLTE(t_illegal_12, t_illegal_13).
:- realLTE(t_illegal_13, t_illegal_12).
realLTE(t_illegal_13, t_illegal_14).
:- realLTE(t_illegal_14, t_illegal_13).
#script(python)
import clingo
sym2val = {}
def lessThan(S, T):
lt = sym2val[S.name] + 10 < sym2val[T.name]
return clingo.Number(1) if lt else clingo.Number(0)
def equal(S, T):
eq = abs(sym2val[S.name] - sym2val[T.name]) < 10
return clingo.Number(1) if eq else clingo.Number(0)
#end.
:- V != illegal, violatesRightOf(ego, V).
:- violatesRule(ego, _).
:- not violatesRightOf(illegal, car1).
:- violatesRule(illegal, _).
#script(python)
import clingo
def time(V, Pred, Tm, TM):
t = V.name + Pred.name + Tm.name + TM.name
return clingo.Function(t, [])
#end.
#count {0:stoppedAtForkAtTime(car1, F, @time(car1, stop, T1, T2)); 1:lessThan(T1, @time(car1, stop, T1, T2)); 2:lessThan(@time(car1, stop, T1, T2), T2) } = 3 :-arrivedAtForkAtTime(car1, F, T1),hasStopSign(F),enteredForkAtTime(car1, F, T2),not violatesRule(car1, stopAtSign).
#count {0:stoppedAtForkAtTime(ego, F, @time(ego, stop, T1, T2)); 1:lessThan(T1, @time(ego, stop, T1, T2)); 2:lessThan(@time(ego, stop, T1, T2), T2) } = 3 :-arrivedAtForkAtTime(ego, F, T1),hasStopSign(F),enteredForkAtTime(ego, F, T2),not violatesRule(ego, stopAtSign).
#count {0:stoppedAtForkAtTime(illegal, F, @time(illegal, stop, T1, T2)); 1:lessThan(T1, @time(illegal, stop, T1, T2)); 2:lessThan(@time(illegal, stop, T1, T2), T2) } = 3 :-arrivedAtForkAtTime(illegal, F, T1),hasStopSign(F),enteredForkAtTime(illegal, F, T2),not violatesRule(illegal, stopAtSign).