CVC输入语言

声明

位向量表达式(或项)由位向量常数、位向量变量以及下列函数构成。在STP中,所有变量必须在使用前声明。声明一个长度为32的位向量变量的例子是:x : BITVECTOR(32);。声明数组的例子如下:
x_arr : ARRAY BITVECTOR(32) OF BITVECTOR(5000);

功能和术语

长度为0的位向量变量(或术语)是不允许的。位向量常数可以用二进制或十六进制格式表示。最右边的位称为最低有效位(LSB),最左边的位称为最高有效位(MSB)。LSB的索引是0,而n位常数的MSB的索引是n-1。这个约定自然地扩展到所有位向量表达式。以下是一些以二进制和十六进制表示的位向量常数的例子:

0bin0000111101010000
0hex0f50

STP中的位向量实现支持非常多的函数和谓词。这些函数分为字级函数、位级函数和算术函数。

字级函数

名称符号示例
连接@t1@t2@…@tm
提取[i:j]x[31:26]
左移<<0bin0011 << 3 = 0bi n0011000
右移>>x[24:17] >> 5, 另一个例子: 0bin1000 >> 3 = 0bin0001
符号扩展BVSX(bv,n)BVSX(0bin100, 5) = 0bin11100
数组读取[index]x_arr[t1]
数组写入WITHx_arr WITH [index] := value

注释:

  • 对于提取项,例如 t[i:j],n > i >= j > 0,其中 n 是 t 的长度。
  • 对于左移项,t << k 表示将 k 个 0 追加到 t 的右端。t << k 的长度为 n * +* k。
  • 对于右移项,t >> k 表示通过 k 个 0 跟随t[n-1,k]得到的位向量,其长度为 t >> k 为 n。

例子

  1. 连接
ASSERT x@y = 0b1101@0b11;  // 连接 x 和 y,假设 x = 1101 和 y = 11

位级函数

名称符号示例
位与&t1 & t2 & … & tm
位或|t1 | t2 | … | tm
位非~~t1
位异或BVXORBVXOR(t1, t2)
位与非BVNANDBVNAND(t1, t2)
位或非BVNORBVNOR(t1, t2)
位同或BVXNORBVXNOR(t1, t2)

注意: 所有位运算函数的参数必须具有相同的长度。

算术函数

名称符号示例
位向量加法BVPLUSBVPLUS(n, t1, t2, …, tm)
位向量乘法BVMULTBVMULT(n, t1, t2)
位向量减法BVSUBBVSUB(n, t1, t2)
位向量一元负BVUMINUSBVUMINUS(t1)
位向量除法BVDIVBVDIV(n, t1, t2)
有符号位向量除法SBDIVSBDIV(n, t1, t2)
位向量模数BVMODBVMOD(n, t1, t2)
有符号位向量模数SBVMODSBVMOD(n, t1, t2)

注释:

  • 输出位的数量必须被指定(一元负数除外)。
  • 所有输入必须具有相同的长度。
  • BVUMINUS(t)BVPLUS(n, ~t, 0bin1) 的简写,其中 n 是 t 的长度。
  • BVSUB(n, t1, t2)BVPLUS(n, t1, BVUMINUS(t2)) 的简写。

STP 还支持条件表达式,例如 IF cond THEN t1 ELSE t2 ENDIF,其中 cond 是布尔表达式,t1t2 可以是位向量表达式。这样可以模拟多路选择器。一个例子是:

x, y : BITVECTOR(1);
QUERY(x = (IF 0bin0 = x THEN y ELSE BVUMINUS(y) ENDIF));

谓词

名称符号示例
等于=t1=t2
小于BVLTBVLT(t1, t2)
大于BVGTBVGT(t1, t2)
小于或等于BVLEBVLE(t1, t2)
大于或等于BVGEBVGE(t1, t2)
有符号小于SBVLTSBVLT(t1, t2)
有符号大于SBVGTSBVGT(t1, t2)
有符号小于或等于SBVLESBVLE(t1, t2)
有符号大于或等于SBVGESBVGE(t1, t2)

注意:

  • STP 要求像 x = y 这样的原子公式中,x 和 y 必须是长度相同的表达式。
  • STP接受原子公式的布尔组合。

注释

%开头的是注释。

例子

Example1

x : BITVECTOR(5);   //声明了一个名为 x 的位向量变量,它的长度是5位。
y : BITVECTOR(4); //明了一个名为 y 的位向量变量,它的长度是4位
QUERY( 		//查询表达式,STP将尝试验证括号内的表达式是否总是为真BVPLUS(9, x@0bin0000, (0bin000@(~y)@0bin11))[8:4]=BVPLUS(5, x, 0bin000@~(y[3:2]))
);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA+SpringBoot+Vue的社区智慧养老监护管理平台

基于JAVASpringBootVue的社区智慧养老监护管理平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1…

使用SBP打AssetBundle时脚本引用丢失

1&#xff09;使用SBP打AssetBundle时脚本引用丢失 2&#xff09;在UE 5.3中连接Power节点为何10的3次幂等于1009 3&#xff09;如何在Widget中倾斜一张纹理贴图 4&#xff09;如何在打开关卡蓝图时更改游戏模式 这是第401篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热…

828华为云征文 | 将Vue项目部署到Flexus云服务器X实例并实现公网访问

