WEBVTT
Kind: captions
Language: en

00:00:00.000 --> 00:00:04.350 align:start position:0%
 
foreign

00:00:04.350 --> 00:00:04.360 align:start position:0%
 
 

00:00:04.360 --> 00:00:13.490 align:start position:0%
 
[Music]

00:00:13.490 --> 00:00:13.500 align:start position:0%
 
 

00:00:13.500 --> 00:00:16.310 align:start position:0%
 
yes<00:00:14.099><c> so</c><00:00:14.519><c> this</c><00:00:15.000><c> came</c><00:00:15.420><c> out</c><00:00:15.599><c> of</c><00:00:15.719><c> like</c><00:00:15.960><c> a</c><00:00:16.139><c> fun</c>

00:00:16.310 --> 00:00:16.320 align:start position:0%
yes so this came out of like a fun
 

00:00:16.320 --> 00:00:18.170 align:start position:0%
yes so this came out of like a fun
project<00:00:16.740><c> I</c><00:00:17.340><c> wanted</c><00:00:17.460><c> to</c><00:00:17.640><c> write</c><00:00:17.760><c> like</c><00:00:17.940><c> a</c><00:00:18.060><c> full</c>

00:00:18.170 --> 00:00:18.180 align:start position:0%
project I wanted to write like a full
 

00:00:18.180 --> 00:00:19.910 align:start position:0%
project I wanted to write like a full
like<00:00:18.480><c> an</c><00:00:18.720><c> end-to-end</c>

00:00:19.910 --> 00:00:19.920 align:start position:0%
like an end-to-end
 

00:00:19.920 --> 00:00:22.609 align:start position:0%
like an end-to-end
um<00:00:20.520><c> symbolic</c><00:00:21.180><c> execution</c><00:00:21.600><c> engine</c><00:00:21.779><c> in</c><00:00:22.140><c> solidity</c>

00:00:22.609 --> 00:00:22.619 align:start position:0%
um symbolic execution engine in solidity
 

00:00:22.619 --> 00:00:25.609 align:start position:0%
um symbolic execution engine in solidity
with<00:00:23.160><c> including</c><00:00:23.880><c> the</c><00:00:24.119><c> the</c><00:00:24.300><c> solver</c><00:00:24.900><c> that</c><00:00:25.140><c> we</c>

00:00:25.609 --> 00:00:25.619 align:start position:0%
with including the the solver that we
 

00:00:25.619 --> 00:00:27.769 align:start position:0%
with including the the solver that we
usually<00:00:25.859><c> use</c><00:00:25.980><c> in</c><00:00:26.160><c> the</c><00:00:26.460><c> in</c><00:00:26.640><c> the</c><00:00:26.820><c> background</c>

00:00:27.769 --> 00:00:27.779 align:start position:0%
usually use in the in the background
 

00:00:27.779 --> 00:00:30.830 align:start position:0%
usually use in the in the background
and<00:00:28.320><c> this</c><00:00:28.500><c> is</c><00:00:28.619><c> actually</c><00:00:28.859><c> pretty</c><00:00:29.160><c> fun</c><00:00:29.420><c> so</c><00:00:30.420><c> I</c>

00:00:30.830 --> 00:00:30.840 align:start position:0%
and this is actually pretty fun so I
 

00:00:30.840 --> 00:00:33.889 align:start position:0%
and this is actually pretty fun so I
want<00:00:30.960><c> to</c><00:00:31.080><c> share</c><00:00:31.320><c> with</c><00:00:31.859><c> you</c><00:00:32.040><c> what</c><00:00:33.000><c> this</c><00:00:33.120><c> does</c><00:00:33.840><c> um</c>

00:00:33.889 --> 00:00:33.899 align:start position:0%
want to share with you what this does um
 

00:00:33.899 --> 00:00:35.870 align:start position:0%
want to share with you what this does um
so<00:00:34.559><c> a</c><00:00:34.739><c> few</c><00:00:34.860><c> questions</c><00:00:35.040><c> for</c><00:00:35.340><c> like</c><00:00:35.520><c> audience</c>

00:00:35.870 --> 00:00:35.880 align:start position:0%
so a few questions for like audience
 

00:00:35.880 --> 00:00:38.990 align:start position:0%
so a few questions for like audience
adjustment<00:00:36.360><c> who</c><00:00:36.719><c> yes</c><00:00:37.020><c> who</c><00:00:37.500><c> here</c><00:00:37.860><c> was</c><00:00:38.280><c> at</c>

00:00:38.990 --> 00:00:39.000 align:start position:0%
adjustment who yes who here was at
 

00:00:39.000 --> 00:00:41.090 align:start position:0%
adjustment who yes who here was at
Harry's<00:00:39.480><c> talk</c><00:00:39.660><c> yesterday</c><00:00:39.899><c> about</c>

00:00:41.090 --> 00:00:41.100 align:start position:0%
Harry's talk yesterday about
 

00:00:41.100 --> 00:00:43.790 align:start position:0%
Harry's talk yesterday about
symbolic<00:00:41.940><c> computation</c><00:00:42.360><c> in</c><00:00:42.719><c> your</c>

00:00:43.790 --> 00:00:43.800 align:start position:0%
symbolic computation in your
 

00:00:43.800 --> 00:00:46.369 align:start position:0%
symbolic computation in your
okay<00:00:44.340><c> who</c><00:00:45.120><c> knows</c><00:00:45.360><c> what</c><00:00:45.540><c> symbolic</c><00:00:45.960><c> execution</c>

00:00:46.369 --> 00:00:46.379 align:start position:0%
okay who knows what symbolic execution
 

00:00:46.379 --> 00:00:47.990 align:start position:0%
okay who knows what symbolic execution
is

00:00:47.990 --> 00:00:48.000 align:start position:0%
is
 

00:00:48.000 --> 00:00:50.389 align:start position:0%
is
okay<00:00:48.480><c> nice</c><00:00:48.780><c> I</c><00:00:49.260><c> am</c><00:00:49.379><c> prepared</c><00:00:49.680><c> to</c><00:00:49.800><c> tell</c><00:00:49.980><c> you</c><00:00:50.100><c> what</c>

00:00:50.389 --> 00:00:50.399 align:start position:0%
okay nice I am prepared to tell you what
 

00:00:50.399 --> 00:00:52.670 align:start position:0%
okay nice I am prepared to tell you what
it<00:00:50.520><c> is</c><00:00:50.640><c> though</c><00:00:50.879><c> for</c><00:00:51.480><c> the</c><00:00:51.660><c> ones</c><00:00:51.840><c> who</c><00:00:52.200><c> don't</c><00:00:52.500><c> know</c>

00:00:52.670 --> 00:00:52.680 align:start position:0%
it is though for the ones who don't know
 

00:00:52.680 --> 00:00:54.470 align:start position:0%
it is though for the ones who don't know
so<00:00:52.980><c> I'm</c><00:00:53.520><c> quickly</c><00:00:53.820><c> going</c><00:00:54.000><c> to</c><00:00:54.059><c> go</c><00:00:54.180><c> over</c><00:00:54.239><c> some</c>

00:00:54.470 --> 00:00:54.480 align:start position:0%
so I'm quickly going to go over some
 

00:00:54.480 --> 00:00:56.090 align:start position:0%
so I'm quickly going to go over some
slides<00:00:54.840><c> and</c><00:00:55.199><c> then</c><00:00:55.320><c> we're</c><00:00:55.500><c> going</c><00:00:55.680><c> to</c><00:00:55.800><c> move</c><00:00:55.920><c> to</c>

00:00:56.090 --> 00:00:56.100 align:start position:0%
slides and then we're going to move to
 

00:00:56.100 --> 00:00:58.549 align:start position:0%
slides and then we're going to move to
code<00:00:56.399><c> this</c><00:00:57.180><c> word</c><00:00:57.360><c> or</c><00:00:57.719><c> these</c><00:00:58.079><c> expressions</c><00:00:58.379><c> are</c>

00:00:58.549 --> 00:00:58.559 align:start position:0%
code this word or these expressions are
 

00:00:58.559 --> 00:00:59.990 align:start position:0%
code this word or these expressions are
thrown<00:00:58.739><c> around</c><00:00:58.920><c> a</c><00:00:59.160><c> lot</c><00:00:59.219><c> like</c><00:00:59.399><c> what</c><00:00:59.640><c> symbolic</c>

00:00:59.990 --> 00:01:00.000 align:start position:0%
thrown around a lot like what symbolic
 

00:01:00.000 --> 00:01:02.029 align:start position:0%
thrown around a lot like what symbolic
execution<00:01:00.360><c> what's</c><00:01:00.780><c> constraints</c><00:01:01.320><c> what's</c><00:01:01.500><c> sn2</c>

00:01:02.029 --> 00:01:02.039 align:start position:0%
execution what's constraints what's sn2
 

00:01:02.039 --> 00:01:04.310 align:start position:0%
execution what's constraints what's sn2
silver<00:01:02.219><c> what's</c><00:01:02.579><c> all</c><00:01:02.760><c> that</c><00:01:02.940><c> stuff</c><00:01:03.120><c> and</c>

00:01:04.310 --> 00:01:04.320 align:start position:0%
silver what's all that stuff and
 

00:01:04.320 --> 00:01:05.690 align:start position:0%
silver what's all that stuff and
a<00:01:04.619><c> lot</c><00:01:04.739><c> of</c><00:01:04.799><c> people</c><00:01:04.920><c> know</c><00:01:05.040><c> what</c><00:01:05.159><c> it</c><00:01:05.280><c> is</c><00:01:05.400><c> but</c><00:01:05.519><c> if</c>

00:01:05.690 --> 00:01:05.700 align:start position:0%
a lot of people know what it is but if
 

00:01:05.700 --> 00:01:06.710 align:start position:0%
a lot of people know what it is but if
you<00:01:05.760><c> don't</c><00:01:05.880><c> know</c><00:01:06.000><c> what</c><00:01:06.060><c> it</c><00:01:06.180><c> is</c><00:01:06.299><c> they</c><00:01:06.479><c> kind</c><00:01:06.659><c> of</c>

00:01:06.710 --> 00:01:06.720 align:start position:0%
you don't know what it is they kind of
 

00:01:06.720 --> 00:01:08.690 align:start position:0%
you don't know what it is they kind of
like<00:01:06.840><c> you</c><00:01:06.900><c> feel</c><00:01:07.080><c> left</c><00:01:07.260><c> out</c><00:01:07.500><c> and</c><00:01:08.040><c> these</c><00:01:08.580><c> words</c>

00:01:08.690 --> 00:01:08.700 align:start position:0%
like you feel left out and these words
 

00:01:08.700 --> 00:01:10.070 align:start position:0%
like you feel left out and these words
are<00:01:08.880><c> used</c><00:01:09.119><c> very</c>

00:01:10.070 --> 00:01:10.080 align:start position:0%
are used very
 

00:01:10.080 --> 00:01:12.289 align:start position:0%
are used very
um<00:01:10.140><c> trivially</c><00:01:10.740><c> even</c><00:01:11.400><c> though</c><00:01:11.640><c> they're</c><00:01:12.060><c> not</c>

00:01:12.289 --> 00:01:12.299 align:start position:0%
um trivially even though they're not
 

00:01:12.299 --> 00:01:14.630 align:start position:0%
um trivially even though they're not
really<00:01:12.540><c> they're</c><00:01:12.900><c> simple</c><00:01:13.140><c> but</c><00:01:13.380><c> not</c><00:01:13.500><c> trivial</c><00:01:13.979><c> so</c>

00:01:14.630 --> 00:01:14.640 align:start position:0%
really they're simple but not trivial so
 

00:01:14.640 --> 00:01:15.710 align:start position:0%
really they're simple but not trivial so
first<00:01:14.760><c> I</c><00:01:14.939><c> want</c><00:01:15.060><c> to</c><00:01:15.180><c> tell</c><00:01:15.240><c> you</c><00:01:15.299><c> what's</c><00:01:15.479><c> not</c>

00:01:15.710 --> 00:01:15.720 align:start position:0%
first I want to tell you what's not
 

00:01:15.720 --> 00:01:17.390 align:start position:0%
first I want to tell you what's not
symbolic<00:01:16.200><c> execution</c>

00:01:17.390 --> 00:01:17.400 align:start position:0%
symbolic execution
 

00:01:17.400 --> 00:01:19.730 align:start position:0%
symbolic execution
and<00:01:18.119><c> that's</c><00:01:18.360><c> concrete</c><00:01:18.840><c> execution</c><00:01:19.260><c> so</c><00:01:19.560><c> let's</c>

00:01:19.730 --> 00:01:19.740 align:start position:0%
and that's concrete execution so let's
 

00:01:19.740 --> 00:01:23.270 align:start position:0%
and that's concrete execution so let's
say<00:01:19.920><c> you</c><00:01:20.100><c> have</c><00:01:20.340><c> oh</c><00:01:21.060><c> yeah</c><00:01:21.299><c> last</c><00:01:21.720><c> question</c><00:01:22.280><c> who</c>

00:01:23.270 --> 00:01:23.280 align:start position:0%
say you have oh yeah last question who
 

00:01:23.280 --> 00:01:27.109 align:start position:0%
say you have oh yeah last question who
can<00:01:24.060><c> read</c><00:01:24.600><c> assembly</c><00:01:25.439><c> like</c><00:01:25.619><c> this</c>

00:01:27.109 --> 00:01:27.119 align:start position:0%
can read assembly like this
 

00:01:27.119 --> 00:01:29.149 align:start position:0%
can read assembly like this
nice<00:01:27.479><c> okay</c><00:01:27.720><c> that's</c><00:01:28.020><c> very</c><00:01:28.200><c> good</c>

00:01:29.149 --> 00:01:29.159 align:start position:0%
nice okay that's very good
 

00:01:29.159 --> 00:01:31.370 align:start position:0%
nice okay that's very good
um<00:01:29.220><c> so</c><00:01:29.520><c> let's</c><00:01:29.640><c> say</c><00:01:29.759><c> we</c><00:01:29.939><c> have</c><00:01:30.119><c> this</c><00:01:30.540><c> assembly</c>

00:01:31.370 --> 00:01:31.380 align:start position:0%
um so let's say we have this assembly
 

00:01:31.380 --> 00:01:34.249 align:start position:0%
um so let's say we have this assembly
here<00:01:31.619><c> from</c><00:01:32.159><c> evm</c><00:01:32.700><c> and</c><00:01:33.540><c> we</c><00:01:33.659><c> want</c><00:01:33.840><c> to</c><00:01:33.960><c> run</c><00:01:34.080><c> the</c>

00:01:34.249 --> 00:01:34.259 align:start position:0%
here from evm and we want to run the
 

00:01:34.259 --> 00:01:36.289 align:start position:0%
here from evm and we want to run the
concrete<00:01:34.500><c> execution</c><00:01:34.920><c> over</c><00:01:35.159><c> it</c>

00:01:36.289 --> 00:01:36.299 align:start position:0%
concrete execution over it
 

00:01:36.299 --> 00:01:39.230 align:start position:0%
concrete execution over it
so<00:01:36.720><c> let's</c><00:01:36.900><c> say</c><00:01:37.020><c> we</c><00:01:37.200><c> have</c><00:01:37.380><c> this</c><00:01:37.680><c> call</c><00:01:37.920><c> data</c>

00:01:39.230 --> 00:01:39.240 align:start position:0%
so let's say we have this call data
 

00:01:39.240 --> 00:01:41.450 align:start position:0%
so let's say we have this call data
um<00:01:39.299><c> it's</c><00:01:39.780><c> 12</c><00:01:40.079><c> in</c><00:01:40.320><c> hacks</c><00:01:40.740><c> I</c><00:01:41.159><c> don't</c><00:01:41.280><c> know</c><00:01:41.340><c> what</c>

00:01:41.450 --> 00:01:41.460 align:start position:0%
um it's 12 in hacks I don't know what
 

00:01:41.460 --> 00:01:43.370 align:start position:0%
um it's 12 in hacks I don't know what
that<00:01:41.640><c> is</c><00:01:41.759><c> and</c><00:01:42.060><c> what</c><00:01:42.479><c> is</c><00:01:42.659><c> that</c><00:01:42.780><c> in</c><00:01:42.900><c> decimal</c><00:01:43.200><c> like</c>

00:01:43.370 --> 00:01:43.380 align:start position:0%
that is and what is that in decimal like
 

00:01:43.380 --> 00:01:45.770 align:start position:0%
that is and what is that in decimal like
20<00:01:43.860><c> no</c>

00:01:45.770 --> 00:01:45.780 align:start position:0%
20 no
 

00:01:45.780 --> 00:01:47.929 align:start position:0%
20 no
18.<00:01:46.680><c> yeah</c><00:01:46.860><c> it</c><00:01:47.040><c> makes</c><00:01:47.159><c> sense</c>

00:01:47.929 --> 00:01:47.939 align:start position:0%
18. yeah it makes sense
 

00:01:47.939 --> 00:01:50.149 align:start position:0%
18. yeah it makes sense
so<00:01:48.479><c> if</c><00:01:48.720><c> you</c><00:01:48.840><c> run</c><00:01:49.079><c> this</c><00:01:49.439><c> program</c><00:01:49.619><c> without</c><00:01:49.860><c> call</c>

00:01:50.149 --> 00:01:50.159 align:start position:0%
so if you run this program without call
 

00:01:50.159 --> 00:01:51.649 align:start position:0%
so if you run this program without call
data<00:01:50.460><c> what</c><00:01:50.579><c> do</c><00:01:50.759><c> we</c><00:01:50.880><c> get</c>

00:01:51.649 --> 00:01:51.659 align:start position:0%
data what do we get
 

00:01:51.659 --> 00:01:53.330 align:start position:0%
data what do we get
um<00:01:51.720><c> what's</c><00:01:52.259><c> like</c><00:01:52.560><c> there's</c><00:01:52.680><c> no</c><00:01:52.799><c> return</c><00:01:52.979><c> here</c><00:01:53.280><c> is</c>

00:01:53.330 --> 00:01:53.340 align:start position:0%
um what's like there's no return here is
 

00:01:53.340 --> 00:01:54.770 align:start position:0%
um what's like there's no return here is
let's<00:01:53.520><c> just</c><00:01:53.640><c> consider</c><00:01:53.880><c> the</c><00:01:54.000><c> top</c><00:01:54.180><c> of</c><00:01:54.360><c> the</c><00:01:54.479><c> stack</c>

00:01:54.770 --> 00:01:54.780 align:start position:0%
let's just consider the top of the stack
 

00:01:54.780 --> 00:01:56.690 align:start position:0%
let's just consider the top of the stack
as<00:01:55.259><c> sort</c><00:01:55.500><c> of</c><00:01:55.619><c> a</c><00:01:55.740><c> return</c>

00:01:56.690 --> 00:01:56.700 align:start position:0%
as sort of a return
 

00:01:56.700 --> 00:01:59.510 align:start position:0%
as sort of a return
in<00:01:57.420><c> this</c><00:01:57.540><c> case</c><00:01:57.659><c> we</c><00:01:58.079><c> get</c><00:01:58.200><c> a</c><00:01:58.380><c> 12</c><00:01:58.560><c> we're</c><00:01:59.280><c> going</c><00:01:59.460><c> to</c>

00:01:59.510 --> 00:01:59.520 align:start position:0%
in this case we get a 12 we're going to
 

00:01:59.520 --> 00:02:01.670 align:start position:0%
in this case we get a 12 we're going to
push<00:01:59.759><c> zero</c>

00:02:01.670 --> 00:02:01.680 align:start position:0%
push zero
 

00:02:01.680 --> 00:02:03.649 align:start position:0%
push zero
um<00:02:01.799><c> and</c><00:02:02.220><c> the</c><00:02:02.399><c> stock</c><00:02:02.520><c> could</c><00:02:02.820><c> call</c><00:02:03.000><c> data</c><00:02:03.360><c> load</c>

00:02:03.649 --> 00:02:03.659 align:start position:0%
um and the stock could call data load
 

00:02:03.659 --> 00:02:07.370 align:start position:0%
um and the stock could call data load
that<00:02:04.520><c> position</c><00:02:05.520><c> we</c><00:02:05.820><c> get</c><00:02:06.000><c> to</c><00:02:06.180><c> 12</c><00:02:06.420><c> push</c><00:02:07.140><c> three</c>

00:02:07.370 --> 00:02:07.380 align:start position:0%
that position we get to 12 push three
 

00:02:07.380 --> 00:02:09.650 align:start position:0%
that position we get to 12 push three
multiply<00:02:07.979><c> that's</c><00:02:08.220><c> going</c><00:02:08.399><c> to</c><00:02:08.459><c> give</c><00:02:08.640><c> us</c><00:02:08.819><c> 36</c><00:02:09.420><c> in</c>

00:02:09.650 --> 00:02:09.660 align:start position:0%
multiply that's going to give us 36 in
 

00:02:09.660 --> 00:02:13.970 align:start position:0%
multiply that's going to give us 36 in
HEX<00:02:10.440><c> we</c><00:02:11.160><c> add</c><00:02:11.459><c> one</c><00:02:11.700><c> so</c><00:02:12.120><c> we</c><00:02:12.420><c> get</c><00:02:12.599><c> this</c><00:02:13.560><c> number</c><00:02:13.739><c> top</c>

00:02:13.970 --> 00:02:13.980 align:start position:0%
HEX we add one so we get this number top
 

00:02:13.980 --> 00:02:15.650 align:start position:0%
HEX we add one so we get this number top
of<00:02:14.099><c> the</c><00:02:14.220><c> stack</c><00:02:14.459><c> right</c><00:02:14.760><c> so</c><00:02:15.120><c> this</c><00:02:15.300><c> concrete</c>

00:02:15.650 --> 00:02:15.660 align:start position:0%
of the stack right so this concrete
 

00:02:15.660 --> 00:02:17.210 align:start position:0%
of the stack right so this concrete
execution<00:02:16.020><c> you</c><00:02:16.260><c> have</c><00:02:16.379><c> a</c><00:02:16.560><c> program</c><00:02:16.680><c> you</c><00:02:16.920><c> have</c><00:02:17.099><c> a</c>

00:02:17.210 --> 00:02:17.220 align:start position:0%
execution you have a program you have a
 

00:02:17.220 --> 00:02:19.070 align:start position:0%
execution you have a program you have a
concrete<00:02:17.640><c> input</c><00:02:18.180><c> and</c><00:02:18.360><c> then</c><00:02:18.540><c> you</c><00:02:18.660><c> execute</c><00:02:18.959><c> the</c>

00:02:19.070 --> 00:02:19.080 align:start position:0%
concrete input and then you execute the
 

00:02:19.080 --> 00:02:20.930 align:start position:0%
concrete input and then you execute the
program<00:02:19.200><c> that</c><00:02:19.379><c> input</c><00:02:19.680><c> you</c><00:02:19.800><c> get</c><00:02:19.920><c> an</c><00:02:20.040><c> output</c><00:02:20.280><c> so</c>

00:02:20.930 --> 00:02:20.940 align:start position:0%
program that input you get an output so
 

00:02:20.940 --> 00:02:23.150 align:start position:0%
program that input you get an output so
now<00:02:21.360><c> what</c><00:02:21.599><c> is</c><00:02:21.720><c> symbolic</c><00:02:22.080><c> execution</c><00:02:22.440><c> we</c><00:02:22.860><c> just</c>

00:02:23.150 --> 00:02:23.160 align:start position:0%
now what is symbolic execution we just
 

00:02:23.160 --> 00:02:26.510 align:start position:0%
now what is symbolic execution we just
said<00:02:23.760><c> what's</c><00:02:24.000><c> not</c><00:02:24.319><c> so</c><00:02:25.319><c> t11</c><00:02:25.860><c> actually</c><00:02:26.099><c> has</c><00:02:26.340><c> a</c>

00:02:26.510 --> 00:02:26.520 align:start position:0%
said what's not so t11 actually has a
 

00:02:26.520 --> 00:02:27.770 align:start position:0%
said what's not so t11 actually has a
pretty<00:02:26.640><c> good</c><00:02:26.819><c> explanation</c><00:02:27.120><c> of</c><00:02:27.239><c> what</c><00:02:27.420><c> it</c><00:02:27.480><c> is</c><00:02:27.599><c> so</c>

00:02:27.770 --> 00:02:27.780 align:start position:0%
pretty good explanation of what it is so
 

00:02:27.780 --> 00:02:29.210 align:start position:0%
pretty good explanation of what it is so
it<00:02:27.900><c> turns</c><00:02:28.140><c> the</c><00:02:28.260><c> program</c><00:02:28.379><c> into</c><00:02:28.620><c> math</c><00:02:28.860><c> and</c><00:02:29.099><c> then</c>

00:02:29.210 --> 00:02:29.220 align:start position:0%
it turns the program into math and then
 

00:02:29.220 --> 00:02:30.890 align:start position:0%
it turns the program into math and then
solves<00:02:29.580><c> math</c><00:02:29.819><c> formulas</c>

00:02:30.890 --> 00:02:30.900 align:start position:0%
solves math formulas
 

00:02:30.900 --> 00:02:32.990 align:start position:0%
solves math formulas
that's<00:02:31.440><c> actually</c><00:02:31.680><c> a</c><00:02:31.980><c> very</c><00:02:32.099><c> precise</c><00:02:32.580><c> although</c>

00:02:32.990 --> 00:02:33.000 align:start position:0%
that's actually a very precise although
 

00:02:33.000 --> 00:02:35.930 align:start position:0%
that's actually a very precise although
very<00:02:33.300><c> vague</c><00:02:33.980><c> description</c><00:02:34.980><c> of</c><00:02:35.280><c> what</c><00:02:35.459><c> it</c><00:02:35.640><c> does</c>

00:02:35.930 --> 00:02:35.940 align:start position:0%
very vague description of what it does
 

00:02:35.940 --> 00:02:38.390 align:start position:0%
very vague description of what it does
we<00:02:36.720><c> have</c><00:02:36.900><c> the</c><00:02:37.020><c> same</c><00:02:37.140><c> program</c><00:02:37.379><c> here</c><00:02:37.680><c> but</c><00:02:38.160><c> now</c>

00:02:38.390 --> 00:02:38.400 align:start position:0%
we have the same program here but now
 

00:02:38.400 --> 00:02:40.070 align:start position:0%
we have the same program here but now
instead<00:02:38.940><c> of</c><00:02:39.060><c> a</c><00:02:39.180><c> concrete</c><00:02:39.420><c> called</c><00:02:39.660><c> Data</c><00:02:39.959><c> we're</c>

00:02:40.070 --> 00:02:40.080 align:start position:0%
instead of a concrete called Data we're
 

00:02:40.080 --> 00:02:41.330 align:start position:0%
instead of a concrete called Data we're
going<00:02:40.200><c> to</c><00:02:40.319><c> have</c><00:02:40.379><c> a</c><00:02:40.560><c> symbolic</c><00:02:40.980><c> called</c><00:02:41.099><c> Data</c>

00:02:41.330 --> 00:02:41.340 align:start position:0%
going to have a symbolic called Data
 

00:02:41.340 --> 00:02:43.250 align:start position:0%
going to have a symbolic called Data
what<00:02:41.459><c> does</c><00:02:41.580><c> that</c><00:02:41.700><c> mean</c><00:02:41.879><c> to</c><00:02:42.180><c> be</c><00:02:42.239><c> symbolic</c><00:02:42.780><c> is</c>

00:02:43.250 --> 00:02:43.260 align:start position:0%
what does that mean to be symbolic is
 

00:02:43.260 --> 00:02:45.050 align:start position:0%
what does that mean to be symbolic is
that<00:02:43.379><c> you</c><00:02:43.620><c> just</c><00:02:43.860><c> use</c><00:02:44.160><c> a</c><00:02:44.340><c> variable</c><00:02:44.640><c> instead</c><00:02:45.000><c> of</c>

00:02:45.050 --> 00:02:45.060 align:start position:0%
that you just use a variable instead of
 

00:02:45.060 --> 00:02:47.150 align:start position:0%
that you just use a variable instead of
concrete<00:02:45.420><c> number</c><00:02:45.599><c> that's</c><00:02:46.379><c> really</c><00:02:46.560><c> all</c><00:02:46.800><c> you</c><00:02:46.920><c> do</c>

00:02:47.150 --> 00:02:47.160 align:start position:0%
concrete number that's really all you do
 

00:02:47.160 --> 00:02:49.150 align:start position:0%
concrete number that's really all you do
you<00:02:47.760><c> look</c><00:02:47.879><c> you</c><00:02:48.120><c> keep</c><00:02:48.239><c> looking</c><00:02:48.420><c> at</c><00:02:48.599><c> variables</c>

00:02:49.150 --> 00:02:49.160 align:start position:0%
you look you keep looking at variables
 

00:02:49.160 --> 00:02:51.949 align:start position:0%
you look you keep looking at variables
so<00:02:50.160><c> our</c><00:02:51.000><c> entire</c><00:02:51.239><c> call</c><00:02:51.360><c> data</c><00:02:51.660><c> is</c><00:02:51.720><c> going</c><00:02:51.840><c> to</c><00:02:51.900><c> be</c>

00:02:51.949 --> 00:02:51.959 align:start position:0%
so our entire call data is going to be
 

00:02:51.959 --> 00:02:54.110 align:start position:0%
so our entire call data is going to be
CD<00:02:52.319><c> now</c><00:02:52.560><c> it's</c><00:02:52.800><c> just</c><00:02:52.980><c> a</c><00:02:53.099><c> variable</c><00:02:53.400><c> the</c><00:02:53.819><c> top</c><00:02:54.000><c> of</c>

00:02:54.110 --> 00:02:54.120 align:start position:0%
CD now it's just a variable the top of
 

00:02:54.120 --> 00:02:55.009 align:start position:0%
CD now it's just a variable the top of
our<00:02:54.239><c> stack</c><00:02:54.420><c> is</c><00:02:54.540><c> going</c><00:02:54.660><c> to</c><00:02:54.720><c> be</c><00:02:54.780><c> a</c><00:02:54.840><c> variable</c>

00:02:55.009 --> 00:02:55.019 align:start position:0%
our stack is going to be a variable
 

00:02:55.019 --> 00:02:57.350 align:start position:0%
our stack is going to be a variable
called<00:02:55.140><c> top</c><00:02:55.379><c> that's</c><00:02:56.160><c> all</c><00:02:56.340><c> we're</c><00:02:56.580><c> doing</c><00:02:56.819><c> so</c>

