穷极一生是什么意思| 甲减和甲亢有什么区别| 碱性磷酸酶偏高吃什么能降下来呢| 如火如荼是什么意思| 高温天气喝什么水最好| 喜欢吃肉的动物是什么生肖| 梦到女儿丢了什么预兆| 白咖啡是什么| 糖类抗原153偏高是什么原因| 欧诗漫适合什么年龄| 睾丸积液是什么原因造成的| 泪沟是什么| 计数单位是什么意思| 名侦探柯南什么时候完结| 师团长是什么级别| 过敏性皮肤用什么护肤品比较好| 心性是什么意思| 吸烟有害健康为什么国家还生产烟| 推杯换盏什么意思| 疯狂动物城里的狐狸叫什么| 岌岌可危是什么意思| 热痱子是什么样子图片| 和解少阳是什么意思| 射手座喜欢什么样的女生| 梦见亲人去世是什么意思| 追求是什么意思| 什么习习| 三合生肖是什么意思| 3月24日是什么星座| 支气管炎吃什么消炎药| 青霉素是什么药| 后脖子黑是什么原因| lsp什么意思| 零点是什么| 右脚麻是什么病的前兆| 吃什么东西最营养| 热疖痈毒是什么意思| 雨字五行属什么| 家是什么结构的字| 多子多福是什么意思| 无偿献血证有什么用| 橱柜用什么材料好| 蛐蛐进屋有什么预兆| 2013年五行属什么| 什么的藤| 什么含维生素d| 麦芽糖是什么做的| 急性胆囊炎吃什么药| 三冬是什么意思| 血脂厚有什么症状| pa是什么| 为什么医院开的钙都是碳酸钙| 判官是什么意思| 水猴子长什么样| 三省吾身是什么意思| 什么带不能系| 今日立冬吃什么| 子宫内膜不均匀是什么意思| 附身是什么意思| 胃炎伴糜烂吃什么药效果好| 喉咙疼是什么原因| 上夜班吃什么对身体好| 怀孕一个月有什么反应| 涤棉是什么面料| 秘辛是什么意思| 喝酒为什么会吐| 回不到我们的从前是什么歌| 淋巴细胞百分比高是什么原因| 达克宁栓治疗什么妇科病| 怀孕前三个月为什么不能告诉别人| 为什么会长癣| 小孩出冷汗是什么原因| 教师节什么时候| 很low是什么意思| 癫痫病吃什么药最好| 货号是什么| 明天什么节| 为什么会做梦| 耳目比喻什么| 家里为什么会有隐翅虫| 焦的部首是什么| 南瓜不能和什么食物一起吃| 儿童肠炎吃什么药| 小孩咳嗽流鼻涕吃什么药效果好| 痒痒粉在药店叫什么| 可定什么时间服用最好| 尿发黄什么原因| 香醋是什么醋| hugo是什么意思| 拾掇是什么意思| 消化不良吃什么水果好| 梅毒挂什么科| 3月4日是什么星座| 什么药可以降肌酐| 来大姨妈为什么会拉肚子| 伤官什么意思| 什么菜降血压效果最好| 一个歹一个殇读什么| 白灼虾是什么虾| ca125是什么| 平均红细胞体积偏低是什么意思| 膈肌痉挛是什么症状| 什么情况下需要做喉镜检查| 多吃木瓜有什么好处| 产值是什么| 蟑螂幼虫长什么样| kaiser是什么品牌| 宫颈hsil是什么意思| 房产证改名字需要什么手续| 动物为什么要冬眠| 心率快是什么原因引起的| 长颈鹿的脖子为什么那么长| 什么狗最贵| 用什么自慰| 抓阄什么意思| 鱼的偏旁部首是什么| 白带异常吃什么药| 血液为什么是红色| bml是什么意思| 多吃玉米有什么好处和坏处| 平五行属什么| 长期便秘吃什么药效果最好| 拉肚子为什么肛门痛| 吃什么会拉肚子| 缺少雌激素吃什么可以补充| 弯弯的月儿像什么| 姹什么嫣什么| 微信号为什么会封号| 宫颈糜烂用什么药最好| 月经提前半个月来是什么原因| 交替是什么意思| 唐筛临界风险是什么意思| 奥运会五环颜色分别代表什么| CRL是胎儿的什么意思| 来大姨妈可以吃什么水果| 围绝经期吃什么药调理| 圣经是什么| 复杂性囊肿是什么意思| 迥异是什么意思| 肾积水挂什么科室| 怀孕一个月吃什么对宝宝发育好| 什么样的西瓜甜| 牙疼买什么药| 995是什么意思| 85年属于什么生肖| 榴莲什么样的好| 减肥能吃什么零食| o发什么音| 淋巴细胞绝对值偏低说明什么| 狗吃什么药会立马就死| 高血压挂什么科室| 血糖高早餐吃什么| 结核病是什么| 老枞水仙属于什么茶| 一听是什么意思| 怀孕做糖耐是检查什么| 化学键是什么| 大姨妈一直不干净是什么原因| 陌上是什么意思| 绿色和红色混合是什么颜色| 塔罗牌正位和逆位是什么意思| 96是什么意思| 四川的耗儿鱼是什么鱼| mra检查是什么意思| 枸杞不能和什么一起吃| 子宫小是什么原因引起的| 一只眼睛充血是什么原因| 腿硬邦邦的是什么原因| 06属什么生肖| 女性白带有血丝是什么原因| 什么拉车连蹦带跳| 舌苔厚白中间有裂纹吃什么药| 70年产权是从什么时候开始算| 考军校要什么条件| 为感是什么意思| 杀跌是什么意思| 白头发是缺什么维生素| 舌头尖麻木是什么原因| 目加一笔是什么字| 包皮开裂用什么药| 红红的枫叶像什么| 什么是桑黄| 流泪痣是什么意思| 胖次是什么意思| 公立医院和私立医院有什么区别| 脚发热是什么病| 彩虹像什么挂在天空| 皮肤溃烂是什么原因| 一直打嗝吃什么药| 梅毒通过什么途径传染| 排场是什么意思| 吃葡萄对身体有什么好处| 血清高是什么原因| 咖啡加奶有什么坏处和好处| 海为什么是蓝色的| 心跳过缓是什么原因造成的| 芒果过敏用什么药| 洋桔梗的花语是什么| 降压灵又叫什么| 包皮过长有什么影响| 羊经后半边读什么| 淋巴细胞百分比低是什么意思| 舌战群儒是什么意思| 尿很臭是什么原因| 拾到什么意思| 姐姐的女儿叫什么称呼| 九月份是什么季节| 年终奖一般什么时候发| 金族念什么| 做肝功能检查挂什么科| 什么菜好吃| hr医学上是什么意思| 乳腺彩超挂什么科| 支气管炎改变什么意思| 头晕应该挂什么科| 什么西瓜最好吃| 不时之需是什么意思| 来大姨妈可以吃什么水果| 微醺是什么状态| 儿童鸡胸挂什么科| a型血可以接受什么血型| gm什么意思| 杜甫的号是什么| 今年26岁属什么生肖| twice什么意思| 膝盖痛吃什么药| 听什么音乐容易入睡| bella什么意思| 胰管扩张是什么意思| 百分点是什么意思| 肠胀气是什么原因引起的| 头痛是什么病的前兆| 1978年属什么生肖| 阴阳两虚吃什么中成药| 多多关照是什么意思| 头上两个旋代表什么| 我方了是什么意思| 做梦梦见打架是什么意思| 纤维素是什么| fgr医学上是什么意思| 宾至如归是什么意思| 派出所长是什么级别| 老鼠是什么意思| 瑞舒伐他汀钙片什么时候吃| 猛虎下山是什么生肖| 乙肝两对半245阳性是什么意思| 为什么会静脉曲张| 鳞状上皮炎症反应性改变是什么意思| 脱氧核苷酸是什么| 喝什么酒容易醉| 镶牙和种牙有什么区别| 养老金什么时候可以领取| 马代表什么数字| 闰月给父母买什么| 耳朵长疙瘩是什么原因| 大便发黑是什么原因| ics是什么药| 黄发指什么| 牙痛吃什么消炎药| 吃什么水果对肺好| 胎方位loa是什么意思| 姐姐的儿子叫什么| 陛下的陛是什么意思| 摧残是什么意思| 百度Jump to content

