Isabelle 用粘合条件表示集合
我试图在Isabelle中表示投影椭圆曲线加法:Isabelle 用粘合条件表示集合,isabelle,Isabelle,我试图在Isabelle中表示投影椭圆曲线加法: function proj_add :: "(real × real) × bit ⇒ (real × real) × bit ⇒ (real × real) × bit" where "proj_add ((x1,y1),l) ((x2,y2),j) = ((add (x1,y1) (x2,y2)), l+j)" if "delta x1 y1 x2 y2 ≠ 0" | "proj_add ((x1,y1),l) ((x2,y2)
function proj_add :: "(real × real) × bit ⇒ (real × real) × bit ⇒ (real × real) × bit" where
"proj_add ((x1,y1),l) ((x2,y2),j) = ((add (x1,y1) (x2,y2)), l+j)"
if "delta x1 y1 x2 y2 ≠ 0"
| "proj_add ((x1,y1),l) ((x2,y2),j) = ((ext_add (x1,y1) (x2,y2)), l+j)"
if "delta' x1 y1 x2 y2 ≠ 0"
到目前为止,有人教我如何进行条件定义,并建议我对{0,1}中的值使用位类型。这是第三个表示问题。假设以下定义:
definition "e_aff = {(x,y). e' x y = 0}"
definition "e_circ = {(x,y). x ≠ 0 ∧ y ≠ 0 ∧ (x,y) ∈ e_aff}"
投影椭圆曲线的定义如下(原始定义见第12、13页):
取两份沿e_环粘贴的e_aff,同构τ。我们写(P,i)∈ 和我在一起∈ P的映像的{0,1}∈ e_aff在e中使用e_aff的第1份副本。粘合条件为P∈ e_circ,(P,i)
=(τP,i+1)
我应该如何在Isabelle中表现这一集?我的想法是,这应该是一个商集,等价类由一个或两个元素组成。但是,我如何限制上述函数在这些等价类上工作呢
编辑
等价关系是通过将该关系与or条件组合而成,使其具有自反性。以下是我所遵循方法的示意图:
definition "proj_add_class c1 c2 =
(((case_prod (λ x y. the (proj_add x y))) `
(Map.dom (case_prod proj_add) ∩ (c1 × c2)))
// gluing)"
definition "proj_addition c1 c2 = the_elem(proj_add_class c1 c2)"
下面是我采用的方法的示意图:
definition "proj_add_class c1 c2 =
(((case_prod (λ x y. the (proj_add x y))) `
(Map.dom (case_prod proj_add) ∩ (c1 × c2)))
// gluing)"
definition "proj_addition c1 c2 = the_elem(proj_add_class c1 c2)"
在这里,我跟随答案。在Isabelle中,存在一些处理集合论商的基础设施。但是,我只在使用商类型声明商类型以及在原始类型和商类型之间传输结果(可以使用传输半自动)的上下文中使用了它。显然,有一篇关于使用Isabelle的集合论框架使用商结构的最佳实践的会议论文:
L.C.Paulson。在等价类上定义函数。ACM Trans。关于计算逻辑7 4(2006),658–675。
根据您决定采取的方法,可以在理论中找到一些相关的基础结构:关系.thy
,等价关系.thy
,商。thy
和提升。thy
@xanonec非常感谢您的帮助Isabelle中有一些处理集合论商的基础设施。但是,我只在使用商类型声明商类型以及在原始类型和商类型之间传输结果(可以使用传输半自动)的上下文中使用了它。显然,有一篇关于使用Isabelle的集合论框架使用商结构的最佳实践的会议论文:L.C.Paulson。在等价类上定义函数。ACM Trans。关于计算逻辑7 4(2006),658–675。
根据您决定采取的方法,可以在理论中找到一些相关的基础结构:关系.thy
,等价关系.thy
,商.thy
和提升。非常感谢您的帮助