00:02:57.350 --> 00:02:57.360 align:start position:0%
called top that's all we're doing so
 

00:02:57.360 --> 00:02:59.330 align:start position:0%
called top that's all we're doing so
here<00:02:57.599><c> we're</c><00:02:57.780><c> going</c><00:02:57.900><c> to</c><00:02:58.080><c> collect</c><00:02:58.440><c> constraints</c>

00:02:59.330 --> 00:02:59.340 align:start position:0%
here we're going to collect constraints
 

00:02:59.340 --> 00:03:01.550 align:start position:0%
here we're going to collect constraints
which<00:02:59.760><c> are</c><00:03:00.000><c> things</c><00:03:00.300><c> that</c><00:03:00.599><c> must</c><00:03:00.780><c> be</c><00:03:01.019><c> true</c><00:03:01.200><c> when</c>

00:03:01.550 --> 00:03:01.560 align:start position:0%
which are things that must be true when
 

00:03:01.560 --> 00:03:03.770 align:start position:0%
which are things that must be true when
we<00:03:01.680><c> run</c><00:03:01.800><c> the</c><00:03:02.040><c> program</c><00:03:02.220><c> so</c>

00:03:03.770 --> 00:03:03.780 align:start position:0%
we run the program so
 

00:03:03.780 --> 00:03:07.070 align:start position:0%
we run the program so
when<00:03:04.680><c> we</c><00:03:04.980><c> run</c><00:03:05.280><c> call</c><00:03:05.519><c> data</c><00:03:05.819><c> load</c><00:03:06.120><c> of</c><00:03:06.360><c> zero</c><00:03:06.840><c> we're</c>

00:03:07.070 --> 00:03:07.080 align:start position:0%
when we run call data load of zero we're
 

00:03:07.080 --> 00:03:10.190 align:start position:0%
when we run call data load of zero we're
basically<00:03:07.440><c> doing</c><00:03:07.680><c> CD</c><00:03:08.280><c> of</c><00:03:08.580><c> zero</c><00:03:09.060><c> right</c><00:03:09.360><c> and</c>

00:03:10.190 --> 00:03:10.200 align:start position:0%
basically doing CD of zero right and
 

00:03:10.200 --> 00:03:12.110 align:start position:0%
basically doing CD of zero right and
then<00:03:10.319><c> we</c><00:03:10.440><c> can</c><00:03:10.560><c> also</c><00:03:10.739><c> call</c><00:03:10.860><c> it</c><00:03:10.980><c> X</c><00:03:11.280><c> we</c><00:03:11.819><c> can</c><00:03:11.879><c> call</c>

00:03:12.110 --> 00:03:12.120 align:start position:0%
then we can also call it X we can call
 

00:03:12.120 --> 00:03:13.610 align:start position:0%
then we can also call it X we can call
it<00:03:12.239><c> side</c><00:03:12.659><c> we</c><00:03:12.840><c> can</c><00:03:12.959><c> call</c><00:03:13.019><c> it</c><00:03:13.140><c> whatever</c><00:03:13.319><c> it's</c>

00:03:13.610 --> 00:03:13.620 align:start position:0%
it side we can call it whatever it's
 

00:03:13.620 --> 00:03:15.589 align:start position:0%
it side we can call it whatever it's
just<00:03:13.860><c> a</c><00:03:14.040><c> symbol</c>

00:03:15.589 --> 00:03:15.599 align:start position:0%
just a symbol
 

00:03:15.599 --> 00:03:17.750 align:start position:0%
just a symbol
um<00:03:15.720><c> and</c><00:03:16.319><c> it</c><00:03:16.860><c> happens</c><00:03:16.980><c> that</c><00:03:17.220><c> that</c><00:03:17.400><c> thing</c><00:03:17.519><c> must</c>

00:03:17.750 --> 00:03:17.760 align:start position:0%
um and it happens that that thing must
 

00:03:17.760 --> 00:03:19.729 align:start position:0%
um and it happens that that thing must
be<00:03:17.879><c> greater</c><00:03:18.120><c> equals</c><00:03:18.480><c> zero</c><00:03:18.720><c> because</c><00:03:19.080><c> we're</c>

00:03:19.729 --> 00:03:19.739 align:start position:0%
be greater equals zero because we're
 

00:03:19.739 --> 00:03:21.410 align:start position:0%
be greater equals zero because we're
trading<00:03:20.040><c> we're</c><00:03:20.220><c> dealing</c><00:03:20.580><c> dealing</c><00:03:20.879><c> with</c><00:03:20.940><c> evm</c>

00:03:21.410 --> 00:03:21.420 align:start position:0%
trading we're dealing dealing with evm
 

00:03:21.420 --> 00:03:24.170 align:start position:0%
trading we're dealing dealing with evm
words<00:03:21.599><c> and</c><00:03:22.140><c> they're</c><00:03:22.440><c> unsigned</c><00:03:22.980><c> right</c><00:03:23.220><c> the</c>

00:03:24.170 --> 00:03:24.180 align:start position:0%
words and they're unsigned right the
 

00:03:24.180 --> 00:03:25.610 align:start position:0%
words and they're unsigned right the
second<00:03:24.300><c> part</c><00:03:24.599><c> is</c><00:03:24.900><c> that</c><00:03:25.080><c> we</c><00:03:25.200><c> are</c><00:03:25.319><c> assigning</c>

00:03:25.610 --> 00:03:25.620 align:start position:0%
second part is that we are assigning
 

00:03:25.620 --> 00:03:27.770 align:start position:0%
second part is that we are assigning
that<00:03:25.739><c> to</c><00:03:25.860><c> X</c><00:03:26.040><c> we</c><00:03:26.580><c> just</c><00:03:26.760><c> make</c><00:03:26.940><c> a</c><00:03:27.120><c> variable</c><00:03:27.360><c> out</c><00:03:27.599><c> of</c>

00:03:27.770 --> 00:03:27.780 align:start position:0%
that to X we just make a variable out of
 

00:03:27.780 --> 00:03:29.809 align:start position:0%
that to X we just make a variable out of
out<00:03:28.080><c> of</c><00:03:28.260><c> that</c><00:03:28.440><c> when</c><00:03:28.800><c> we</c><00:03:28.920><c> do</c><00:03:29.099><c> the</c><00:03:29.280><c> call</c><00:03:29.400><c> data</c>

00:03:29.809 --> 00:03:29.819 align:start position:0%
out of that when we do the call data
 

00:03:29.819 --> 00:03:32.149 align:start position:0%
out of that when we do the call data
load<00:03:30.019><c> next</c><00:03:31.019><c> thing</c><00:03:31.440><c> we</c><00:03:31.920><c> have</c><00:03:32.040><c> this</c>

00:03:32.149 --> 00:03:32.159 align:start position:0%
load next thing we have this
 

00:03:32.159 --> 00:03:33.530 align:start position:0%
load next thing we have this
multiplication<00:03:32.700><c> we</c><00:03:33.120><c> can</c><00:03:33.239><c> make</c><00:03:33.360><c> another</c>

00:03:33.530 --> 00:03:33.540 align:start position:0%
multiplication we can make another
 

00:03:33.540 --> 00:03:36.649 align:start position:0%
multiplication we can make another
variable<00:03:33.900><c> for</c><00:03:34.019><c> it</c><00:03:34.200><c> called</c><00:03:34.319><c> Y</c><00:03:34.620><c> which</c><00:03:35.459><c> is</c><00:03:35.760><c> now</c><00:03:36.120><c> x</c>

00:03:36.649 --> 00:03:36.659 align:start position:0%
variable for it called Y which is now x
 

00:03:36.659 --> 00:03:40.309 align:start position:0%
variable for it called Y which is now x
times<00:03:37.019><c> three</c><00:03:37.580><c> finally</c><00:03:38.580><c> for</c><00:03:38.940><c> this</c><00:03:39.180><c> ad</c><00:03:39.480><c> we</c><00:03:40.200><c> can</c>

00:03:40.309 --> 00:03:40.319 align:start position:0%
times three finally for this ad we can
 

00:03:40.319 --> 00:03:41.649 align:start position:0%
times three finally for this ad we can
make<00:03:40.440><c> another</c><00:03:40.560><c> variable</c><00:03:40.920><c> for</c><00:03:41.099><c> it</c><00:03:41.220><c> called</c><00:03:41.400><c> top</c>

00:03:41.649 --> 00:03:41.659 align:start position:0%
make another variable for it called top
 

00:03:41.659 --> 00:03:44.089 align:start position:0%
make another variable for it called top
and<00:03:42.659><c> then</c><00:03:42.840><c> which</c><00:03:43.200><c> we</c><00:03:43.440><c> just</c><00:03:43.680><c> did</c><00:03:43.799><c> the</c><00:03:43.980><c> previous</c>

00:03:44.089 --> 00:03:44.099 align:start position:0%
and then which we just did the previous
 

00:03:44.099 --> 00:03:47.809 align:start position:0%
and then which we just did the previous
top<00:03:44.519><c> of</c><00:03:44.700><c> the</c><00:03:44.819><c> stack</c><00:03:45.000><c> which</c><00:03:45.180><c> is</c><00:03:45.360><c> y</c><00:03:45.599><c> plus</c><00:03:46.200><c> one</c>

00:03:47.809 --> 00:03:47.819 align:start position:0%
top of the stack which is y plus one
 

00:03:47.819 --> 00:03:49.250 align:start position:0%
top of the stack which is y plus one
um so<00:03:48.000><c> you</c><00:03:48.180><c> see</c><00:03:48.239><c> that</c><00:03:48.420><c> for</c><00:03:48.599><c> every</c><00:03:48.780><c> operation</c>

00:03:49.250 --> 00:03:49.260 align:start position:0%
um so you see that for every operation
 

00:03:49.260 --> 00:03:51.410 align:start position:0%
um so you see that for every operation
we<00:03:49.980><c> add</c><00:03:50.159><c> a</c><00:03:50.340><c> new</c><00:03:50.459><c> variable</c><00:03:50.819><c> we</c><00:03:51.060><c> add</c><00:03:51.180><c> a</c><00:03:51.299><c> new</c>

00:03:51.410 --> 00:03:51.420 align:start position:0%
we add a new variable we add a new
 

00:03:51.420 --> 00:03:53.270 align:start position:0%
we add a new variable we add a new
symbol<00:03:51.720><c> that</c><00:03:51.900><c> represents</c><00:03:52.440><c> that</c><00:03:52.799><c> expression</c>

00:03:53.270 --> 00:03:53.280 align:start position:0%
symbol that represents that expression
 

00:03:53.280 --> 00:03:56.089 align:start position:0%
symbol that represents that expression
and<00:03:53.940><c> we</c><00:03:54.060><c> collect</c><00:03:54.420><c> all</c><00:03:54.599><c> these</c><00:03:54.900><c> Expressions</c><00:03:55.379><c> so</c>

00:03:56.089 --> 00:03:56.099 align:start position:0%
and we collect all these Expressions so
 

00:03:56.099 --> 00:03:57.470 align:start position:0%
and we collect all these Expressions so
we<00:03:56.220><c> end</c><00:03:56.400><c> up</c><00:03:56.519><c> with</c><00:03:56.760><c> what</c><00:03:57.000><c> we</c><00:03:57.120><c> call</c><00:03:57.239><c> these</c>

00:03:57.470 --> 00:03:57.480 align:start position:0%
we end up with what we call these
 

00:03:57.480 --> 00:03:59.990 align:start position:0%
we end up with what we call these
constraints<00:03:57.900><c> and</c><00:03:58.739><c> this</c><00:03:58.980><c> is</c><00:03:59.220><c> what</c><00:03:59.459><c> is</c><00:03:59.819><c> our</c>

00:03:59.990 --> 00:04:00.000 align:start position:0%
constraints and this is what is our
 

00:04:00.000 --> 00:04:02.089 align:start position:0%
constraints and this is what is our
symbolic<00:04:00.480><c> encoding</c><00:04:01.019><c> so</c><00:04:01.440><c> we</c><00:04:01.560><c> take</c><00:04:01.739><c> the</c><00:04:01.920><c> program</c>

00:04:02.089 --> 00:04:02.099 align:start position:0%
symbolic encoding so we take the program
 

00:04:02.099 --> 00:04:05.270 align:start position:0%
symbolic encoding so we take the program
in<00:04:02.580><c> evm</c><00:04:03.120><c> bytecode</c><00:04:03.720><c> and</c><00:04:03.900><c> assembly</c><00:04:04.260><c> here</c><00:04:04.440><c> we</c>

00:04:05.270 --> 00:04:05.280 align:start position:0%
in evm bytecode and assembly here we
 

00:04:05.280 --> 00:04:07.130 align:start position:0%
in evm bytecode and assembly here we
transform<00:04:05.640><c> it</c><00:04:05.819><c> into</c><00:04:06.000><c> a</c><00:04:06.239><c> set</c><00:04:06.360><c> of</c><00:04:06.540><c> constraints</c>

00:04:07.130 --> 00:04:07.140 align:start position:0%
transform it into a set of constraints
 

00:04:07.140 --> 00:04:09.470 align:start position:0%
transform it into a set of constraints
and<00:04:07.560><c> that's</c><00:04:07.739><c> our</c><00:04:08.040><c> symbolic</c><00:04:08.519><c> encoding</c><00:04:09.000><c> they're</c>

00:04:09.470 --> 00:04:09.480 align:start position:0%
and that's our symbolic encoding they're
 

00:04:09.480 --> 00:04:10.550 align:start position:0%
and that's our symbolic encoding they're
different<00:04:09.720><c> there</c><00:04:09.959><c> are</c><00:04:10.140><c> many</c><00:04:10.200><c> many</c><00:04:10.319><c> different</c>

00:04:10.550 --> 00:04:10.560 align:start position:0%
different there are many many different
 

00:04:10.560 --> 00:04:12.229 align:start position:0%
different there are many many different
ways<00:04:10.920><c> to</c><00:04:11.099><c> write</c><00:04:11.280><c> these</c><00:04:11.580><c> constraints</c><00:04:11.879><c> from</c><00:04:12.120><c> a</c>

00:04:12.229 --> 00:04:12.239 align:start position:0%
ways to write these constraints from a
 

00:04:12.239 --> 00:04:13.509 align:start position:0%
ways to write these constraints from a
program

00:04:13.509 --> 00:04:13.519 align:start position:0%
program
 

00:04:13.519 --> 00:04:15.849 align:start position:0%
program
which<00:04:14.519><c> means</c><00:04:14.760><c> we</c><00:04:14.879><c> have</c><00:04:15.000><c> different</c><00:04:15.180><c> ways</c><00:04:15.599><c> to</c>

00:04:15.849 --> 00:04:15.859 align:start position:0%
which means we have different ways to
 

00:04:15.859 --> 00:04:18.890 align:start position:0%
which means we have different ways to
symbolically<00:04:16.859><c> encode</c><00:04:17.280><c> your</c><00:04:17.519><c> program</c>

00:04:18.890 --> 00:04:18.900 align:start position:0%
symbolically encode your program
 

00:04:18.900 --> 00:04:21.469 align:start position:0%
symbolically encode your program
why<00:04:19.560><c> do</c><00:04:19.680><c> we</c><00:04:19.799><c> want</c><00:04:19.859><c> to</c><00:04:20.040><c> do</c><00:04:20.160><c> this</c><00:04:20.340><c> so</c><00:04:21.239><c> we</c>

00:04:21.469 --> 00:04:21.479 align:start position:0%
why do we want to do this so we
 

00:04:21.479 --> 00:04:22.790 align:start position:0%
why do we want to do this so we
obviously<00:04:21.900><c> walking</c><00:04:22.079><c> code</c><00:04:22.320><c> is</c><00:04:22.440><c> going</c><00:04:22.620><c> to</c><00:04:22.680><c> turn</c>

00:04:22.790 --> 00:04:22.800 align:start position:0%
obviously walking code is going to turn
 

00:04:22.800 --> 00:04:25.010 align:start position:0%
obviously walking code is going to turn
into<00:04:22.979><c> a</c><00:04:23.160><c> system</c><00:04:23.280><c> of</c><00:04:23.520><c> linear</c><00:04:23.820><c> inequalities</c><00:04:24.360><c> so</c>

00:04:25.010 --> 00:04:25.020 align:start position:0%
into a system of linear inequalities so
 

00:04:25.020 --> 00:04:27.650 align:start position:0%
into a system of linear inequalities so
this<00:04:25.440><c> was</c><00:04:25.860><c> our</c><00:04:26.220><c> set</c><00:04:26.580><c> of</c><00:04:26.699><c> constraints</c>

00:04:27.650 --> 00:04:27.660 align:start position:0%
this was our set of constraints
 

00:04:27.660 --> 00:04:29.510 align:start position:0%
this was our set of constraints
that's<00:04:28.080><c> going</c><00:04:28.259><c> to</c><00:04:28.380><c> turn</c><00:04:28.500><c> into</c><00:04:28.800><c> the</c><00:04:29.100><c> system</c><00:04:29.280><c> of</c>

00:04:29.510 --> 00:04:29.520 align:start position:0%
that's going to turn into the system of
 

00:04:29.520 --> 00:04:31.430 align:start position:0%
that's going to turn into the system of
linear<00:04:29.759><c> inequalities</c><00:04:30.240><c> there</c><00:04:30.840><c> are</c><00:04:31.020><c> equalities</c>

00:04:31.430 --> 00:04:31.440 align:start position:0%
linear inequalities there are equalities
 

00:04:31.440 --> 00:04:34.189 align:start position:0%
linear inequalities there are equalities
here<00:04:31.800><c> but</c><00:04:32.520><c> they</c><00:04:32.759><c> can</c><00:04:32.940><c> be</c><00:04:33.360><c> very</c><00:04:33.840><c> quickly</c>

00:04:34.189 --> 00:04:34.199 align:start position:0%
here but they can be very quickly
 

00:04:34.199 --> 00:04:36.050 align:start position:0%
here but they can be very quickly
translated<00:04:34.620><c> into</c><00:04:34.800><c> inequalities</c>

00:04:36.050 --> 00:04:36.060 align:start position:0%
translated into inequalities
 

00:04:36.060 --> 00:04:37.670 align:start position:0%
translated into inequalities
um<00:04:36.120><c> so</c><00:04:36.600><c> we</c><00:04:36.720><c> just</c><00:04:36.900><c> keep</c><00:04:37.020><c> them</c><00:04:37.199><c> as</c><00:04:37.320><c> they</c><00:04:37.440><c> call</c><00:04:37.560><c> it</c>

00:04:37.670 --> 00:04:37.680 align:start position:0%
um so we just keep them as they call it
 

00:04:37.680 --> 00:04:38.870 align:start position:0%
um so we just keep them as they call it
for<00:04:37.860><c> Simplicity</c>

00:04:38.870 --> 00:04:38.880 align:start position:0%
for Simplicity
 

00:04:38.880 --> 00:04:42.469 align:start position:0%
for Simplicity
and<00:04:39.660><c> why</c><00:04:40.500><c> do</c><00:04:40.680><c> we</c><00:04:40.800><c> do</c><00:04:40.979><c> this</c><00:04:41.220><c> the</c><00:04:42.000><c> reason</c><00:04:42.120><c> why</c><00:04:42.300><c> we</c>

00:04:42.469 --> 00:04:42.479 align:start position:0%
and why do we do this the reason why we
 

00:04:42.479 --> 00:04:43.909 align:start position:0%
and why do we do this the reason why we
do<00:04:42.660><c> this</c><00:04:42.780><c> because</c><00:04:42.960><c> we</c><00:04:43.199><c> know</c><00:04:43.320><c> how</c><00:04:43.500><c> to</c><00:04:43.620><c> solve</c>

00:04:43.909 --> 00:04:43.919 align:start position:0%
do this because we know how to solve
 

00:04:43.919 --> 00:04:45.890 align:start position:0%
do this because we know how to solve
these<00:04:44.160><c> things</c><00:04:44.280><c> with</c><00:04:45.120><c> algorithms</c><00:04:45.660><c> that</c><00:04:45.780><c> you</c>

00:04:45.890 --> 00:04:45.900 align:start position:0%
these things with algorithms that you
 

00:04:45.900 --> 00:04:47.570 align:start position:0%
these things with algorithms that you
might<00:04:46.020><c> have</c><00:04:46.199><c> seen</c><00:04:46.440><c> in</c><00:04:47.040><c> high</c><00:04:47.220><c> school</c><00:04:47.340><c> or</c>

00:04:47.570 --> 00:04:47.580 align:start position:0%
might have seen in high school or
 

00:04:47.580 --> 00:04:50.270 align:start position:0%
might have seen in high school or
University<00:04:47.759><c> or</c><00:04:48.600><c> you</c><00:04:49.199><c> still</c><00:04:49.380><c> will</c><00:04:49.620><c> see</c><00:04:49.860><c> it</c><00:04:50.040><c> when</c>

00:04:50.270 --> 00:04:50.280 align:start position:0%
University or you still will see it when
 

00:04:50.280 --> 00:04:52.249 align:start position:0%
University or you still will see it when
you<00:04:50.400><c> finish</c><00:04:50.639><c> high</c><00:04:50.940><c> school</c><00:04:51.120><c> and</c><00:04:51.780><c> what</c><00:04:52.020><c> can</c><00:04:52.139><c> we</c>

00:04:52.249 --> 00:04:52.259 align:start position:0%
you finish high school and what can we
 

00:04:52.259 --> 00:04:54.890 align:start position:0%
you finish high school and what can we
do<00:04:52.440><c> with</c><00:04:52.560><c> it</c><00:04:52.740><c> we</c><00:04:53.580><c> can</c><00:04:53.820><c> for</c><00:04:54.300><c> example</c><00:04:54.479><c> did</c><00:04:54.720><c> the</c>

00:04:54.890 --> 00:04:54.900 align:start position:0%
do with it we can for example did the
 

00:04:54.900 --> 00:04:56.330 align:start position:0%
do with it we can for example did the
same<00:04:55.020><c> thing</c><00:04:55.080><c> we</c><00:04:55.199><c> did</c><00:04:55.320><c> before</c><00:04:55.500><c> we</c><00:04:55.800><c> can</c><00:04:55.979><c> give</c><00:04:56.100><c> a</c>

00:04:56.330 --> 00:04:56.340 align:start position:0%
same thing we did before we can give a
 

00:04:56.340 --> 00:04:58.370 align:start position:0%
same thing we did before we can give a
concrete<00:04:56.639><c> call</c><00:04:56.759><c> data</c><00:04:57.180><c> in</c><00:04:57.840><c> this</c><00:04:57.960><c> case</c><00:04:58.080><c> the</c><00:04:58.259><c> same</c>

00:04:58.370 --> 00:04:58.380 align:start position:0%
concrete call data in this case the same
 

00:04:58.380 --> 00:05:02.150 align:start position:0%
concrete call data in this case the same
called<00:04:58.560><c> Data</c><00:04:58.919><c> as</c><00:04:58.979><c> we</c><00:04:59.100><c> we</c><00:04:59.340><c> had</c><00:04:59.580><c> before</c><00:04:59.840><c> and</c><00:05:01.160><c> run</c>

00:05:02.150 --> 00:05:02.160 align:start position:0%
called Data as we we had before and run
 

00:05:02.160 --> 00:05:03.950 align:start position:0%
called Data as we we had before and run
it<00:05:02.460><c> symbolically</c><00:05:03.060><c> what</c><00:05:03.540><c> does</c><00:05:03.660><c> that</c><00:05:03.780><c> mean</c>

00:05:03.950 --> 00:05:03.960 align:start position:0%
it symbolically what does that mean
 

00:05:03.960 --> 00:05:05.810 align:start position:0%
it symbolically what does that mean
we're<00:05:04.199><c> gonna</c><00:05:04.380><c> in</c><00:05:05.160><c> this</c><00:05:05.280><c> case</c><00:05:05.400><c> a</c><00:05:05.699><c> simple</c>

00:05:05.810 --> 00:05:05.820 align:start position:0%
we're gonna in this case a simple
 

00:05:05.820 --> 00:05:07.689 align:start position:0%
we're gonna in this case a simple
substitution<00:05:06.300><c> does</c><00:05:06.540><c> it</c><00:05:06.720><c> we</c><00:05:06.960><c> can</c><00:05:07.080><c> substitute</c>

00:05:07.689 --> 00:05:07.699 align:start position:0%
substitution does it we can substitute
 

00:05:07.699 --> 00:05:10.010 align:start position:0%
substitution does it we can substitute
CD<00:05:08.699><c> by</c>

00:05:10.010 --> 00:05:10.020 align:start position:0%
CD by
 

00:05:10.020 --> 00:05:12.409 align:start position:0%
CD by
visitorical<00:05:10.860><c> data</c><00:05:11.340><c> which</c><00:05:11.820><c> then</c><00:05:12.060><c> substitute</c>

00:05:12.409 --> 00:05:12.419 align:start position:0%
visitorical data which then substitute
 

00:05:12.419 --> 00:05:15.890 align:start position:0%
visitorical data which then substitute
CD<00:05:12.720><c> of</c><00:05:12.960><c> 0</c><00:05:13.139><c> by</c><00:05:13.380><c> 12</c><00:05:13.560><c> and</c><00:05:13.860><c> so</c><00:05:14.040><c> on</c><00:05:14.220><c> and</c><00:05:14.759><c> we</c><00:05:15.120><c> get</c>

00:05:15.890 --> 00:05:15.900 align:start position:0%
CD of 0 by 12 and so on and we get
 

00:05:15.900 --> 00:05:17.450 align:start position:0%
CD of 0 by 12 and so on and we get
at<00:05:16.320><c> the</c><00:05:16.440><c> top</c><00:05:16.560><c> is</c><00:05:16.800><c> going</c><00:05:16.919><c> to</c><00:05:17.040><c> be</c><00:05:17.040><c> this</c><00:05:17.280><c> number</c>

00:05:17.450 --> 00:05:17.460 align:start position:0%
at the top is going to be this number
 

00:05:17.460 --> 00:05:20.090 align:start position:0%
at the top is going to be this number
when<00:05:18.360><c> we</c><00:05:18.540><c> solve</c><00:05:18.840><c> that</c><00:05:18.960><c> with</c><00:05:19.440><c> gal</c><00:05:19.860><c> Jordan</c>

00:05:20.090 --> 00:05:20.100 align:start position:0%
when we solve that with gal Jordan
 

00:05:20.100 --> 00:05:21.710 align:start position:0%
when we solve that with gal Jordan
illumination<00:05:20.699><c> or</c><00:05:20.820><c> Gauss</c><00:05:21.120><c> elimination</c><00:05:21.479><c> or</c>

00:05:21.710 --> 00:05:21.720 align:start position:0%
illumination or Gauss elimination or
 

00:05:21.720 --> 00:05:23.330 align:start position:0%
illumination or Gauss elimination or
there's<00:05:21.960><c> tons</c><00:05:22.259><c> of</c><00:05:22.380><c> ways</c><00:05:22.680><c> of</c><00:05:22.800><c> solving</c><00:05:23.100><c> it</c><00:05:23.220><c> a</c>

00:05:23.330 --> 00:05:23.340 align:start position:0%
there's tons of ways of solving it a
 

00:05:23.340 --> 00:05:25.550 align:start position:0%
there's tons of ways of solving it a
simple<00:05:23.460><c> substitution</c><00:05:23.880><c> here</c><00:05:24.060><c> will</c><00:05:24.300><c> do</c><00:05:24.960><c> it</c><00:05:25.440><c> not</c>

00:05:25.550 --> 00:05:25.560 align:start position:0%
simple substitution here will do it not
 

00:05:25.560 --> 00:05:27.230 align:start position:0%
simple substitution here will do it not
only<00:05:25.740><c> gives</c><00:05:25.979><c> us</c><00:05:26.160><c> the</c><00:05:26.280><c> value</c><00:05:26.400><c> for</c><00:05:26.639><c> top</c><00:05:26.820><c> it</c><00:05:27.060><c> gives</c>

00:05:27.230 --> 00:05:27.240 align:start position:0%
only gives us the value for top it gives
 

00:05:27.240 --> 00:05:30.350 align:start position:0%
only gives us the value for top it gives
us<00:05:27.360><c> values</c><00:05:28.080><c> for</c><00:05:28.320><c> every</c><00:05:28.680><c> single</c><00:05:29.039><c> variable</c><00:05:29.520><c> in</c>

00:05:30.350 --> 00:05:30.360 align:start position:0%
us values for every single variable in
 

00:05:30.360 --> 00:05:31.850 align:start position:0%
us values for every single variable in
this<00:05:30.479><c> system</c><00:05:30.720><c> we</c><00:05:31.259><c> could</c><00:05:31.440><c> have</c><00:05:31.560><c> read</c><00:05:31.680><c> it</c><00:05:31.800><c> that</c>

00:05:31.850 --> 00:05:31.860 align:start position:0%
this system we could have read it that
 

00:05:31.860 --> 00:05:33.290 align:start position:0%
this system we could have read it that
it<00:05:32.039><c> before</c><00:05:32.100><c> with</c><00:05:32.340><c> the</c><00:05:32.460><c> concrete</c><00:05:32.699><c> execution</c><00:05:33.120><c> so</c>

00:05:33.290 --> 00:05:33.300 align:start position:0%
it before with the concrete execution so
 

00:05:33.300 --> 00:05:34.790 align:start position:0%
it before with the concrete execution so
the<00:05:33.479><c> cool</c><00:05:33.660><c> things</c><00:05:33.780><c> we</c><00:05:33.960><c> can</c><00:05:34.080><c> do</c><00:05:34.199><c> with</c><00:05:34.259><c> this</c><00:05:34.440><c> we</c>

00:05:34.790 --> 00:05:34.800 align:start position:0%
the cool things we can do with this we
 

00:05:34.800 --> 00:05:37.790 align:start position:0%
the cool things we can do with this we
can<00:05:34.979><c> ask</c><00:05:35.639><c> many</c><00:05:36.300><c> many</c><00:05:36.479><c> things</c><00:05:36.840><c> so</c><00:05:37.440><c> you</c><00:05:37.560><c> can</c><00:05:37.680><c> ask</c>

00:05:37.790 --> 00:05:37.800 align:start position:0%
can ask many many things so you can ask
 

00:05:37.800 --> 00:05:40.310 align:start position:0%
can ask many many things so you can ask
for<00:05:37.979><c> example</c><00:05:38.280><c> can</c><00:05:39.000><c> top</c><00:05:39.240><c> be</c><00:05:39.479><c> greater</c><00:05:39.780><c> than</c><00:05:39.840><c> 10</c>