苹果售后用iPad 4换iPad Air 2 用户实惠很大

From Wikipedia, the free encyclopedia
百度 然而,根据马尔德和阿奎诺的研究结果,可能的解释机制(如图所示)是,对于道德认同高的个体,不道德行为容易与其道德自我概念产生冲突,威胁到个体的道德自我概念,从而产生道德补偿行为以修复原有的道德自我概念;对于道德认同低的个体,不道德行为不容易与其道德自我概念产生冲突,不会威胁到个体的道德自我概念,从而使得个体往后会继续做出不道德行为。

In computer science, separation logic[1] is an extension of Hoare logic, a way of reasoning about programs. It was developed by John C. Reynolds, Peter O'Hearn, Samin Ishtiaq and Hongseok Yang,[1][2][3][4] drawing upon early work by Rod Burstall.[5] The assertion language of separation logic is a special case of the logic of bunched implications (BI).[6] A CACM review article by O'Hearn charts developments in the subject to early 2019.[7]

Overview

[edit]

Separation logic facilitates reasoning about:

  • programs that manipulate pointer data structures—including information hiding in the presence of pointers;
  • "transfer of ownership" (avoidance of semantic frame axioms); and
  • virtual separation (modular reasoning) between concurrent modules.

Separation logic supports the developing field of research described by Peter O'Hearn and others as local reasoning, whereby specifications and proofs of a program component mention only the portion of memory used by the component, and not the entire global state of the system. Applications include automated program verification (where an algorithm checks the validity of another algorithm) and automated parallelization of software.

