【软件分析第17讲-学习笔记】程序综合 Program Synthesis
创始人
2024-01-29 13:28:21
0

文章目录

  • 前言
  • 正文
    • 程序综合
    • 枚举法
      • CEGIS:基于反例的优化
    • 约束求解法
    • 启发式搜索法
    • 统计法
    • 基于组件的程序综合 Component-Based Synthesis
  • 小结
  • 参考文献

前言

创作开始时间:

如题,学习一下程序综合 Program Synthesis的相关知识。参考:熊英飞老师2018《软件分析》课件。

正文

程序综合

程序综合是软件分析问题。
程序综合作为搜索问题。

目前大多数程序综合技术都只处理表达式,因为可以直接转成约束让SMT求解。

  • 枚举法:按照固定格式搜索
  • 约束求解法:将程序搜索问题整体转成约束求解问题
  • 启发式搜索法:采用启发式搜索
  • 统计法:采用机器学习等方法寻找概率最高的程序

枚举法

按语法依次展开:

  • 自顶向下遍历
  • 自底向上遍历
  • 双向搜索:要求能计算最强后条件或者最弱前条件,通常用于 pipeline 程序或者系统状态固定的程序

判断程序是否等价:

  • 通过 SMT 求解器可以判断,但是编码比较麻烦
  • 通过预定义规则判断

CEGIS:基于反例的优化

约束求解较慢,执行测试较快。将约束求解器返回的反例作为测试输入保存。

优化一:验证的时候首先采用测试验证
优化二:判断等价性的时候首先采用测试的结果判断

约束求解法

将程序综合问题整体转换成约束求解问题,由SMT 求解器求解。

基于构件的程序综合

在这里插入图片描述

启发式搜索法

在这里插入图片描述

统计法

在这里插入图片描述
这个有点像马尔科夫链。

基于组件的程序综合 Component-Based Synthesis

参考:

  • https://www.cs.cmu.edu/~aldrich/courses/17-665/notes/notes13-synthesis.pdf

先了解Oracle-guided synthesis:
在这里插入图片描述
原来如此,讲的挺好的。例子也很好懂。

是通过SMT问题,得到反例Counterexample,然后再加入到Specification里面,从而不断强化specification。

看完这个之后再看:

  • 【ICSE 13论文】SemFix: Program repair via semantic analysis

就大概能看懂了。

小结

还是学到了很多的,后续再补充完善。

创作结束时间:2022年11月16日23:42:19

参考文献

  • https://www.cs.cmu.edu/~aldrich/courses/17-355-18sp/notes/notes13-synthesis.pdf

相关内容

热门资讯

孟加拉国空军一架教练机在学校坠... 总台记者获悉,据孟加拉国消防部门消息,当地时间21日13时30分左右,孟加拉国空军一架教练机在一所学...
新华视点|多地经开区培育新质生...   近年来,多地经开区立足产业优势,以科技创新为引擎,培育新质生产力。各地通过技术攻关、政策赋能、模...
记者手记丨外国记者在江西感知中...   新华社江西赣州7月21日电记者手记|外国记者在江西感知中国高质量发展  新华社记者黎藜  “人类...
尺素金声丨三个“首次突破”,凸...   出口规模历史同期首次突破13万亿元,同比增长实现7.2%;有进出口实绩的外贸企业历史同期首次突破...
多个全球第一!这份“成绩单”与...   国新办今天举行“高质量完成‘十四五’规划”系列主题新闻发布会,多个部门相关负责人介绍了“十四五”...
欢乐过暑假,安全健康不放假 |...   暑假期间,孩子们宅家吃喝、外出玩乐时,如何做好安全防护,避免意外伤害?关于暑假期间安全与健康的几...
事关“地下生命”,有新发现!   研究显示:地震可为“地下生命”提供“燃料”  一项最新研究显示,地震等地壳内部构造活动瞬间释放的...
俄媒首次公开攻击型无人机生产基...   当地时间7月20日,俄罗斯红星电视台首次曝光位于俄联邦鞑靼斯坦共和国境内的一个无人机生产基地。这...