You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Agda中实现符合指定类型的两个Fin函数的求和?

在Agda中实现两个Fin函数的求和

要实现这个类型的sum函数,核心是利用Fin类型在自然数加法下的不交并特性:Fin (a + c)的元素必然属于两类——要么是从Fin a嵌入的元素,要么是从Fin c嵌入的元素。我们只需要对这两类元素分别应用对应的函数,再将结果嵌入到目标类型即可。

首先补充必要的导入(包含Fin的嵌入和拆分函数):

open import Data.Fin hiding (_+_)
open import Data.Nat
open import Data.Fin using (inject₁; inject₂; split)

然后实现sum函数:

sum : (a b c d : ℕ) → (x : Fin a → Fin b) → (y : Fin c → Fin d) → (Fin (a + c) → Fin (b + d))
sum a b c d x y z with split z
... | inj₁ i = inject₁ (x i)
... | inj₂ j = inject₂ (y j)

代码说明

  • split z:将Fin (a + c)类型的元素z拆分为两种情况:inj₁ i(i是Fin a的元素)或inj₂ j(j是Fin c的元素)
  • 对于inj₁ i:用函数x处理i得到Fin b的结果,再通过inject₁嵌入到Fin (b + d)中
  • 对于inj₂ j:用函数y处理j得到Fin d的结果,再通过inject₂嵌入到Fin (b + d)中

内容的提问来源于stack exchange,提问作者Ruben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:17:05