00:05:40.310 --> 00:05:40.320 align:start position:0%
for example can top be greater than 10
 

00:05:40.320 --> 00:05:42.650 align:start position:0%
for example can top be greater than 10
000.<00:05:40.560><c> how</c><00:05:40.979><c> do</c><00:05:41.100><c> we</c><00:05:41.220><c> ask</c><00:05:41.340><c> that</c><00:05:41.520><c> we</c><00:05:41.759><c> simply</c><00:05:42.060><c> add</c><00:05:42.419><c> a</c>

00:05:42.650 --> 00:05:42.660 align:start position:0%
000. how do we ask that we simply add a
 

00:05:42.660 --> 00:05:45.050 align:start position:0%
000. how do we ask that we simply add a
constraint<00:05:43.020><c> that</c><00:05:43.860><c> represents</c><00:05:44.580><c> that</c>

00:05:45.050 --> 00:05:45.060 align:start position:0%
constraint that represents that
 

00:05:45.060 --> 00:05:49.430 align:start position:0%
constraint that represents that
statement<00:05:45.600><c> in</c><00:05:46.560><c> this</c><00:05:46.740><c> language</c><00:05:47.300><c> so</c><00:05:48.300><c> can</c><00:05:48.960><c> top</c><00:05:49.199><c> be</c>

00:05:49.430 --> 00:05:49.440 align:start position:0%
statement in this language so can top be
 

00:05:49.440 --> 00:05:50.990 align:start position:0%
statement in this language so can top be
greater<00:05:49.680><c> than</c><00:05:49.740><c> 10</c><00:05:50.100><c> 000</c><00:05:50.160><c> basically</c><00:05:50.639><c> gives</c><00:05:50.880><c> us</c>

00:05:50.990 --> 00:05:51.000 align:start position:0%
greater than 10 000 basically gives us
 

00:05:51.000 --> 00:05:54.110 align:start position:0%
greater than 10 000 basically gives us
this<00:05:51.300><c> constraint</c><00:05:51.720><c> here</c><00:05:52.100><c> and</c><00:05:53.100><c> then</c><00:05:53.280><c> but</c><00:05:53.820><c> here's</c>

00:05:54.110 --> 00:05:54.120 align:start position:0%
this constraint here and then but here's
 

00:05:54.120 --> 00:05:56.930 align:start position:0%
this constraint here and then but here's
the<00:05:54.240><c> answer</c><00:05:54.500><c> it</c><00:05:55.500><c> is</c><00:05:55.620><c> possible</c><00:05:55.979><c> in</c><00:05:56.580><c> which</c><00:05:56.699><c> case</c>

00:05:56.930 --> 00:05:56.940 align:start position:0%
the answer it is possible in which case
 

00:05:56.940 --> 00:05:59.810 align:start position:0%
the answer it is possible in which case
such<00:05:57.360><c> a</c><00:05:57.539><c> solver</c><00:05:57.840><c> such</c><00:05:58.080><c> a</c><00:05:58.320><c> math</c><00:05:58.500><c> solver</c><00:05:59.039><c> will</c>

00:05:59.810 --> 00:05:59.820 align:start position:0%
such a solver such a math solver will
 

00:05:59.820 --> 00:06:01.850 align:start position:0%
such a solver such a math solver will
tell<00:06:00.120><c> us</c><00:06:00.300><c> that</c><00:06:00.600><c> the</c><00:06:00.780><c> system</c><00:06:00.960><c> is</c><00:06:01.259><c> satisfiable</c>

00:06:01.850 --> 00:06:01.860 align:start position:0%
tell us that the system is satisfiable
 

00:06:01.860 --> 00:06:04.550 align:start position:0%
tell us that the system is satisfiable
meaning<00:06:02.639><c> that</c><00:06:03.000><c> there</c><00:06:03.240><c> is</c><00:06:03.419><c> evaluation</c><00:06:04.139><c> for</c>

00:06:04.550 --> 00:06:04.560 align:start position:0%
meaning that there is evaluation for
 

00:06:04.560 --> 00:06:06.710 align:start position:0%
meaning that there is evaluation for
every<00:06:04.860><c> single</c><00:06:05.160><c> variable</c><00:06:05.460><c> in</c><00:06:05.639><c> the</c><00:06:05.820><c> system</c><00:06:06.000><c> that</c>

00:06:06.710 --> 00:06:06.720 align:start position:0%
every single variable in the system that
 

00:06:06.720 --> 00:06:08.990 align:start position:0%
every single variable in the system that
makes<00:06:07.020><c> this</c><00:06:07.560><c> the</c><00:06:07.860><c> the</c><00:06:07.919><c> the</c><00:06:08.160><c> set</c><00:06:08.820><c> of</c>

00:06:08.990 --> 00:06:09.000 align:start position:0%
makes this the the the set of
 

00:06:09.000 --> 00:06:10.969 align:start position:0%
makes this the the the set of
constraints<00:06:09.419><c> satisfiable</c><00:06:09.960><c> it</c><00:06:10.380><c> is</c><00:06:10.560><c> possible</c>

00:06:10.969 --> 00:06:10.979 align:start position:0%
constraints satisfiable it is possible
 

00:06:10.979 --> 00:06:13.189 align:start position:0%
constraints satisfiable it is possible
that<00:06:11.759><c> all</c><00:06:11.940><c> the</c><00:06:12.060><c> constraints</c><00:06:12.419><c> are</c><00:06:12.660><c> true</c><00:06:12.840><c> at</c><00:06:13.080><c> the</c>

00:06:13.189 --> 00:06:13.199 align:start position:0%
that all the constraints are true at the
 

00:06:13.199 --> 00:06:15.409 align:start position:0%
that all the constraints are true at the
same<00:06:13.380><c> time</c><00:06:13.560><c> and</c><00:06:14.340><c> it</c><00:06:14.460><c> also</c><00:06:14.699><c> gives</c><00:06:14.880><c> us</c><00:06:15.060><c> what</c><00:06:15.240><c> we</c>

00:06:15.409 --> 00:06:15.419 align:start position:0%
same time and it also gives us what we
 

00:06:15.419 --> 00:06:18.110 align:start position:0%
same time and it also gives us what we
call<00:06:15.539><c> a</c><00:06:15.780><c> model</c><00:06:15.960><c> which</c><00:06:16.440><c> is</c><00:06:16.680><c> the</c><00:06:17.460><c> actual</c><00:06:17.699><c> values</c>

00:06:18.110 --> 00:06:18.120 align:start position:0%
call a model which is the actual values
 

00:06:18.120 --> 00:06:20.689 align:start position:0%
call a model which is the actual values
that<00:06:18.360><c> make</c><00:06:18.479><c> the</c><00:06:18.660><c> whole</c><00:06:18.780><c> the</c><00:06:19.199><c> whole</c><00:06:19.320><c> set</c><00:06:19.699><c> of</c>

00:06:20.689 --> 00:06:20.699 align:start position:0%
that make the whole the whole set of
 

00:06:20.699 --> 00:06:23.510 align:start position:0%
that make the whole the whole set of
constraints<00:06:21.180><c> valid</c><00:06:21.680><c> and</c><00:06:22.680><c> similarity</c><00:06:23.280><c> before</c>

00:06:23.510 --> 00:06:23.520 align:start position:0%
constraints valid and similarity before
 

00:06:23.520 --> 00:06:25.850 align:start position:0%
constraints valid and similarity before
we<00:06:23.699><c> have</c><00:06:23.819><c> a</c><00:06:23.940><c> value</c><00:06:24.060><c> for</c><00:06:24.300><c> top</c><00:06:24.479><c> and</c><00:06:24.840><c> and</c><00:06:25.380><c> we</c><00:06:25.620><c> also</c>

00:06:25.850 --> 00:06:25.860 align:start position:0%
we have a value for top and and we also
 

00:06:25.860 --> 00:06:27.230 align:start position:0%
we have a value for top and and we also
have<00:06:25.979><c> values</c><00:06:26.340><c> for</c><00:06:26.520><c> every</c><00:06:26.699><c> single</c><00:06:27.000><c> variable</c>

00:06:27.230 --> 00:06:27.240 align:start position:0%
have values for every single variable
 

00:06:27.240 --> 00:06:30.469 align:start position:0%
have values for every single variable
that<00:06:27.479><c> appears</c><00:06:27.900><c> in</c><00:06:28.319><c> the</c><00:06:28.440><c> in</c><00:06:28.620><c> the</c><00:06:28.800><c> system</c>

00:06:30.469 --> 00:06:30.479 align:start position:0%
that appears in the in the system
 

00:06:30.479 --> 00:06:33.650 align:start position:0%
that appears in the in the system
we<00:06:30.960><c> can</c><00:06:31.080><c> also</c><00:06:31.259><c> ask</c><00:06:31.380><c> n</c><00:06:31.680><c> top</c><00:06:31.860><c> be</c><00:06:32.039><c> zero</c>

00:06:33.650 --> 00:06:33.660 align:start position:0%
we can also ask n top be zero
 

00:06:33.660 --> 00:06:35.570 align:start position:0%
we can also ask n top be zero
what<00:06:34.139><c> do</c><00:06:34.259><c> you</c><00:06:34.319><c> think</c><00:06:34.500><c> so</c><00:06:34.860><c> we</c><00:06:34.979><c> can</c><00:06:35.160><c> represent</c><00:06:35.400><c> it</c>

00:06:35.570 --> 00:06:35.580 align:start position:0%
what do you think so we can represent it
 

00:06:35.580 --> 00:06:37.610 align:start position:0%
what do you think so we can represent it
for<00:06:35.699><c> this</c><00:06:36.000><c> constraints</c><00:06:36.479><c> pretty</c><00:06:36.720><c> simple</c><00:06:36.960><c> by</c>

00:06:37.610 --> 00:06:37.620 align:start position:0%
for this constraints pretty simple by
 

00:06:37.620 --> 00:06:39.469 align:start position:0%
for this constraints pretty simple by
the<00:06:37.740><c> way</c><00:06:37.800><c> where</c><00:06:38.220><c> all</c><00:06:38.580><c> these</c><00:06:38.759><c> variables</c><00:06:39.060><c> are</c><00:06:39.240><c> on</c>

00:06:39.469 --> 00:06:39.479 align:start position:0%
the way where all these variables are on
 

00:06:39.479 --> 00:06:41.090 align:start position:0%
the way where all these variables are on
the<00:06:39.600><c> integers</c><00:06:40.020><c> there's</c><00:06:40.500><c> no</c><00:06:40.680><c> reals</c><00:06:40.979><c> or</c>

00:06:41.090 --> 00:06:41.100 align:start position:0%
the integers there's no reals or
 

00:06:41.100 --> 00:06:43.490 align:start position:0%
the integers there's no reals or
rationals<00:06:41.460><c> here</c><00:06:41.580><c> everything's</c><00:06:42.120><c> integers</c>

00:06:43.490 --> 00:06:43.500 align:start position:0%
rationals here everything's integers
 

00:06:43.500 --> 00:06:44.990 align:start position:0%
rationals here everything's integers
um in<00:06:43.740><c> this</c><00:06:43.800><c> case</c><00:06:43.919><c> this</c><00:06:44.160><c> oversized</c><00:06:44.759><c> the</c>

00:06:44.990 --> 00:06:45.000 align:start position:0%
um in this case this oversized the
 

00:06:45.000 --> 00:06:46.129 align:start position:0%
um in this case this oversized the
system<00:06:45.120><c> is</c><00:06:45.360><c> unsatisfiable</c><00:06:46.020><c> it's</c>

00:06:46.129 --> 00:06:46.139 align:start position:0%
system is unsatisfiable it's
 

00:06:46.139 --> 00:06:48.950 align:start position:0%
system is unsatisfiable it's
inconsistent<00:06:46.680><c> there's</c><00:06:46.979><c> there's</c><00:06:47.639><c> no</c><00:06:48.060><c> way</c><00:06:48.300><c> all</c>

00:06:48.950 --> 00:06:48.960 align:start position:0%
inconsistent there's there's no way all
 

00:06:48.960 --> 00:06:50.450 align:start position:0%
inconsistent there's there's no way all
these<00:06:49.199><c> constraints</c><00:06:49.500><c> can</c><00:06:49.680><c> be</c><00:06:49.800><c> true</c><00:06:49.979><c> at</c><00:06:50.340><c> the</c>

00:06:50.450 --> 00:06:50.460 align:start position:0%
these constraints can be true at the
 

00:06:50.460 --> 00:06:52.370 align:start position:0%
these constraints can be true at the
same<00:06:50.639><c> time</c><00:06:50.880><c> they</c><00:06:51.419><c> may</c><00:06:51.539><c> be</c><00:06:51.660><c> true</c><00:06:51.840><c> in</c><00:06:52.020><c> separation</c>

00:06:52.370 --> 00:06:52.380 align:start position:0%
same time they may be true in separation
 

00:06:52.380 --> 00:06:54.529 align:start position:0%
same time they may be true in separation
but<00:06:52.680><c> they</c><00:06:52.800><c> will</c><00:06:52.979><c> never</c><00:06:53.160><c> be</c><00:06:53.400><c> true</c>

00:06:54.529 --> 00:06:54.539 align:start position:0%
but they will never be true
 

00:06:54.539 --> 00:06:56.450 align:start position:0%
but they will never be true
um at<00:06:55.080><c> the</c><00:06:55.199><c> same</c><00:06:55.319><c> time</c><00:06:55.500><c> what</c><00:06:55.979><c> we</c><00:06:56.160><c> want</c><00:06:56.280><c> to</c><00:06:56.400><c> do</c>

00:06:56.450 --> 00:06:56.460 align:start position:0%
um at the same time what we want to do
 

00:06:56.460 --> 00:06:58.070 align:start position:0%
um at the same time what we want to do
is<00:06:56.699><c> basically</c>

00:06:58.070 --> 00:06:58.080 align:start position:0%
is basically
 

00:06:58.080 --> 00:07:01.010 align:start position:0%
is basically
do<00:06:58.680><c> exactly</c><00:06:59.039><c> that</c><00:06:59.220><c> in</c><00:06:59.460><c> solidity</c><00:06:59.880><c> so</c><00:07:00.660><c> but</c><00:07:00.840><c> what</c>

00:07:01.010 --> 00:07:01.020 align:start position:0%
do exactly that in solidity so but what
 

00:07:01.020 --> 00:07:02.450 align:start position:0%
do exactly that in solidity so but what
exactly<00:07:01.319><c> do</c><00:07:01.440><c> we</c><00:07:01.560><c> want</c><00:07:01.680><c> to</c><00:07:01.800><c> do</c>

00:07:02.450 --> 00:07:02.460 align:start position:0%
exactly do we want to do
 

00:07:02.460 --> 00:07:05.029 align:start position:0%
exactly do we want to do
you<00:07:02.880><c> can</c><00:07:03.000><c> do</c><00:07:03.120><c> several</c><00:07:03.479><c> things</c><00:07:03.600><c> you</c><00:07:04.020><c> can</c>

00:07:05.029 --> 00:07:05.039 align:start position:0%
you can do several things you can
 

00:07:05.039 --> 00:07:07.070 align:start position:0%
you can do several things you can
try<00:07:05.460><c> to</c><00:07:05.580><c> prove</c><00:07:05.819><c> that</c><00:07:05.940><c> a</c><00:07:06.180><c> certain</c><00:07:06.360><c> assertion</c><00:07:06.900><c> is</c>

00:07:07.070 --> 00:07:07.080 align:start position:0%
try to prove that a certain assertion is
 

00:07:07.080 --> 00:07:09.290 align:start position:0%
try to prove that a certain assertion is
true<00:07:07.259><c> you</c><00:07:07.500><c> can</c><00:07:07.620><c> prove</c><00:07:07.979><c> that</c><00:07:08.100><c> a</c><00:07:08.340><c> certain</c><00:07:08.520><c> thing</c>

00:07:09.290 --> 00:07:09.300 align:start position:0%
true you can prove that a certain thing
 

00:07:09.300 --> 00:07:11.090 align:start position:0%
true you can prove that a certain thing
always<00:07:09.660><c> happens</c><00:07:09.840><c> or</c><00:07:10.139><c> never</c><00:07:10.319><c> happens</c><00:07:10.500><c> kind</c><00:07:10.979><c> of</c>

00:07:11.090 --> 00:07:11.100 align:start position:0%
always happens or never happens kind of
 

00:07:11.100 --> 00:07:12.110 align:start position:0%
always happens or never happens kind of
things

00:07:12.110 --> 00:07:12.120 align:start position:0%
things
 

00:07:12.120 --> 00:07:13.790 align:start position:0%
things
for<00:07:12.539><c> our</c><00:07:12.720><c> use</c><00:07:12.960><c> case</c><00:07:13.139><c> we're</c><00:07:13.319><c> going</c><00:07:13.440><c> to</c><00:07:13.560><c> try</c><00:07:13.680><c> to</c>

00:07:13.790 --> 00:07:13.800 align:start position:0%
for our use case we're going to try to
 

00:07:13.800 --> 00:07:16.010 align:start position:0%
for our use case we're going to try to
find<00:07:13.979><c> unreachable</c><00:07:14.639><c> branches</c><00:07:15.120><c> so</c><00:07:15.660><c> here's</c><00:07:15.900><c> a</c>

00:07:16.010 --> 00:07:16.020 align:start position:0%
find unreachable branches so here's a
 

00:07:16.020 --> 00:07:17.330 align:start position:0%
find unreachable branches so here's a
piece<00:07:16.139><c> of</c><00:07:16.259><c> solidity</c><00:07:16.680><c> we're</c><00:07:16.919><c> going</c><00:07:17.039><c> to</c><00:07:17.100><c> analyze</c>

00:07:17.330 --> 00:07:17.340 align:start position:0%
piece of solidity we're going to analyze
 

00:07:17.340 --> 00:07:19.309 align:start position:0%
piece of solidity we're going to analyze
the<00:07:17.460><c> VM</c><00:07:17.699><c> byte</c><00:07:17.940><c> code</c><00:07:18.060><c> but</c><00:07:18.539><c> this</c><00:07:18.720><c> is</c><00:07:18.780><c> just</c><00:07:19.020><c> to</c>

00:07:19.309 --> 00:07:19.319 align:start position:0%
the VM byte code but this is just to
 

00:07:19.319 --> 00:07:20.510 align:start position:0%
the VM byte code but this is just to
show<00:07:19.560><c> an</c><00:07:19.740><c> example</c>

00:07:20.510 --> 00:07:20.520 align:start position:0%
show an example
 

00:07:20.520 --> 00:07:22.309 align:start position:0%
show an example
so<00:07:21.060><c> we</c><00:07:21.120><c> have</c><00:07:21.240><c> this</c><00:07:21.360><c> functional</c><00:07:21.660><c> X</c><00:07:21.840><c> and</c><00:07:22.020><c> integer</c>

00:07:22.309 --> 00:07:22.319 align:start position:0%
so we have this functional X and integer
 

00:07:22.319 --> 00:07:24.770 align:start position:0%
so we have this functional X and integer
X<00:07:22.560><c> and</c><00:07:23.280><c> first</c><00:07:23.460><c> we</c><00:07:23.699><c> require</c><00:07:23.819><c> that</c><00:07:24.180><c> X</c><00:07:24.360><c> has</c><00:07:24.599><c> to</c><00:07:24.720><c> be</c>

00:07:24.770 --> 00:07:24.780 align:start position:0%
X and first we require that X has to be
 

00:07:24.780 --> 00:07:26.890 align:start position:0%
X and first we require that X has to be
last<00:07:24.900><c> or</c><00:07:25.080><c> equal</c><00:07:25.259><c> 10.</c>

00:07:26.890 --> 00:07:26.900 align:start position:0%
last or equal 10.
 

00:07:26.900 --> 00:07:29.629 align:start position:0%
last or equal 10.
then<00:07:27.900><c> we</c><00:07:28.199><c> have</c><00:07:28.259><c> the</c><00:07:28.500><c> branches</c><00:07:28.860><c> as</c><00:07:28.979><c> if</c><00:07:29.160><c> x</c><00:07:29.340><c> slash</c>

00:07:29.629 --> 00:07:29.639 align:start position:0%
then we have the branches as if x slash
 

00:07:29.639 --> 00:07:32.749 align:start position:0%
then we have the branches as if x slash
or<00:07:29.699><c> equal</c><00:07:29.819><c> 50</c><00:07:30.060><c> does</c><00:07:30.419><c> something</c><00:07:30.660><c> and</c><00:07:31.620><c> then</c><00:07:31.860><c> the</c>

00:07:32.749 --> 00:07:32.759 align:start position:0%
or equal 50 does something and then the
 

00:07:32.759 --> 00:07:35.089 align:start position:0%
or equal 50 does something and then the
rest<00:07:32.940><c> does</c><00:07:33.479><c> return</c><00:07:33.660><c> is</c><00:07:33.960><c> false</c>

00:07:35.089 --> 00:07:35.099 align:start position:0%
rest does return is false
 

00:07:35.099 --> 00:07:38.089 align:start position:0%
rest does return is false
so<00:07:35.940><c> this</c><00:07:36.479><c> Branch</c><00:07:36.840><c> here</c><00:07:37.020><c> basically</c><00:07:37.560><c> the</c><00:07:37.800><c> false</c>

00:07:38.089 --> 00:07:38.099 align:start position:0%
so this Branch here basically the false
 

00:07:38.099 --> 00:07:39.710 align:start position:0%
so this Branch here basically the false
branch<00:07:38.400><c> of</c><00:07:38.520><c> the</c><00:07:38.639><c> f</c>

00:07:39.710 --> 00:07:39.720 align:start position:0%
branch of the f
 

00:07:39.720 --> 00:07:41.710 align:start position:0%
branch of the f
it's<00:07:40.080><c> unreachable</c><00:07:40.620><c> right</c><00:07:40.860><c> because</c>

00:07:41.710 --> 00:07:41.720 align:start position:0%
it's unreachable right because
 

00:07:41.720 --> 00:07:44.629 align:start position:0%
it's unreachable right because
ax<00:07:42.720><c> we</c><00:07:43.080><c> know</c><00:07:43.259><c> that</c><00:07:43.440><c> X</c><00:07:43.620><c> is</c><00:07:43.800><c> less</c><00:07:43.979><c> or</c><00:07:44.220><c> equal</c><00:07:44.400><c> 10</c>

00:07:44.629 --> 00:07:44.639 align:start position:0%
ax we know that X is less or equal 10
 

00:07:44.639 --> 00:07:46.309 align:start position:0%
ax we know that X is less or equal 10
from<00:07:45.000><c> the</c><00:07:45.060><c> beginning</c><00:07:45.180><c> of</c><00:07:45.419><c> the</c><00:07:45.479><c> function</c>

00:07:46.309 --> 00:07:46.319 align:start position:0%
from the beginning of the function
 

00:07:46.319 --> 00:07:48.050 align:start position:0%
from the beginning of the function
which<00:07:46.800><c> means</c><00:07:47.039><c> it's</c><00:07:47.280><c> always</c><00:07:47.460><c> less</c><00:07:47.699><c> or</c><00:07:47.880><c> equal</c>

00:07:48.050 --> 00:07:48.060 align:start position:0%
which means it's always less or equal
 

00:07:48.060 --> 00:07:49.309 align:start position:0%
which means it's always less or equal
50.

00:07:49.309 --> 00:07:49.319 align:start position:0%
50.
 

00:07:49.319 --> 00:07:51.290 align:start position:0%
50.
meaning<00:07:49.680><c> that</c><00:07:49.979><c> it</c><00:07:50.099><c> will</c><00:07:50.220><c> always</c><00:07:50.460><c> enter</c><00:07:50.819><c> the</c><00:07:51.060><c> if</c>

00:07:51.290 --> 00:07:51.300 align:start position:0%
meaning that it will always enter the if
 

00:07:51.300 --> 00:07:54.110 align:start position:0%
meaning that it will always enter the if
and<00:07:52.199><c> it</c><00:07:52.319><c> will</c><00:07:52.440><c> never</c><00:07:52.680><c> come</c><00:07:53.039><c> to</c><00:07:53.280><c> this</c><00:07:53.580><c> part</c><00:07:53.940><c> of</c>

00:07:54.110 --> 00:07:54.120 align:start position:0%
and it will never come to this part of
 

00:07:54.120 --> 00:07:55.550 align:start position:0%
and it will never come to this part of
the<00:07:54.180><c> of</c><00:07:54.360><c> the</c><00:07:54.599><c> code</c><00:07:54.660><c> so</c><00:07:54.900><c> if</c><00:07:55.080><c> you</c><00:07:55.139><c> take</c><00:07:55.259><c> the</c><00:07:55.380><c> true</c>

00:07:55.550 --> 00:07:55.560 align:start position:0%
the of the code so if you take the true
 

00:07:55.560 --> 00:07:59.210 align:start position:0%
the of the code so if you take the true
Branch<00:07:55.940><c> this</c><00:07:56.940><c> is</c><00:07:57.060><c> reachable</c><00:07:57.360><c> because</c><00:07:58.220><c> these</c>

00:07:59.210 --> 00:07:59.220 align:start position:0%
Branch this is reachable because these
 

00:07:59.220 --> 00:08:01.570 align:start position:0%
Branch this is reachable because these
constraints<00:08:00.120><c> are</c>

00:08:01.570 --> 00:08:01.580 align:start position:0%
constraints are
 

00:08:01.580 --> 00:08:03.529 align:start position:0%
constraints are
together

00:08:03.529 --> 00:08:03.539 align:start position:0%
together
 

00:08:03.539 --> 00:08:05.930 align:start position:0%
together
but<00:08:03.960><c> these</c><00:08:04.199><c> are</c><00:08:04.319><c> not</c><00:08:04.440><c> right</c><00:08:05.039><c> so</c><00:08:05.280><c> if</c><00:08:05.400><c> x</c><00:08:05.580><c> has</c><00:08:05.880><c> to</c>

00:08:05.930 --> 00:08:05.940 align:start position:0%
but these are not right so if x has to
 

00:08:05.940 --> 00:08:07.730 align:start position:0%
but these are not right so if x has to
be<00:08:06.060><c> less</c><00:08:06.180><c> or</c><00:08:06.479><c> equal</c><00:08:06.599><c> 10</c><00:08:06.840><c> it</c><00:08:07.020><c> cannot</c><00:08:07.259><c> be</c><00:08:07.380><c> greater</c>

00:08:07.730 --> 00:08:07.740 align:start position:0%
be less or equal 10 it cannot be greater
 

00:08:07.740 --> 00:08:10.249 align:start position:0%
be less or equal 10 it cannot be greater
than<00:08:08.099><c> 50.</c><00:08:08.819><c> so</c><00:08:09.000><c> this</c><00:08:09.479><c> branch</c><00:08:09.720><c> is</c><00:08:09.840><c> unreachable</c>

00:08:10.249 --> 00:08:10.259 align:start position:0%
than 50. so this branch is unreachable
 

00:08:10.259 --> 00:08:11.629 align:start position:0%
than 50. so this branch is unreachable
we<00:08:10.500><c> can</c><00:08:10.560><c> remove</c><00:08:10.680><c> the</c><00:08:10.919><c> whole</c><00:08:11.039><c> thing</c><00:08:11.160><c> well</c><00:08:11.400><c> not</c>

00:08:11.629 --> 00:08:11.639 align:start position:0%
we can remove the whole thing well not
 

00:08:11.639 --> 00:08:14.390 align:start position:0%
we can remove the whole thing well not
the<00:08:11.819><c> whole</c><00:08:11.940><c> thing</c><00:08:12.060><c> just</c><00:08:12.360><c> the</c><00:08:13.080><c> the</c><00:08:13.440><c> bottom</c><00:08:13.800><c> the</c>

00:08:14.390 --> 00:08:14.400 align:start position:0%
the whole thing just the the bottom the
 

00:08:14.400 --> 00:08:16.129 align:start position:0%
the whole thing just the the bottom the
cool<00:08:14.520><c> thing</c><00:08:14.699><c> about</c><00:08:15.060><c> trying</c><00:08:15.599><c> to</c><00:08:15.720><c> do</c><00:08:15.840><c> that</c><00:08:15.900><c> stuff</c>

00:08:16.129 --> 00:08:16.139 align:start position:0%
cool thing about trying to do that stuff
 

00:08:16.139 --> 00:08:18.529 align:start position:0%
cool thing about trying to do that stuff
is<00:08:16.380><c> that</c><00:08:16.500><c> we</c><00:08:16.680><c> need</c><00:08:16.800><c> very</c><00:08:17.099><c> little</c><00:08:17.280><c> support</c><00:08:17.639><c> from</c>

00:08:18.529 --> 00:08:18.539 align:start position:0%
is that we need very little support from
 

00:08:18.539 --> 00:08:19.790 align:start position:0%
is that we need very little support from
the<00:08:18.599><c> evm</c><00:08:18.960><c> of</c><00:08:19.139><c> course</c><00:08:19.199><c> if</c><00:08:19.319><c> you</c><00:08:19.440><c> want</c><00:08:19.560><c> to</c><00:08:19.680><c> write</c>

00:08:19.790 --> 00:08:19.800 align:start position:0%
the evm of course if you want to write
 

00:08:19.800 --> 00:08:21.290 align:start position:0%
the evm of course if you want to write
if<00:08:20.460><c> you</c><00:08:20.580><c> want</c><00:08:20.699><c> to</c><00:08:20.819><c> write</c><00:08:20.879><c> a</c><00:08:20.940><c> symbolic</c>

00:08:21.290 --> 00:08:21.300 align:start position:0%
if you want to write a symbolic
 

00:08:21.300 --> 00:08:22.430 align:start position:0%
if you want to write a symbolic
education<00:08:21.599><c> engineer</c><00:08:22.020><c> to</c><00:08:22.199><c> write</c><00:08:22.259><c> an</c>

00:08:22.430 --> 00:08:22.440 align:start position:0%
education engineer to write an
 

00:08:22.440 --> 00:08:24.050 align:start position:0%
education engineer to write an
interpreter<00:08:22.800><c> in</c><00:08:22.919><c> the</c><00:08:23.039><c> first</c><00:08:23.099><c> place</c><00:08:23.340><c> right</c><00:08:23.879><c> you</c>

00:08:24.050 --> 00:08:24.060 align:start position:0%
interpreter in the first place right you
 

00:08:24.060 --> 00:08:25.730 align:start position:0%
interpreter in the first place right you
need<00:08:24.180><c> an</c><00:08:24.360><c> NVM</c><00:08:24.660><c> interpreter</c>

