簡體   English   中英

如何在抽水引理中分解長度不等式假設?

[英]How to split the length inequality hypothesis in the pumping lemma?

這是Software Foundations的5星練習。

Lemma pumping : forall T (re : @reg_exp T) s,
  s =~ re ->
  pumping_constant re <= length s ->
  exists s1 s2 s3,
    s = s1 ++ s2 ++ s3 /\
    s2 <> [] /\
    forall m, s1 ++ napp m s2 ++ s3 =~ re.
Proof.
  intros T re s Hmatch.
  induction Hmatch
    as [ | x | s1 re1 s2 re2 Hmatch1 IH1 Hmatch2 IH2
       | s1 re1 re2 Hmatch IH | re1 s2 re2 Hmatch IH
       | re | s1 s2 re Hmatch1 IH1 Hmatch2 IH2 ]; simpl; intros.
  - omega.
  - omega.
  -
1 subgoal
T : Type
s1 : list T
re1 : reg_exp
s2 : list T
re2 : reg_exp
Hmatch1 : s1 =~ re1
Hmatch2 : s2 =~ re2
IH1 : pumping_constant re1 <= length s1 ->
      exists s2 s3 s4 : list T,
        s1 = s2 ++ s3 ++ s4 /\
        s3 <> [ ] /\ (forall m : nat, s2 ++ napp m s3 ++ s4 =~ re1)
IH2 : pumping_constant re2 <= length s2 ->
      exists s1 s3 s4 : list T,
        s2 = s1 ++ s3 ++ s4 /\
        s3 <> [ ] /\ (forall m : nat, s1 ++ napp m s3 ++ s4 =~ re2)
H : pumping_constant re1 + pumping_constant re2 <= length (s1 ++ s2)
______________________________________(1/1)
exists s0 s3 s4 : list T,
  s1 ++ s2 = s0 ++ s3 ++ s4 /\
  s3 <> [ ] /\ (forall m : nat, s0 ++ napp m s3 ++ s4 =~ App re1 re2)

我花了太多時間試圖將H分解,只是意識到盡管花了一天半的時間,但我對不平等的工作原理的許多假設都被證明是錯誤的。 昨晚我有一些很棒的主意,現在這些主意已被丟棄,這使我對這個問題的困惑比以往任何時候都更加混亂。 看來,過去兩天我只是在學習代數。

我打算如果答案原來是我需要匹配的是非常尷尬s S或length s S或pumping_constant re因為我無法找到一種方法,通過在那里推。

強烈設置此問題的方式表明,應以某種方式拆分H以進行歸納。 我仍然對此表示懷疑。

是的,您需要拆分H才能繼續。

含糊的提示:進行 Search (_ + _ <= _ + _). 並尋找引人注目的定理。

暗示:

Nat.add_le_cases: forall nmpq : nat, n + m <= p + q -> n <= p \\/ m <= q

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM