首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在已知的情况下应用decidable?

如何在已知的情况下应用decidable?
EN

Stack Overflow用户
提问于 2014-05-31 18:16:15
回答 1查看 68关注 0票数 1

我正在尝试证明二进制排序树插入。我正在进行验证,环境是这样的:

代码语言:javascript
复制
  -- new rx : ℕ

  Goal: SortedTree (node leaf x (node (insertTree new rl) rx rr))
  Have: SortedTree (insertTree new (node rl rx rr) | new ≤? rx) 
  ————————————————————————————————————————————————————————————
  new≤rx : new ≤ rx

注意| new ≤? rx,它的意思是“我需要知道值才能进一步减少它”。

如何应用新的≤rx?

insertTree的定义如下:

代码语言:javascript
复制
  insertTree : (a : ℕ) →  (t : Tree ℕ) → Tree ℕ
  insertTree a (node l x r) with a ≤? x
  insertTree a (node l x r) | yes p = node (insertTree a l) x r
  insertTree a (node l x r) | no ¬p = node l x (insertTree a r)

我知道新≤的价值吗?rx (it's yes new≤rx),实际上我现在被new ≤? x with了:

代码语言:javascript
复制
  ... | no  ¬n≤x with new ≤? rx
  ...        | yes new≤rx = {!proof⟦insertTree⟧ (node rl rx rr)  (sorted-rhs st) new !}
  ...        | no  p = {!!} 

那么,我如何告诉agda new ≤? rx的值是已知的,它应该与insertTree a (node l x r) | yes p = node (insertTree a l) x r一起使用呢

我试着使用重写

代码语言:javascript
复制
             where prf : (new ≤? rx ≡ yes new≤rx) → SortedTree (node (insertTree new rl) rx rr)
                   prf p1 rewrite p1 = {!proof⟦insertTree⟧ (node rl rx rr)  (sorted-rhs st) new !}

但即使我有p1 : new ≤? rx ≡ yes new≤rx,agda也忽略了它,说我有SortedTree (insertTree new (node rl rx rr) | new ≤? rx)

EN

回答 1

Stack Overflow用户

发布于 2014-06-01 04:42:33

我设法通过检查+重写得到了它。

代码语言:javascript
复制
       proof⟦insertTree⟧ (node leaf x (node rl rx rr)) st new with new ≤? x 
       ... | yes p = st-node (empty new) (sorted-rhs st) p (st-cmp-rhs st)
       ... | no  ¬n≤x with new ≤? rx |  inspect (_≤?_ new) rx
       ...               | yes p | PropEq.[ eq ] = {!!}
              where prf : (new ≤? rx ≡ yes p) →  SortedTree (insertTree new (node rl rx rr)) → SortedTree (node (insertTree new rl) rx rr)
                    prf p0 p rewrite p0 = p

请注意,prf subproof接受SortedTree (insertTree new (node rl rx rr))类型的p并返回p本身,但由于重写,返回的类型被更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23968804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档