00:08:25.730 --> 00:08:25.740 align:start position:0%
need an NVM interpreter
 

00:08:25.740 --> 00:08:27.409 align:start position:0%
need an NVM interpreter
but<00:08:26.280><c> we</c><00:08:26.580><c> don't</c><00:08:26.699><c> want</c><00:08:26.819><c> to</c><00:08:26.940><c> deal</c><00:08:27.060><c> with</c><00:08:27.240><c> every</c>

00:08:27.409 --> 00:08:27.419 align:start position:0%
but we don't want to deal with every
 

00:08:27.419 --> 00:08:29.210 align:start position:0%
but we don't want to deal with every
object<00:08:27.720><c> because</c><00:08:28.020><c> it</c><00:08:28.379><c> gets</c><00:08:28.620><c> really</c><00:08:28.800><c> big</c><00:08:28.979><c> really</c>

00:08:29.210 --> 00:08:29.220 align:start position:0%
object because it gets really big really
 

00:08:29.220 --> 00:08:30.890 align:start position:0%
object because it gets really big really
complicated<00:08:29.699><c> and</c><00:08:30.360><c> we</c><00:08:30.479><c> don't</c><00:08:30.599><c> want</c><00:08:30.720><c> to</c><00:08:30.840><c> do</c>

00:08:30.890 --> 00:08:30.900 align:start position:0%
complicated and we don't want to do
 

00:08:30.900 --> 00:08:32.690 align:start position:0%
complicated and we don't want to do
things<00:08:31.020><c> like</c><00:08:31.199><c> call</c><00:08:31.440><c> create</c><00:08:31.800><c> and</c><00:08:32.219><c> storage</c><00:08:32.459><c> and</c>

00:08:32.690 --> 00:08:32.700 align:start position:0%
things like call create and storage and
 

00:08:32.700 --> 00:08:34.250 align:start position:0%
things like call create and storage and
all<00:08:32.820><c> these</c><00:08:33.000><c> complicated</c><00:08:33.300><c> stuff</c><00:08:33.599><c> which</c><00:08:34.080><c> of</c>

00:08:34.250 --> 00:08:34.260 align:start position:0%
all these complicated stuff which of
 

00:08:34.260 --> 00:08:35.570 align:start position:0%
all these complicated stuff which of
course<00:08:34.380><c> you</c><00:08:34.500><c> could</c><00:08:34.680><c> and</c><00:08:34.800><c> a</c><00:08:34.979><c> lot</c><00:08:35.039><c> of</c><00:08:35.099><c> tools</c><00:08:35.399><c> do</c>

00:08:35.570 --> 00:08:35.580 align:start position:0%
course you could and a lot of tools do
 

00:08:35.580 --> 00:08:37.190 align:start position:0%
course you could and a lot of tools do
that<00:08:35.760><c> we</c><00:08:36.419><c> don't</c><00:08:36.599><c> want</c><00:08:36.719><c> to</c><00:08:36.839><c> do</c><00:08:36.899><c> that</c><00:08:37.020><c> in</c>

00:08:37.190 --> 00:08:37.200 align:start position:0%
that we don't want to do that in
 

00:08:37.200 --> 00:08:38.990 align:start position:0%
that we don't want to do that in
solidity<00:08:37.620><c> the</c><00:08:38.039><c> cool</c><00:08:38.219><c> thing</c><00:08:38.339><c> again</c><00:08:38.520><c> about</c><00:08:38.760><c> this</c>

00:08:38.990 --> 00:08:39.000 align:start position:0%
solidity the cool thing again about this
 

00:08:39.000 --> 00:08:41.089 align:start position:0%
solidity the cool thing again about this
encoding<00:08:39.419><c> we</c><00:08:39.719><c> we</c><00:08:40.020><c> only</c><00:08:40.260><c> have</c><00:08:40.560><c> to</c><00:08:40.740><c> care</c><00:08:40.919><c> about</c>

00:08:41.089 --> 00:08:41.099 align:start position:0%
encoding we we only have to care about
 

00:08:41.099 --> 00:08:43.850 align:start position:0%
encoding we we only have to care about
the<00:08:41.700><c> stack</c><00:08:41.940><c> operations</c>

00:08:43.850 --> 00:08:43.860 align:start position:0%
the stack operations
 

00:08:43.860 --> 00:08:48.250 align:start position:0%
the stack operations
um control<00:08:44.099><c> flow</c><00:08:44.399><c> so</c><00:08:45.360><c> it</c><00:08:45.540><c> jumps</c><00:08:45.959><c> and</c>

00:08:48.250 --> 00:08:48.260 align:start position:0%
um control flow so it jumps and
 

00:08:48.260 --> 00:08:50.990 align:start position:0%
um control flow so it jumps and
opcodes<00:08:49.260><c> that</c><00:08:49.500><c> stop</c><00:08:49.680><c> the</c><00:08:49.980><c> execution</c>

00:08:50.990 --> 00:08:51.000 align:start position:0%
opcodes that stop the execution
 

00:08:51.000 --> 00:08:52.970 align:start position:0%
opcodes that stop the execution
and<00:08:51.420><c> relation</c><00:08:51.720><c> upgrades</c>

00:08:52.970 --> 00:08:52.980 align:start position:0%
and relation upgrades
 

00:08:52.980 --> 00:08:54.710 align:start position:0%
and relation upgrades
and<00:08:53.640><c> so</c><00:08:53.880><c> basically</c><00:08:54.180><c> we're</c><00:08:54.360><c> going</c><00:08:54.480><c> to</c><00:08:54.600><c> Care</c>

00:08:54.710 --> 00:08:54.720 align:start position:0%
and so basically we're going to Care
 

00:08:54.720 --> 00:08:57.230 align:start position:0%
and so basically we're going to Care
mostly<00:08:55.140><c> about</c><00:08:55.260><c> as</c><00:08:55.440><c> I</c><00:08:55.620><c> saw</c><00:08:55.740><c> before</c><00:08:55.920><c> ifs</c><00:08:56.760><c> with</c>

00:08:57.230 --> 00:08:57.240 align:start position:0%
mostly about as I saw before ifs with
 

00:08:57.240 --> 00:08:59.570 align:start position:0%
mostly about as I saw before ifs with
relation<00:08:57.839><c> operators</c><00:08:58.320><c> inside</c><00:08:58.680><c> so</c><00:08:59.100><c> less</c><00:08:59.399><c> than</c>

00:08:59.570 --> 00:08:59.580 align:start position:0%
relation operators inside so less than
 

00:08:59.580 --> 00:09:01.310 align:start position:0%
relation operators inside so less than
greater<00:08:59.940><c> than</c><00:09:00.060><c> and</c><00:09:00.360><c> the</c><00:09:00.540><c> negation</c><00:09:00.899><c> of</c><00:09:01.080><c> these</c>

00:09:01.310 --> 00:09:01.320 align:start position:0%
greater than and the negation of these
 

00:09:01.320 --> 00:09:03.530 align:start position:0%
greater than and the negation of these
so<00:09:01.500><c> that</c><00:09:01.620><c> you</c><00:09:01.800><c> can</c><00:09:01.980><c> get</c><00:09:02.160><c> less</c><00:09:03.000><c> than</c><00:09:03.180><c> or</c><00:09:03.360><c> equal</c>

00:09:03.530 --> 00:09:03.540 align:start position:0%
so that you can get less than or equal
 

00:09:03.540 --> 00:09:05.870 align:start position:0%
so that you can get less than or equal
and<00:09:04.019><c> greater</c><00:09:04.380><c> than</c><00:09:04.500><c> or</c><00:09:04.800><c> equal</c><00:09:04.980><c> the</c><00:09:05.459><c> symbolic</c>

00:09:05.870 --> 00:09:05.880 align:start position:0%
and greater than or equal the symbolic
 

00:09:05.880 --> 00:09:07.009 align:start position:0%
and greater than or equal the symbolic
encoding<00:09:06.240><c> we're</c><00:09:06.360><c> going</c><00:09:06.540><c> to</c><00:09:06.600><c> use</c><00:09:06.660><c> is</c><00:09:06.779><c> also</c>

00:09:07.009 --> 00:09:07.019 align:start position:0%
encoding we're going to use is also
 

00:09:07.019 --> 00:09:08.210 align:start position:0%
encoding we're going to use is also
pretty<00:09:07.140><c> simple</c>

00:09:08.210 --> 00:09:08.220 align:start position:0%
pretty simple
 

00:09:08.220 --> 00:09:10.850 align:start position:0%
pretty simple
so<00:09:08.700><c> for</c><00:09:08.940><c> every</c><00:09:09.300><c> evm</c><00:09:09.959><c> expression</c><00:09:10.380><c> that</c><00:09:10.500><c> we</c><00:09:10.680><c> saw</c>

00:09:10.850 --> 00:09:10.860 align:start position:0%
so for every evm expression that we saw
 

00:09:10.860 --> 00:09:12.829 align:start position:0%
so for every evm expression that we saw
before<00:09:11.100><c> we're</c><00:09:12.000><c> going</c><00:09:12.120><c> to</c><00:09:12.300><c> transform</c><00:09:12.600><c> it</c><00:09:12.779><c> into</c>

00:09:12.829 --> 00:09:12.839 align:start position:0%
before we're going to transform it into
 

00:09:12.839 --> 00:09:15.829 align:start position:0%
before we're going to transform it into
math<00:09:13.260><c> constraint</c><00:09:14.220><c> of</c><00:09:14.880><c> the</c><00:09:15.000><c> form</c><00:09:15.180><c> a</c><00:09:15.420><c> minus</c><00:09:15.720><c> B</c>

00:09:15.829 --> 00:09:15.839 align:start position:0%
math constraint of the form a minus B
 

00:09:15.839 --> 00:09:18.230 align:start position:0%
math constraint of the form a minus B
less<00:09:16.019><c> or</c><00:09:16.200><c> equal</c><00:09:16.320><c> K</c><00:09:16.620><c> where</c><00:09:17.459><c> A</c><00:09:17.700><c> and</c><00:09:17.820><c> B</c><00:09:18.000><c> are</c><00:09:18.120><c> going</c>

00:09:18.230 --> 00:09:18.240 align:start position:0%
less or equal K where A and B are going
 

00:09:18.240 --> 00:09:19.610 align:start position:0%
less or equal K where A and B are going
to<00:09:18.300><c> be</c><00:09:18.360><c> variables</c><00:09:18.779><c> and</c><00:09:18.959><c> K</c><00:09:19.140><c> is</c><00:09:19.260><c> going</c><00:09:19.380><c> to</c><00:09:19.440><c> be</c><00:09:19.560><c> a</c>

00:09:19.610 --> 00:09:19.620 align:start position:0%
to be variables and K is going to be a
 

00:09:19.620 --> 00:09:22.430 align:start position:0%
to be variables and K is going to be a
constant<00:09:19.980><c> so</c><00:09:20.760><c> this</c><00:09:21.180><c> is</c><00:09:21.540><c> also</c><00:09:21.779><c> what</c><00:09:21.959><c> Harry</c><00:09:22.140><c> was</c>

00:09:22.430 --> 00:09:22.440 align:start position:0%
constant so this is also what Harry was
 

00:09:22.440 --> 00:09:25.730 align:start position:0%
constant so this is also what Harry was
talking<00:09:22.620><c> about</c><00:09:22.740><c> yesterday</c><00:09:23.279><c> in</c><00:09:23.940><c> in</c><00:09:24.480><c> his</c><00:09:24.720><c> talk</c>

00:09:25.730 --> 00:09:25.740 align:start position:0%
talking about yesterday in in his talk
 

00:09:25.740 --> 00:09:27.650 align:start position:0%
talking about yesterday in in his talk
and<00:09:26.160><c> we</c><00:09:26.279><c> got</c><00:09:26.459><c> things</c><00:09:26.700><c> like</c><00:09:26.880><c> like</c><00:09:27.120><c> this</c><00:09:27.360><c> for</c>

00:09:27.650 --> 00:09:27.660 align:start position:0%
and we got things like like this for
 

00:09:27.660 --> 00:09:29.509 align:start position:0%
and we got things like like this for
example<00:09:27.839><c> whoever</c><00:09:28.620><c> was</c><00:09:28.800><c> in</c><00:09:28.980><c> Harry's</c><00:09:29.399><c> talking</c>

00:09:29.509 --> 00:09:29.519 align:start position:0%
example whoever was in Harry's talking
 

00:09:29.519 --> 00:09:31.970 align:start position:0%
example whoever was in Harry's talking
together<00:09:29.820><c> is</c><00:09:30.300><c> this</c><00:09:30.600><c> uh</c><00:09:30.959><c> system</c><00:09:31.200><c> satisfiable</c>

00:09:31.970 --> 00:09:31.980 align:start position:0%
together is this uh system satisfiable
 

00:09:31.980 --> 00:09:34.009 align:start position:0%
together is this uh system satisfiable
yeah<00:09:32.640><c> so</c><00:09:32.760><c> if</c><00:09:32.880><c> you</c><00:09:33.000><c> sum</c><00:09:33.180><c> everything</c><00:09:33.360><c> on</c><00:09:33.779><c> both</c>

00:09:34.009 --> 00:09:34.019 align:start position:0%
yeah so if you sum everything on both
 

00:09:34.019 --> 00:09:36.470 align:start position:0%
yeah so if you sum everything on both
sides<00:09:34.440><c> then</c><00:09:35.040><c> you</c><00:09:35.220><c> get</c><00:09:35.399><c> basically</c><00:09:35.820><c> zero</c><00:09:36.240><c> last</c>

00:09:36.470 --> 00:09:36.480 align:start position:0%
sides then you get basically zero last
 

00:09:36.480 --> 00:09:38.630 align:start position:0%
sides then you get basically zero last
Oracle<00:09:36.980><c> minus</c><00:09:37.980><c> two</c><00:09:38.160><c> which</c><00:09:38.399><c> is</c><00:09:38.519><c> a</c>

00:09:38.630 --> 00:09:38.640 align:start position:0%
Oracle minus two which is a
 

00:09:38.640 --> 00:09:40.790 align:start position:0%
Oracle minus two which is a
contradiction<00:09:39.060><c> so</c><00:09:40.019><c> this</c><00:09:40.200><c> system</c><00:09:40.440><c> is</c>

00:09:40.790 --> 00:09:40.800 align:start position:0%
contradiction so this system is
 

00:09:40.800 --> 00:09:43.730 align:start position:0%
contradiction so this system is
impossible<00:09:41.339><c> to</c><00:09:41.880><c> be</c><00:09:42.000><c> satisfiable</c>

00:09:43.730 --> 00:09:43.740 align:start position:0%
impossible to be satisfiable
 

00:09:43.740 --> 00:09:45.710 align:start position:0%
impossible to be satisfiable
um<00:09:43.860><c> the</c><00:09:44.339><c> reason</c><00:09:44.519><c> why</c><00:09:44.760><c> we</c><00:09:44.880><c> like</c><00:09:45.000><c> this</c><00:09:45.240><c> encoding</c>

00:09:45.710 --> 00:09:45.720 align:start position:0%
um the reason why we like this encoding
 

00:09:45.720 --> 00:09:46.850 align:start position:0%
um the reason why we like this encoding
is<00:09:45.899><c> because</c>

00:09:46.850 --> 00:09:46.860 align:start position:0%
is because
 

00:09:46.860 --> 00:09:49.310 align:start position:0%
is because
we<00:09:47.160><c> can</c><00:09:47.339><c> use</c><00:09:47.459><c> a</c><00:09:47.640><c> difference</c><00:09:47.760><c> logic</c><00:09:48.240><c> solver</c><00:09:48.540><c> and</c>

00:09:49.310 --> 00:09:49.320 align:start position:0%
we can use a difference logic solver and
 

00:09:49.320 --> 00:09:51.290 align:start position:0%
we can use a difference logic solver and
again<00:09:49.440><c> as</c><00:09:49.680><c> Harry</c><00:09:49.860><c> explained</c><00:09:50.279><c> yesterday</c><00:09:50.399><c> a</c>

00:09:51.290 --> 00:09:51.300 align:start position:0%
again as Harry explained yesterday a
 

00:09:51.300 --> 00:09:52.670 align:start position:0%
again as Harry explained yesterday a
difference<00:09:51.480><c> logic</c><00:09:51.899><c> solver</c><00:09:52.140><c> is</c><00:09:52.260><c> very</c><00:09:52.500><c> simple</c>

00:09:52.670 --> 00:09:52.680 align:start position:0%
difference logic solver is very simple
 

00:09:52.680 --> 00:09:54.410 align:start position:0%
difference logic solver is very simple
to<00:09:52.980><c> write</c><00:09:53.100><c> what</c><00:09:53.519><c> does</c><00:09:53.640><c> it</c><00:09:53.760><c> do</c><00:09:53.940><c> it</c><00:09:54.180><c> basically</c>

00:09:54.410 --> 00:09:54.420 align:start position:0%
to write what does it do it basically
 

00:09:54.420 --> 00:09:56.329 align:start position:0%
to write what does it do it basically
takes<00:09:54.720><c> these</c><00:09:55.080><c> constraints</c><00:09:55.440><c> these</c><00:09:56.279><c> math</c>

00:09:56.329 --> 00:09:56.339 align:start position:0%
takes these constraints these math
 

00:09:56.339 --> 00:09:58.730 align:start position:0%
takes these constraints these math
constraints<00:09:56.940><c> and</c><00:09:57.480><c> it</c><00:09:57.600><c> tells</c><00:09:57.899><c> you</c>

00:09:58.730 --> 00:09:58.740 align:start position:0%
constraints and it tells you
 

00:09:58.740 --> 00:10:00.949 align:start position:0%
constraints and it tells you
whether<00:09:59.279><c> it's</c><00:09:59.459><c> possible</c><00:09:59.760><c> or</c><00:10:00.000><c> not</c><00:10:00.120><c> that</c><00:10:00.720><c> these</c>

00:10:00.949 --> 00:10:00.959 align:start position:0%
whether it's possible or not that these
 

00:10:00.959 --> 00:10:02.269 align:start position:0%
whether it's possible or not that these
things<00:10:01.019><c> are</c><00:10:01.260><c> satisfiable</c><00:10:01.740><c> at</c><00:10:01.920><c> the</c><00:10:01.980><c> same</c><00:10:02.100><c> time</c>

00:10:02.269 --> 00:10:02.279 align:start position:0%
things are satisfiable at the same time
 

00:10:02.279 --> 00:10:04.250 align:start position:0%
things are satisfiable at the same time
and<00:10:02.940><c> if</c><00:10:03.060><c> it</c><00:10:03.240><c> is</c><00:10:03.360><c> possible</c><00:10:03.720><c> it's</c><00:10:03.959><c> going</c><00:10:04.080><c> to</c><00:10:04.140><c> give</c>

00:10:04.250 --> 00:10:04.260 align:start position:0%
and if it is possible it's going to give
 

00:10:04.260 --> 00:10:05.630 align:start position:0%
and if it is possible it's going to give
you<00:10:04.380><c> values</c><00:10:04.740><c> for</c><00:10:04.920><c> the</c><00:10:05.040><c> variables</c><00:10:05.339><c> that</c><00:10:05.459><c> make</c>

00:10:05.630 --> 00:10:05.640 align:start position:0%
you values for the variables that make
 

00:10:05.640 --> 00:10:07.310 align:start position:0%
you values for the variables that make
it<00:10:05.820><c> satisfiable</c><00:10:06.240><c> otherwise</c><00:10:06.959><c> it</c><00:10:07.080><c> just</c><00:10:07.200><c> says</c>

00:10:07.310 --> 00:10:07.320 align:start position:0%
it satisfiable otherwise it just says
 

00:10:07.320 --> 00:10:09.470 align:start position:0%
it satisfiable otherwise it just says
it's<00:10:07.740><c> not</c><00:10:07.920><c> possible</c><00:10:08.220><c> at</c><00:10:08.519><c> all</c><00:10:08.700><c> for</c><00:10:09.240><c> these</c>

00:10:09.470 --> 00:10:09.480 align:start position:0%
it's not possible at all for these
 

00:10:09.480 --> 00:10:12.050 align:start position:0%
it's not possible at all for these
things<00:10:09.600><c> to</c><00:10:09.779><c> be</c><00:10:09.899><c> satisfiable</c><00:10:10.440><c> together</c>

00:10:12.050 --> 00:10:12.060 align:start position:0%
things to be satisfiable together
 

00:10:12.060 --> 00:10:14.870 align:start position:0%
things to be satisfiable together
um<00:10:12.180><c> the</c><00:10:12.420><c> solver</c><00:10:12.720><c> is</c><00:10:12.839><c> much</c><00:10:13.080><c> simpler</c><00:10:13.440><c> than</c><00:10:14.160><c> the</c>

00:10:14.870 --> 00:10:14.880 align:start position:0%
um the solver is much simpler than the
 

00:10:14.880 --> 00:10:17.210 align:start position:0%
um the solver is much simpler than the
things<00:10:15.000><c> you</c><00:10:15.180><c> need</c><00:10:15.360><c> like</c><00:10:15.660><c> ILP</c><00:10:16.140><c> or</c><00:10:16.260><c> smt</c><00:10:16.740><c> when</c><00:10:17.100><c> you</c>

00:10:17.210 --> 00:10:17.220 align:start position:0%
things you need like ILP or smt when you
 

00:10:17.220 --> 00:10:18.470 align:start position:0%
things you need like ILP or smt when you
need<00:10:17.399><c> to</c><00:10:17.519><c> solve</c><00:10:17.760><c> with</c><00:10:17.820><c> linear</c><00:10:18.120><c> combinations</c>

00:10:18.470 --> 00:10:18.480 align:start position:0%
need to solve with linear combinations
 

00:10:18.480 --> 00:10:20.810 align:start position:0%
need to solve with linear combinations
or<00:10:18.839><c> even</c><00:10:19.080><c> non-linear</c><00:10:19.620><c> expressions</c><00:10:19.980><c> and</c><00:10:20.279><c> the</c>

00:10:20.810 --> 00:10:20.820 align:start position:0%
or even non-linear expressions and the
 

00:10:20.820 --> 00:10:22.850 align:start position:0%
or even non-linear expressions and the
sorts<00:10:21.360><c> of</c><00:10:21.420><c> things</c><00:10:21.600><c> that</c><00:10:22.320><c> you</c><00:10:22.440><c> end</c><00:10:22.560><c> up</c><00:10:22.740><c> with</c>

00:10:22.850 --> 00:10:22.860 align:start position:0%
sorts of things that you end up with
 

00:10:22.860 --> 00:10:25.310 align:start position:0%
sorts of things that you end up with
when<00:10:23.160><c> you</c><00:10:23.279><c> start</c><00:10:23.459><c> encoding</c><00:10:24.320><c> arithmetic</c>

00:10:25.310 --> 00:10:25.320 align:start position:0%
when you start encoding arithmetic
 

00:10:25.320 --> 00:10:28.550 align:start position:0%
when you start encoding arithmetic
expressions<00:10:25.740><c> and</c><00:10:26.100><c> other</c><00:10:26.279><c> things</c><00:10:26.720><c> and</c><00:10:27.720><c> as</c><00:10:28.260><c> also</c>

00:10:28.550 --> 00:10:28.560 align:start position:0%
expressions and other things and as also
 

00:10:28.560 --> 00:10:30.170 align:start position:0%
expressions and other things and as also
higher<00:10:28.860><c> explained</c><00:10:29.160><c> yesterday</c><00:10:29.279><c> this</c><00:10:29.760><c> runs</c><00:10:30.120><c> in</c>

00:10:30.170 --> 00:10:30.180 align:start position:0%
higher explained yesterday this runs in
 

00:10:30.180 --> 00:10:32.509 align:start position:0%
higher explained yesterday this runs in
employ<00:10:30.540><c> normal</c><00:10:30.779><c> time</c>

00:10:32.509 --> 00:10:32.519 align:start position:0%
employ normal time
 

00:10:32.519 --> 00:10:34.130 align:start position:0%
employ normal time
on<00:10:33.060><c> the</c><00:10:33.240><c> graph</c><00:10:33.420><c> generated</c><00:10:33.839><c> from</c><00:10:34.019><c> the</c>

00:10:34.130 --> 00:10:34.140 align:start position:0%
on the graph generated from the
 

00:10:34.140 --> 00:10:36.290 align:start position:0%
on the graph generated from the
constraints<00:10:34.560><c> using</c><00:10:35.399><c> the</c><00:10:35.519><c> volume</c><00:10:35.700><c> four</c><00:10:36.000><c> graph</c>

00:10:36.290 --> 00:10:36.300 align:start position:0%
constraints using the volume four graph
 

00:10:36.300 --> 00:10:38.210 align:start position:0%
constraints using the volume four graph
algorithm<00:10:36.660><c> not</c><00:10:36.959><c> going</c><00:10:37.140><c> to</c><00:10:37.260><c> go</c><00:10:37.380><c> much</c><00:10:37.860><c> into</c><00:10:38.040><c> that</c>

00:10:38.210 --> 00:10:38.220 align:start position:0%
algorithm not going to go much into that
 

00:10:38.220 --> 00:10:39.290 align:start position:0%
algorithm not going to go much into that
if<00:10:38.399><c> you</c><00:10:38.519><c> want</c><00:10:38.640><c> to</c><00:10:38.760><c> learn</c><00:10:38.820><c> more</c><00:10:38.940><c> about</c><00:10:39.120><c> that</c>

00:10:39.290 --> 00:10:39.300 align:start position:0%
if you want to learn more about that
 

00:10:39.300 --> 00:10:40.730 align:start position:0%
if you want to learn more about that
please<00:10:39.540><c> re-watch</c>

00:10:40.730 --> 00:10:40.740 align:start position:0%
please re-watch
 

00:10:40.740 --> 00:10:41.870 align:start position:0%
please re-watch
um Harris<00:10:41.040><c> talk</c>

00:10:41.870 --> 00:10:41.880 align:start position:0%
um Harris talk
 

00:10:41.880 --> 00:10:44.750 align:start position:0%
um Harris talk
and<00:10:42.480><c> this</c><00:10:43.019><c> algorithm</c><00:10:43.320><c> is</c><00:10:43.560><c> super</c><00:10:43.740><c> simple</c><00:10:43.980><c> this</c>

00:10:44.750 --> 00:10:44.760 align:start position:0%
and this algorithm is super simple this
 

00:10:44.760 --> 00:10:46.370 align:start position:0%
and this algorithm is super simple this
is<00:10:44.880><c> basically</c><00:10:45.240><c> almost</c><00:10:45.420><c> the</c><00:10:45.720><c> whole</c><00:10:45.839><c> thing</c><00:10:46.019><c> and</c>

00:10:46.370 --> 00:10:46.380 align:start position:0%
is basically almost the whole thing and
 

00:10:46.380 --> 00:10:49.370 align:start position:0%
is basically almost the whole thing and
most<00:10:46.560><c> of</c><00:10:46.740><c> it</c><00:10:46.860><c> is</c><00:10:47.040><c> comments</c><00:10:48.000><c> um</c><00:10:48.060><c> so</c><00:10:48.600><c> now</c><00:10:48.959><c> all</c><00:10:49.200><c> we</c>

00:10:49.370 --> 00:10:49.380 align:start position:0%
most of it is comments um so now all we
 

00:10:49.380 --> 00:10:50.630 align:start position:0%
most of it is comments um so now all we
need<00:10:49.500><c> to</c><00:10:49.620><c> do</c><00:10:49.740><c> is</c>

00:10:50.630 --> 00:10:50.640 align:start position:0%
need to do is
 

00:10:50.640 --> 00:10:53.329 align:start position:0%
need to do is
put<00:10:51.060><c> it</c><00:10:51.180><c> all</c><00:10:51.360><c> together</c><00:10:51.800><c> so</c><00:10:52.800><c> this</c><00:10:52.980><c> is</c><00:10:53.040><c> the</c><00:10:53.160><c> whole</c>

00:10:53.329 --> 00:10:53.339 align:start position:0%
put it all together so this is the whole
 

00:10:53.339 --> 00:10:54.230 align:start position:0%
put it all together so this is the whole
project

00:10:54.230 --> 00:10:54.240 align:start position:0%
project
 

00:10:54.240 --> 00:10:57.230 align:start position:0%
project
so<00:10:55.140><c> these</c><00:10:55.500><c> are</c><00:10:55.560><c> two</c><00:10:55.860><c> tests</c><00:10:56.279><c> files</c><00:10:56.700><c> one</c><00:10:56.940><c> for</c><00:10:57.120><c> the</c>

00:10:57.230 --> 00:10:57.240 align:start position:0%
so these are two tests files one for the
 

00:10:57.240 --> 00:10:58.490 align:start position:0%
so these are two tests files one for the
solver<00:10:57.480><c> itself</c><00:10:57.720><c> just</c><00:10:57.959><c> like</c><00:10:58.079><c> you</c><00:10:58.260><c> need</c><00:10:58.380><c> to</c><00:10:58.440><c> test</c>

00:10:58.490 --> 00:10:58.500 align:start position:0%
solver itself just like you need to test
 

00:10:58.500 --> 00:11:00.170 align:start position:0%
solver itself just like you need to test
for<00:10:58.680><c> the</c><00:10:58.800><c> solver</c><00:10:59.100><c> and</c><00:10:59.459><c> one</c><00:10:59.700><c> for</c><00:10:59.820><c> the</c><00:10:59.940><c> symbol</c>

00:11:00.170 --> 00:11:00.180 align:start position:0%
for the solver and one for the symbol
 

00:11:00.180 --> 00:11:01.910 align:start position:0%
for the solver and one for the symbol
execution<00:11:00.480><c> engine</c><00:11:00.720><c> and</c><00:11:01.320><c> then</c><00:11:01.380><c> you</c><00:11:01.560><c> have</c><00:11:01.680><c> all</c>

00:11:01.910 --> 00:11:01.920 align:start position:0%
execution engine and then you have all
 

00:11:01.920 --> 00:11:04.130 align:start position:0%
execution engine and then you have all
those<00:11:02.100><c> files</c><00:11:02.459><c> for</c><00:11:02.700><c> the</c>

00:11:04.130 --> 00:11:04.140 align:start position:0%
those files for the
 

00:11:04.140 --> 00:11:05.750 align:start position:0%
those files for the
um for<00:11:04.380><c> the</c><00:11:04.560><c> whole</c><00:11:04.680><c> engine</c>

00:11:05.750 --> 00:11:05.760 align:start position:0%
um for the whole engine
 

