@cella-lang/ 程序日志
语言流派程序逻辑 单元格a 校验器,作为汇编 模块包。 语言给出一个步骤, 并分离资源代数; 软件包给出最弱者 先决条件、其健全性和结构规则.
除此以外没有依存关系 cella-lang标准模块.
插入语言
programlogic.Step C V S W:一个步骤的结果:advance c s(新的配置和状态),finish v s联合国 最后价值)或fault w(有其原因的过错;对C来说,有其节点和条款的未定义行为).programlogic.Language C V S W数字 :{ step : C -> S -> Step C V S W }。 。 。 .programlogic.SeparationAlgebra S R资源R与join a b c(单位:千美元)a财务报告和审定财务报表b彼此脱节,共同缔造c页:1unit与joinUnit,联合的双重方向(associateRight:从(ab)c到(b)c;associateLeft),以及interpret s r(国家)s持有资源r) (中文(简体) ).
小型步道机 @cella-lang/machine (C家族和Python的运行) 像这样插上,有一个
语句及其框架作为配置 :
import machine.statement
import programlogic
open machine
def Cfg (S : Type) (R : Type) : Type := Statement S R String * List (Frame S R String)
def exitStep {S : Type} {R : Type} (e : Exit S R String) : programlogic.Step (Cfg S R) (Exit S R String) S String := match e with
| stopped w => programlogic.fault w
| normal s => programlogic.finish (normal s) s
| breakOut s => programlogic.finish (breakOut s) s
| continueLoop s => programlogic.finish (continueLoop s) s
| returned v s => programlogic.finish (returned v s) s
def confStep {S : Type} {R : Type} (x : Configuration S R String) : programlogic.Step (Cfg S R) (Exit S R String) S String := match x with
| running c k s => programlogic.advance (c, k) s
| halted e => exitStep e
def lang (S : Type) (R : Type) : programlogic.Language (Cfg S R) (Exit S R String) S String :=
{ step := fun c s => confStep (Configuration.stepRun (fst c) (snd c) s) }
整个国家都拥有资源 这证明 while (x != 0) x = x - 1; (单位:千美元)whileLoop 带有
update 停下来 x = 0每个人的安全 x运行 do { x = x - 1; } while (x != 0); 从 x = 0 对它的错.
你得到的东西
programlogic.Wp L A c Q r: 从资源r运行c永远没有到一个错误,如果它完成v, (中文(简体) ),Q v r'持有剩余资源。 没错WpWithin n每笔n,明确编号(Appel 和 McAllester 2001; Ahmed 2006):不需要加防的固定点,通过对数字的入门来证明循环规则 步骤。 框架是定义的一部分(如Chircuéraud's Separation Logic Foundations).- 经过一步,资源是
Owned A frame s X: 记录resource,则whole资源 与相框,他们的证据joined,该州held以及资源satisfies. programlogic.safeOfWp数字 :Wp L A c Q r -> A.interpret s r -> L.Safe c s时L.Safe c s用于:n, (中文(简体) ),L.run n c s没有失败(部分正确性:不需要终止).programlogic.wpConsequence(顺序),programlogic.wpFrame(框架:不相连的资源随附) 不变,WithFrame, (中文(简体) ),programlogic.wpWithinOfSucc(再走一步意味着减少一步).- 判决:证据确凿
Wp被接受; 输入和若干步骤run达到failed w拒绝( 由 计算、携带w页:1.