【发布时间】:2021-04-21 15:51:47
【问题描述】:
有一个树数据结构和一个flip 方法。我想写一个证明,如果您将flip 方法应用于一棵树两次,您将获得初始树。我有一个目标
⊢ flip_mytree (flip_mytree (mytree.branch t_ᾰ t_ᾰ_1 t_ᾰ_2)) = mytree.branch t_ᾰ t_ᾰ_1 t_ᾰ_2
我想用flip_mytree 的结果替换flip_mytree (mytree.branch t_ᾰ t_ᾰ_1 t_ᾰ_2)。我该怎么做?或者如何将(mytree.branch a l r) := mytree.branch a (flip_mytree r) (flip_mytree l) 假设从flip_mytree 函数定义中提取到我的定理上下文中?
我读过rw、apply 和have 战术,但它们在这里似乎没用。
下面是一个完整的例子。
universes u
inductive mytree (A : Type u) : Type u
| leaf : A → mytree
| branch : A → mytree → mytree → mytree
def flip_mytree {A : Type u} : mytree A → mytree A
| t@(mytree.leaf _) := t
| (mytree.branch a l r) := mytree.branch a (flip_mytree r) (flip_mytree l)
theorem flip_flip {A : Type u} {t : mytree A} : flip_mytree (flip_mytree t) = t :=
begin
cases t,
end
【问题讨论】:
-
不确定你学到了多少;你遇到过
simp吗?
标签: proof theorem-proving lean