00:11:05.760 --> 00:11:07.370 align:start position:0%
um for the whole engine
so

00:11:07.370 --> 00:11:07.380 align:start position:0%
so
 

00:11:07.380 --> 00:11:08.870 align:start position:0%
so
what<00:11:07.800><c> we</c><00:11:07.920><c> want</c><00:11:08.100><c> to</c><00:11:08.220><c> do</c><00:11:08.279><c> is</c><00:11:08.399><c> like</c><00:11:08.579><c> write</c><00:11:08.760><c> an</c>

00:11:08.870 --> 00:11:08.880 align:start position:0%
what we want to do is like write an
 

00:11:08.880 --> 00:11:10.430 align:start position:0%
what we want to do is like write an
interpreter<00:11:09.300><c> how</c><00:11:09.600><c> do</c><00:11:09.720><c> we</c><00:11:09.839><c> write</c><00:11:09.959><c> interpreter</c>

00:11:10.430 --> 00:11:10.440 align:start position:0%
interpreter how do we write interpreter
 

00:11:10.440 --> 00:11:13.490 align:start position:0%
interpreter how do we write interpreter
we<00:11:11.220><c> need</c><00:11:11.399><c> so</c><00:11:12.060><c> by</c><00:11:12.240><c> the</c><00:11:12.360><c> way</c><00:11:12.480><c> please</c><00:11:12.959><c> if</c><00:11:13.260><c> you</c><00:11:13.380><c> have</c>

00:11:13.490 --> 00:11:13.500 align:start position:0%
we need so by the way please if you have
 

00:11:13.500 --> 00:11:15.470 align:start position:0%
we need so by the way please if you have
questions<00:11:13.680><c> just</c><00:11:14.040><c> like</c><00:11:14.160><c> try</c><00:11:14.399><c> to</c><00:11:14.579><c> you</c><00:11:15.000><c> can</c><00:11:15.180><c> ask</c>

00:11:15.470 --> 00:11:15.480 align:start position:0%
questions just like try to you can ask
 

00:11:15.480 --> 00:11:17.090 align:start position:0%
questions just like try to you can ask
questions<00:11:15.720><c> right</c><00:11:16.019><c> now</c><00:11:16.140><c> just</c><00:11:16.500><c> to</c><00:11:16.620><c> make</c><00:11:16.740><c> sure</c><00:11:16.860><c> we</c>

00:11:17.090 --> 00:11:17.100 align:start position:0%
questions right now just to make sure we
 

00:11:17.100 --> 00:11:20.150 align:start position:0%
questions right now just to make sure we
we<00:11:17.339><c> go</c><00:11:17.519><c> and</c><00:11:17.940><c> um</c><00:11:17.940><c> in</c><00:11:18.540><c> a</c><00:11:18.660><c> good</c><00:11:18.779><c> flow</c>

00:11:20.150 --> 00:11:20.160 align:start position:0%
we go and um in a good flow
 

00:11:20.160 --> 00:11:22.250 align:start position:0%
we go and um in a good flow
um<00:11:20.279><c> actually</c><00:11:20.640><c> it's</c><00:11:20.880><c> not</c><00:11:21.120><c> here</c><00:11:21.300><c> so</c><00:11:21.839><c> usually</c>

00:11:22.250 --> 00:11:22.260 align:start position:0%
um actually it's not here so usually
 

00:11:22.260 --> 00:11:24.110 align:start position:0%
um actually it's not here so usually
when<00:11:22.560><c> you</c><00:11:22.740><c> write</c><00:11:22.920><c> this</c><00:11:23.100><c> interpreter</c><00:11:23.519><c> for</c><00:11:23.700><c> evm</c>

00:11:24.110 --> 00:11:24.120 align:start position:0%
when you write this interpreter for evm
 

00:11:24.120 --> 00:11:25.850 align:start position:0%
when you write this interpreter for evm
you<00:11:24.240><c> have</c><00:11:24.420><c> this</c><00:11:24.540><c> context</c><00:11:24.899><c> what</c><00:11:25.560><c> is</c><00:11:25.740><c> the</c>

00:11:25.850 --> 00:11:25.860 align:start position:0%
you have this context what is the
 

00:11:25.860 --> 00:11:27.230 align:start position:0%
you have this context what is the
context<00:11:26.100><c> you</c><00:11:26.399><c> have</c><00:11:26.519><c> the</c><00:11:26.700><c> code</c><00:11:26.820><c> that</c><00:11:27.060><c> are</c>

00:11:27.230 --> 00:11:27.240 align:start position:0%
context you have the code that are
 

00:11:27.240 --> 00:11:30.110 align:start position:0%
context you have the code that are
executing<00:11:28.200><c> you</c><00:11:28.620><c> have</c><00:11:28.680><c> the</c><00:11:28.860><c> program</c><00:11:28.980><c> counter</c>

00:11:30.110 --> 00:11:30.120 align:start position:0%
executing you have the program counter
 

00:11:30.120 --> 00:11:31.970 align:start position:0%
executing you have the program counter
like<00:11:30.720><c> what</c><00:11:31.019><c> which</c><00:11:31.260><c> upgrade</c><00:11:31.620><c> are</c><00:11:31.860><c> you</c>

00:11:31.970 --> 00:11:31.980 align:start position:0%
like what which upgrade are you
 

00:11:31.980 --> 00:11:34.670 align:start position:0%
like what which upgrade are you
executing<00:11:32.279><c> right</c><00:11:32.519><c> now</c><00:11:32.700><c> we</c><00:11:33.420><c> have</c><00:11:33.600><c> a</c><00:11:33.720><c> stack</c><00:11:34.019><c> in</c>

00:11:34.670 --> 00:11:34.680 align:start position:0%
executing right now we have a stack in
 

00:11:34.680 --> 00:11:35.810 align:start position:0%
executing right now we have a stack in
our<00:11:34.800><c> case</c><00:11:35.040><c> it's</c><00:11:35.160><c> going</c><00:11:35.279><c> to</c><00:11:35.279><c> be</c><00:11:35.339><c> a</c><00:11:35.399><c> symbolic</c>

00:11:35.810 --> 00:11:35.820 align:start position:0%
our case it's going to be a symbolic
 

00:11:35.820 --> 00:11:37.310 align:start position:0%
our case it's going to be a symbolic
stack

00:11:37.310 --> 00:11:37.320 align:start position:0%
stack
 

00:11:37.320 --> 00:11:38.990 align:start position:0%
stack
um<00:11:37.380><c> don't</c><00:11:37.740><c> worry</c><00:11:37.980><c> about</c><00:11:38.100><c> that</c><00:11:38.279><c> now</c>

00:11:38.990 --> 00:11:39.000 align:start position:0%
um don't worry about that now
 

00:11:39.000 --> 00:11:43.069 align:start position:0%
um don't worry about that now
we<00:11:39.660><c> have</c><00:11:40.019><c> a</c><00:11:40.560><c> path</c><00:11:40.980><c> which</c><00:11:41.940><c> basically</c><00:11:42.420><c> it's</c><00:11:42.899><c> a</c>

00:11:43.069 --> 00:11:43.079 align:start position:0%
we have a path which basically it's a
 

00:11:43.079 --> 00:11:44.990 align:start position:0%
we have a path which basically it's a
it's<00:11:43.260><c> a</c><00:11:43.380><c> path</c><00:11:43.560><c> of</c><00:11:43.920><c> all</c><00:11:44.100><c> the</c><00:11:44.279><c> program</c><00:11:44.399><c> like</c><00:11:44.820><c> of</c>

00:11:44.990 --> 00:11:45.000 align:start position:0%
it's a path of all the program like of
 

00:11:45.000 --> 00:11:46.790 align:start position:0%
it's a path of all the program like of
the<00:11:45.180><c> program</c><00:11:45.300><c> counters</c><00:11:45.779><c> that</c><00:11:46.019><c> were</c><00:11:46.260><c> visited</c>

00:11:46.790 --> 00:11:46.800 align:start position:0%
the program counters that were visited
 

00:11:46.800 --> 00:11:49.069 align:start position:0%
the program counters that were visited
in<00:11:47.160><c> the</c><00:11:47.279><c> in</c><00:11:47.459><c> the</c><00:11:47.579><c> jumps</c><00:11:47.940><c> and</c><00:11:48.720><c> we're</c><00:11:48.839><c> going</c><00:11:48.959><c> to</c>

00:11:49.069 --> 00:11:49.079 align:start position:0%
in the in the jumps and we're going to
 

00:11:49.079 --> 00:11:51.949 align:start position:0%
in the in the jumps and we're going to
use<00:11:49.140><c> this</c><00:11:49.440><c> to</c><00:11:49.860><c> detect</c><00:11:50.579><c> loops</c><00:11:51.060><c> and</c><00:11:51.540><c> exit</c>

00:11:51.949 --> 00:11:51.959 align:start position:0%
use this to detect loops and exit
 

00:11:51.959 --> 00:11:54.110 align:start position:0%
use this to detect loops and exit
because<00:11:52.140><c> we</c><00:11:52.320><c> don't</c><00:11:52.380><c> want</c><00:11:52.560><c> to</c><00:11:52.620><c> encode</c><00:11:52.920><c> loops</c>

00:11:54.110 --> 00:11:54.120 align:start position:0%
because we don't want to encode loops
 

00:11:54.120 --> 00:11:55.670 align:start position:0%
because we don't want to encode loops
we<00:11:54.660><c> have</c>

00:11:55.670 --> 00:11:55.680 align:start position:0%
we have
 

00:11:55.680 --> 00:11:57.590 align:start position:0%
we have
um an<00:11:56.040><c> array</c><00:11:56.279><c> of</c><00:11:56.399><c> constraints</c><00:11:56.820><c> this</c><00:11:57.360><c> is</c><00:11:57.420><c> what</c>

00:11:57.590 --> 00:11:57.600 align:start position:0%
um an array of constraints this is what
 

00:11:57.600 --> 00:11:59.990 align:start position:0%
um an array of constraints this is what
I<00:11:57.779><c> showed</c><00:11:58.019><c> before</c><00:11:58.200><c> like</c><00:11:59.160><c> when</c><00:11:59.399><c> you</c><00:11:59.579><c> see</c><00:11:59.760><c> the</c>

00:11:59.990 --> 00:12:00.000 align:start position:0%
I showed before like when you see the
 

00:12:00.000 --> 00:12:02.509 align:start position:0%
I showed before like when you see the
require<00:12:00.240><c> it</c><00:12:01.200><c> says</c><00:12:01.380><c> require</c><00:12:01.620><c> a</c><00:12:01.980><c> class</c><00:12:02.220><c> or</c><00:12:02.399><c> equal</c>

00:12:02.509 --> 00:12:02.519 align:start position:0%
require it says require a class or equal
 

00:12:02.519 --> 00:12:04.910 align:start position:0%
require it says require a class or equal
10<00:12:02.760><c> we</c><00:12:03.360><c> go</c><00:12:03.600><c> into</c><00:12:03.720><c> that</c><00:12:04.019><c> Branch</c><00:12:04.320><c> so</c><00:12:04.680><c> we</c><00:12:04.800><c> keep</c>

00:12:04.910 --> 00:12:04.920 align:start position:0%
10 we go into that Branch so we keep
 

00:12:04.920 --> 00:12:06.470 align:start position:0%
10 we go into that Branch so we keep
that<00:12:05.100><c> constraint</c><00:12:05.459><c> because</c><00:12:05.760><c> that</c><00:12:06.000><c> thing</c><00:12:06.180><c> needs</c>

00:12:06.470 --> 00:12:06.480 align:start position:0%
that constraint because that thing needs
 

00:12:06.480 --> 00:12:09.650 align:start position:0%
that constraint because that thing needs
to<00:12:06.540><c> be</c><00:12:06.720><c> true</c><00:12:07.320><c> for</c><00:12:07.560><c> the</c><00:12:07.680><c> rest</c><00:12:07.800><c> of</c><00:12:07.920><c> the</c><00:12:08.040><c> execution</c>

00:12:09.650 --> 00:12:09.660 align:start position:0%
to be true for the rest of the execution
 

00:12:09.660 --> 00:12:14.090 align:start position:0%
to be true for the rest of the execution
um<00:12:09.740><c> and</c><00:12:10.740><c> this</c><00:12:11.220><c> counter</c><00:12:11.579><c> variable</c><00:12:11.940><c> is</c><00:12:12.360><c> just</c><00:12:12.540><c> a</c>

00:12:14.090 --> 00:12:14.100 align:start position:0%
um and this counter variable is just a
 

00:12:14.100 --> 00:12:16.730 align:start position:0%
um and this counter variable is just a
um<00:12:14.220><c> accounted</c><00:12:14.940><c> to</c><00:12:15.300><c> help</c><00:12:15.779><c> create</c><00:12:16.260><c> new</c>

00:12:16.730 --> 00:12:16.740 align:start position:0%
um accounted to help create new
 

00:12:16.740 --> 00:12:18.290 align:start position:0%
um accounted to help create new
variables<00:12:17.100><c> so</c><00:12:17.220><c> when</c><00:12:17.399><c> we</c><00:12:17.760><c> were</c><00:12:17.880><c> creating</c><00:12:18.120><c> new</c>

00:12:18.290 --> 00:12:18.300 align:start position:0%
variables so when we were creating new
 

00:12:18.300 --> 00:12:19.850 align:start position:0%
variables so when we were creating new
variables<00:12:18.540><c> for</c><00:12:18.660><c> the</c><00:12:18.779><c> Expressions</c><00:12:19.079><c> X</c><00:12:19.320><c> Y</c><00:12:19.560><c> and</c><00:12:19.740><c> Z</c>

00:12:19.850 --> 00:12:19.860 align:start position:0%
variables for the Expressions X Y and Z
 

00:12:19.860 --> 00:12:20.870 align:start position:0%
variables for the Expressions X Y and Z
and<00:12:20.040><c> so</c><00:12:20.160><c> on</c><00:12:20.279><c> here</c><00:12:20.459><c> we're</c><00:12:20.640><c> going</c><00:12:20.760><c> to</c><00:12:20.820><c> be</c>

00:12:20.870 --> 00:12:20.880 align:start position:0%
and so on here we're going to be
 

00:12:20.880 --> 00:12:22.370 align:start position:0%
and so on here we're going to be
expression<00:12:21.360><c> one</c><00:12:21.600><c> expression</c><00:12:21.899><c> two</c><00:12:22.019><c> expression</c>

00:12:22.370 --> 00:12:22.380 align:start position:0%
expression one expression two expression
 

00:12:22.380 --> 00:12:24.170 align:start position:0%
expression one expression two expression
three<00:12:22.560><c> and</c><00:12:22.740><c> so</c><00:12:22.860><c> on</c><00:12:22.980><c> and</c><00:12:23.519><c> they</c><00:12:23.820><c> need</c><00:12:23.940><c> to</c><00:12:24.060><c> be</c>

00:12:24.170 --> 00:12:24.180 align:start position:0%
three and so on and they need to be
 

00:12:24.180 --> 00:12:25.490 align:start position:0%
three and so on and they need to be
different<00:12:24.420><c> in</c><00:12:24.720><c> the</c><00:12:24.839><c> branches</c><00:12:25.200><c> that</c><00:12:25.380><c> we</c>

00:12:25.490 --> 00:12:25.500 align:start position:0%
different in the branches that we
 

00:12:25.500 --> 00:12:27.170 align:start position:0%
different in the branches that we
execute

00:12:27.170 --> 00:12:27.180 align:start position:0%
execute
 

00:12:27.180 --> 00:12:29.690 align:start position:0%
execute
so<00:12:27.540><c> that's</c><00:12:27.779><c> it</c><00:12:27.959><c> we</c><00:12:28.320><c> have</c><00:12:28.440><c> the</c><00:12:28.560><c> context</c>

00:12:29.690 --> 00:12:29.700 align:start position:0%
so that's it we have the context
 

00:12:29.700 --> 00:12:31.790 align:start position:0%
so that's it we have the context
um<00:12:29.820><c> ignore</c><00:12:30.120><c> the</c><00:12:30.240><c> rest</c><00:12:30.420><c> for</c><00:12:30.660><c> now</c><00:12:30.779><c> let's</c><00:12:31.440><c> jump</c>

00:12:31.790 --> 00:12:31.800 align:start position:0%
um ignore the rest for now let's jump
 

00:12:31.800 --> 00:12:34.190 align:start position:0%
um ignore the rest for now let's jump
right<00:12:32.100><c> into</c><00:12:32.339><c> the</c>

00:12:34.190 --> 00:12:34.200 align:start position:0%
right into the
 

00:12:34.200 --> 00:12:36.230 align:start position:0%
right into the
execution<00:12:34.920><c> engine</c><00:12:35.220><c> so</c><00:12:35.519><c> we</c><00:12:35.760><c> have</c><00:12:35.880><c> this</c>

00:12:36.230 --> 00:12:36.240 align:start position:0%
execution engine so we have this
 

00:12:36.240 --> 00:12:38.509 align:start position:0%
execution engine so we have this
recursive<00:12:36.660><c> function</c><00:12:36.959><c> called</c><00:12:37.079><c> run</c><00:12:37.320><c> from</c>

00:12:38.509 --> 00:12:38.519 align:start position:0%
recursive function called run from
 

00:12:38.519 --> 00:12:41.269 align:start position:0%
recursive function called run from
which<00:12:39.060><c> takes</c><00:12:39.300><c> our</c><00:12:39.540><c> context</c><00:12:39.959><c> so</c><00:12:40.800><c> here</c><00:12:40.980><c> you</c><00:12:41.100><c> see</c>

00:12:41.269 --> 00:12:41.279 align:start position:0%
which takes our context so here you see
 

00:12:41.279 --> 00:12:44.269 align:start position:0%
which takes our context so here you see
it's<00:12:41.399><c> basically</c><00:12:41.820><c> gonna</c><00:12:42.060><c> Traverse</c><00:12:42.980><c> all</c><00:12:43.980><c> the</c><00:12:44.160><c> up</c>

00:12:44.269 --> 00:12:44.279 align:start position:0%
it's basically gonna Traverse all the up
 

00:12:44.279 --> 00:12:47.690 align:start position:0%
it's basically gonna Traverse all the up
codes<00:12:44.540><c> select</c><00:12:45.540><c> the</c><00:12:45.660><c> opcode</c>

00:12:47.690 --> 00:12:47.700 align:start position:0%
codes select the opcode
 

00:12:47.700 --> 00:12:49.970 align:start position:0%
codes select the opcode
this<00:12:48.600><c> is</c><00:12:48.779><c> just</c><00:12:48.959><c> a</c><00:12:49.139><c> check</c>

00:12:49.970 --> 00:12:49.980 align:start position:0%
this is just a check
 

00:12:49.980 --> 00:12:52.850 align:start position:0%
this is just a check
um<00:12:50.040><c> that</c><00:12:50.459><c> we</c><00:12:50.820><c> just</c><00:12:51.240><c> exit</c><00:12:51.660><c> early</c><00:12:51.839><c> in</c><00:12:52.079><c> Loops</c><00:12:52.440><c> we</c>

00:12:52.850 --> 00:12:52.860 align:start position:0%
um that we just exit early in Loops we
 

00:12:52.860 --> 00:12:54.530 align:start position:0%
um that we just exit early in Loops we
it<00:12:53.040><c> becomes</c><00:12:53.399><c> an</c><00:12:53.519><c> under</c><00:12:53.639><c> proximation</c><00:12:54.180><c> but</c><00:12:54.420><c> we</c>

00:12:54.530 --> 00:12:54.540 align:start position:0%
it becomes an under proximation but we
 

00:12:54.540 --> 00:12:56.690 align:start position:0%
it becomes an under proximation but we
don't<00:12:54.660><c> want</c><00:12:54.779><c> to</c><00:12:54.899><c> do</c><00:12:54.959><c> loops</c>

00:12:56.690 --> 00:12:56.700 align:start position:0%
don't want to do loops
 

00:12:56.700 --> 00:12:58.550 align:start position:0%
don't want to do loops
we<00:12:57.060><c> extend</c><00:12:57.360><c> the</c><00:12:57.540><c> path</c>

00:12:58.550 --> 00:12:58.560 align:start position:0%
we extend the path
 

00:12:58.560 --> 00:13:01.069 align:start position:0%
we extend the path
with<00:12:59.220><c> the</c><00:12:59.339><c> Disney</c><00:12:59.459><c> opcode</c>

00:13:01.069 --> 00:13:01.079 align:start position:0%
with the Disney opcode
 

00:13:01.079 --> 00:13:04.250 align:start position:0%
with the Disney opcode
and<00:13:02.040><c> here</c><00:13:02.220><c> is</c><00:13:02.339><c> the</c><00:13:02.519><c> part</c><00:13:02.700><c> that</c><00:13:03.120><c> the</c><00:13:03.899><c> first</c><00:13:04.019><c> part</c>

00:13:04.250 --> 00:13:04.260 align:start position:0%
and here is the part that the first part
 

00:13:04.260 --> 00:13:05.629 align:start position:0%
and here is the part that the first part
of<00:13:04.440><c> the</c><00:13:04.680><c> what</c><00:13:04.920><c> I</c><00:13:05.100><c> mentioned</c><00:13:05.279><c> with</c><00:13:05.459><c> The</c>

00:13:05.629 --> 00:13:05.639 align:start position:0%
of the what I mentioned with The
 

00:13:05.639 --> 00:13:08.030 align:start position:0%
of the what I mentioned with The
Interpreter<00:13:06.120><c> we</c><00:13:06.899><c> need</c><00:13:07.019><c> to</c><00:13:07.079><c> care</c><00:13:07.260><c> about</c><00:13:07.440><c> Stack</c>

00:13:08.030 --> 00:13:08.040 align:start position:0%
Interpreter we need to care about Stack
 

00:13:08.040 --> 00:13:09.110 align:start position:0%
Interpreter we need to care about Stack
Up<00:13:08.220><c> codes</c>

00:13:09.110 --> 00:13:09.120 align:start position:0%
Up codes
 

00:13:09.120 --> 00:13:11.389 align:start position:0%
Up codes
because<00:13:09.600><c> they're</c><00:13:10.260><c> going</c><00:13:10.500><c> to</c><00:13:10.620><c> add</c><00:13:10.860><c> some</c>

00:13:11.389 --> 00:13:11.399 align:start position:0%
because they're going to add some
 

00:13:11.399 --> 00:13:13.490 align:start position:0%
because they're going to add some
numbers<00:13:11.639><c> and</c><00:13:12.480><c> a</c><00:13:12.839><c> bunch</c><00:13:13.019><c> of</c><00:13:13.139><c> different</c><00:13:13.260><c> things</c>

00:13:13.490 --> 00:13:13.500 align:start position:0%
numbers and a bunch of different things
 

00:13:13.500 --> 00:13:16.610 align:start position:0%
numbers and a bunch of different things
jump<00:13:13.860><c> locations</c><00:13:14.519><c> jump</c><00:13:15.060><c> destinations</c><00:13:15.540><c> that</c><00:13:16.440><c> we</c>

00:13:16.610 --> 00:13:16.620 align:start position:0%
jump locations jump destinations that we
 

00:13:16.620 --> 00:13:18.170 align:start position:0%
jump locations jump destinations that we
will<00:13:16.800><c> need</c><00:13:17.040><c> when</c><00:13:17.339><c> when</c><00:13:17.639><c> building</c><00:13:17.940><c> our</c>

00:13:18.170 --> 00:13:18.180 align:start position:0%
will need when when building our
 

00:13:18.180 --> 00:13:19.250 align:start position:0%
will need when when building our
constraints

00:13:19.250 --> 00:13:19.260 align:start position:0%
constraints
 

00:13:19.260 --> 00:13:21.350 align:start position:0%
constraints
so<00:13:19.740><c> this</c><00:13:19.920><c> just</c><00:13:20.100><c> does</c><00:13:20.279><c> the</c><00:13:20.459><c> usual</c>

00:13:21.350 --> 00:13:21.360 align:start position:0%
so this just does the usual
 

00:13:21.360 --> 00:13:22.850 align:start position:0%
so this just does the usual
um stack<00:13:21.660><c> handling</c><00:13:22.019><c> so</c><00:13:22.200><c> if</c><00:13:22.260><c> it's</c><00:13:22.440><c> a</c><00:13:22.620><c> swap</c>

00:13:22.850 --> 00:13:22.860 align:start position:0%
um stack handling so if it's a swap
 

00:13:22.860 --> 00:13:24.710 align:start position:0%
um stack handling so if it's a swap
you're<00:13:23.040><c> gonna</c><00:13:23.160><c> go</c><00:13:23.639><c> into</c><00:13:23.760><c> the</c><00:13:23.940><c> stack</c><00:13:24.240><c> and</c><00:13:24.420><c> swap</c>

00:13:24.710 --> 00:13:24.720 align:start position:0%
you're gonna go into the stack and swap
 

00:13:24.720 --> 00:13:26.389 align:start position:0%
you're gonna go into the stack and swap
the<00:13:24.839><c> numbers</c><00:13:24.959><c> if</c><00:13:25.260><c> it's</c><00:13:25.380><c> a</c><00:13:25.920><c> dupe</c><00:13:26.160><c> you're</c><00:13:26.279><c> going</c>

00:13:26.389 --> 00:13:26.399 align:start position:0%
the numbers if it's a dupe you're going
 

00:13:26.399 --> 00:13:27.530 align:start position:0%
the numbers if it's a dupe you're going
to<00:13:26.459><c> duplicate</c><00:13:26.880><c> whatever</c><00:13:27.060><c> it</c><00:13:27.300><c> needs</c><00:13:27.480><c> to</c>

00:13:27.530 --> 00:13:27.540 align:start position:0%
to duplicate whatever it needs to
 

00:13:27.540 --> 00:13:29.090 align:start position:0%
to duplicate whatever it needs to
duplicate<00:13:27.899><c> it</c><00:13:28.019><c> if</c><00:13:28.320><c> it's</c><00:13:28.500><c> a</c><00:13:28.620><c> push</c><00:13:28.740><c> you</c><00:13:28.920><c> just</c>

00:13:29.090 --> 00:13:29.100 align:start position:0%
duplicate it if it's a push you just
 

00:13:29.100 --> 00:13:30.710 align:start position:0%
duplicate it if it's a push you just
push<00:13:29.220><c> that</c><00:13:29.399><c> number</c><00:13:29.519><c> into</c><00:13:29.760><c> the</c><00:13:29.940><c> stack</c>

00:13:30.710 --> 00:13:30.720 align:start position:0%
push that number into the stack
 

00:13:30.720 --> 00:13:35.150 align:start position:0%
push that number into the stack
here<00:13:31.200><c> the</c><00:13:31.500><c> only</c><00:13:31.560><c> thing</c><00:13:31.800><c> we</c><00:13:32.040><c> do</c><00:13:32.220><c> is</c><00:13:32.820><c> apply</c>

00:13:35.150 --> 00:13:35.160 align:start position:0%
here the only thing we do is apply
 

00:13:35.160 --> 00:13:37.730 align:start position:0%
here the only thing we do is apply
a<00:13:35.760><c> function</c><00:13:36.300><c> on</c>

00:13:37.730 --> 00:13:37.740 align:start position:0%
a function on
 

00:13:37.740 --> 00:13:39.889 align:start position:0%
a function on
the<00:13:38.459><c> stack</c><00:13:38.700><c> arguments</c><00:13:39.240><c> which</c><00:13:39.420><c> is</c><00:13:39.600><c> so</c><00:13:39.839><c> for</c>

00:13:39.889 --> 00:13:39.899 align:start position:0%
the stack arguments which is so for
 

00:13:39.899 --> 00:13:41.810 align:start position:0%
the stack arguments which is so for
example<00:13:40.139><c> if</c><00:13:40.260><c> you</c><00:13:40.380><c> have</c><00:13:40.500><c> an</c><00:13:40.620><c> ad</c><00:13:40.800><c> we're</c><00:13:41.579><c> not</c>

00:13:41.810 --> 00:13:41.820 align:start position:0%
example if you have an ad we're not
 

00:13:41.820 --> 00:13:43.730 align:start position:0%
example if you have an ad we're not
going<00:13:42.000><c> to</c><00:13:42.180><c> encode</c><00:13:42.660><c> the</c><00:13:42.839><c> ad</c><00:13:42.959><c> precisely</c><00:13:43.500><c> here</c>

00:13:43.730 --> 00:13:43.740 align:start position:0%
going to encode the ad precisely here
 

00:13:43.740 --> 00:13:45.769 align:start position:0%
going to encode the ad precisely here
but<00:13:44.399><c> we</c><00:13:44.579><c> do</c><00:13:44.700><c> need</c><00:13:44.940><c> to</c><00:13:45.060><c> consume</c><00:13:45.420><c> the</c><00:13:45.600><c> stack</c>

00:13:45.769 --> 00:13:45.779 align:start position:0%
but we do need to consume the stack
 

00:13:45.779 --> 00:13:49.670 align:start position:0%
but we do need to consume the stack
slots<00:13:46.139><c> and</c><00:13:46.740><c> put</c><00:13:46.980><c> a</c><00:13:47.100><c> new</c><00:13:47.339><c> return</c><00:13:48.380><c> value</c><00:13:49.380><c> there</c>

00:13:49.670 --> 00:13:49.680 align:start position:0%
slots and put a new return value there
 

00:13:49.680 --> 00:13:52.310 align:start position:0%
slots and put a new return value there
right<00:13:49.980><c> so</c><00:13:50.639><c> this</c><00:13:50.940><c> basically</c><00:13:51.360><c> just</c><00:13:51.779><c> uses</c><00:13:52.079><c> these</c>

00:13:52.310 --> 00:13:52.320 align:start position:0%
right so this basically just uses these
 

00:13:52.320 --> 00:13:53.810 align:start position:0%
right so this basically just uses these
handlers<00:13:52.620><c> we</c><00:13:52.860><c> have</c><00:13:52.980><c> internally</c><00:13:53.339><c> it's</c><00:13:53.519><c> like</c><00:13:53.700><c> a</c>

00:13:53.810 --> 00:13:53.820 align:start position:0%
handlers we have internally it's like a
 

00:13:53.820 --> 00:13:55.610 align:start position:0%
handlers we have internally it's like a
bunch<00:13:53.880><c> of</c><00:13:54.000><c> function</c><00:13:54.180><c> pointers</c>

00:13:55.610 --> 00:13:55.620 align:start position:0%
bunch of function pointers
 

00:13:55.620 --> 00:13:56.389 align:start position:0%
bunch of function pointers
um