Assertions: operators and semantics

[edit]

Separation logic assertions describe "states" consisting of a store and a heap, roughly corresponding to the state of local (or stack-allocated) variables and dynamically-allocated objects in common programming languages such as C and Java. A store is a function mapping variables to values. A heap is a partial function mapping memory addresses to values. Two heaps and are disjoint (denoted ) if their domains do not overlap (i.e., for every memory address , at least one of and is undefined).

The logic allows to prove judgements of the form , where is a store, is a heap, and is an assertion over the given store and heap. Separation logic assertions (denoted as , , ) contain the standard boolean connectives and, in addition, , , , and , where and are expressions.

  • The constant asserts that the heap is empty, i.e., when is undefined for all addresses.
  • The binary operator takes an address and a value and asserts that the heap is defined at exactly one location, mapping the given address to the given value. I.e., when (where denotes the value of expression evaluated in store ) and is otherwise undefined.
  • The binary operator (pronounced star or separating conjunction) asserts that the heap can be split into two disjoint parts where its two arguments hold, respectively. I.e., when there exist such that and and and .
  • The binary operator (pronounced magic wand or separating implication) asserts that extending the heap with a disjoint part that satisfies its first argument results in a heap that satisfies its second argument. I.e,. when for every heap such that , also holds.

The operators and share some properties with the classical conjunction and implication operators. They can be combined using an inference rule similar to modus ponens

and they form an adjunction, i.e., if and only if for ; more precisely, the adjoint operators are and .

Reasoning about programs: triples and proof rules

[edit]

In separation logic, Hoare triples have a slightly different meaning than in Hoare logic. The triple asserts that if the program executes from an initial state satisfying the precondition then the program will not go wrong (e.g., have undefined behaviour), and if it terminates, then the final state will satisfy the postcondition . In essence, during its execution, may access only memory locations whose existence is asserted in the precondition or that have been allocated by itself.

In addition to the standard rules from Hoare logic, separation logic supports the following very important rule:

This is known as the frame rule (named after the frame problem) and enables local reasoning. It says that a program that executes safely in a small state (satisfying ), can also execute in any bigger state (satisfying ) and that its execution will not affect the additional part of the state (and so will remain true in the postcondition). The side condition enforces this by specifying that none of the variables modified by occur free in , i.e. none of them are in the 'free variable' set of .

Sharing

[edit]

Separation logic leads to simple proofs of pointer manipulation for data structures that exhibit regular sharing patterns which can be described simply using separating conjunctions; examples include singly and doubly linked lists and varieties of trees. Graphs and DAGs and other data structures with more general sharing are more difficult for both formal and informal proof. Separation logic has, nonetheless, been applied successfully to reasoning about programs with general sharing.

In their POPL'01 paper,[3] O'Hearn and Ishtiaq explained how the magic wand connective could be used to reason in the presence of sharing, at least in principle. For example, in the triple

