码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【软件分析第17讲-学习笔记】程序综合 Program Synthesis


    文章目录

    • 前言
    • 正文
      • 程序综合
      • 枚举法
        • 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
  • 相关阅读:
    Linux性能监控命令_pidstat & 统计进程信息
    STM32开发——感应垃圾桶(舵机、超声波测距、振动检测)
    深度学习网路模型
    伪元素和伪类的概念和区别
    新书推荐——华为·无线局域网应用技术(微课版丨第2版)
    ubuntu 24.04 beta server NAT模式上网设置
    spring mvc源码分析之请求分发
    Java WebSocket服务在多tomcat服务下怎么进行互通,websocket多服务负载均衡下怎么进行交互,websocket客户端调用实例
    golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)
    8.11 Day39----框架面试题
  • 原文地址:https://blog.csdn.net/weixin_39278265/article/details/127894029
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号