00:13:56.389 --> 00:13:56.399 align:start position:0%
um
 

00:13:56.399 --> 00:13:59.030 align:start position:0%
um
to<00:13:56.940><c> if</c><00:13:57.240><c> you</c><00:13:57.360><c> have</c><00:13:57.480><c> an</c><00:13:57.600><c> ad</c><00:13:57.839><c> so</c><00:13:58.380><c> this</c><00:13:58.500><c> is</c><00:13:58.680><c> generic</c>

00:13:59.030 --> 00:13:59.040 align:start position:0%
to if you have an ad so this is generic
 

00:13:59.040 --> 00:14:00.949 align:start position:0%
to if you have an ad so this is generic
for<00:13:59.279><c> like</c><00:13:59.459><c> all</c><00:13:59.880><c> the</c><00:14:00.060><c> all</c><00:14:00.300><c> the</c><00:14:00.480><c> up</c><00:14:00.600><c> girls</c><00:14:00.779><c> we</c>

00:14:00.949 --> 00:14:00.959 align:start position:0%
for like all the all the up girls we
 

00:14:00.959 --> 00:14:03.350 align:start position:0%
for like all the all the up girls we
don't<00:14:01.079><c> care</c><00:14:01.200><c> about</c><00:14:01.320><c> it</c><00:14:01.980><c> takes</c><00:14:02.100><c> the</c><00:14:02.579><c> number</c><00:14:03.180><c> of</c>

00:14:03.350 --> 00:14:03.360 align:start position:0%
don't care about it takes the number of
 

00:14:03.360 --> 00:14:06.110 align:start position:0%
don't care about it takes the number of
arguments<00:14:03.839><c> this</c><00:14:04.139><c> op</c><00:14:04.380><c> code</c><00:14:04.560><c> takes</c><00:14:04.920><c> pops</c><00:14:05.880><c> all</c><00:14:06.000><c> of</c>

00:14:06.110 --> 00:14:06.120 align:start position:0%
arguments this op code takes pops all of
 

00:14:06.120 --> 00:14:09.050 align:start position:0%
arguments this op code takes pops all of
them<00:14:06.240><c> from</c><00:14:06.420><c> the</c><00:14:06.540><c> stack</c><00:14:06.860><c> creates</c><00:14:07.860><c> a</c><00:14:08.279><c> new</c><00:14:08.519><c> work</c>

00:14:09.050 --> 00:14:09.060 align:start position:0%
them from the stack creates a new work
 

00:14:09.060 --> 00:14:11.150 align:start position:0%
them from the stack creates a new work
what<00:14:09.360><c> we</c><00:14:09.540><c> call</c><00:14:09.660><c> symbolic</c><00:14:10.139><c> variable</c><00:14:10.440><c> so</c><00:14:10.800><c> like</c><00:14:10.980><c> a</c>

00:14:11.150 --> 00:14:11.160 align:start position:0%
what we call symbolic variable so like a
 

00:14:11.160 --> 00:14:13.490 align:start position:0%
what we call symbolic variable so like a
new<00:14:11.220><c> expression</c><00:14:11.820><c> 13</c><00:14:12.180><c> or</c><00:14:12.600><c> whatever</c><00:14:12.720><c> here</c><00:14:13.019><c> and</c>

00:14:13.490 --> 00:14:13.500 align:start position:0%
new expression 13 or whatever here and
 

00:14:13.500 --> 00:14:16.310 align:start position:0%
new expression 13 or whatever here and
puts<00:14:13.800><c> that</c><00:14:13.920><c> expression</c><00:14:14.339><c> on</c><00:14:14.579><c> the</c><00:14:14.700><c> stack</c>

00:14:16.310 --> 00:14:16.320 align:start position:0%
puts that expression on the stack
 

00:14:16.320 --> 00:14:18.110 align:start position:0%
puts that expression on the stack
um<00:14:16.440><c> and</c><00:14:16.740><c> we</c><00:14:16.920><c> don't</c><00:14:17.040><c> really</c><00:14:17.220><c> have</c><00:14:17.579><c> we</c><00:14:17.940><c> don't</c>

00:14:18.110 --> 00:14:18.120 align:start position:0%
um and we don't really have we don't
 

00:14:18.120 --> 00:14:19.670 align:start position:0%
um and we don't really have we don't
really<00:14:18.240><c> care</c><00:14:18.480><c> what</c><00:14:18.660><c> it</c><00:14:18.839><c> looks</c>

00:14:19.670 --> 00:14:19.680 align:start position:0%
really care what it looks
 

00:14:19.680 --> 00:14:21.170 align:start position:0%
really care what it looks
um<00:14:19.800><c> what</c><00:14:20.339><c> it</c><00:14:20.399><c> looks</c><00:14:20.639><c> like</c><00:14:20.700><c> right</c><00:14:20.820><c> now</c><00:14:20.940><c> we</c><00:14:21.060><c> don't</c>

00:14:21.170 --> 00:14:21.180 align:start position:0%
um what it looks like right now we don't
 

00:14:21.180 --> 00:14:22.490 align:start position:0%
um what it looks like right now we don't
really<00:14:21.360><c> care</c><00:14:21.540><c> what</c><00:14:21.660><c> kind</c><00:14:21.839><c> of</c><00:14:21.899><c> constraints</c><00:14:22.320><c> we</c>

00:14:22.490 --> 00:14:22.500 align:start position:0%
really care what kind of constraints we
 

00:14:22.500 --> 00:14:24.230 align:start position:0%
really care what kind of constraints we
have<00:14:22.680><c> over</c><00:14:22.860><c> it</c>

00:14:24.230 --> 00:14:24.240 align:start position:0%
have over it
 

00:14:24.240 --> 00:14:26.930 align:start position:0%
have over it
and<00:14:24.959><c> and</c><00:14:25.260><c> here's</c><00:14:25.620><c> a</c><00:14:25.800><c> part</c><00:14:25.920><c> of</c><00:14:26.100><c> the</c><00:14:26.399><c> that</c><00:14:26.700><c> we</c>

00:14:26.930 --> 00:14:26.940 align:start position:0%
and and here's a part of the that we
 

00:14:26.940 --> 00:14:28.370 align:start position:0%
and and here's a part of the that we
actually<00:14:27.060><c> care</c><00:14:27.360><c> about</c><00:14:27.480><c> the</c><00:14:27.779><c> where</c><00:14:27.959><c> we</c><00:14:28.139><c> do</c><00:14:28.260><c> the</c>

00:14:28.370 --> 00:14:28.380 align:start position:0%
actually care about the where we do the
 

00:14:28.380 --> 00:14:32.150 align:start position:0%
actually care about the where we do the
check<00:14:28.700><c> so</c><00:14:29.700><c> if</c><00:14:30.420><c> we</c><00:14:30.540><c> have</c><00:14:30.660><c> a</c><00:14:30.779><c> jump</c><00:14:30.959><c> every</c><00:14:31.800><c> time</c><00:14:32.040><c> we</c>

00:14:32.150 --> 00:14:32.160 align:start position:0%
check so if we have a jump every time we
 

00:14:32.160 --> 00:14:33.650 align:start position:0%
check so if we have a jump every time we
see<00:14:32.339><c> a</c><00:14:32.459><c> conditional</c><00:14:32.820><c> jump</c>

00:14:33.650 --> 00:14:33.660 align:start position:0%
see a conditional jump
 

00:14:33.660 --> 00:14:36.110 align:start position:0%
see a conditional jump
we<00:14:34.260><c> take</c><00:14:34.500><c> the</c><00:14:34.740><c> the</c><00:14:34.860><c> argument</c><00:14:35.399><c> of</c><00:14:35.579><c> that</c><00:14:35.700><c> jump</c><00:14:35.880><c> we</c>

00:14:36.110 --> 00:14:36.120 align:start position:0%
we take the the argument of that jump we
 

00:14:36.120 --> 00:14:37.850 align:start position:0%
we take the the argument of that jump we
take<00:14:36.240><c> the</c><00:14:36.360><c> condition</c><00:14:36.540><c> that</c><00:14:37.260><c> makes</c><00:14:37.440><c> it</c><00:14:37.620><c> jump</c>

00:14:37.850 --> 00:14:37.860 align:start position:0%
take the condition that makes it jump
 

00:14:37.860 --> 00:14:40.150 align:start position:0%
take the condition that makes it jump
and<00:14:38.519><c> we</c><00:14:38.639><c> ask</c><00:14:38.820><c> the</c><00:14:39.000><c> solver</c><00:14:39.300><c> is</c><00:14:39.540><c> it</c><00:14:39.660><c> possible</c>

00:14:40.150 --> 00:14:40.160 align:start position:0%
and we ask the solver is it possible
 

00:14:40.160 --> 00:14:42.730 align:start position:0%
and we ask the solver is it possible
that<00:14:41.160><c> we</c><00:14:41.459><c> can't</c><00:14:41.579><c> jump</c><00:14:41.820><c> to</c><00:14:42.060><c> that</c><00:14:42.240><c> location</c>

00:14:42.730 --> 00:14:42.740 align:start position:0%
that we can't jump to that location
 

00:14:42.740 --> 00:14:45.530 align:start position:0%
that we can't jump to that location
because<00:14:43.740><c> this</c><00:14:44.040><c> is</c><00:14:44.160><c> before</c><00:14:44.459><c> we</c><00:14:44.760><c> had</c><00:14:44.940><c> this</c><00:14:45.240><c> this</c>

00:14:45.530 --> 00:14:45.540 align:start position:0%
because this is before we had this this
 

00:14:45.540 --> 00:14:47.930 align:start position:0%
because this is before we had this this
required<00:14:46.079><c> an</c><00:14:46.260><c> if</c><00:14:46.440><c> right</c><00:14:46.800><c> so</c><00:14:47.040><c> we</c><00:14:47.399><c> have</c><00:14:47.579><c> require</c>

00:14:47.930 --> 00:14:47.940 align:start position:0%
required an if right so we have require
 

00:14:47.940 --> 00:14:50.449 align:start position:0%
required an if right so we have require
access<00:14:48.540><c> or</c><00:14:49.380><c> uh</c>

00:14:50.449 --> 00:14:50.459 align:start position:0%
access or uh
 

00:14:50.459 --> 00:14:54.290 align:start position:0%
access or uh
X<00:14:51.000><c> Plus</c><00:14:51.320><c> then</c><00:14:52.320><c> or</c><00:14:52.500><c> equal</c><00:14:52.620><c> to</c><00:14:52.860><c> 10.</c><00:14:53.399><c> so</c><00:14:54.000><c> we</c><00:14:54.120><c> have</c>

00:14:54.290 --> 00:14:54.300 align:start position:0%
X Plus then or equal to 10. so we have
 

00:14:54.300 --> 00:14:56.210 align:start position:0%
X Plus then or equal to 10. so we have
that<00:14:54.480><c> saved</c><00:14:54.899><c> X</c><00:14:55.139><c> must</c><00:14:55.440><c> be</c><00:14:55.620><c> less</c><00:14:55.740><c> or</c><00:14:55.920><c> equal</c><00:14:56.040><c> to</c>

00:14:56.210 --> 00:14:56.220 align:start position:0%
that saved X must be less or equal to
 

00:14:56.220 --> 00:14:59.090 align:start position:0%
that saved X must be less or equal to
10.<00:14:56.579><c> and</c><00:14:56.820><c> then</c><00:14:56.940><c> we</c><00:14:57.060><c> see</c><00:14:57.240><c> if</c><00:14:57.660><c> x</c><00:14:58.199><c> greater</c><00:14:58.620><c> than</c><00:14:58.740><c> 50</c>

00:14:59.090 --> 00:14:59.100 align:start position:0%
10. and then we see if x greater than 50
 

00:14:59.100 --> 00:15:01.129 align:start position:0%
10. and then we see if x greater than 50
and<00:14:59.880><c> then</c><00:15:00.000><c> we</c><00:15:00.120><c> ask</c><00:15:00.300><c> is</c><00:15:00.420><c> it</c><00:15:00.660><c> possible</c><00:15:00.899><c> though</c>

00:15:01.129 --> 00:15:01.139 align:start position:0%
and then we ask is it possible though
 

00:15:01.139 --> 00:15:03.889 align:start position:0%
and then we ask is it possible though
that<00:15:01.380><c> is</c><00:15:01.560><c> that</c><00:15:01.800><c> X</c><00:15:01.980><c> is</c><00:15:02.160><c> greater</c><00:15:02.459><c> than</c><00:15:02.519><c> 50.</c><00:15:03.240><c> so</c><00:15:03.720><c> at</c>

00:15:03.889 --> 00:15:03.899 align:start position:0%
that is that X is greater than 50. so at
 

00:15:03.899 --> 00:15:06.110 align:start position:0%
that is that X is greater than 50. so at
this<00:15:04.079><c> point</c><00:15:04.199><c> that's</c><00:15:04.500><c> when</c><00:15:04.740><c> we</c>

00:15:06.110 --> 00:15:06.120 align:start position:0%
this point that's when we
 

00:15:06.120 --> 00:15:06.650 align:start position:0%
this point that's when we
um

00:15:06.650 --> 00:15:06.660 align:start position:0%
um
 

00:15:06.660 --> 00:15:08.990 align:start position:0%
um
we<00:15:07.260><c> have</c><00:15:07.500><c> all</c><00:15:07.800><c> the</c><00:15:08.040><c> math</c><00:15:08.220><c> things</c><00:15:08.459><c> encoded</c>

00:15:08.990 --> 00:15:09.000 align:start position:0%
we have all the math things encoded
 

00:15:09.000 --> 00:15:10.790 align:start position:0%
we have all the math things encoded
already<00:15:09.180><c> in</c><00:15:09.600><c> here</c>

00:15:10.790 --> 00:15:10.800 align:start position:0%
already in here
 

00:15:10.800 --> 00:15:13.189 align:start position:0%
already in here
as<00:15:11.279><c> you'll</c><00:15:11.459><c> see</c><00:15:11.639><c> this</c><00:15:12.060><c> make</c><00:15:12.420><c> symbol</c><00:15:12.839><c> this</c><00:15:13.139><c> is</c>

00:15:13.189 --> 00:15:13.199 align:start position:0%
as you'll see this make symbol this is
 

00:15:13.199 --> 00:15:15.230 align:start position:0%
as you'll see this make symbol this is
like<00:15:13.440><c> internal</c><00:15:14.160><c> helpers</c><00:15:14.519><c> not</c><00:15:14.760><c> important</c>

00:15:15.230 --> 00:15:15.240 align:start position:0%
like internal helpers not important
 

00:15:15.240 --> 00:15:16.310 align:start position:0%
like internal helpers not important
right<00:15:15.360><c> now</c>

00:15:16.310 --> 00:15:16.320 align:start position:0%
right now
 

00:15:16.320 --> 00:15:19.009 align:start position:0%
right now
so<00:15:16.740><c> here's</c><00:15:17.040><c> where</c><00:15:17.220><c> we</c>

00:15:19.009 --> 00:15:19.019 align:start position:0%
so here's where we
 

00:15:19.019 --> 00:15:21.470 align:start position:0%
so here's where we
do<00:15:19.560><c> the</c><00:15:19.920><c> check</c>

00:15:21.470 --> 00:15:21.480 align:start position:0%
do the check
 

00:15:21.480 --> 00:15:23.030 align:start position:0%
do the check
so<00:15:21.779><c> we</c><00:15:21.839><c> check</c><00:15:22.019><c> if</c><00:15:22.199><c> the</c><00:15:22.320><c> op</c><00:15:22.440><c> code</c><00:15:22.620><c> is</c><00:15:22.740><c> relational</c>

00:15:23.030 --> 00:15:23.040 align:start position:0%
so we check if the op code is relational
 

00:15:23.040 --> 00:15:25.610 align:start position:0%
so we check if the op code is relational
so<00:15:23.459><c> if</c><00:15:23.639><c> you</c><00:15:23.760><c> have</c><00:15:23.880><c> a</c><00:15:24.060><c> less</c><00:15:24.240><c> than</c><00:15:24.420><c> or</c><00:15:25.199><c> greater</c>

00:15:25.610 --> 00:15:25.620 align:start position:0%
so if you have a less than or greater
 

00:15:25.620 --> 00:15:28.550 align:start position:0%
so if you have a less than or greater
than<00:15:25.680><c> or</c><00:15:26.160><c> if</c><00:15:26.220><c> it's</c><00:15:26.339><c> an</c><00:15:26.519><c> e0</c><00:15:26.820><c> because</c><00:15:27.240><c> if</c><00:15:28.199><c> if</c><00:15:28.380><c> we</c>

00:15:28.550 --> 00:15:28.560 align:start position:0%
than or if it's an e0 because if if we
 

00:15:28.560 --> 00:15:30.470 align:start position:0%
than or if it's an e0 because if if we
needed<00:15:28.800><c> a</c><00:15:28.920><c> greater</c><00:15:29.160><c> or</c><00:15:29.279><c> equal</c><00:15:29.459><c> we</c><00:15:30.180><c> don't</c><00:15:30.300><c> have</c>

00:15:30.470 --> 00:15:30.480 align:start position:0%
needed a greater or equal we don't have
 

00:15:30.480 --> 00:15:32.030 align:start position:0%
needed a greater or equal we don't have
greater<00:15:30.779><c> or</c><00:15:30.899><c> equal</c><00:15:31.019><c> in</c><00:15:31.199><c> the</c><00:15:31.320><c> VM</c><00:15:31.560><c> so</c><00:15:31.680><c> we</c><00:15:31.860><c> need</c><00:15:31.920><c> to</c>

00:15:32.030 --> 00:15:32.040 align:start position:0%
greater or equal in the VM so we need to
 

00:15:32.040 --> 00:15:33.829 align:start position:0%
greater or equal in the VM so we need to
do<00:15:32.160><c> is</c><00:15:32.399><c> zero</c>

00:15:33.829 --> 00:15:33.839 align:start position:0%
do is zero
 

00:15:33.839 --> 00:15:37.550 align:start position:0%
do is zero
um<00:15:33.899><c> less</c><00:15:34.620><c> than</c><00:15:34.800><c> right</c><00:15:35.339><c> so</c><00:15:35.699><c> and</c><00:15:36.300><c> similarly</c><00:15:36.720><c> for</c>

00:15:37.550 --> 00:15:37.560 align:start position:0%
um less than right so and similarly for
 

00:15:37.560 --> 00:15:39.889 align:start position:0%
um less than right so and similarly for
um less<00:15:38.160><c> than</c><00:15:38.339><c> or</c><00:15:38.519><c> equal</c><00:15:38.699><c> so</c><00:15:39.300><c> if</c><00:15:39.480><c> it's</c><00:15:39.600><c> one</c><00:15:39.779><c> of</c>

00:15:39.889 --> 00:15:39.899 align:start position:0%
um less than or equal so if it's one of
 

00:15:39.899 --> 00:15:41.990 align:start position:0%
um less than or equal so if it's one of
these<00:15:40.139><c> we</c><00:15:40.740><c> basically</c><00:15:41.100><c> take</c><00:15:41.459><c> the</c><00:15:41.820><c> the</c>

00:15:41.990 --> 00:15:42.000 align:start position:0%
these we basically take the the
 

00:15:42.000 --> 00:15:44.750 align:start position:0%
these we basically take the the
condition<00:15:42.300><c> which</c><00:15:43.019><c> is</c><00:15:43.139><c> here</c><00:15:43.320><c> we</c><00:15:44.160><c> transform</c><00:15:44.579><c> it</c>

00:15:44.750 --> 00:15:44.760 align:start position:0%
condition which is here we transform it
 

00:15:44.760 --> 00:15:47.509 align:start position:0%
condition which is here we transform it
into<00:15:44.940><c> an</c><00:15:45.440><c> DL</c><00:15:46.440><c> expression</c><00:15:46.860><c> difference</c><00:15:47.040><c> logic</c>

00:15:47.509 --> 00:15:47.519 align:start position:0%
into an DL expression difference logic
 

00:15:47.519 --> 00:15:49.670 align:start position:0%
into an DL expression difference logic
expression

00:15:49.670 --> 00:15:49.680 align:start position:0%
expression
 

00:15:49.680 --> 00:15:52.069 align:start position:0%
expression
um<00:15:49.800><c> and</c><00:15:50.160><c> basically</c><00:15:50.519><c> call</c><00:15:50.820><c> this</c><00:15:51.060><c> over</c><00:15:51.240><c> so</c><00:15:51.839><c> we</c>

00:15:52.069 --> 00:15:52.079 align:start position:0%
um and basically call this over so we
 

00:15:52.079 --> 00:15:54.050 align:start position:0%
um and basically call this over so we
have<00:15:52.199><c> this</c><00:15:52.380><c> check</c><00:15:52.560><c> here</c><00:15:53.040><c> which</c><00:15:53.459><c> will</c><00:15:53.639><c> take</c><00:15:53.820><c> all</c>

00:15:54.050 --> 00:15:54.060 align:start position:0%
have this check here which will take all
 

00:15:54.060 --> 00:15:55.970 align:start position:0%
have this check here which will take all
the<00:15:54.240><c> constraints</c><00:15:54.660><c> and</c><00:15:55.440><c> we'll</c><00:15:55.560><c> call</c><00:15:55.800><c> this</c>

00:15:55.970 --> 00:15:55.980 align:start position:0%
the constraints and we'll call this
 

00:15:55.980 --> 00:15:58.670 align:start position:0%
the constraints and we'll call this
little<00:15:56.160><c> DL</c><00:15:56.459><c> server</c><00:15:56.820><c> that</c><00:15:56.940><c> I</c><00:15:57.060><c> mentioned</c>

00:15:58.670 --> 00:15:58.680 align:start position:0%
little DL server that I mentioned
 

00:15:58.680 --> 00:15:59.449 align:start position:0%
little DL server that I mentioned
um

00:15:59.449 --> 00:15:59.459 align:start position:0%
um
 

00:15:59.459 --> 00:16:02.569 align:start position:0%
um
which<00:16:00.120><c> and</c><00:16:00.600><c> this</c><00:16:00.839><c> is</c><00:16:00.959><c> the</c><00:16:01.260><c> check</c>

00:16:02.569 --> 00:16:02.579 align:start position:0%
which and this is the check
 

00:16:02.579 --> 00:16:04.670 align:start position:0%
which and this is the check
we<00:16:02.940><c> call</c><00:16:03.120><c> this</c><00:16:03.240><c> over</c><00:16:03.480><c> and</c><00:16:03.959><c> if</c><00:16:04.079><c> the</c><00:16:04.199><c> server</c><00:16:04.440><c> says</c>

00:16:04.670 --> 00:16:04.680 align:start position:0%
we call this over and if the server says
 

00:16:04.680 --> 00:16:06.829 align:start position:0%
we call this over and if the server says
unsut<00:16:05.220><c> then</c><00:16:05.940><c> we</c><00:16:06.180><c> say</c><00:16:06.300><c> this</c><00:16:06.480><c> branch</c><00:16:06.720><c> is</c>

00:16:06.829 --> 00:16:06.839 align:start position:0%
unsut then we say this branch is
 

00:16:06.839 --> 00:16:10.670 align:start position:0%
unsut then we say this branch is
unreachable<00:16:07.260><c> why</c><00:16:07.860><c> unsat</c><00:16:08.480><c> because</c><00:16:09.500><c> if</c><00:16:10.500><c> the</c>

00:16:10.670 --> 00:16:10.680 align:start position:0%
unreachable why unsat because if the
 

00:16:10.680 --> 00:16:12.170 align:start position:0%
unreachable why unsat because if the
branches<00:16:11.100><c> if</c><00:16:11.339><c> the</c><00:16:11.459><c> branch</c><00:16:11.639><c> conditions</c><00:16:12.120><c> are</c>

00:16:12.170 --> 00:16:12.180 align:start position:0%
branches if the branch conditions are
 

00:16:12.180 --> 00:16:13.790 align:start position:0%
branches if the branch conditions are
unsatisfiable

00:16:13.790 --> 00:16:13.800 align:start position:0%
unsatisfiable
 

00:16:13.800 --> 00:16:17.569 align:start position:0%
unsatisfiable
together<00:16:14.600><c> it</c><00:16:15.600><c> means</c><00:16:16.019><c> that</c>

00:16:17.569 --> 00:16:17.579 align:start position:0%
together it means that
 

00:16:17.579 --> 00:16:19.850 align:start position:0%
together it means that
um<00:16:18.120><c> the</c><00:16:18.600><c> silver</c><00:16:18.779><c> will</c><00:16:19.019><c> say</c><00:16:19.199><c> unsatisfiable</c>

00:16:19.850 --> 00:16:19.860 align:start position:0%
um the silver will say unsatisfiable
 

00:16:19.860 --> 00:16:22.009 align:start position:0%
um the silver will say unsatisfiable
right<00:16:20.339><c> and</c><00:16:21.000><c> this</c><00:16:21.180><c> means</c><00:16:21.420><c> that</c><00:16:21.540><c> that</c><00:16:21.660><c> part</c><00:16:21.839><c> is</c>

00:16:22.009 --> 00:16:22.019 align:start position:0%
right and this means that that part is
 

00:16:22.019 --> 00:16:23.810 align:start position:0%
right and this means that that part is
not<00:16:22.139><c> reachable</c><00:16:22.500><c> because</c><00:16:23.279><c> there's</c><00:16:23.579><c> something</c>

00:16:23.810 --> 00:16:23.820 align:start position:0%
not reachable because there's something
 

00:16:23.820 --> 00:16:25.610 align:start position:0%
not reachable because there's something
in<00:16:24.300><c> in</c><00:16:24.480><c> the</c><00:16:24.660><c> middle</c><00:16:24.779><c> that</c><00:16:25.019><c> is</c><00:16:25.079><c> not</c><00:16:25.260><c> allowing</c>

00:16:25.610 --> 00:16:25.620 align:start position:0%
in in the middle that is not allowing
 

00:16:25.620 --> 00:16:28.310 align:start position:0%
in in the middle that is not allowing
that<00:16:26.100><c> will</c><00:16:26.339><c> not</c><00:16:26.519><c> make</c><00:16:26.940><c> the</c><00:16:27.180><c> code</c><00:16:27.540><c> the</c><00:16:27.839><c> code</c><00:16:27.959><c> the</c>

00:16:28.310 --> 00:16:28.320 align:start position:0%
that will not make the code the code the
 

00:16:28.320 --> 00:16:29.750 align:start position:0%
that will not make the code the code the
code<00:16:28.440><c> path</c><00:16:28.800><c> is</c><00:16:29.100><c> basically</c><00:16:29.339><c> going</c><00:16:29.519><c> to</c><00:16:29.699><c> be</c>

00:16:29.750 --> 00:16:29.760 align:start position:0%
code path is basically going to be
 

00:16:29.760 --> 00:16:32.090 align:start position:0%
code path is basically going to be
inconsistent

00:16:32.090 --> 00:16:32.100 align:start position:0%
inconsistent
 

00:16:32.100 --> 00:16:34.730 align:start position:0%
inconsistent
um<00:16:32.160><c> and</c><00:16:32.760><c> what</c><00:16:33.000><c> the</c><00:16:33.120><c> silver</c><00:16:33.240><c> looks</c><00:16:33.720><c> like</c><00:16:33.779><c> is</c>

00:16:34.730 --> 00:16:34.740 align:start position:0%
um and what the silver looks like is
 

00:16:34.740 --> 00:16:37.189 align:start position:0%
um and what the silver looks like is
yeah<00:16:35.279><c> this</c><00:16:35.699><c> is</c><00:16:35.820><c> the</c><00:16:36.060><c> entire</c><00:16:36.300><c> silver</c>

00:16:37.189 --> 00:16:37.199 align:start position:0%
yeah this is the entire silver
 

00:16:37.199 --> 00:16:39.710 align:start position:0%
yeah this is the entire silver
so<00:16:37.560><c> you</c><00:16:37.680><c> take</c><00:16:37.800><c> the</c><00:16:37.980><c> constraints</c><00:16:38.399><c> so</c><00:16:39.360><c> here</c><00:16:39.540><c> you</c>

00:16:39.710 --> 00:16:39.720 align:start position:0%
so you take the constraints so here you
 

00:16:39.720 --> 00:16:41.810 align:start position:0%
so you take the constraints so here you
just<00:16:39.839><c> build</c><00:16:40.019><c> the</c><00:16:40.199><c> graph</c><00:16:40.980><c> so</c><00:16:41.279><c> this</c><00:16:41.399><c> is</c><00:16:41.459><c> built</c><00:16:41.759><c> in</c>

00:16:41.810 --> 00:16:41.820 align:start position:0%
just build the graph so this is built in
 

00:16:41.820 --> 00:16:43.670 align:start position:0%
just build the graph so this is built in
the<00:16:41.940><c> graph</c><00:16:42.180><c> here</c><00:16:42.959><c> you</c><00:16:43.079><c> just</c><00:16:43.139><c> need</c><00:16:43.259><c> to</c><00:16:43.380><c> know</c><00:16:43.500><c> how</c>

00:16:43.670 --> 00:16:43.680 align:start position:0%
the graph here you just need to know how
 

00:16:43.680 --> 00:16:45.769 align:start position:0%
the graph here you just need to know how
many<00:16:43.740><c> variables</c><00:16:44.100><c> you</c><00:16:44.279><c> have</c>

00:16:45.769 --> 00:16:45.779 align:start position:0%
many variables you have
 

00:16:45.779 --> 00:16:48.170 align:start position:0%
many variables you have
um<00:16:45.899><c> this</c><00:16:46.500><c> is</c><00:16:46.620><c> still</c><00:16:46.800><c> building</c><00:16:46.980><c> the</c><00:16:47.279><c> graph</c>

00:16:48.170 --> 00:16:48.180 align:start position:0%
um this is still building the graph
 

00:16:48.180 --> 00:16:50.329 align:start position:0%
um this is still building the graph
and<00:16:48.540><c> then</c><00:16:48.660><c> Here</c><00:16:48.899><c> We</c><00:16:49.079><c> Run</c><00:16:49.259><c> The</c><00:16:49.500><c> this</c><00:16:49.800><c> single</c><00:16:50.160><c> the</c>

00:16:50.329 --> 00:16:50.339 align:start position:0%
and then Here We Run The this single the
 

00:16:50.339 --> 00:16:52.490 align:start position:0%
and then Here We Run The this single the
single<00:16:50.699><c> source</c><00:16:50.940><c> for</c><00:16:51.060><c> this</c><00:16:51.240><c> path</c><00:16:51.360><c> algorithm</c>

