证明模型中的属性
关于这个例子
下面几节介绍一个Simulink®模型,为其证明使用Proof Objective块指定的属性。的属性证明功能仿真软件设计校验™.
在本例中,执行以下任务。
任务 | 描述 | 看到…… |
---|---|---|
1 | 构造示例模型。 |
|
2 | 验证您的模型与仿真软件设计验证器. |
|
3. | 向模型中添加一个Proof Objective块来准备它的证明。 |
|
4 | 配置仿真软件设计验证器为了证明属性。 |
|
5 | 证明模型的一个属性。 |
|
6 | 回顾分析结果。 |
|
7 | 添加证明假设以指定分析约束。 |
|
8 | 证明定制模型的一个属性并解释结果。 |
构建示例模型
构建一个Simulink模型在这个例子中使用:
创建一个空的Simulink模型。
复制以下块到您的空模型窗口:
连接这些块,这样你的模型看起来类似于下面的模型:
在建模选项卡上,单击模型设置.
在“配置参数”对话框中,单击解算器窗格中,在解算器的选择:
设置类型选项
固定步
.设置解算器选项
离散(无连续状态)
.
的仿真软件设计验证器只能分析使用固定步长求解器的模型。
点击好吧以保存更改并关闭“配置参数”对话框。
用名称保存模型
ex_property_proving_example_basic
.
检查范例模型的兼容性
每一次仿真软件设计验证器软件分析模型,在分析开始之前,软件执行兼容性检查。如果您的模型不兼容,软件就不能分析它。
您还可以确保您的模型是兼容的仿真软件设计验证器在开始分析之前:
打开
ex_property_proving_example_basic
模型。在设计验证器选项卡上,单击检查兼容性.
的仿真软件设计验证器软件显示日志窗口,说明您的模型是否兼容。
您刚刚创建的模型是兼容的。
如果一个模型部分兼容怎么办?
如果兼容性检查表明您的模型是部分兼容的,那么您的模型至少包含一个对象仿真软件设计验证器不支持。您可以分析部分兼容的模型,但是在默认情况下,不支持的对象会被删除。分析结果可能是不完整的。有关自动存根的详细信息,请参见处理不兼容的自动存根.
仪器模型示例
准备好您的示例模型,以便您可以证明它的属性仿真软件设计验证器.具体来说,通过添加和配置一个客观的证据布洛克:
在MATLAB®命令窗口中,输入
sldvlib
.的仿真软件设计验证器图书馆的出现。
打开目标和约束子库。
将Proof Objective块复制到模型中,并将其插入到Compare to Zero和Outport块之间。
在模型中,双击Proof Objective块。
打开Proof Objective块参数对话框。
在值框中,输入
1
.的仿真软件设计验证器软件将尝试证明Compare to Zero块输出的信号对于它接收到的任何信号总是达到这个值。
点击好吧应用您的更改,并关闭Proof Objective块参数对话框。
保存您的模型并保持其打开状态。
配置Property-Proving选项
配置仿真软件设计验证器证明的性质ex_property_proving_example_basic
你测量的模型:
打开
ex_property_proving_example_basic
模型。在设计验证器选项卡,模式部分中,选择财产证明.
点击财产证明设置.
点击好吧以应用更改并关闭“配置参数”对话框。
请注意
在财产证明窗格中,您可以为控制方式的其他参数指定值仿真软件设计验证器证明模型的属性。有关更多信息,请参见设计验证器窗格:属性验证.
保存
ex_property_proving_example_basic
模型。
分析示例模型
分析ex_property_proving_example_basic
模型,设计验证器选项卡上,单击证明属性.仿真软件设计验证器开始属性证明分析。
在分析过程中,日志窗口显示分析的进度。它显示诸如处理的目标数量以及哪些目标被满足或被伪造等信息。
在日志窗口单击,可随时终止分析停止.
回顾分析结果
分析完成后,日志窗口显示以下选项,用于检查结果:
突出显示模型上的分析结果
生成详细的HTML分析报告
用测试用例创建一个控制模型
模拟由模型创建的测试用例,并生成一个模型覆盖报告
您还可以查看仿真软件设计验证器数据文件。有关数据文件的详细信息,请参见管理Simulink设计验证器数据文件.
以下部分描述了如何查看分析结果:
模型评审结果
您可以通过查看模型窗口中高亮显示的块来查看分析结果。高亮可以有四种颜色:
绿色-分析证明所有的证明目标是有效的。
红色-分析否定了一个证明目标,并生成了一个反例,使该目标证伪。
橙色-分析否定了一个证明目标,但它不能产生反例或证明目标仍然未确定。出现这个结果的原因是:
软件无法控制信号值的一种证明目标,例如Constant块
一个依赖于非线性计算的证明目标
一个产生算术错误的证明目标,例如除以零
启用了自动存根,分析遇到了不受支持的块,它不理解该块的操作,但分析需要生成反例
分析超时
分析引擎的局限性
灰色——模型对象不是分析的一部分。
突出显示示例模型的分析结果:
的“结果摘要”窗口中
ex_property_proving_example_basic
分析,点击突出模型的分析结果.的客观的证据块用红色突出显示,这表明证明目标被反例证伪了。
的仿真软件设计验证器结果窗口。
当您单击模型中的对象时,此窗口将更改为显示该对象的详细分析结果。
提示
默认情况下,仿真软件设计验证器结果窗口始终是最上面的可见窗口。若要允许该窗口移动到其他窗口的后面,请单击和明确的总在最上面.
点击高亮显示的客观的证据块。
的仿真软件设计验证器结果窗口表明,从比较到零的输出信号不是1的证明目标被反例推翻。
详细分析报告
使用实例创建详细的HTML分析报告。
在仿真软件设计验证器“结果汇总”窗口,单击生成详细分析报告.
HTML报告在浏览器窗口中打开。
该报告包括以下内容表的内容.单击超链接导航到报告中的特定部分。
在表的内容,点击
总结
.摘要提供了分析结果的概述,它指出仿真软件设计验证器确定了一个反例,它伪造了模型中的一个目标。
在表的内容,点击
证明目标状态
.反例证伪目标表列出了证明目标仿真软件设计验证器用它产生的反例予以反驳。您可以通过单击在您的模型窗口中定位目标
客观的证据
;软件突出显示模型窗口中相应的Proof Objective块。在反例证伪目标表中,在反例列,单击
1
.本节展示关于证明目标1的信息,并提供反例的详细信息仿真软件设计验证器是为了推翻这个目标。在这个反例中,99的信号值对使用Proof objective块指定的目标进行伪证。也就是说,99不小于或等于0,这将导致Compare to Zero块返回0 (false)而不是1 (true)。
回顾利用模型
创建一个带有反例的控制模型,以证伪模型中的证明目标:
在仿真软件设计验证器日志窗口中,单击创建利用模型.
该软件创建了一个名为
ex_property_proving_example_basic_harness
.harness模型包含以下项目:
双击input块。
输入信号1导致Compare to Zero块的输出为0。这个反例违反了指定Compare to Zero块的输出为1的证明目标。
用反例模拟模型
模拟线束模型以观察反例,在模型中证伪证明目标:
打开
ex_property_proving_example_basic
模型。在模拟选项卡上,单击库浏览器.
从sink库中,复制一个范围块进入您的线束模型窗口。Scope块允许您查看模型中Compare to Zero块输出的信号值。
在您的线束模型窗口中,将Test Unit子系统的输出信号连接到Scope块。
要模拟您的脊甲模型,请在模拟选项卡上,单击运行.
Simulink软件对线束模型进行了仿真。
在您的线束模型窗口中,双击Scope块以打开它的显示窗口。
Scope块显示模型中Compare To Zero块输出的信号值。在本例中,Compare To Zero块在整个模拟过程中返回0 (false),从而证明了Compare To Zero块的输出为1 (true)的证明目标是错误的。反例是信号生成器块供应伪造证明目标。
回顾分析结果
只要您的模型保持开放,您就可以查看您最近的结果仿真软件设计验证器在“结果汇总”窗口中分析结果。
在设计验证器选项卡,审查结果部分中,点击结果总结.结果汇总窗口打开,显示最新的结果仿真软件设计验证器分析。
对于任何仿真软件设计验证器在“结果摘要”窗口中,您可以执行以下任务。
任务 | 的更多信息 |
---|---|
突出显示模型上的分析结果。 |
突出显示模型上的结果 |
生成详细的分析报告。 |
审查结果 |
创建管理模型,或者如果管理模型已经存在,则打开它。 如果在分析期间没有创建反例,则此选项不可用。 |
管理Simulink设计验证器控制模型 |
查看数据文件。 |
管理Simulink设计验证器数据文件 |
查看日志文件。 |
查看日志文件 |
在您关闭您的模型之后,您就不能再查看分析结果了。
定制的例子证明
修改了简单的Simulink模型,其证明目标仿真软件设计验证器在前面的任务中被否定了。具体来说,通过添加和配置一个证明假设布洛克:
在MATLAB命令窗口中,键入
sldvlib
.的仿真软件设计验证器图书馆开了。
打开目标和约束子库。
将Proof Assumption块复制到模型中。
在模型窗口中,在import和Compare To Zero块之间插入Proof Assumption块。
在模型中,双击Proof Assumption块以访问其属性。
打开“假设证明”块参数对话框。
在值框中,输入
(1,0)
.在证明该模型的性质时,仿真软件设计验证器约束进入Compare To Zero块的信号值到指定的范围。如果Compare to Zero块的输入总是在这个范围内,那么Compare to Zero块的输出将总是1。点击应用然后好吧应用您的更改并关闭Proof Assumption块参数对话框。
保存
ex_property_proving_example_basic
建模并保持开放。
再分析示例模型
分析您修改的模型,以了解如何证明假设块影响属性证明分析。
打开ex_property_proving_example_basic
模型。在设计验证器选项卡上,单击证明属性.
分析完成后,日志窗口将显示选项。没有创建利用模型的选项,因为分析满足模型中的所有证明目标,所以没有反例。
二次分析的评审结果
回顾第二次分析的结果:
模型的评审结果
突出显示模型以查看分析结果:
点击突出模型的分析结果.
证明目标现在用绿色突出显示。
单击客观的证据块。
的仿真软件设计验证器结果窗口显示证明目标的状态,信号为1是有效的。
回顾分析报告
回顾详细报告中的分析结果:
点击生成详细分析报告.
在表的内容,点击
总结
.摘要一章说明了这一点仿真软件设计验证器证明了模型中的一个证明目标。
Constraints部分列出了您在Proof Assumption块中指定的分析约束。
滚动回浏览器窗口的顶部。在表的内容,点击
证明目标状态
.已证明有效的目标表列出了证明目标仿真软件设计验证器被证明是有效的。
向下滚动以查看“属性”一章,或转到浏览器窗口的顶部和表的内容,点击
属性
.证明目标总结表明仿真软件设计验证器证明你在模型中指定的目标。的证明假设Block将输入信号的域限制在区间[- 1,0]。因此,软件证明该区间不包含大于零的值,从而满足证明目标。
分析矛盾的模型
如果分析产生了错误该模型目前的配置是矛盾的
,软件检测到你的模型有矛盾,它不能分析模型。你可以有一个矛盾,如果你的模型有证明假设参数不正确的块。例如,假设当信号为常数10时,信号必须介于0到5之间。
如果软件检测到一个矛盾,所有之前的结果都无效,软件报告所有的属性都是伪造的。
请注意
通过设计最小/最大或测试条件/证明假设在输入处添加的约束不会导致矛盾。然而,如果您使用测试条件/证明假设来约束计算的下游信号,则必须通过模型计算确保约束条件是可行的。否则,得到的模型是矛盾的,可能产生无效的结果,有或没有显式的分析错误。为了确保约束是可行的,首先使用Test Objective尝试相同的条件。如果它可以被满足,您可以安全地使用相同的条件作为约束。
证明大型模型中的属性
对模型的彻底证明需要这样做仿真软件设计验证器搜索您的模型的所有可到达的配置—甚至是那些在很长时间延迟后才到达的配置。完全搜索一个模型所需要的计算时间和内存常常使穷尽证明不切实际。
证明大模型中的性质提供关于可用于改进大型模型的属性证明分析的性能的策略的详细信息。