调整依赖类型的函数空间

时间:2018-01-17 20:32:18

标签: dependent-type lean

假设我们有以下定义来表示clopen区间<a, b)中的有界整数。

def zbound (x₁ x₂ : ℤ) :=
  { n : ℤ // x₁ ≤ n ∧ n < x₂ }

现在我想要一个从zbound x₁ x₂bool的函数空间,其中包含一个证明x₁ < x₂,以便正确表示范围。

structure bounded_f (x₁ x₂ : ℤ) :=
  (map : zbound x₁ x₂ → bool)
  (prf : x₁ < x₂)

问题现在如下。我希望有一个类别的更新功能,将bounded_f视为map并更新它以返回特定值true的{​​{1}},否则,这是重要的是,将功能委托给原始x

bounded_f

结果函数应该有一个修改过的定义空间,即它不再在从def inject_true {x₁ x₂} (x : ℤ) (f : bounded_f x₁ x₂) : bounded_f (min x₁ x) (max x x₂) := ⟨λ⟨x', prf⟩, if x = x' then true else f.map ⟨x', sorry⟩, _⟩ x₁的有界范围内运行,而是在从x₂到{{1}的范围内运行}}。直观地说,这只是扩展了新更新所需的范围。

遗憾的是,在min x₁ x小于下限或大于上限的情况下,我不知道应该放什么而不是max x x₂。我的问题是精益要我展示:

sorry

然而情况并非如此,因为我更希望扩展范围而不是原始范围。立即应用x是否有问题,我是否需要......以某种方式修改它?

0 个答案:

没有答案