一、Flexus云服务器X实例简介 1.1 概述 华为云Flexus X实例是华为云推出的一款创新云服务器产品&#xff0c;它主要面向中小企业和开发者&#xff0c;旨在解决传统云服务中的痛点&#xff0c;提供更加灵活、高效的云服务体验。 华为深刻洞察了中小企业和开发者在云服务应用中遇…

深度学习后门攻击分析与实现(一)

在计算机安全中&#xff0c;后门攻击是一种恶意软件攻击方式,攻击者通过在系统、应用程序或设备中植入未经授权的访问点,从而绕过正常的身份验证机制,获得对系统的隐蔽访问权限。这种"后门"允许攻击者在不被检测的情况下进入系统,执行各种恶意活动。 后门可以分为几种…

VOC2007数据集

目标检测入门code 文件目录 下载数据集——在官网下载VOC2007数据集 下载训练数据集 TRAIN data 下载测试数据集 TEST data 解压数据集 解压——训练数据集&#xff0c;在服务器上&#xff0c;目录为VOCdevkit 部分文件目录 全部文件总目录 解压——测试数据集 &#xff08;…

快速搭建Kubernetes集群

快速搭建Kubernetes集群 1 MacOS 1.1 下载 从 docker 下载 docker-desktop (opens new window)&#xff0c;并完成安装 1.2 启用 k8s 集群 启动 docker-desktop&#xff0c;打开preference 面板 切换到 Kubernetes 标签页&#xff0c;并勾选启动 Enable Kubernetes&#xff0c;…

Django 数据库配置以及字段设置详解

配置PostGre 要在 Django 中配置连接 PostgreSQL 数据库&#xff0c;并创建一个包含“使用人”和“车牌号”等字段的 Car 表 1. 配置 PostgreSQL 数据库连接 首先&#xff0c;在 Django 项目的 settings.py 中配置 PostgreSQL 连接。 修改 settings.py 文件&#xff1a; …

大模型深入行业,正从“星星之火”走向“燎原之势”

2024年&#xff0c;当越来越多的企业从赶大模型的潮流与炫大模型的参数规模开始转移到行业落地时&#xff0c;华为携生态伙伴用大模型深耕行业的成果俨然遍地开花。 在9月19日华为全联接大会2024大会上同期举办的华为云AI用户峰会上&#xff0c;华为云为28个创新项目颁发了“A…

【计算机组成原理】主存储器深度解析

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

VulnHub-Bilu_b0x靶机笔记

Bilu_b0x 靶机 概述 Vulnhub 的一个靶机&#xff0c;包含了 sql 注入&#xff0c;文件包含&#xff0c;代码审计&#xff0c;内核提权。整体也是比较简单的内容&#xff0c;和大家一起学习 Billu_b0x.zip 靶机地址&#xff1a; https://pan.baidu.com/s/1VWazR7tpm2xJZIGUS…

滑动窗口(6)_找到字符串中所有字母异位词

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f4…

基于JAVA+SpringBoot+Vue的线上辅导班系统的开发与设计

基于JAVASpringBootVue的线上辅导班系统的开发与设计 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#…

Java 微服务框架 HP-SOA v1.1.4

HP-SOA 功能完备&#xff0c;简单易用&#xff0c;高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…

【C++算法】分治——快排

颜色分类 题目链接 颜色分类https://leetcode.cn/problems/sort-colors/description/ 算法原理 代码步骤 class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int i 0, left -1, right n;while(i < right){if(nums[i] 0) s…

Maven笔记(一):基础使用【记录】

Maven笔记&#xff08;一&#xff09;-基础使用 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 Maven提供了一套标准化的项目结构&#xff0c;所有IDE(eclipse、myeclipse、IntelliJ IDEA 等 项目开发工具) 使…

Linux通过yum安装Docker

目录 一、安装环境 1.1. 旧的docker包卸载 1.2. 安装常规环境包 1.3. 设置存储库 二、安装Docker社区版 三、解决拉取镜像失败 3.1. 创建文件目录/etc/docker 3.2. 写入镜像配置 https://docs.docker.com/engine/install/centos/ 检测操作系统版本&#xff0c;我操作的…

openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面

效果图&#xff1a; 代码及详解 1.添加两个插件的头文件: #include "ofxGui.h" #include "ofxXmlSettings/src/ofxXmlSettings.h" 2.添加GUI部分&#xff0c;然后在.h声明右边的openframeworks的UI部分&#xff0c;包括面板ofxPanel&#xff0c;按钮ofx…

深入理解 JavaScript 三大作用域:全局作用域、函数作用域、块级作用域

一. 作用域 对于多数编程语言&#xff0c;最基本的功能就是能够存储变量当中的值、并且允许我们对这个变量的值进行访问和修改。那么有了变量之后&#xff0c;应该把它放在哪里、程序如何找到它们&#xff1f;是否需要提前约定好一套存储变量、访问变量的规则&#xff1f;答案…

深入探究 Flask 的应用和请求上下文

目标 读完本文后&#xff0c;您应该能够解释&#xff1a; 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时&#xff0c;处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…

并发编程多线程

1.线程和进程的区别&#xff1f; 进程是正在运行程序的实例&#xff0c;进程中包含了线程&#xff0c;每个线程执行不同的任务不同的进程使用不同的内存空间&#xff0c;在当前进程下的所有线程可以共享内存空间线程更轻量&#xff0c;线程上下文切换成本一般上要比进程上下文…