信息流动跟踪的原则性方法
1. 标记语义
标记变量环境 $\hat{\delta} : x \to \hat{v}$ 是从标识符到标记值的映射,$\hat{\Delta} : f \to (x, e)$ 是从标识符到表示受监控程序的函数定义的映射,$\Lambda : f \to (\phi, \gamma)$ 表示库模型。标记语义的形式为 $\hat{\delta} \vDash e \to \hat{v}$,表示表达式 $e$ 在标记变量环境 $\hat{\delta}$ 中计算得到 $\hat{v}$。
核心语言规则中, lib 是非标准的。当从受监控语义调用未受监控的库函数时,执行过程如下:
1. 找到函数定义 $(x, e_f)$ 和函数模型 $(\phi, \gamma)$。
2. 将参数 $e$ 计算为标记值 $\hat{v}$。
3. 根据函数模型对标记值进行去标记,得到未标记值 $v$ 和模型状态 $\xi$。
4. 在环境 $[x \mapsto v]$ 中计算库函数的主体,其中函数的形式参数映射到相应的参数。
5. 根据在去标记过程中产生的模型状态 $\xi$ 对结果 $v$ 进行标记。
2. 正确性
2.1 库模型的正确性
库模型正确建模库的条件是,库中的每个函数 $f$($\Delta[f] = (x, e)$)都遵循相关的函数模型 $\Lambda[f] = (\phi, \gamma)$(如果存在)。其定义如下:
$\forall f . \Lambda[f] = (\phi, \gamma) \land \Del
超级会员免费看
订阅专栏 解锁全文
8683

被折叠的 条评论
为什么被折叠?