00:16:52.490 --> 00:16:52.500 align:start position:0%
single source for this path algorithm
 

00:16:52.500 --> 00:16:53.930 align:start position:0%
single source for this path algorithm
which<00:16:52.860><c> is</c><00:16:52.920><c> the</c><00:16:53.040><c> first</c><00:16:53.160><c> part</c><00:16:53.399><c> of</c><00:16:53.519><c> the</c><00:16:53.639><c> solver</c>

00:16:53.930 --> 00:16:53.940 align:start position:0%
which is the first part of the solver
 

00:16:53.940 --> 00:16:56.210 align:start position:0%
which is the first part of the solver
which<00:16:54.660><c> is</c><00:16:54.839><c> basically</c><00:16:55.620><c> yeah</c><00:16:55.800><c> it's</c><00:16:55.980><c> a</c><00:16:56.160><c> very</c>

00:16:56.210 --> 00:16:56.220 align:start position:0%
which is basically yeah it's a very
 

00:16:56.220 --> 00:16:58.430 align:start position:0%
which is basically yeah it's a very
basic<00:16:56.519><c> graph</c><00:16:56.699><c> algorithm</c><00:16:57.060><c> then</c><00:16:58.019><c> we</c><00:16:58.199><c> did</c><00:16:58.320><c> a</c>

00:16:58.430 --> 00:16:58.440 align:start position:0%
basic graph algorithm then we did a
 

00:16:58.440 --> 00:17:00.710 align:start position:0%
basic graph algorithm then we did a
negative<00:16:58.680><c> cycle</c><00:16:58.980><c> detection</c><00:16:59.420><c> and</c><00:17:00.420><c> that's</c>

00:17:00.710 --> 00:17:00.720 align:start position:0%
negative cycle detection and that's
 

00:17:00.720 --> 00:17:03.530 align:start position:0%
negative cycle detection and that's
really<00:17:00.959><c> all</c><00:17:01.320><c> the</c><00:17:01.620><c> silver</c><00:17:01.860><c> does</c><00:17:02.220><c> this</c><00:17:03.000><c> is</c><00:17:03.120><c> and</c>

00:17:03.530 --> 00:17:03.540 align:start position:0%
really all the silver does this is and
 

00:17:03.540 --> 00:17:07.069 align:start position:0%
really all the silver does this is and
20<00:17:03.779><c> lines</c><00:17:04.140><c> of</c><00:17:04.319><c> code</c><00:17:04.439><c> it's</c><00:17:04.919><c> really</c><00:17:05.160><c> simple</c><00:17:05.339><c> and</c>

00:17:07.069 --> 00:17:07.079 align:start position:0%
20 lines of code it's really simple and
 

00:17:07.079 --> 00:17:07.669 align:start position:0%
20 lines of code it's really simple and
um

00:17:07.669 --> 00:17:07.679 align:start position:0%
um
 

00:17:07.679 --> 00:17:09.409 align:start position:0%
um
yeah<00:17:08.160><c> it's</c><00:17:08.339><c> a</c><00:17:08.579><c> it's</c><00:17:08.760><c> a</c><00:17:08.819><c> logic</c><00:17:09.059><c> that</c><00:17:09.179><c> I</c><00:17:09.299><c> really</c>

00:17:09.409 --> 00:17:09.419 align:start position:0%
yeah it's a it's a logic that I really
 

00:17:09.419 --> 00:17:11.449 align:start position:0%
yeah it's a it's a logic that I really
like<00:17:09.600><c> because</c><00:17:09.900><c> it</c><00:17:10.559><c> can</c><00:17:10.679><c> do</c><00:17:10.919><c> a</c><00:17:11.040><c> lot</c><00:17:11.160><c> of</c><00:17:11.280><c> things</c>

00:17:11.449 --> 00:17:11.459 align:start position:0%
like because it can do a lot of things
 

00:17:11.459 --> 00:17:14.510 align:start position:0%
like because it can do a lot of things
while<00:17:12.360><c> being</c><00:17:12.660><c> very</c><00:17:12.900><c> very</c><00:17:13.140><c> simple</c>

00:17:14.510 --> 00:17:14.520 align:start position:0%
while being very very simple
 

00:17:14.520 --> 00:17:16.429 align:start position:0%
while being very very simple
um<00:17:14.579><c> the</c><00:17:14.819><c> last</c><00:17:14.880><c> thing</c><00:17:15.059><c> that</c><00:17:15.179><c> I</c><00:17:15.360><c> want</c><00:17:15.419><c> to</c><00:17:15.600><c> show</c><00:17:15.720><c> is</c>

00:17:16.429 --> 00:17:16.439 align:start position:0%
um the last thing that I want to show is
 

00:17:16.439 --> 00:17:19.730 align:start position:0%
um the last thing that I want to show is
how<00:17:17.040><c> do</c><00:17:17.160><c> you</c><00:17:17.280><c> use</c><00:17:17.400><c> this</c><00:17:18.179><c> so</c>

00:17:19.730 --> 00:17:19.740 align:start position:0%
how do you use this so
 

00:17:19.740 --> 00:17:21.590 align:start position:0%
how do you use this so
here<00:17:20.220><c> I</c><00:17:20.400><c> have</c><00:17:20.520><c> this</c><00:17:20.760><c> contract</c><00:17:21.059><c> unreachable</c>

00:17:21.590 --> 00:17:21.600 align:start position:0%
here I have this contract unreachable
 

00:17:21.600 --> 00:17:23.210 align:start position:0%
here I have this contract unreachable
that<00:17:22.079><c> has</c><00:17:22.199><c> a</c><00:17:22.319><c> bunch</c><00:17:22.439><c> of</c><00:17:22.559><c> functions</c><00:17:22.860><c> and</c><00:17:23.040><c> that's</c>

00:17:23.210 --> 00:17:23.220 align:start position:0%
that has a bunch of functions and that's
 

00:17:23.220 --> 00:17:24.829 align:start position:0%
that has a bunch of functions and that's
like<00:17:23.459><c> some</c><00:17:23.640><c> unreachable</c><00:17:24.059><c> branches</c><00:17:24.600><c> in</c><00:17:24.720><c> each</c>

00:17:24.829 --> 00:17:24.839 align:start position:0%
like some unreachable branches in each
 

00:17:24.839 --> 00:17:26.210 align:start position:0%
like some unreachable branches in each
of<00:17:24.959><c> these</c><00:17:25.140><c> functions</c>

00:17:26.210 --> 00:17:26.220 align:start position:0%
of these functions
 

00:17:26.220 --> 00:17:29.090 align:start position:0%
of these functions
all<00:17:26.640><c> we</c><00:17:26.760><c> need</c><00:17:26.880><c> to</c><00:17:27.000><c> do</c><00:17:27.120><c> to</c><00:17:27.419><c> test</c><00:17:27.660><c> that</c><00:17:27.959><c> is</c><00:17:28.740><c> really</c>

00:17:29.090 --> 00:17:29.100 align:start position:0%
all we need to do to test that is really
 

00:17:29.100 --> 00:17:31.490 align:start position:0%
all we need to do to test that is really
just<00:17:29.400><c> this</c><00:17:29.700><c> we</c><00:17:30.419><c> call</c><00:17:30.600><c> the</c><00:17:30.720><c> Sim</c><00:17:30.900><c> run</c><00:17:31.140><c> function</c>

00:17:31.490 --> 00:17:31.500 align:start position:0%
just this we call the Sim run function
 

00:17:31.500 --> 00:17:33.049 align:start position:0%
just this we call the Sim run function
from<00:17:31.799><c> the</c><00:17:31.980><c> library</c><00:17:32.100><c> from</c><00:17:32.460><c> the</c><00:17:32.640><c> symbolic</c>

00:17:33.049 --> 00:17:33.059 align:start position:0%
from the library from the symbolic
 

00:17:33.059 --> 00:17:35.390 align:start position:0%
from the library from the symbolic
symbolic<00:17:33.780><c> execution</c><00:17:34.320><c> Library</c>

00:17:35.390 --> 00:17:35.400 align:start position:0%
symbolic execution Library
 

00:17:35.400 --> 00:17:38.270 align:start position:0%
symbolic execution Library
with<00:17:36.179><c> the</c><00:17:36.419><c> runtime</c><00:17:36.720><c> code</c>

00:17:38.270 --> 00:17:38.280 align:start position:0%
with the runtime code
 

00:17:38.280 --> 00:17:40.850 align:start position:0%
with the runtime code
from<00:17:38.700><c> the</c><00:17:38.820><c> contract</c><00:17:39.120><c> that's</c><00:17:39.360><c> really</c><00:17:39.539><c> all</c><00:17:39.860><c> and</c>

00:17:40.850 --> 00:17:40.860 align:start position:0%
from the contract that's really all and
 

00:17:40.860 --> 00:17:42.770 align:start position:0%
from the contract that's really all and
here's<00:17:41.340><c> a</c><00:17:41.460><c> simpler</c><00:17:41.940><c> thing</c><00:17:42.059><c> just</c><00:17:42.539><c> like</c>

00:17:42.770 --> 00:17:42.780 align:start position:0%
here's a simpler thing just like
 

00:17:42.780 --> 00:17:45.169 align:start position:0%
here's a simpler thing just like
manually

00:17:45.169 --> 00:17:45.179 align:start position:0%
manually
 

00:17:45.179 --> 00:17:46.610 align:start position:0%
manually
um just<00:17:45.419><c> a</c><00:17:45.600><c> simple</c><00:17:45.720><c> test</c>

00:17:46.610 --> 00:17:46.620 align:start position:0%
um just a simple test
 

00:17:46.620 --> 00:17:48.409 align:start position:0%
um just a simple test
with<00:17:47.220><c> somebody</c><00:17:47.460><c> care</c><00:17:47.760><c> that</c><00:17:47.940><c> I</c><00:17:48.059><c> know</c><00:17:48.120><c> what</c><00:17:48.240><c> it</c>

00:17:48.409 --> 00:17:48.419 align:start position:0%
with somebody care that I know what it
 

00:17:48.419 --> 00:17:52.850 align:start position:0%
with somebody care that I know what it
does<00:17:48.980><c> and</c><00:17:49.980><c> if</c><00:17:50.160><c> you</c><00:17:50.340><c> run</c><00:17:50.700><c> this</c>

00:17:52.850 --> 00:17:52.860 align:start position:0%
does and if you run this
 

00:17:52.860 --> 00:17:56.090 align:start position:0%
does and if you run this
yeah<00:17:53.340><c> so</c><00:17:53.640><c> here</c><00:17:53.820><c> you'll</c><00:17:54.000><c> see</c><00:17:54.179><c> that</c>

00:17:56.090 --> 00:17:56.100 align:start position:0%
yeah so here you'll see that
 

00:17:56.100 --> 00:17:57.590 align:start position:0%
yeah so here you'll see that
um this<00:17:56.400><c> is</c><00:17:56.460><c> the</c><00:17:56.580><c> complicated</c><00:17:56.940><c> case</c><00:17:57.240><c> with</c><00:17:57.419><c> all</c>

00:17:57.590 --> 00:17:57.600 align:start position:0%
um this is the complicated case with all
 

00:17:57.600 --> 00:17:59.930 align:start position:0%
um this is the complicated case with all
the<00:17:57.720><c> solidity</c><00:17:58.080><c> high</c><00:17:58.260><c> level</c><00:17:58.440><c> functions</c><00:17:58.980><c> and</c>

00:17:59.930 --> 00:17:59.940 align:start position:0%
the solidity high level functions and
 

00:17:59.940 --> 00:18:01.909 align:start position:0%
the solidity high level functions and
it's<00:18:00.600><c> not</c><00:18:00.840><c> the</c><00:18:00.960><c> best</c><00:18:01.080><c> way</c><00:18:01.380><c> to</c><00:18:01.559><c> report</c><00:18:01.679><c> the</c>

00:18:01.909 --> 00:18:01.919 align:start position:0%
it's not the best way to report the
 

00:18:01.919 --> 00:18:04.430 align:start position:0%
it's not the best way to report the
things<00:18:02.100><c> but</c><00:18:02.280><c> it</c><00:18:02.460><c> reports</c><00:18:02.880><c> it</c><00:18:03.419><c> emits</c><00:18:03.900><c> an</c><00:18:04.260><c> event</c>

00:18:04.430 --> 00:18:04.440 align:start position:0%
things but it reports it emits an event
 

00:18:04.440 --> 00:18:06.650 align:start position:0%
things but it reports it emits an event
that<00:18:05.160><c> says</c><00:18:05.400><c> unreachable</c><00:18:05.880><c> Branch</c><00:18:06.240><c> with</c><00:18:06.539><c> the</c>

00:18:06.650 --> 00:18:06.660 align:start position:0%
that says unreachable Branch with the
 

00:18:06.660 --> 00:18:10.010 align:start position:0%
that says unreachable Branch with the
pc255<00:18:07.559><c> this</c><00:18:08.400><c> tiny</c><00:18:08.820><c> example</c><00:18:09.120><c> so</c><00:18:09.299><c> it's</c><00:18:09.539><c> this</c><00:18:09.840><c> is</c>

00:18:10.010 --> 00:18:10.020 align:start position:0%
pc255 this tiny example so it's this is
 

00:18:10.020 --> 00:18:11.390 align:start position:0%
pc255 this tiny example so it's this is
the<00:18:10.200><c> same</c><00:18:10.320><c> as</c><00:18:10.440><c> I</c><00:18:10.559><c> showed</c><00:18:10.740><c> in</c><00:18:10.860><c> solidity</c><00:18:11.220><c> just</c>

00:18:11.390 --> 00:18:11.400 align:start position:0%
the same as I showed in solidity just
 

00:18:11.400 --> 00:18:14.750 align:start position:0%
the same as I showed in solidity just
like<00:18:11.580><c> in</c><00:18:11.760><c> written</c><00:18:12.120><c> quickly</c><00:18:12.480><c> in</c><00:18:12.539><c> yule</c><00:18:13.559><c> and</c><00:18:14.400><c> this</c>

00:18:14.750 --> 00:18:14.760 align:start position:0%
like in written quickly in yule and this
 

00:18:14.760 --> 00:18:16.610 align:start position:0%
like in written quickly in yule and this
is<00:18:14.880><c> the</c><00:18:15.059><c> bytecode</c>

00:18:16.610 --> 00:18:16.620 align:start position:0%
is the bytecode
 

00:18:16.620 --> 00:18:18.950 align:start position:0%
is the bytecode
that<00:18:17.100><c> it</c><00:18:17.280><c> generates</c>

00:18:18.950 --> 00:18:18.960 align:start position:0%
that it generates
 

00:18:18.960 --> 00:18:23.090 align:start position:0%
that it generates
um well<00:18:19.140><c> that</c><00:18:19.679><c> I</c><00:18:19.799><c> wrote</c><00:18:19.980><c> manually</c><00:18:20.340><c> and</c>

00:18:23.090 --> 00:18:23.100 align:start position:0%
um well that I wrote manually and
 

00:18:23.100 --> 00:18:23.990 align:start position:0%
um well that I wrote manually and
um

00:18:23.990 --> 00:18:24.000 align:start position:0%
um
 

00:18:24.000 --> 00:18:26.090 align:start position:0%
um
so<00:18:24.539><c> we</c><00:18:24.720><c> can</c><00:18:24.900><c> quickly</c>

00:18:26.090 --> 00:18:26.100 align:start position:0%
so we can quickly
 

00:18:26.100 --> 00:18:28.909 align:start position:0%
so we can quickly
compute<00:18:27.000><c> This</c><00:18:27.299><c> Together</c><00:18:27.620><c> keeping</c><00:18:28.620><c> track</c><00:18:28.740><c> of</c>

00:18:28.909 --> 00:18:28.919 align:start position:0%
compute This Together keeping track of
 

00:18:28.919 --> 00:18:31.490 align:start position:0%
compute This Together keeping track of
the<00:18:29.039><c> stack</c>

00:18:31.490 --> 00:18:31.500 align:start position:0%
 
 

00:18:31.500 --> 00:18:33.350 align:start position:0%
 
and<00:18:31.860><c> then</c><00:18:31.919><c> you</c><00:18:32.039><c> see</c><00:18:32.220><c> what</c><00:18:32.460><c> it</c>

00:18:33.350 --> 00:18:33.360 align:start position:0%
and then you see what it
 

00:18:33.360 --> 00:18:35.630 align:start position:0%
and then you see what it
what<00:18:33.720><c> it</c><00:18:33.840><c> actually</c><00:18:33.960><c> does</c><00:18:34.200><c> in</c><00:18:34.380><c> execution</c><00:18:34.919><c> so</c>

00:18:35.630 --> 00:18:35.640 align:start position:0%
what it actually does in execution so
 

00:18:35.640 --> 00:18:37.250 align:start position:0%
what it actually does in execution so
push<00:18:36.059><c> zero</c>

00:18:37.250 --> 00:18:37.260 align:start position:0%
push zero
 

00:18:37.260 --> 00:18:38.750 align:start position:0%
push zero
we're<00:18:37.559><c> going</c><00:18:37.679><c> to</c><00:18:37.740><c> push</c><00:18:37.860><c> zero</c><00:18:38.340><c> then</c><00:18:38.520><c> we</c><00:18:38.640><c> just</c>

00:18:38.750 --> 00:18:38.760 align:start position:0%
we're going to push zero then we just
 

00:18:38.760 --> 00:18:40.190 align:start position:0%
we're going to push zero then we just
called<00:18:38.940><c> it</c><00:18:39.059><c> a</c><00:18:39.179><c> load</c><00:18:39.360><c> of</c><00:18:39.480><c> zero</c><00:18:39.780><c> it's</c><00:18:39.900><c> going</c><00:18:40.080><c> to</c>

00:18:40.190 --> 00:18:40.200 align:start position:0%
called it a load of zero it's going to
 

00:18:40.200 --> 00:18:42.230 align:start position:0%
called it a load of zero it's going to
give<00:18:40.320><c> us</c><00:18:40.500><c> some</c><00:18:40.740><c> X</c>

00:18:42.230 --> 00:18:42.240 align:start position:0%
give us some X
 

00:18:42.240 --> 00:18:46.730 align:start position:0%
give us some X
then<00:18:42.840><c> we</c><00:18:43.260><c> push</c><00:18:43.620><c> 10.</c>

00:18:46.730 --> 00:18:46.740 align:start position:0%
 
 

00:18:46.740 --> 00:18:49.850 align:start position:0%
 
we<00:18:47.160><c> duplicate</c><00:18:47.700><c> the</c><00:18:47.940><c> X</c>

00:18:49.850 --> 00:18:49.860 align:start position:0%
we duplicate the X
 

00:18:49.860 --> 00:18:53.450 align:start position:0%
we duplicate the X
we<00:18:50.460><c> do</c><00:18:50.700><c> less</c><00:18:50.940><c> than</c><00:18:51.179><c> so</c><00:18:51.660><c> this</c><00:18:51.960><c> is</c><00:18:52.080><c> going</c><00:18:52.260><c> to</c><00:18:52.380><c> turn</c>

00:18:53.450 --> 00:18:53.460 align:start position:0%
we do less than so this is going to turn
 

00:18:53.460 --> 00:18:55.730 align:start position:0%
we do less than so this is going to turn
into<00:18:54.000><c> this</c>

00:18:55.730 --> 00:18:55.740 align:start position:0%
into this
 

00:18:55.740 --> 00:18:58.070 align:start position:0%
into this
this<00:18:56.100><c> is</c><00:18:56.280><c> the</c><00:18:56.460><c> stack</c><00:18:56.640><c> by</c><00:18:57.000><c> the</c><00:18:57.179><c> way</c>

00:18:58.070 --> 00:18:58.080 align:start position:0%
this is the stack by the way
 

00:18:58.080 --> 00:19:00.650 align:start position:0%
this is the stack by the way
and<00:18:58.620><c> the</c><00:18:58.860><c> top</c><00:18:58.980><c> is</c><00:18:59.220><c> the</c><00:18:59.340><c> higher</c><00:18:59.640><c> position</c><00:18:59.820><c> so</c>

00:19:00.650 --> 00:19:00.660 align:start position:0%
and the top is the higher position so
 

00:19:00.660 --> 00:19:02.870 align:start position:0%
and the top is the higher position so
now<00:19:00.780><c> we</c><00:19:00.960><c> push</c><00:19:01.140><c> tag</c><00:19:01.559><c> 0b</c>

00:19:02.870 --> 00:19:02.880 align:start position:0%
now we push tag 0b
 

00:19:02.880 --> 00:19:05.210 align:start position:0%
now we push tag 0b
and<00:19:03.480><c> we</c><00:19:03.720><c> do</c><00:19:03.900><c> the</c><00:19:04.080><c> like</c><00:19:04.440><c> a</c><00:19:04.620><c> conditional</c><00:19:04.980><c> jump</c>

00:19:05.210 --> 00:19:05.220 align:start position:0%
and we do the like a conditional jump
 

00:19:05.220 --> 00:19:07.250 align:start position:0%
and we do the like a conditional jump
where<00:19:05.700><c> the</c><00:19:05.940><c> false</c><00:19:06.240><c> Branch</c><00:19:06.480><c> stops</c><00:19:06.840><c> so</c><00:19:07.020><c> we</c><00:19:07.140><c> don't</c>

00:19:07.250 --> 00:19:07.260 align:start position:0%
where the false Branch stops so we don't
 

00:19:07.260 --> 00:19:09.289 align:start position:0%
where the false Branch stops so we don't
care<00:19:07.320><c> about</c><00:19:07.440><c> the</c><00:19:07.620><c> first</c><00:19:07.740><c> Branch</c><00:19:08.100><c> all</c><00:19:08.700><c> we</c><00:19:08.880><c> do</c><00:19:09.059><c> is</c>

00:19:09.289 --> 00:19:09.299 align:start position:0%
care about the first Branch all we do is
 

00:19:09.299 --> 00:19:11.330 align:start position:0%
care about the first Branch all we do is
just<00:19:09.480><c> so</c><00:19:09.660><c> you're</c><00:19:09.840><c> gonna</c><00:19:09.960><c> pop</c>

00:19:11.330 --> 00:19:11.340 align:start position:0%
just so you're gonna pop
 

00:19:11.340 --> 00:19:12.590 align:start position:0%
just so you're gonna pop
um<00:19:11.400><c> we're</c><00:19:11.760><c> gonna</c><00:19:11.880><c> pop</c><00:19:12.059><c> this</c><00:19:12.240><c> first</c><00:19:12.419><c> two</c>

00:19:12.590 --> 00:19:12.600 align:start position:0%
um we're gonna pop this first two
 

00:19:12.600 --> 00:19:15.710 align:start position:0%
um we're gonna pop this first two
arguments<00:19:12.960><c> right</c><00:19:13.260><c> because</c><00:19:13.500><c> of</c><00:19:13.799><c> the</c><00:19:14.580><c> jump</c><00:19:15.120><c> but</c>

00:19:15.710 --> 00:19:15.720 align:start position:0%
arguments right because of the jump but
 

00:19:15.720 --> 00:19:18.529 align:start position:0%
arguments right because of the jump but
because<00:19:15.900><c> we</c><00:19:16.200><c> go</c><00:19:16.440><c> into</c><00:19:16.860><c> a</c><00:19:17.220><c> branch</c><00:19:17.539><c> this</c>

00:19:18.529 --> 00:19:18.539 align:start position:0%
because we go into a branch this
 

00:19:18.539 --> 00:19:20.690 align:start position:0%
because we go into a branch this
condition<00:19:18.720><c> must</c><00:19:19.080><c> be</c><00:19:19.260><c> true</c><00:19:19.500><c> for</c><00:19:20.280><c> the</c><00:19:20.400><c> rest</c><00:19:20.580><c> of</c>

00:19:20.690 --> 00:19:20.700 align:start position:0%
condition must be true for the rest of
 

00:19:20.700 --> 00:19:22.370 align:start position:0%
condition must be true for the rest of
execution<00:19:21.120><c> right</c>

00:19:22.370 --> 00:19:22.380 align:start position:0%
execution right
 

00:19:22.380 --> 00:19:24.049 align:start position:0%
execution right
set<00:19:22.860><c> of</c><00:19:23.039><c> constraints</c>

00:19:24.049 --> 00:19:24.059 align:start position:0%
set of constraints
 

00:19:24.059 --> 00:19:26.150 align:start position:0%
set of constraints
so<00:19:24.419><c> we</c><00:19:24.539><c> keep</c><00:19:24.660><c> going</c><00:19:24.840><c> in</c><00:19:25.140><c> tag</c><00:19:25.380><c> one</c><00:19:25.559><c> jump</c><00:19:25.799><c> Dash</c>

00:19:26.150 --> 00:19:26.160 align:start position:0%
so we keep going in tag one jump Dash
 

00:19:26.160 --> 00:19:28.010 align:start position:0%
so we keep going in tag one jump Dash
dup<00:19:26.400><c> we</c><00:19:26.580><c> duplicate</c><00:19:26.940><c> X</c><00:19:27.120><c> again</c>

00:19:28.010 --> 00:19:28.020 align:start position:0%
dup we duplicate X again
 

00:19:28.020 --> 00:19:31.450 align:start position:0%
dup we duplicate X again
we<00:19:28.440><c> push</c><00:19:28.620><c> 50.</c>

00:19:31.450 --> 00:19:31.460 align:start position:0%
 
 

00:19:31.460 --> 00:19:35.870 align:start position:0%
 
we<00:19:32.460><c> do</c><00:19:32.640><c> an</c><00:19:32.820><c> LT</c><00:19:33.179><c> now</c>

00:19:35.870 --> 00:19:35.880 align:start position:0%
 
 

00:19:35.880 --> 00:19:38.750 align:start position:0%
 
and<00:19:36.600><c> which</c><00:19:36.960><c> consumes</c><00:19:37.620><c> the</c><00:19:38.039><c> X</c><00:19:38.160><c> and</c><00:19:38.520><c> this</c>

00:19:38.750 --> 00:19:38.760 align:start position:0%
and which consumes the X and this
 

00:19:38.760 --> 00:19:40.370 align:start position:0%
and which consumes the X and this
becomes<00:19:39.059><c> top</c><00:19:39.240><c> of</c><00:19:39.419><c> the</c><00:19:39.480><c> stack</c><00:19:39.660><c> just</c><00:19:39.900><c> a</c><00:19:40.020><c> symbolic</c>

00:19:40.370 --> 00:19:40.380 align:start position:0%
becomes top of the stack just a symbolic
 

00:19:40.380 --> 00:19:43.490 align:start position:0%
becomes top of the stack just a symbolic
expression<00:19:40.799><c> like</c><00:19:41.400><c> Y</c><00:19:41.820><c> equals</c><00:19:42.419><c> X</c><00:19:42.840><c> length</c><00:19:43.260><c> less</c>

00:19:43.490 --> 00:19:43.500 align:start position:0%
expression like Y equals X length less
 

00:19:43.500 --> 00:19:45.850 align:start position:0%
expression like Y equals X length less
than<00:19:43.740><c> fifth</c><00:19:44.700><c> less</c><00:19:44.820><c> than</c><00:19:45.000><c> x</c>

00:19:45.850 --> 00:19:45.860 align:start position:0%
than fifth less than x
 

00:19:45.860 --> 00:19:50.210 align:start position:0%
than fifth less than x
we<00:19:46.860><c> push</c><00:19:47.039><c> 14</c><00:19:47.400><c> and</c><00:19:47.700><c> then</c><00:19:47.820><c> we</c><00:19:48.000><c> jump</c><00:19:48.440><c> 2</c><00:19:49.440><c> and</c><00:19:50.100><c> then</c>

00:19:50.210 --> 00:19:50.220 align:start position:0%
we push 14 and then we jump 2 and then
 

00:19:50.220 --> 00:19:52.730 align:start position:0%
we push 14 and then we jump 2 and then
at<00:19:50.460><c> this</c><00:19:50.580><c> point</c><00:19:50.820><c> when</c><00:19:51.240><c> we</c><00:19:51.419><c> see</c><00:19:51.539><c> the</c><00:19:51.720><c> jump</c><00:19:51.960><c> we're</c>

00:19:52.730 --> 00:19:52.740 align:start position:0%
at this point when we see the jump we're
 

00:19:52.740 --> 00:19:54.169 align:start position:0%
at this point when we see the jump we're
going<00:19:52.860><c> to</c><00:19:52.980><c> ask</c><00:19:53.039><c> the</c><00:19:53.220><c> solver</c><00:19:53.520><c> is</c><00:19:53.760><c> it</c><00:19:53.880><c> possible</c>

00:19:54.169 --> 00:19:54.179 align:start position:0%
going to ask the solver is it possible
 

00:19:54.179 --> 00:19:57.830 align:start position:0%
going to ask the solver is it possible
that<00:19:54.720><c> this</c><00:19:55.020><c> new</c><00:19:55.200><c> condition</c><00:19:55.380><c> 50</c><00:19:56.220><c> as</c><00:19:56.520><c> an</c><00:19:56.640><c> X</c><00:19:56.840><c> is</c>

00:19:57.830 --> 00:19:57.840 align:start position:0%
that this new condition 50 as an X is
 

00:19:57.840 --> 00:20:00.350 align:start position:0%
that this new condition 50 as an X is
consistent<00:19:58.740><c> with</c><00:19:59.039><c> what</c><00:19:59.220><c> we</c><00:19:59.340><c> already</c><00:19:59.460><c> have</c><00:19:59.820><c> X</c>

00:20:00.350 --> 00:20:00.360 align:start position:0%
consistent with what we already have X
 

00:20:00.360 --> 00:20:01.610 align:start position:0%
consistent with what we already have X
less<00:20:00.660><c> than</c><00:20:00.780><c> 10</c><00:20:00.960><c> and</c><00:20:01.080><c> it's</c><00:20:01.200><c> always</c><00:20:01.320><c> going</c><00:20:01.559><c> to</c>

00:20:01.610 --> 00:20:01.620 align:start position:0%
less than 10 and it's always going to
 

00:20:01.620 --> 00:20:03.770 align:start position:0%
less than 10 and it's always going to
say<00:20:01.679><c> that's</c><00:20:01.919><c> not</c><00:20:02.160><c> possible</c><00:20:02.580><c> and</c><00:20:03.360><c> at</c><00:20:03.660><c> this</c>

00:20:03.770 --> 00:20:03.780 align:start position:0%
say that's not possible and at this
 

