【问题标题】:How to define observational equality in Agda如何在 Agda 中定义观察相等
【发布时间】:2021-10-13 03:55:21
【问题描述】:

假设我有一个渲染函数:

rasterize : ℕ → ℕ → Tile → List (List Color

我需要证明这个说法:

如果rasterize w h t1 = rasterize w h t2 那么t1 ≡ t2

换句话说,如果 t1 和 t2 在相同的宽度和高度下呈现相同的值,那么它们是相等的。

我不知道在agda中怎么说,我想出了以下内容:

obs-eq : ∀ (t₁ t₂ : Tile) (w h : ℕ) →
  rasterize w h t₁ ≡ rasterize w h t₂ → t₁ ≡ t₂

但我怀疑这不是我的意思,通过谷歌搜索我认为我需要定义一个比较渲染值的运算符?还涉及某种 sigma 类型?

【问题讨论】:

    标签: equality agda injective-function


    【解决方案1】:

    你的括号是错误的:当你写

    obs-eq : 
      ∀ (t₁ t₂ : Tile) (w h : ℕ) →
      rasterize w h t₁ ≡ rasterize w h t₂ → 
      t₁ ≡ t₂
    

    这意味着如果我给你任何两个瓦片和任何两个维度,使得瓦片在这些维度上光栅化为同一图片,那么你可以证明它们是相等的。

    考虑一下如果我为你选择w = 0h = 0 会发生什么...

    但你想说的是,如果我给你任何两个图块,并证明对于任何两个维度它们会光栅化到同一张图片,那么你可以证明瓦片相等:

    obs-eq : 
      ∀ (t₁ t₂ : Tile) →
      (∀ w h → rasterize w h t₁ ≡ rasterize w h t₂) → 
      t₁ ≡ t₂
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多