we obtain the weakest precondition for a statement that mutates the heap at location , and this works for any postcondition, not only one that is laid out neatly using the separating conjunction. This idea was taken much further by Yang, who used to provide localized reasoning about mutations in the classic Schorr-Waite graph marking algorithm.[8] Finally, one of the most recent works in this direction is that of Hobor and Villard,[9] who employ not only but also a connective which has variously been called overlapping conjunction or sepish,[10] and which can be used to describe overlapping data structures: holds of a heap when and hold for subheaps and whose union is , but which possibly have a nonempty portion in common. Abstractly, can be seen to be a version of the fusion connective of relevance logic.

Concurrent separation logic

[edit]

A Concurrent Separation Logic (CSL), a version of separation logic for concurrent programs, was originally proposed by Peter O'Hearn,[11] using a proof rule

which allows independent reasoning about threads that access separate storage. O'Hearn's proof rules adapted an early approach of Tony Hoare to reasoning about concurrency,[12] replacing the use of scoping constraints to ensure separation by reasoning in separation logic. In addition to extending Hoare's approach to apply in the presence of heap-allocated pointers, O'Hearn showed how reasoning in concurrent separation logic could track dynamic ownership transfer of heap portions between processes; examples in the paper include a pointer-transferring buffer, and a memory manager.

Commenting on the early classical work on interference freedom by Susan Owicki and David Gries, O'Hearn says that explicit checking for non-interference isn't necessary because his system rules out interference in an implicit way, by the nature of the way proofs are constructed.

A model for concurrent separation logic was first provided by Stephen Brookes in a companion paper to O'Hearn's.[13] The soundness of the logic had been a difficult problem, and in fact a counterexample of John Reynolds had shown the unsoundness of an earlier, unpublished version of the logic; the issue raised by Reynolds's example is described briefly in O'Hearn's paper, and more thoroughly in Brookes's.

At first it appeared that CSL was well suited to what Dijkstra had called loosely connected processes,[14] but perhaps not to fine-grained concurrent algorithms with significant interference. However, gradually it was realized that the basic approach of CSL was considerably more powerful than first envisaged, if one employed non-standard models of the logical connectives and even the Hoare triples.

An abstract version of separation logic was proposed that works for Hoare triples where the preconditions and postconditions are formulae interpreted over an arbitrary partial commutative monoid instead of a particular heap model.[15] Later, by suitable choice of commutative monoid, it was surprisingly found that the proof rules of abstract versions of concurrent separation logic could be used to reason about interfering concurrent processes, for example by encoding the rely-guarantee technique which had been originally proposed to reason about interference;[16] in this work the elements of the model were considered not resources, but rather "views" of the program state, and a non-standard interpretation of Hoare triples accompanies the non-standard reading of pre and postconditions. Finally, CSL-style principles have been used to compose reasoning about program histories instead of program states, in order to provide modular techniques for reasoning about fine-grained concurrent algorithms.[17]

Versions of CSL have been included in many interactive and semi-automatic (or "in-between") verification tools as described in the next section. A particularly significant verification effort is that of the μC/OS-II kernel mentioned there. But, although steps have been made,[18] as of yet CSL-style reasoning has been included in comparatively few tools in the automatic program analysis category (and none mentioned in the next section).

O'Hearn and Brookes are co-recipients of the 2016 G?del Prize for their invention of Concurrent Separation Logic.[19]

Verification and program analysis tools

[edit]

