Browse Source

Merge branch 'master' of marty.website:thibaut/m2-pas-dm

Thibaut Marty 7 năm trước cách đây
mục cha
commit
76860d3f2a
1 tập tin đã thay đổi với 12 bổ sung10 xóa
  1. 12 10
      dm.tex

+ 12 - 10
dm.tex

@@ -52,20 +52,22 @@
 
 
 \section{Introduction}
 \section{Introduction}
 
 
-(...) % TODO
-
 Some programs of a language can be incorrect, that is programs which their execution will make no sense.
 Some programs of a language can be incorrect, that is programs which their execution will make no sense.
-% example?
-There exists some \emph{static} analysis of a program to detect if it is correct or not.
-Theses analysis can not be perfect.
-% theorem?
+
+Ensuring that a program do exactly what we want it to do is a hard task.
+Since Rice and his famous theorem, we know that automatically checking that a program respects its specification is impossible (in general).
+It exists some techniques, not to ensure the validity of a program, but at least ensure that a program does not contains a certain type of non-sense.
+Using a type system, and type checking, is one way to ensure that no operation in the program is performed when it has no sense.
+Data-flow analysis for reachability is one other way to ensure that all used objects are defined.
+
+However theses analysis are doomed to be imperfect.
 That means they will either reject or accept programs even if they are respectively correct or not.
 That means they will either reject or accept programs even if they are respectively correct or not.
-Here, we do not want analysis to accept incorrect programs.
-Hence, analysis must be correct, but will not be complete.
+Such an analysis will always made some assumption that will not be true for every execution.
 
 
 In this work, we first define a semantic for a small imperative language, \emph{While}.
 In this work, we first define a semantic for a small imperative language, \emph{While}.
-This semantic must handle errors, i.\,e. incorrect programs.
-Then, we define a type system and a static analysis for the language.
+Then, we define a type system and a static analysis for this language.
+
+We will see that both of them have different flows. Each complement the other, and none of them are perfect.
 
 
 \section{Small-step Semantic}
 \section{Small-step Semantic}