[英]Rev.v le_antisymmetric
我到了這一點:
Theorem le_antisymmetric :
antisymmetric le.
Proof.
unfold antisymmetric. intros a b H1 H2. generalize dependent a.
induction b as [|b' IH].
- intros. inversion H1. reflexivity.
- intros.
輸出:
b' : nat
IH : forall a : nat, a <= b' -> b' <= a -> a = b'
a : nat
H1 : a <= S b'
H2 : S b' <= a
------------------------------------------------------
a = S b'
我的計划是使用le
傳遞性:
a <= b-> b <= c-> a <= c
並替換a:= a,b:=(S b')和c:= a。
因此,我們將獲得:
a <=(S b')->(S b')<= a-> a <= a
我將H1和H2用作所需的兩個假設,並得到Ha:a <= a。 然后對其進行反演,並獲得構造a = a的唯一方法。
但是,我應該使用哪種語法將2個假設應用於傳遞性以獲得Ha?
您對b
第一次歸納似乎是不必要的。 考慮le
:
Inductive le (n : nat) : nat -> Prop :=
le_n : n <= n | le_S : forall m : nat, n <= m -> n <= S m
相反,您應該首先檢查H1
。 如果是le_n
,那么就相等了,您就完成了。 如果是le_S
,那么大概是不可能的。
intros a b [ | b' H1] H2.
- reflexivity.
這給我們留下了
a, b, b' : nat (* b is extraneous *)
H1 : a <= b'
H2 : S b' <= a
______________________________________(1/1)
a = S b'
現在 ,傳遞性變得有意義。 它可以給您S b' <= b'
,這是不可能的。 您可以使用歸納法導出矛盾(我認為),也可以使用現有的引理。 因此,整個證明就是如此。
intros a b [ | b' H1] H2.
- reflexivity.
- absurd (S b' <= b').
+ apply Nat.nle_succ_diag_l.
+ etransitivity; eassumption.
最后一點是使用傳遞性的一種方法。 etransitivity
將目標R xz
轉換為R x ?y
和R ?yz
,以獲得新的存在變量?y
。 eassumption
然后找到與該模式匹配的假設。 在這里,具體來說,您將獲得目標S b' <= ?y
和?y <= b
,分別由H2
和H1
填充。 你也可以給中間值明確,它可以讓你放下e
xistential前綴。
transitivity a; assumption.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.