Tools for reasoning about programs fall on a spectrum from fully automatic program analysis tools, which do not require any user input, to interactive tools where the human is intimately involved in the proof process. Many such tools have been developed; the following list includes a few representatives in each category.

  • Automatic Program Analyses. These tools typically look for restricted classes of bugs (e.g., memory safety errors) or attempt to prove their absence, but fall short of proving full correctness.
    • A current example is Facebook Infer, a static analysis tool for Java, C, and Objective-C based on separation logic and bi-abduction.[20] As of 2015 hundreds of bugs per month were being found by Infer and fixed by developers before being shipped to Facebook's mobile apps[21]
    • Other examples include SpaceInvader (one of the first SL analyzers), Predator (which has won several verification competitions), MemCAD (which mixes shape and numerical properties) and SLAyer (from Microsoft Research, focussed on data structures found in device drivers)
  • Interactive Proof. Proofs have been done using embeddings of Separation Logic into interactive theorem provers such as Rocq (previously known as Coq) and HOL (proof assistant). In comparison to the program analysis work, these tools require more in the way of human effort but prove deeper properties, up to functional correctness.
    • A proof of the FSCQ file system[22] where the specification includes behaviour under crashes as well as normal operation. This work won the best paper award at the 2015 Symposium on Operating System Principles.
    • Verification of a large fragment of the Rust type system and some of its standard libraries in the RustBelt project using the Iris framework for separation logic in Rocq.
    • Verification of an OpenSSL implementation of a cryptographic authentication algorithm,[23] utilizing verifiable C
    • Verification of key modules of a commercial OS kernel, the μC/OS-II kernel, the first commercial pre-emptive kernel to have been verified.[24]
    • Other examples include the Ynot[25] library for the Rocq; the Holfoot embedding of Smallfoot in HOL; Fine-grained Concurrent Separation Logic, and Bedrock (a Rocq library for low-level programming).
  • In Between. Many tools require more user intervention than program analyses, in that they expect the user to input assertions such as pre/post specs for functions or loop invariants, but after this input is given they attempt to be fully or almost fully automatic; this mode of verification goes back to classic works in the 1970s such as J King's verifier, and the Stanford Pascal Verifier. This style of verifier has recently been called auto active verification, a term which intends to evoke the way of interacting with a verifier via an assert-check loop, analogous to the interaction between a programmer and a type-checker.
    • The very first Separation Logic verifier, Smallfoot, was in this in-between category. It required the user to input pre/post specs, loop invariants, and resource invariants for locks. It introduced a method of symbolic execution, as well as an automatic way to infer frame axioms. Smallfoot included Concurrent Separation Logic.
    • SmallfootRG is a verifier for a marriage of separation logic and the classic rely/guarantee method for concurrent programs.
    • Heap Hop implements a separation logic for message passing, following the ideas in Singularity (operating system).
    • VeriFast is an advanced current tool in the in-between category. It has demonstrated proofs ranging from object-oriented patterns to highly concurrent algorithms and to systems programs.
    • Viper is a state-of-the-art automated verification infrastructure for permission-based reasoning. It mainly consists of a programming language and two verification backends, one based on symbolic execution and another one on verification condition generation (VCG).[26] Based on the Viper infrastructure, several frontends for various programming languages have emerged: Gobra for Go, Nagini for Python, Prusti for Rust, and VerCors for C, Java, OpenCL, and OpenMP. These frontends translate the frontend programming language into Viper to then use a Viper verification backend for proving the input program's correctness.
    • The Mezzo Programming Language and Asynchronous Liquid Separation Types include ideas related to CSL in the type system for a programming language. The idea to include separation in a type system has earlier examples in Alias Types and Syntactic Control of Interference.

The distinction between interactive and in-between verifiers is not a sharp one. For example, Bedrock strives for a high degree of automation, in what it terms mostly-automatic verification, where Verifast sometimes requires annotations that resemble the tactics (little programs) used in interactive verifiers.

Decidability and complexity

[edit]

The satisfiability problem for a quantifier-free, multi-sorted fragment of separation logic parameterized over the sorts of locations and data can be shown to be PSPACE-complete.[27] An algorithm for solving this fragment in DPLL(T)-based SMT solvers has been integrated into cvc5.[28] Extending this result, satisfiability for an analog of the Bernays–Sch?nfinkel class for separation logic with uninterpreted memory locations can also be shown to be PSPACE-complete, whereas the problem is undecidable with interpreted memory locations (e.g., integers) or further quantifier alternations[29]

References

