Retour     Suite


Preuve du théorème

La preuve se fait par induction sur l'expression e :

  1. pour les constantes
  2. pour les variables                                                                                                         0
  3. pour les sommes, en supposant vrai pour les membres de l'addition

1. isconst (e)

outcome (compile(e , t) , R)  =  outcome(mkli (val (e)) , R)        1

                                             =  step (mkli (val(e)) , R)                2

                                             =  a (ac , arg (mkli(val (e))) , R)    3

                                             =  a (ac , val(e) , R)                          4

                                             =  a (ac , value (e , E) , R)              5

                                             =t a(ac , value (e , E) , R)                6


2. isvar (e)

outcome (compile (e , t) , R)  =  outcome (mkload (loc (e ,map)) , R)                    1

                                             =  step (mkload (loc (e , map)) , R)                            2

                                             =  a (ac , c (adr(mkload (loc (e , map))) , R), R)   3

                                             =  a (ac , c (loc (e , map) , R) , R)                              4

                                             =  a (ac , c (e ,E) , R)                                                  hyp. 3

                                             =  a (ac , value(e , E) , R)                                              5

                                             =t a(ac , value (e , E) , R)                                              6


3. issum (e)

outcome (compile (e , t) , R)  =  outcome (compile (s1 (e) , t) * mksto (t) * compile (s2(e) , t+1) * mkadd (t) , R)       1

        8                                    = outcome(mkadd (t) ,                          7   trois fois

                                                                outcome (compile(s2 (e) , t + 1) ,

                                                                              outcome (mksto(t) ,

                                                                                             outcome (compile(s1 (e) , t) , R))))

  introduisons des notations :

  nous voulons prouver :

R4 =t a (ac , v , R)

11         =t a (ac , v1 , R)          ¬  hypothèse d'induction    

c (ac , R1) = c (ac , a (ac , v1 , R))

10      v1  = c (ac , R1)                                              9

              =  a (t , c (ac ,  R1) , R1)                          3

                      = a (t , v1 , R1)                                        10

                      =t +1 a (t , v1 , a (ac , v1 , R))                  11 + 6

                      =t +1,ac a (t , v1 , R)                                6

c (t , R2) = c (t , a (t , v1 , R))

v1  = c (t , R2) 

                     =t +1 a (ac , v2 , R2)          <-  hypothèse d'induction    

          14        =t +1 a (ac , v2 , a (t , v1 , R))                    12

        on peut ici utiliser l'hypothèse d'induction car :

            c (loc (v , map) , R2) = c (loc (v , map) , a (t , v1 , R)) si loc (v , map) < t

                                            =  c (loc (v , map) , Rsi loc (v , map) < t

                                            = c (v , E)   pour tout v

                = step (mkadd (t) , R3)                                   2

              = a (ac , c (t , R3) + c (ac , R3) , R3)        3

                                     v1                      v2 

              = a (ac , v , R3)                                       13

              =t +1 a (ac , v , a (ac , v2 , a (t , v1 , R)))  14

              =t +1 a (ac , v , a (t , v1 , R))                    12

              =t a (ac , v , R)                                        12

CQFD


Retour     Suite

Retour

Homepage

Pour m'écrire

Dernières modifications : Fri Feb 11 18:53:48 MET 2000