在Welder中使用notI构造时遇到一些问题。以下面作为示例证明:
我的例子使用关于环结构的通常引理和衍生引理(zeroDivisorLemma),它表示对于所有' a'在环中a0 = 0 = 0a。
我证明如果两个元素不为零,则它们的乘积不为零。如下。
val theorem: Theorem =
forallI("a"::F,"b"::F){ case (a,b) =>
implI(and(a !== z, b !== z,multInverseElement,multNeutralElement,multAssociative,
addOppositeElement,addNeutralElement,addAssociative,isDistributive)){ axioms =>
val Seq(aNotZero,bNotZero,multInverseElement,multNeutralElement,multAssociative,
addOppositeElement,addNeutralElement,addAssociative,isDistributive) = andE(axioms) : Seq[Theorem]
notI((a ^* b) === z) { case (hyp,_) =>
((a ^* b) === z) ==| andI(bNotZero,hyp) |
(((a ^* b) ^* inv(b)) === (z ^* inv(b))) ==| forallE(multAssociative)(a,b,inv(b)) |
((a ^* (b ^* inv(b))) === (z ^* inv(b))) ==| andI(forallE(multInverseElement)(b),bNotZero) |
((a ^* one) === (z ^* inv(b))) ==| forallE(multNeutralElement)(a) |
(a === (z ^* inv(b))) ==| forallE(implE(zeroDivisorLemma)(g => axioms))(inv(b)) |
(a === z) ==| aNotZero |
((a !== z) && (a === z)) ==| trivial |
(a !== a) ==| trivial |
BooleanLiteral(false)
}
}
}
代码编译但Welder说:
SMT求解器无法证明该属性:false
来自假设: (mult(a,b)== zero())== false。
我说我没有将正确的功能传递给构造。有人可以解释我应该写什么才能成功?是否与类型有关,即(Theorem,Goal)=>尝试[证人]?我需要提供一个定理并证明目标吗?
还有什么可以证明是假的?我应该使用某种含义介绍吗?
答案 0 :(得分:1)
错误说的是,它无法推断出与你所展示的内容的矛盾。实际上,你没有在<div id="root">
<task-list></task-list>
<template id="my-parent">
<table>
<thead>
<tr>
<th>Name</th>
<th>id</th>
</tr>
</thead>
<tbody>
<tr is="task" v-for="item in items" :item="item"></tr>
</tbody>
</table>
</template>
<template id="my-child">
<tr>
<td></td>
<td>{{ item.name }}</td>
<td>{{ item.id }}</td>
</tr>
</template>
</div>
<script>
Vue.component('task-list', {
template: '#my-parent',
data: function() {
return {
items: []
}
},
methods: {
getMyData: function(val) {
var _this = this;
$.ajax({
url: 'vuejson.php',
method: 'GET',
success: function (data) {
console.log(data);
_this.items = data;
},
error: function (error) {
alert(JSON.stringify(error));
}
})
}
},
mounted: function () {
this.getMyData("0");
}
});
Vue.component('task', {
template: '#my-child',
props: ['item'],
data: function() {
return {
item: {}
}
}
});
new Vue({
el: "#root",
});
</script>
的身体中表现出矛盾。证明notI
是正确的推导,但您仍需要通过与(mult(a, b) == zero()) == false
结合来明确显示矛盾。
这样的事情会起作用吗?
hyp