[edit]
  1. ^ a b Reynolds, John C. (2002). "Separation Logic: A Logic for Shared Mutable Data Structures" (PDF). LICS.
  2. ^ Reynolds, John C. (1999). "Intuitionistic Reasoning about Shared Mutable Data Structure". In Davies, Jim; Roscoe, Bill; Woodcock, Jim (eds.). Millennial Perspectives in Computer Science, Proceedings of the 1999 Oxford–Microsoft Symposium in Honour of Sir Tony Hoare. Palgrave.
  3. ^ a b Ishtiaq, Samin; O'Hearn, Peter (2001). "BI as an assertion language for mutable data structures". Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. ACM. pp. 14–26. doi:10.1145/360204.375719. ISBN 1581133367. S2CID 2652274.
  4. ^ O'Hearn, Peter; Reynolds, John C.; Yang, Hongseok (2001). "Local Reasoning about Programs that Alter Data Structures". CSL. CiteSeerX 10.1.1.29.1331.
  5. ^ Burstall, R. M. (1972). "Some techniques for proving programs which alter data structures". Machine Intelligence. 7.
  6. ^ O'Hearn, P. W.; Pym, D. J. (June 1999). "The Logic of Bunched Implications". Bulletin of Symbolic Logic. 5 (2): 215–244. CiteSeerX 10.1.1.27.4742. doi:10.2307/421090. JSTOR 421090. S2CID 2948552.
  7. ^ O'Hearn, Peter (February 2019). "Separation Logic". Commun. ACM. 62 (2): 86–95. doi:10.1145/3211968. ISSN 0001-0782.
  8. ^ Yang, Hongseok (2001). "An Example of Local Reasoning in BI Pointer Logic: the Schorr?Waite Graph Marking Algorithm". Proceedings of the 1st Workshop on Semantics' Program Analysis' and Computing Environments for Memory Management.
  9. ^ Hobor, Aquinas; Villard, Jules (2013). "The ramifications of sharing in data structures" (PDF). ACM SIGPLAN Notices. 48: 523–536. doi:10.1145/2480359.2429131.
  10. ^ Gardner, Philippa; Maffeis, Sergio; Smith, Hareth (2012). "Towards a program logic for Java Script" (PDF). Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '12. pp. 31–44. doi:10.1145/2103656.2103663. hdl:10044/1/33265. ISBN 9781450310833. S2CID 9571576.
  11. ^ O'Hearn, Peter (2007). "Resources, Concurrency and Local Reasoning" (PDF). Theoretical Computer Science. 375 (1–3): 271–307. doi:10.1016/j.tcs.2006.12.035.
  12. ^ Hoare, C.A.R. (1972). "Towards a theory of parallel programming". Operating System Techniques. Academic Press.
  13. ^ Brookes, Stephen (2007). "A Semantics for Concurrent Separation Logic" (PDF). Theoretical Computer Science. 375 (1–3): 227–270. doi:10.1016/j.tcs.2006.12.034.
  14. ^ Dijkstra, Edsger W. Cooperating sequential processes (EWD-123) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (transcription) (September 1965)
  15. ^ Calcagno, Cristiano; O'Hearn, Peter W.; Yang, Hongseok (2007). "Local Action and Abstract Separation Logic" (PDF). 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007). pp. 366–378. CiteSeerX 10.1.1.66.6337. doi:10.1109/LICS.2007.30. ISBN 978-0-7695-2908-0. S2CID 1044254.
  16. ^ Dinsdale-Young, Thomas; Birkedal, Lars; Gardner, Philippa; Parkinson, Matthew; Yang, Hongseok (2013). "Views" (PDF). ACM SIGPLAN Notices. 48: 287–300. doi:10.1145/2480359.2429104.
  17. ^ Sergey, Ilya; Nanevski, Aleksandar; Banerjee, Anindya (2015). "Specifying and Verifying Concurrent Algorithms with Histories and Subjectivity" (PDF). 24th European Symposium on Programming. arXiv:1410.0306. Bibcode:2014arXiv1410.0306S.
  18. ^ Gotsman, Alexey; Berdine, Josh; Cook, Byron; Sagiv, Mooly (2007). "Thread-Modular Shape Analysis". Verification, Model Checking, and Abstract Interpretation (PDF). Lecture Notes in Computer Science. Vol. 5403. pp. 266–277. doi:10.1007/978-3-540-93900-9_3. ISBN 978-3-540-93899-6. {{cite book}}: |journal= ignored (help)
  19. ^ Chita, Efi. "2016 G?del Prize". Eatcs. European Association for Theoretical Computer Science. Retrieved 2025-08-07.
  20. ^ Separation logic and bi-abduction, page, Infer project site.
  21. ^ Open-sourcing Facebook Infer: Identify bugs before you ship. C Calcagno, D DIstefano and P O'Hearn. 11 June 2015
  22. ^ Using Crash Hoare Logic for Certifying the FSCQ File System, H Chen et al, SOSP'15
  23. ^ Verified correctness and security of OpenSSL HMAC. Lennart Beringer, Adam Petcher, Katherine Q. Ye, and Andrew W. Appel. In 24th USENIX Security Symposium, August 2015
  24. ^ A Practical Verification Framework for Preemptive OS Kernels. Fengwei Xu, Ming Fu, Xinyu Feng, Xiaoran Zhang, Hui Zhang and Zhaohui Li:. In CAV 2016: 59-79
  25. ^ The Ynot Project homepage, Harvard University, USA.
  26. ^ Viper: A Verification Infrastructure for Permission-Based Reasoning, P. Müller, M. Schwerhoff, and A. J. Summers, VMCAI'16
  27. ^ Reynolds, Andrew; Iosif, Radu; Serban, Cristina; King, Tim (2016). "A Decision Procedure for Separation Logic in SMT". In Artho, Cyrille; Legay, Axel; Peled, Doron (eds.). Automated Technology for Verification and Analysis. Lecture Notes in Computer Science. Cham: Springer International Publishing. pp. 244–261. arXiv:1603.06844. doi:10.1007/978-3-319-46520-3_16. ISBN 978-3-319-46520-3.
  28. ^ Barbosa, Haniel; Barrett, Clark; Brain, Martin; Kremer, Gereon; Lachnitt, Hanna; Mann, Makai; Mohamed, Abdalrhman; Mohamed, Mudathir; Niemetz, Aina; N?tzli, Andres; Ozdemir, Alex; Preiner, Mathias; Reynolds, Andrew; Sheng, Ying; Tinelli, Cesare (2022). "cvc5: A Versatile and Industrial-Strength SMT Solver". In Fisman, Dana; Rosu, Grigore (eds.). Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science. Cham: Springer International Publishing. pp. 415–442. doi:10.1007/978-3-030-99524-9_24. ISBN 978-3-030-99524-9.
  29. ^ Reynolds, Andrew; Iosif, Radu; Serban, Cristina (2017). "Reasoning in the Bernays-Sch?nfinkel-Ramsey Fragment of Separation Logic". In Bouajjani, Ahmed; Monniaux, David (eds.). Verification, Model Checking, and Abstract Interpretation. Lecture Notes in Computer Science. Cham: Springer International Publishing. pp. 462–482. doi:10.1007/978-3-319-52234-0_25. ISBN 978-3-319-52234-0.
