说我有以下关系:
Inductive my_relation: nat -> Prop :=
constr n: my_relation n.
我想证明以下内容:
Lemma example:
(forall n, my_relation n -> my_relation (S n)) -> (exists n, my_relation n) -> exists n, my_relation (S n).
Proof.
intros.
介绍之后,我有以下环境:
1 subgoal
H : forall n : nat, my_relation n -> my_relation (S n)
H0 : exists n : nat, my_relation n
______________________________________(1/1)
exists n : nat, my_relation (S n)
我的问题是:是否有可能在存在量词下重写H?如果没有,是否有解决此类问题的策略(这个特定的问题不是真正相关,而是您需要使用另一个exists
证明exists
的问题,以及非正式地,您可以«推论»一种将假设中的exists
重写为目标中的exists
的方法?
例如,如果我尝试rewrite H in H0.
我有错误(Error: Cannot find a relation to rewrite.
)。
答案 0 :(得分:4)
在假设中操纵存在量化的标准方法是使用destruct
或更好更简单的destruct H0 as (n, H0).
destruct H0 as [n H0].
destruct H0 as (n & H0).
来证明该属性。
您可以使用以下语法之一为变量命名:
intros H (n & H0).
请注意,您还可以使用intro-patterns破坏一个假设。
H
您甚至可以直接在H0
中应用intros H (n & H0%H). exists n. assumption.
。
$("#mainTable").dataTable();
/* CREATE TABLE FITURE */
$('.submitButton').click(function() {
function getTableList() {
var addTable = '<div class="tab-pane" id="folder' + localStorage.Index + '">' +
'<div class="zf-table">' +
'<table id="table' + localStorage.Index + '" class="table table-bordered table-hover myFade">' +
'<thead>' +
'<tr>' +
'<th style="border-color:rgb(221, 221, 221);"></th>' +
'<th>Audience Name</th>' +
'<th>Type</th>' +
'<th>Size</th>' +
'<th>Date Created</th>' +
'<th>Action</th>' +
'</tr>' +
'</thead>' +
'</table>' +
'</div>' +
'</div>';
return addTable;
}
if (true) {
/** INDEX FOR INCREMENT ID **/
if (typeof(Storage) !== "undefined") {
if (localStorage.Index) {
localStorage.Index = Number(localStorage.Index) + 1;
} else {
localStorage.Index = 1;
}
} // if storage
var resultTable = JSON.parse(localStorage.getItem("tableList"));
if (resultTable == null) {
resultTable = [];
}
let newtableHTML = getTableList();
resultTable.push({
table: newtableHTML
});
// save the new resultTable array
localStorage.setItem("tableList", JSON.stringify(resultTable));
/* append Table baru */
$('.tab-content').append(newtableHTML);
var newTable = $("#table" + localStorage.Index).dataTable();
alert("sucess create table");
} else {
alert("Failed create Table");
}
}); // submitButton func
//on init fill the table-content
var resultTable = JSON.parse(localStorage.getItem("tableList"));
if (resultTable != null) {
//get the nav reference in DOM
let tableContent = $(".tab-content");
//clear the html contents
tableContent.html('');
for (var i = 0; i < resultTable.length; i++) {
var items = resultTable[i];
$(".tab-content").append(items.table);
}
} else {
let inititalTable = [];
inititalTable.push({
table: $('div.tab-content').html()
});
localStorage.setItem("tableList", JSON.stringify(inititalTable));
}
Software Foundations以清晰的方式解释了这一点。
答案 1 :(得分:1)
我找到了一种方法,我将在此处发布任何类似的问题。
可以反转exists
假设,以便实例化&#34;例如,量化变量,证明可以通过以下方式完成:
inversion H0.
apply H in H1.
exists x.
apply H1.
Qed.
在inversion H0
之后,我们在环境中:
1 subgoal
H : forall n : nat, my_relation n -> my_relation (S n)
H0 : exists n : nat, my_relation n
x : nat
H1 : my_relation x
______________________________________(1/1)
exists n : nat, my_relation (S n)
我们现在可以使用x
。