00:20:03.780 --> 00:20:06.650 align:start position:0%
say that's not possible and at this
point<00:20:04.080><c> here</c><00:20:04.640><c> precisely</c><00:20:05.640><c> at</c><00:20:05.940><c> this</c><00:20:06.120><c> jump</c><00:20:06.360><c> I</c>

00:20:06.650 --> 00:20:06.660 align:start position:0%
point here precisely at this jump I
 

00:20:06.660 --> 00:20:09.710 align:start position:0%
point here precisely at this jump I
that's<00:20:07.559><c> where</c><00:20:08.100><c> we</c><00:20:08.460><c> basically</c><00:20:09.120><c> stop</c><00:20:09.360><c> and</c><00:20:09.539><c> say</c>

00:20:09.710 --> 00:20:09.720 align:start position:0%
that's where we basically stop and say
 

00:20:09.720 --> 00:20:12.590 align:start position:0%
that's where we basically stop and say
this<00:20:09.960><c> Branch</c><00:20:10.260><c> here</c><00:20:10.440><c> is</c><00:20:10.620><c> is</c><00:20:11.000><c> the</c><00:20:12.000><c> true</c><00:20:12.179><c> Branch</c>

00:20:12.590 --> 00:20:12.600 align:start position:0%
this Branch here is is the true Branch
 

00:20:12.600 --> 00:20:16.150 align:start position:0%
this Branch here is is the true Branch
like<00:20:13.320><c> where</c><00:20:13.620><c> you're</c><00:20:13.799><c> jumping</c><00:20:14.160><c> next</c><00:20:14.400><c> is</c><00:20:15.360><c> um</c>

00:20:16.150 --> 00:20:16.160 align:start position:0%
like where you're jumping next is um
 

00:20:16.160 --> 00:20:18.289 align:start position:0%
like where you're jumping next is um
unsatisfiable<00:20:17.160><c> so</c><00:20:17.460><c> you</c><00:20:17.760><c> can</c><00:20:17.820><c> actually</c><00:20:18.000><c> remove</c>

00:20:18.289 --> 00:20:18.299 align:start position:0%
unsatisfiable so you can actually remove
 

00:20:18.299 --> 00:20:20.990 align:start position:0%
unsatisfiable so you can actually remove
that<00:20:18.600><c> entire</c><00:20:18.900><c> Branch</c><00:20:19.260><c> right</c>

00:20:20.990 --> 00:20:21.000 align:start position:0%
that entire Branch right
 

00:20:21.000 --> 00:20:22.970 align:start position:0%
that entire Branch right
but<00:20:21.480><c> yeah</c><00:20:21.600><c> so</c>

00:20:22.970 --> 00:20:22.980 align:start position:0%
but yeah so
 

00:20:22.980 --> 00:20:24.470 align:start position:0%
but yeah so
there's<00:20:23.520><c> a</c><00:20:23.640><c> lot</c><00:20:23.700><c> of</c><00:20:23.820><c> code</c><00:20:24.059><c> behind</c><00:20:24.360><c> that</c>

00:20:24.470 --> 00:20:24.480 align:start position:0%
there's a lot of code behind that
 

00:20:24.480 --> 00:20:25.789 align:start position:0%
there's a lot of code behind that
there's<00:20:24.600><c> a</c><00:20:24.780><c> lot</c><00:20:24.840><c> of</c><00:20:24.960><c> helpers</c><00:20:25.260><c> the</c><00:20:25.679><c> main</c>

00:20:25.789 --> 00:20:25.799 align:start position:0%
there's a lot of helpers the main
 

00:20:25.799 --> 00:20:27.230 align:start position:0%
there's a lot of helpers the main
intuition<00:20:26.160><c> was</c><00:20:26.400><c> basically</c><00:20:26.700><c> this</c><00:20:26.880><c> algorithm</c>

00:20:27.230 --> 00:20:27.240 align:start position:0%
intuition was basically this algorithm
 

00:20:27.240 --> 00:20:28.789 align:start position:0%
intuition was basically this algorithm
of<00:20:27.480><c> just</c><00:20:27.660><c> like</c><00:20:27.780><c> run</c><00:20:27.960><c> an</c><00:20:28.140><c> interpreter</c><00:20:28.500><c> caring</c>

00:20:28.789 --> 00:20:28.799 align:start position:0%
of just like run an interpreter caring
 

00:20:28.799 --> 00:20:29.870 align:start position:0%
of just like run an interpreter caring
about<00:20:28.860><c> if</c><00:20:29.100><c> you're</c><00:20:29.160><c> killed</c><00:20:29.520><c> not</c><00:20:29.580><c> caring</c><00:20:29.820><c> about</c>

00:20:29.870 --> 00:20:29.880 align:start position:0%
about if you're killed not caring about
 

00:20:29.880 --> 00:20:31.130 align:start position:0%
about if you're killed not caring about
other<00:20:30.120><c> up</c><00:20:30.360><c> codes</c>

00:20:31.130 --> 00:20:31.140 align:start position:0%
other up codes
 

00:20:31.140 --> 00:20:37.070 align:start position:0%
other up codes
and<00:20:31.860><c> yeah</c><00:20:32.840><c> I'm</c><00:20:33.840><c> happy</c><00:20:34.200><c> to</c><00:20:34.440><c> take</c><00:20:35.340><c> questions</c>

00:20:37.070 --> 00:20:37.080 align:start position:0%
and yeah I'm happy to take questions
 

00:20:37.080 --> 00:20:39.049 align:start position:0%
and yeah I'm happy to take questions
uh<00:20:37.500><c> super</c><00:20:37.620><c> cool</c><00:20:37.799><c> talk</c><00:20:38.039><c> this</c><00:20:38.340><c> is</c><00:20:38.460><c> wild</c><00:20:38.760><c> you</c><00:20:39.000><c> can</c>

00:20:39.049 --> 00:20:39.059 align:start position:0%
uh super cool talk this is wild you can
 

00:20:39.059 --> 00:20:40.490 align:start position:0%
uh super cool talk this is wild you can
do<00:20:39.179><c> this</c><00:20:39.240><c> in</c><00:20:39.360><c> solidity</c><00:20:39.780><c> I'm</c><00:20:40.200><c> wondering</c><00:20:40.380><c> about</c>

00:20:40.490 --> 00:20:40.500 align:start position:0%
do this in solidity I'm wondering about
 

00:20:40.500 --> 00:20:41.930 align:start position:0%
do this in solidity I'm wondering about
overflow<00:20:41.039><c> though</c><00:20:41.280><c> uh</c><00:20:41.640><c> because</c><00:20:41.760><c> your</c>

00:20:41.930 --> 00:20:41.940 align:start position:0%
overflow though uh because your
 

00:20:41.940 --> 00:20:42.950 align:start position:0%
overflow though uh because your
researching<00:20:42.299><c> at</c><00:20:42.419><c> the</c><00:20:42.480><c> beginning</c><00:20:42.539><c> was</c><00:20:42.780><c> that</c>

00:20:42.950 --> 00:20:42.960 align:start position:0%
researching at the beginning was that
 

00:20:42.960 --> 00:20:44.390 align:start position:0%
researching at the beginning was that
that<00:20:43.140><c> one</c><00:20:43.440><c> example</c><00:20:43.860><c> you</c><00:20:43.980><c> showed</c><00:20:44.220><c> was</c>

00:20:44.390 --> 00:20:44.400 align:start position:0%
that one example you showed was
 

00:20:44.400 --> 00:20:46.490 align:start position:0%
that one example you showed was
impossible<00:20:44.820><c> but</c><00:20:45.059><c> it</c><00:20:45.179><c> is</c><00:20:45.299><c> very</c><00:20:45.480><c> possible</c><00:20:45.840><c> in</c>

00:20:46.490 --> 00:20:46.500 align:start position:0%
impossible but it is very possible in
 

00:20:46.500 --> 00:20:48.110 align:start position:0%
impossible but it is very possible in
the<00:20:46.620><c> presence</c><00:20:46.799><c> of</c><00:20:46.919><c> overflow</c><00:20:47.460><c> no</c><00:20:47.760><c> that</c><00:20:48.000><c> one</c>

00:20:48.110 --> 00:20:48.120 align:start position:0%
the presence of overflow no that one
 

00:20:48.120 --> 00:20:49.730 align:start position:0%
the presence of overflow no that one
wasn't<00:20:48.360><c> because</c><00:20:48.660><c> you</c><00:20:48.900><c> need</c><00:20:49.080><c> the</c><00:20:49.260><c> answer</c><00:20:49.380><c> to</c><00:20:49.620><c> be</c>

00:20:49.730 --> 00:20:49.740 align:start position:0%
wasn't because you need the answer to be
 

00:20:49.740 --> 00:20:51.890 align:start position:0%
wasn't because you need the answer to be
minus<00:20:50.039><c> one-third</c><00:20:50.460><c> so</c><00:20:51.299><c> it's</c><00:20:51.480><c> not</c><00:20:51.600><c> going</c><00:20:51.720><c> to</c><00:20:51.840><c> be</c>

00:20:51.890 --> 00:20:51.900 align:start position:0%
minus one-third so it's not going to be
 

00:20:51.900 --> 00:20:52.970 align:start position:0%
minus one-third so it's not going to be
possible

00:20:52.970 --> 00:20:52.980 align:start position:0%
possible
 

00:20:52.980 --> 00:20:54.350 align:start position:0%
possible
um<00:20:53.100><c> okay</c><00:20:53.400><c> sure</c><00:20:53.580><c> yeah</c><00:20:53.760><c> but</c><00:20:53.940><c> it</c><00:20:54.120><c> doesn't</c><00:20:54.240><c> look</c>

00:20:54.350 --> 00:20:54.360 align:start position:0%
um okay sure yeah but it doesn't look
 

00:20:54.360 --> 00:20:56.029 align:start position:0%
um okay sure yeah but it doesn't look
like<00:20:54.480><c> you</c><00:20:54.660><c> handle</c><00:20:54.900><c> overflow</c><00:20:55.320><c> anymore</c><00:20:55.620><c> yeah</c><00:20:55.860><c> no</c>

00:20:56.029 --> 00:20:56.039 align:start position:0%
like you handle overflow anymore yeah no
 

00:20:56.039 --> 00:20:58.250 align:start position:0%
like you handle overflow anymore yeah no
right<00:20:56.280><c> yeah</c><00:20:56.460><c> exactly</c><00:20:56.820><c> so</c><00:20:57.120><c> that</c><00:20:57.840><c> means</c><00:20:58.080><c> that</c>

00:20:58.250 --> 00:20:58.260 align:start position:0%
right yeah exactly so that means that
 

00:20:58.260 --> 00:21:01.070 align:start position:0%
right yeah exactly so that means that
your<00:20:58.440><c> results</c><00:20:58.620><c> are</c><00:20:59.100><c> not</c><00:21:00.000><c> correct</c><00:21:00.720><c> yeah</c>

00:21:01.070 --> 00:21:01.080 align:start position:0%
your results are not correct yeah
 

00:21:01.080 --> 00:21:02.210 align:start position:0%
your results are not correct yeah
exactly<00:21:01.380><c> there's</c><00:21:01.559><c> a</c><00:21:01.740><c> bunch</c><00:21:01.799><c> of</c><00:21:01.919><c> soundness</c>

00:21:02.210 --> 00:21:02.220 align:start position:0%
exactly there's a bunch of soundness
 

00:21:02.220 --> 00:21:04.130 align:start position:0%
exactly there's a bunch of soundness
stuff<00:21:02.400><c> you</c><00:21:02.580><c> have</c><00:21:02.700><c> to</c><00:21:02.820><c> add</c><00:21:02.880><c> to</c><00:21:03.059><c> this</c><00:21:03.179><c> okay</c><00:21:03.539><c> all</c>

00:21:04.130 --> 00:21:04.140 align:start position:0%
stuff you have to add to this okay all
 

00:21:04.140 --> 00:21:07.250 align:start position:0%
stuff you have to add to this okay all
right<00:21:04.320><c> thank</c><00:21:04.620><c> you</c><00:21:04.880><c> sorry</c><00:21:05.880><c> I</c><00:21:06.179><c> didn't</c><00:21:06.299><c> see</c><00:21:06.780><c> but</c>

00:21:07.250 --> 00:21:07.260 align:start position:0%
right thank you sorry I didn't see but
 

00:21:07.260 --> 00:21:10.730 align:start position:0%
right thank you sorry I didn't see but
is<00:21:07.860><c> this</c><00:21:08.039><c> code</c><00:21:08.280><c> somewhere</c><00:21:08.880><c> available</c><00:21:09.539><c> to</c><00:21:10.020><c> uh</c>

00:21:10.730 --> 00:21:10.740 align:start position:0%
is this code somewhere available to uh
 

00:21:10.740 --> 00:21:14.330 align:start position:0%
is this code somewhere available to uh
yeah<00:21:10.980><c> this</c><00:21:11.340><c> repo</c><00:21:11.820><c> github.com</c>

00:21:14.330 --> 00:21:14.340 align:start position:0%
yeah this repo github.com
 

00:21:14.340 --> 00:21:16.789 align:start position:0%
yeah this repo github.com
um<00:21:14.400><c> that</c><00:21:14.640><c> thing</c><00:21:14.820><c> and</c><00:21:15.419><c> there's</c><00:21:16.260><c> probably</c><00:21:16.440><c> bugs</c>

00:21:16.789 --> 00:21:16.799 align:start position:0%
um that thing and there's probably bugs
 

00:21:16.799 --> 00:21:19.549 align:start position:0%
um that thing and there's probably bugs
in<00:21:16.919><c> there</c><00:21:17.039><c> though</c><00:21:17.220><c> so</c><00:21:17.520><c> feel</c><00:21:18.240><c> free</c><00:21:18.419><c> to</c><00:21:18.600><c> fix</c><00:21:18.960><c> them</c>

00:21:19.549 --> 00:21:19.559 align:start position:0%
in there though so feel free to fix them
 

00:21:19.559 --> 00:21:22.010 align:start position:0%
in there though so feel free to fix them
um<00:21:19.620><c> so</c><00:21:20.039><c> since</c><00:21:20.340><c> you</c><00:21:20.580><c> wrote</c><00:21:20.880><c> this</c><00:21:21.059><c> in</c><00:21:21.240><c> solidity</c><00:21:21.720><c> I</c>

00:21:22.010 --> 00:21:22.020 align:start position:0%
um so since you wrote this in solidity I
 

00:21:22.020 --> 00:21:23.450 align:start position:0%
um so since you wrote this in solidity I
do<00:21:22.200><c> you</c><00:21:22.380><c> have</c><00:21:22.440><c> any</c><00:21:22.559><c> thoughts</c><00:21:22.860><c> on</c><00:21:22.980><c> why</c><00:21:23.280><c> you</c>

00:21:23.450 --> 00:21:23.460 align:start position:0%
do you have any thoughts on why you
 

00:21:23.460 --> 00:21:26.630 align:start position:0%
do you have any thoughts on why you
would<00:21:23.700><c> want</c><00:21:24.000><c> this</c><00:21:24.299><c> to</c><00:21:24.480><c> be</c><00:21:24.720><c> executed</c><00:21:25.440><c> on</c><00:21:25.740><c> chain</c>

00:21:26.630 --> 00:21:26.640 align:start position:0%
would want this to be executed on chain
 

00:21:26.640 --> 00:21:29.210 align:start position:0%
would want this to be executed on chain
not<00:21:27.419><c> at</c><00:21:27.600><c> all</c><00:21:27.720><c> okay</c>

00:21:29.210 --> 00:21:29.220 align:start position:0%
not at all okay
 

00:21:29.220 --> 00:21:31.549 align:start position:0%
not at all okay
should<00:21:29.700><c> not</c><00:21:29.880><c> run</c><00:21:30.059><c> this</c><00:21:30.299><c> Unchained</c><00:21:30.840><c> yeah</c><00:21:31.320><c> well</c>

00:21:31.549 --> 00:21:31.559 align:start position:0%
should not run this Unchained yeah well
 

00:21:31.559 --> 00:21:35.870 align:start position:0%
should not run this Unchained yeah well
actually<00:21:31.799><c> so</c><00:21:32.159><c> if</c><00:21:32.580><c> I</c><00:21:32.760><c> wait</c><00:21:33.120><c> let</c><00:21:33.419><c> me</c><00:21:33.539><c> quickly</c>

00:21:35.870 --> 00:21:35.880 align:start position:0%
actually so if I wait let me quickly
 

00:21:35.880 --> 00:21:41.630 align:start position:0%
actually so if I wait let me quickly
just<00:21:36.480><c> look</c><00:21:36.659><c> how</c><00:21:36.900><c> much</c><00:21:37.020><c> gas</c><00:21:37.200><c> this</c><00:21:37.500><c> takes</c>

00:21:41.630 --> 00:21:41.640 align:start position:0%
 
 

00:21:41.640 --> 00:21:43.909 align:start position:0%
 
for<00:21:42.240><c> this</c><00:21:42.419><c> tiny</c><00:21:42.780><c> program</c>

00:21:43.909 --> 00:21:43.919 align:start position:0%
for this tiny program
 

00:21:43.919 --> 00:21:46.310 align:start position:0%
for this tiny program
you<00:21:44.520><c> said</c><00:21:44.700><c> that</c><00:21:45.360><c> for</c><00:21:45.780><c> a</c><00:21:45.900><c> given</c><00:21:46.140><c> program</c>

00:21:46.310 --> 00:21:46.320 align:start position:0%
you said that for a given program
 

00:21:46.320 --> 00:21:47.930 align:start position:0%
you said that for a given program
there's<00:21:46.620><c> a</c><00:21:46.799><c> lot</c><00:21:46.860><c> of</c><00:21:46.980><c> different</c><00:21:47.159><c> encodings</c><00:21:47.760><c> you</c>

00:21:47.930 --> 00:21:47.940 align:start position:0%
there's a lot of different encodings you
 

00:21:47.940 --> 00:21:50.450 align:start position:0%
there's a lot of different encodings you
could<00:21:48.059><c> have</c><00:21:48.720><c> can</c><00:21:49.200><c> you</c><00:21:49.380><c> give</c><00:21:49.679><c> a</c><00:21:50.220><c> few</c><00:21:50.280><c> other</c>

00:21:50.450 --> 00:21:50.460 align:start position:0%
could have can you give a few other
 

00:21:50.460 --> 00:21:52.490 align:start position:0%
could have can you give a few other
ideas<00:21:50.700><c> of</c><00:21:51.179><c> other</c><00:21:51.539><c> encodings</c><00:21:52.080><c> and</c><00:21:52.260><c> what</c><00:21:52.380><c> would</c>

00:21:52.490 --> 00:21:52.500 align:start position:0%
ideas of other encodings and what would
 

00:21:52.500 --> 00:21:54.649 align:start position:0%
ideas of other encodings and what would
be<00:21:52.620><c> the</c><00:21:52.740><c> trade-offs</c>

00:21:54.649 --> 00:21:54.659 align:start position:0%
be the trade-offs
 

00:21:54.659 --> 00:21:57.049 align:start position:0%
be the trade-offs
yeah<00:21:55.020><c> so</c><00:21:55.200><c> this</c><00:21:55.500><c> encoding</c><00:21:55.980><c> uses</c>

00:21:57.049 --> 00:21:57.059 align:start position:0%
yeah so this encoding uses
 

00:21:57.059 --> 00:21:59.750 align:start position:0%
yeah so this encoding uses
um<00:21:57.539><c> this</c><00:21:57.900><c> encoding</c><00:21:58.440><c> basically</c><00:21:59.100><c> chooses</c><00:21:59.520><c> which</c>

00:21:59.750 --> 00:21:59.760 align:start position:0%
um this encoding basically chooses which
 

00:21:59.760 --> 00:22:00.950 align:start position:0%
um this encoding basically chooses which
has<00:22:00.000><c> a</c><00:22:00.120><c> difference</c><00:22:00.240><c> logic</c><00:22:00.600><c> because</c><00:22:00.720><c> the</c>

00:22:00.950 --> 00:22:00.960 align:start position:0%
has a difference logic because the
 

00:22:00.960 --> 00:22:02.270 align:start position:0%
has a difference logic because the
solver<00:22:01.260><c> is</c><00:22:01.380><c> very</c><00:22:01.559><c> simple</c><00:22:01.679><c> so</c><00:22:01.860><c> we</c><00:22:02.039><c> could</c><00:22:02.100><c> write</c>

00:22:02.270 --> 00:22:02.280 align:start position:0%
solver is very simple so we could write
 

00:22:02.280 --> 00:22:04.490 align:start position:0%
solver is very simple so we could write
in<00:22:02.460><c> solidity</c><00:22:02.820><c> right</c><00:22:03.059><c> so</c><00:22:03.299><c> the</c><00:22:03.539><c> the</c><00:22:03.840><c> encoding</c><00:22:04.320><c> is</c>

00:22:04.490 --> 00:22:04.500 align:start position:0%
in solidity right so the the encoding is
 

00:22:04.500 --> 00:22:06.710 align:start position:0%
in solidity right so the the encoding is
tailored<00:22:04.919><c> to</c><00:22:05.100><c> become</c><00:22:06.000><c> systems</c><00:22:06.600><c> of</c>

00:22:06.710 --> 00:22:06.720 align:start position:0%
tailored to become systems of
 

00:22:06.720 --> 00:22:08.029 align:start position:0%
tailored to become systems of
inequalities<00:22:07.260><c> that</c><00:22:07.440><c> look</c><00:22:07.679><c> like</c><00:22:07.860><c> the</c>

00:22:08.029 --> 00:22:08.039 align:start position:0%
inequalities that look like the
 

00:22:08.039 --> 00:22:09.669 align:start position:0%
inequalities that look like the
constraints<00:22:08.340><c> that</c><00:22:08.520><c> a</c><00:22:08.580><c> DL</c><00:22:08.820><c> solver</c><00:22:09.179><c> would</c><00:22:09.360><c> take</c>

00:22:09.669 --> 00:22:09.679 align:start position:0%
constraints that a DL solver would take
 

00:22:09.679 --> 00:22:13.970 align:start position:0%
constraints that a DL solver would take
but<00:22:11.059><c> where</c><00:22:12.059><c> is</c><00:22:12.240><c> it</c><00:22:12.299><c> now</c>

00:22:13.970 --> 00:22:13.980 align:start position:0%
but where is it now
 

00:22:13.980 --> 00:22:15.649 align:start position:0%
but where is it now
um<00:22:14.039><c> in</c><00:22:14.220><c> Harris</c><00:22:14.460><c> talk</c><00:22:14.820><c> actually</c><00:22:15.059><c> which</c><00:22:15.360><c> I</c><00:22:15.539><c> have</c>

00:22:15.649 --> 00:22:15.659 align:start position:0%
um in Harris talk actually which I have
 

00:22:15.659 --> 00:22:17.450 align:start position:0%
um in Harris talk actually which I have
here

00:22:17.450 --> 00:22:17.460 align:start position:0%
here
 

00:22:17.460 --> 00:22:20.149 align:start position:0%
here
there<00:22:18.059><c> are</c><00:22:18.299><c> different</c>

00:22:20.149 --> 00:22:20.159 align:start position:0%
there are different
 

00:22:20.159 --> 00:22:22.010 align:start position:0%
there are different
so<00:22:20.640><c> if</c><00:22:20.700><c> you</c><00:22:20.820><c> wanna</c><00:22:20.940><c> if</c><00:22:21.240><c> you</c><00:22:21.360><c> actually</c><00:22:21.539><c> want</c><00:22:21.900><c> to</c>

00:22:22.010 --> 00:22:22.020 align:start position:0%
so if you wanna if you actually want to
 

00:22:22.020 --> 00:22:23.930 align:start position:0%
so if you wanna if you actually want to
encode<00:22:22.380><c> add</c><00:22:22.620><c> mold</c><00:22:23.100><c> div</c><00:22:23.280><c> all</c><00:22:23.520><c> these</c><00:22:23.760><c> kind</c><00:22:23.820><c> of</c>

00:22:23.930 --> 00:22:23.940 align:start position:0%
encode add mold div all these kind of
 

00:22:23.940 --> 00:22:26.450 align:start position:0%
encode add mold div all these kind of
things<00:22:24.059><c> you</c><00:22:24.840><c> will</c><00:22:25.020><c> need</c><00:22:25.260><c> more</c><00:22:26.039><c> complicated</c>

00:22:26.450 --> 00:22:26.460 align:start position:0%
things you will need more complicated
 

00:22:26.460 --> 00:22:28.909 align:start position:0%
things you will need more complicated
constraints<00:22:26.880><c> like</c><00:22:27.059><c> linear</c><00:22:27.419><c> combinations</c>

00:22:28.909 --> 00:22:28.919 align:start position:0%
constraints like linear combinations
 

00:22:28.919 --> 00:22:30.830 align:start position:0%
constraints like linear combinations
where<00:22:29.220><c> is</c><00:22:29.340><c> it</c><00:22:29.460><c> Harry</c>

00:22:30.830 --> 00:22:30.840 align:start position:0%
where is it Harry
 

00:22:30.840 --> 00:22:32.870 align:start position:0%
where is it Harry
yeah<00:22:31.100><c> you'll</c><00:22:32.100><c> need</c><00:22:32.220><c> linear</c><00:22:32.520><c> combinations</c>

00:22:32.870 --> 00:22:32.880 align:start position:0%
yeah you'll need linear combinations
 

00:22:32.880 --> 00:22:34.430 align:start position:0%
yeah you'll need linear combinations
like<00:22:33.360><c> this</c><00:22:33.480><c> for</c><00:22:33.659><c> example</c><00:22:33.900><c> and</c><00:22:34.080><c> more</c>

00:22:34.430 --> 00:22:34.440 align:start position:0%
like this for example and more
 

00:22:34.440 --> 00:22:36.110 align:start position:0%
like this for example and more
complicated<00:22:34.799><c> constraints</c><00:22:35.280><c> and</c><00:22:35.700><c> you'll</c><00:22:35.940><c> need</c>

00:22:36.110 --> 00:22:36.120 align:start position:0%
complicated constraints and you'll need
 

00:22:36.120 --> 00:22:38.390 align:start position:0%
complicated constraints and you'll need
like<00:22:36.299><c> a</c><00:22:36.419><c> Simplex</c><00:22:36.780><c> or</c><00:22:37.320><c> integer</c><00:22:38.100><c> linear</c>

00:22:38.390 --> 00:22:38.400 align:start position:0%
like a Simplex or integer linear
 

00:22:38.400 --> 00:22:40.370 align:start position:0%
like a Simplex or integer linear
programming<00:22:38.820><c> thing</c><00:22:39.120><c> or</c>

00:22:40.370 --> 00:22:40.380 align:start position:0%
programming thing or
 

00:22:40.380 --> 00:22:42.890 align:start position:0%
programming thing or
even<00:22:40.799><c> in</c><00:22:41.039><c> non-linear</c><00:22:41.700><c> is</c><00:22:41.820><c> over</c><00:22:42.000><c> depending</c><00:22:42.539><c> and</c>

00:22:42.890 --> 00:22:42.900 align:start position:0%
even in non-linear is over depending and
 

00:22:42.900 --> 00:22:44.510 align:start position:0%
even in non-linear is over depending and
these<00:22:43.559><c> things</c><00:22:43.620><c> are</c><00:22:43.799><c> a</c><00:22:43.919><c> lot</c><00:22:43.980><c> more</c><00:22:44.159><c> complicated</c>

00:22:44.510 --> 00:22:44.520 align:start position:0%
these things are a lot more complicated
 

00:22:44.520 --> 00:22:47.029 align:start position:0%
these things are a lot more complicated
so<00:22:44.760><c> Simplex</c><00:22:45.240><c> is</c><00:22:45.840><c> well</c><00:22:46.200><c> it's</c>

00:22:47.029 --> 00:22:47.039 align:start position:0%
so Simplex is well it's
 

00:22:47.039 --> 00:22:50.330 align:start position:0%
so Simplex is well it's
it's<00:22:47.520><c> an</c><00:22:47.700><c> exponential</c><00:22:48.240><c> algorithm</c><00:22:48.840><c> that</c><00:22:49.799><c> kind</c>

00:22:50.330 --> 00:22:50.340 align:start position:0%
it's an exponential algorithm that kind
 

00:22:50.340 --> 00:22:51.770 align:start position:0%
it's an exponential algorithm that kind
of<00:22:50.460><c> happens</c><00:22:50.580><c> to</c><00:22:50.820><c> run</c><00:22:51.000><c> mostly</c><00:22:51.299><c> in</c><00:22:51.419><c> polynomial</c>

00:22:51.770 --> 00:22:51.780 align:start position:0%
of happens to run mostly in polynomial
 

00:22:51.780 --> 00:22:54.230 align:start position:0%
of happens to run mostly in polynomial
time<00:22:51.960><c> these</c><00:22:52.200><c> days</c><00:22:52.640><c> but</c><00:22:53.640><c> in</c><00:22:53.760><c> all</c><00:22:53.940><c> linear</c>

00:22:54.230 --> 00:22:54.240 align:start position:0%
time these days but in all linear
 

00:22:54.240 --> 00:22:55.850 align:start position:0%
time these days but in all linear
non-linear<00:22:54.900><c> Earth</c><00:22:55.080><c> if</c><00:22:55.380><c> you're</c><00:22:55.679><c> trying</c><00:22:55.799><c> to</c>

00:22:55.850 --> 00:22:55.860 align:start position:0%
non-linear Earth if you're trying to
 

00:22:55.860 --> 00:22:56.930 align:start position:0%
non-linear Earth if you're trying to
solve<00:22:55.919><c> nonlinear</c><00:22:56.340><c> constraints</c><00:22:56.640><c> that's</c><00:22:56.820><c> an</c>

00:22:56.930 --> 00:22:56.940 align:start position:0%
solve nonlinear constraints that's an
 

00:22:56.940 --> 00:22:58.549 align:start position:0%
solve nonlinear constraints that's an
undetable<00:22:57.360><c> problem</c><00:22:57.600><c> and</c><00:22:58.200><c> you're</c><00:22:58.320><c> going</c><00:22:58.440><c> to</c>

00:22:58.549 --> 00:22:58.559 align:start position:0%
undetable problem and you're going to
 

00:22:58.559 --> 00:23:01.700 align:start position:0%
undetable problem and you're going to
have<00:22:58.620><c> a</c><00:22:58.679><c> hard</c><00:22:58.799><c> time</c><00:22:58.919><c> solving</c><00:22:59.280><c> it</c><00:22:59.340><c> so</c>

