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

基于Lean/mathlib的多边形链定义问题及fin类型疑惑

借助MathLib形式化几何语句的定义问题及解决

问题背景

我尝试借助mathlib库形式化若干几何语句,但在定义表达上遇到了问题。

最初的定义代码

import analysis.convex.basic
import analysis.convex.segment
import algebra.module.basic
import data.set.basic
import data.list.basic
import data.fin.tuple.basic
open set

section polygon
variables R M : Type*
variables [ordered_semiring R] [add_comm_monoid M] [module R M]

definition PolygonChain {n : ℕ} (V: list (M, M)) (P : set M):
  ∀ pair ∈ V, (segment pair.0 pair.1) ⊆ P 
end polygon

我的意图是:给定向量空间中的顶点元组列表(多边形链的端点)和一个点集(代表整个多边形链),要求每个元组的起始顶点与结束顶点之间的线段都包含在该点集中。

尝试的其他定义及困惑

我尝试了多种定义方式,发现自己对fin相关类型存在误解,希望能得到详细讲解。曾尝试的另一种定义如下:

definition PolygonChain {n : ℕ} (V: vector M n) (P : set M): 
  ∀ m ∈ (fin n), (segment (vector.nth m) (vector.nth m+1)) ⊆ P 

我知道forall量词仅适用于类型(无法真正遍历0 < n的范围),且“某元素属于某类型”的写法并不合法。此外,我想了解如何在Lean中表达关于向量和列表的范围及特定元素的通用语句。

最终解决的定义

编辑:感谢Eric的解答,我找到了第二种定义的解决方案:

definition AltPolygonChain {n : ℕ} (v: vector M (n+1)) (P : set M): Prop := 
∀ m : fin (n), (segment R (vector.nth v m) (vector.nth v (m+1))) ⊆ P

内容的提问来源于stack exchange,提问作者n-0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:20:32