我无法证明Word.thy中的word_cat
函数是关联的。这个事实似乎在单词理论本身中缺失(或者至少find_theorems
并且对理论的手动浏览显示没有任何相关性),但我需要这个引理来进行另一个定理的证明。
更具体地说,对于以下引理:
lemma word_cat_assoc:
fixes b1 :: "'a::len word" and b2 :: "'b::len word" and b3 :: "'c::len word"
shows "word_cat b1 (word_cat b2 b3) = word_cat (word_cat b1 b2) b3"
sorry
我甚至不确定如何最好地继续这里。我已经使用find_theorems
来确定引理word_eq_iff
和word_cat_bl
可能是有意义的,但任何试图继续这些引理的尝试都会造成巨大的混乱。有人有任何提示吗?
更一般地说,在我看来,使用Word库本身非常尴尬,我很感激使用它的任何提示。我在我的证明中有几点需要对某些word_split w
w
的结果进行案例分析。使用case_tac
会导致问题,因为字长类型变量发明了新的类型变量。相反,我不得不采用环形交叉形式的案例分析,首先引入具有明确长度的subgoal_tac
的剪切,如下所示:
apply(subgoal_tac "∃b3::8 word. ∃b4::8 word. word_split b1 = (b3, b4)")
然后继续使用这个事实。据推测,有一种更好的方式来使用图书馆吗?