Page 116 - 《软件学报》2025年第9期
P. 116

王小兵 等: Solidity  到  MSVL  转换的等价性研究                                              4027



                          ↣ ((b∧ms 1 )∨(¬b∧ms 2 ),σ i−1 , s i ,i)                                      IF
                          ↣ (ms 2 ,σ i−1 , s i ,i)                                         B4, T1, F1, F2, (5)
                           ∗
                                                ′
                          → (true,σ,∅,|σ|+1)∧(α ⊢ µ ∼ s |σ| )                                          (4)
                    (7)   ⇔ P(if (e) stmt 1 else stmt 2 ,µ,µ ,out)                                TER, (6)

                                              ′
                    3) 规则  (S-2)、(S-3) 与  (S-4) 处理  return  返回语句, 对于带有返回值的“return e”语句, SOL2M  转换器转换时引
                                            rflag 标志语句是否具有返回值.
                 入变量  RVal 存储返回值, 以及变量
                    4) 规则  (S-7) 与  (S-8) 是处理顺序语句“  stmt 1 ; stmt 2  ”,   TranStmt(stmt 1 ; stmt 2 ) = “ms 1 ;ms 2 ”. 其中  ms 1 = TranStmt
                 (stmt 1 ) ms 2 = TranStmt(stmt 2 ). 对于规则  (S-7), 其中  stmt 1  正常执行结束, 不存在  return  语句或是执行失败, 其证明
                      ,
                 如下:
                    (1)  α ⊢ µ ∼ s i                                                             已知条件
                    (2)   p,g,l, f ⊢ stmt 1 ,µ ⇒ Normal,µ 1 ∧ P(stmt 1 ,µ,µ 1 ,Normal)∧
                            p,g,l, f ⊢ stmt 2 ,µ 1 ⇒ out,µ 2 ∧ P(stmt 2 ,µ 1 ,µ 2 ,out)          归纳假设
                                                  )
                                     ∗ (

                    (3)   ⇒ (ms 1 ,σ i−1 , s i ,i) → true,σ j ,∅, j+1 ∧α ⊢ µ 1 ∼ s j ∧
                          (         ) ∗
                           ms 2 ,σ j−1 , s j , j → (true,σ,∅,|σ|+1)∧α ⊢ µ 2 ∼ s |σ|             TER, (1, 2)
                    (4)  ⇒ (ms 1 ;ms 2 ,σ i−1 , s i ,i)

                           ∗
                          → (empty;ms 2 ,σ j−1 , s j , j)                                             (3)
                            (          )
                          ↣ ms 2 ,σ j−1 , s j , j                                                  CHOP

                           ∗
                          → (true,σ,∅,|σ|+1)∧α ⊢ µ 2 ∼ s |σ|                                          (3)

                    (5)  ⇔ P(stmt 1 ; stmt 2 ,µ,µ 2 ,out)                                         TER, (4)
                    对于规则    (S-8),  stmt 1  为  return  语句或是执行失败时, 其证明同理可得.
                                  le = e ”, 规则                   le = e ”的操作语义, 赋值语句的操作语义与其一致.
                    5) 对于赋值语句“               (E-7) 给出了赋值表达式“
                                                        ,
                 TranStmt(le = e) = la := ra”, 其中  la = TranExp(le) ra = TranExp(e).
                                “
                    (1)  α ⊢ le∼ e la                                                               定理1
                    (2)  α ⊢ e∼ e ra                                                                定理1
                    (3)  α ⊢ µ ∼ s i                                                             已知条件
                               l                l
                    (4)   p,g,l ⊢ le ⇒ addr ∧(la,σ i−1 , s i ,i) ⇒ (bl, j m )                        假设

                    (5)  ⇒ α ⊢ load(S,addr, sizeof (τ s )) ∼ ptr(bl, j m )                 定义2, 4, (1, 3, 4)
                    (6)   p,g,l ⊢ e ⇒ v s ∧(ra,σ i−1 , s i ,i) ⇓ v m                                 假设
                    (7)  ⇒ α ⊢ v s ∼ v m                                                   定义3, 4, (2, 3, 6)

                    在  MSVL  程序中有:
                        l
                    (8)  s (x m ) = (bl, j m )                                                       假设
                        i
                    (9)  (la := ra,σ i−1 , s i ,i)
                                            )
                               (
                          ↣ (〇 x m ⇐ v m ∧empty ,σ i−1 , s i ,i)                                 UASS, (8)
                             (            )
                          → ( x m ⇐ v m ∧empty ,σ i , s i+1 ,i+1)                                    TR1
                                    (  l  r     )
                          ↣ (empty,σ i , s , s  [v m /x m ] ,i+1)                                   MIN1
                                      i+1  i+1
                    (10)  ⇒ s    l  (x m ) = (bl, j m )∧ s r  (x m ) = v m                            (9)
                           i+1           i+1
                    在  Solidity  程序中有:
                                   l
                    (11)  (α ⊢ µ ∼ s i )∧ s (x m ) = (bl, j m )∧α ⊢ load(S,addr, sizeo f (τ s )) ∼ ptr(bl, j m )   (3, 5, 8)
                                   i
                                    l

                    (12)  ⇒ p,g,l ⊢ x s ,µ ⇒ addr                                                   定义1
                    (13)  store(S,addr,τ,v s ) = S                                                   假设
                                         ′
                                     l
                    (14)  ⇒ p,g,l ⊢ x s ,µ ⇒ addr ∧load(S ,addr, sizeof (τ s )) = v s          E-9, (12, 13)
                                                 ′
                                   ′
   111   112   113   114   115   116   117   118   119   120   121