什么才是真正的情人 腊八粥是什么节日 司是什么级别 normal是什么意思 补肾壮阳吃什么效果好
阴道炎吃什么消炎药 脱发吃什么药 中医师承是什么意思 什么是g点 hoegaarden是什么啤酒
甘草长什么样子图片 香芋紫是什么颜色 梦见打台球是什么意思 六月初六是什么日子 鼻鼽病是什么意思
筛选是什么意思 葡萄糖阳性是什么意思 为什么说啄木鸟是树的医生 敖包是什么意思 白白的云朵像什么
李逵代表什么生肖liaochangning.com 青春不散场什么意思hcv9jop3ns0r.cn 11月2日是什么星座hcv7jop9ns3r.cn 四离日是什么意思hcv9jop3ns1r.cn 左手臂有痣代表什么hcv8jop8ns1r.cn
龙猫是什么动物bysq.com 叶五行属什么wuhaiwuya.com 尾盘放量拉升意味着什么weuuu.com 六月十号什么星座hcv7jop5ns5r.cn 拉杆是什么意思hcv8jop5ns7r.cn
尿酸高吃什么中药jinxinzhichuang.com 中班小朋友应该学什么hcv9jop7ns3r.cn 多头是什么意思hcv9jop8ns2r.cn 股票套牢是什么意思hcv9jop6ns5r.cn d2聚体高是什么意思hcv9jop0ns4r.cn
海蜇是什么xianpinbao.com 三位一体是什么生肖hcv8jop0ns9r.cn 排卵期为什么会出血hcv9jop2ns7r.cn 一什么帽子xinjiangjialails.com 尿葡萄糖是什么意思hcv8jop6ns8r.cn
百度