理论计算机科学

理论计算机科学家和相关领域的研究人员的问答

2
Coq / Agda中经过认证的编译器和优化
我对以Martin-Löf类型理论(即Coq / Agda)形式化的经过验证的编译器感兴趣。目前,我已经写了一个小玩具示例。因此,我可以证明我的优化是正确的。例如,可以消除具有零的加法运算,即“ x + 0”之类的表达式。 有没有用常规编译器难以执行的优化,可以作为一个很好的例子?是否可以证明程序的某些属性,这些属性允许使用常规编译器无法执行的优化?(即没有定理证明者可能的推论) 我将对这个想法或示例以及该主题的参考感兴趣。 一个相关问题: 编译器正确性证明 编辑:正如Tsuyoshi在评论中很好地指出的那样:我正在寻找优化技术,如果使用(例如)C编写编译器,则难以实现,但是如果使用(例如)Coq编写编译器,则更容易实现。随着Agda编译为C(通过haskell),有可能在Agda中也可以在C中完成所有可能的工作。定理证明如Coq / Agda的唯一好处可能是可以验证编译器和优化。 edit2:按照Vijay DI的建议,写我到目前为止所读的内容。我主要关注INRIA的Xavier Leroy和CompCert项目(我认为有80页的论文很好阅读)。第二个兴趣是Anton Setzer在交互式程序上的工作。尽管我也许他的工作可以用来证明有关IO程序和IO程序的双重仿真的特性。感谢您提及Sewell。我在ICFP听到了他的演讲“丛林传说”,并阅读了2-3篇论文。但是我还没有专门研究他和他的合著者的作品。 我还没有找到从哪里开始,也没有找到关于优化编译器的论文。例如,在经过验证的编译器设置中,哪些优化最有趣。


2
我们如何将“ ”表示为一阶公式?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为理论计算机科学堆栈交换的主题。 7年前关闭。 我们如何将“ ”表示为一阶公式?P=P小号P一个CËP=PSPACEP=PSPACE 算术层次结构的哪个级别包含此公式(以及包含该公式的层次结构的当前最低已知级别是什么?)? 有关参考,请参阅Lipton的此博客文章。

1
(密码)问题可通过多项式算术步骤求解
在1979年Adi Shamir [1]的论文中,他证明了分解可以通过多项式的算术步骤完成。在直线程序(SLP)的背景下,Borwein和Hobart最近的论文[2]中重申了这一事实,并引起了我的注意。 由于我很惊讶地阅读了这篇文章,所以我有以下问题:是否还有其他密码问题或其他相关问题,这些问题可以通过SLP的多项式步数来解决,并且目前尚不知道可以解决。在“常规”经典计算机上有效地运行? [1] Adi Shamir,因式分解O (对数n )Ø(日志⁡ñ)O(\log n)算术步骤。信息处理快报8(1979)S. 28–31 [2]彼得· 鲍尔文( Peter Borwein),乔·霍巴特(Joe Hobart),直线计划中的除法超常能力,《美国数学月刊》,第1期。119,No.7(2012年8月9日),第584-592页

1
CTL *和微演算
众所周知,模态μμ\mu-演算是表达树/图属性的最具表现力的时态逻辑之一,而CTL *的表现力远小于μμ\mu-结石。 在这里我想问一个例子 μμ\mu-calculus公式,尽可能简单,在CTL *中无法表达,并希望对其含义进行解释(定点公式很快变得难以理解)。对于“具体”简单示例的任何良好参考也将是很棒的! 先感谢您

1
所有顶点匹配的最小生成树
我遇到了这个匹配问题,因此我无法写下多项式时间算法。 让 P,QP,QP, Q 是具有顶点集的完整加权图 PVPVP_V 和 QVQVQ_V分别在哪里 |PV|=|QV|=n|PV|=|QV|=n|P_V| = |Q_V|=n。另外,让wPwPw_P 和 wQwQw_Q 是边上的权重函数 PPP 和 QQQ, 分别。 对于双射 f:PV→QVf:PV→QVf: P_V \to Q_V 我们修改 QQQ 以以下方式:如果 f(p)=qf(p)=qf(p) = q 和 f(p′)=q′f(p′)=q′f(p^\prime) = q^\prime 与 wP(p,p′)>wQ(q,q′)wP(p,p′)>wQ(q,q′)w_P(p, p^\prime) > w_Q(q, q^\prime) 然后设置 wQ(q,q′)=wP(p,p′)wQ(q,q′)=wP(p,p′)w_Q(q, q^\prime) = w_P(p, p^\prime)。将此修改图表示为QfQfQ_f 然后让 W(Qf)W(Qf)W(Q_f) 是最小生成树的权重之和 QfQfQ_f。 问题:最小化W(Qf)W(Qf)W(Q_f) …

1
一个简单的证明,证明系统F()具有可判定性
假设我们不知道Joe B.Wells从1994年得出的结果,即系统F(AKA)中的可打字性和类型检查都无法确定 λ2λ2\lambda 2)。在Barendregt的Lambda Calcula with types(1992)中,我发现由于Malecki 1989的证明,类型检查意味着可打字性。这是因为 存在 σσ\sigma 这样 M:σM:σM:\sigma 相当于 (λxy.y)M:(α→α)(λxy.y)M:(α→α)(\lambda xy.y)M : (\alpha\rightarrow\alpha) (这是因为如果某个术语在系统F中是可键入的,则其所有子术语都可以。) 反过来有没有简单的证明呢?就是说,证明可打字性意味着在系统F中进行类型检查?

1
“可验证的信息”:这是一个已知概念吗?
在我看来,以下内容似乎很自然,我想知道是否已在某处对其进行了研究 考虑一组语言。然后当 st中有,称为“可验证信息”X ⊂2{ 0 ,1}∗X⊂2{0,1}∗\mathsf{X} \subset 2^{\lbrace 0, 1 \rbrace^*}ķ⊂ { 0 ,1}ωK⊂{0,1}ωK \subset \lbrace 0, 1 \rbrace^\omegaXX\mathsf{X}大号∈ XL∈XL \in \mathsf{X} (i)给定,每个前缀都在X ∈ 大号x∈Lx \in LXxx大号LL (ii)给定,每个前缀都在F∈ ķf∈Kf \in KFff大号LL (iii)给定,对于,的长度前缀在之外F∉ ķf∉Kf \notin KñnnFff大号LLÑ > > 0n>>0n >> 0 例如,是可验证的信息(如果是可计算的)。这可以通过构造一种算法来执行,该算法对长度为所有字符串进行验证,并收集通过验证的那些字符串的长度为的前缀。对于,唯一保留的前缀是正确的前缀{ ˚F}{f}\lbrace f \rbrace[RR\mathsf{R}Fffñnn米mmÑ > >米n>>mn >> m 但是,如果是可验证的信息,则并不意味着每个都是可计算的:例如,考虑ķķK[R[R\mathsf{R}F∈ ķF∈ķf …

2
有没有找到第i个重排的有效算法?
这是这个问题的背景。我和朋友正在玩一个游戏,每个人都需要给别人一些礼物。为了确定谁应该给谁礼物,我们决定抽签。但是问题是,某人最终可能会给自己礼物,这并不好笑。您可以看到此类不幸人员的预期人数为1,因此这种情况经常发生。 为此,重新安排似乎是一个很好的选择。如果我可以公平地产生一种重新安排,那么我就可以选择一种重新安排,并用它来决定谁给谁礼物。 随机重排产生可以用拉斯维加斯方法完成。但是问题是,它只有预期的多项式运行时间。因此我遇到了发现第i个重排的问题。如果我可以在[1,D_n]中随机选择一个i,并使用一些最坏情况的多项式时间(有效)算法来获取第i个重排,那么就可以了。

3
了解最小不动点逻辑
为了更好地理解论文,我试图简要了解最小定点逻辑。有一些地方让我陷入困境。 如果 G = (V,E)G=(V,E)G = (V,E) 是图 Φ (P)= { (一,b )| G ^ ⊨ ë(一,b )∨ P(一,b )∨ ∃ Ž(E(a ,z)∧ P(z,b ))}Φ(P)={(a,b)∣G⊨E(a,b)∨P(a,b)∨∃z(E(a,z)∧P(z,b))} \Phi(P) = \{(a,b) \mid G \models E(a,b) \lor P(a,b) \lor \exists z (E(a,z) \land P(z,b)) \} 是二元关系的运算符 PPP。我不明白为什么最不固定的点P∗P∗P^* 的 PPP 是...的传递闭包 ËEE。该示例摘自有限模型理论及其应用(第60页)。 用最少固定的指针运算符扩展一阶逻辑时,我不明白为什么关系符号 小号一世SiS_i在公式中需要为正。正意味着每次发生小号一世SiS_i 公式中的否定符号数为偶数。 …

1
Martin-Löf类型理论会提高编写可证明正确代码的能力吗?
这篇文章引用了Curry-Howard同构和Martin-Löf类型理论。 该帖子声称在数学的描述语言和计算机编程的基于操作的语言之间存在未来的“统一”。 我的问题是: 这些想法会提高(通过语言)编写可证明正确代码的能力吗? 在理论层面上是否已经发现了MLTT的全部含义? 这篇文章是否描述了在COQ或Agda中无法完成的任何事情?

1
具有高成功概率的Grover算法的最优性
众所周知,函数有界误差量子查询复杂度是。现在的问题是,如果我们希望我们的量子算法以概率而不是通常的成功地为每个输入成功。现在,就而言,合适的上限和下限是什么?OR(x1,x2,…,xn)Ø[R(X1个,X2,…,Xñ)OR(x_1,x_2,\ldots, x_n)Θ(n−−√)Θ(ñ)\Theta(\sqrt{n})1−ϵ1个-ϵ1-\epsilon2/32/32/3ϵϵ\epsilon 立即,通过重复Grover算法来查询此任务就足够了。但是从我的回忆中,这即使是普通的Grover算法,如果谨慎运行(即对于适当的迭代次数)也可以仅通过O(\ sqrt {n})就可以达到)之类的效果迭代。因此,使用它可以改善所有\ epsilon。另一方面,我不希望\ Omega(\ sqrt {n})是非常小的\ epsilon的正确答案。O(n−−√log(1/ϵ))Ø(ñ日志⁡(1个/ϵ))O(\sqrt{n} \log(1/\epsilon))ϵ=O(1/n)ϵ=Ø(1个/ñ)\epsilon=O(1/n)O(n−−√)Ø(ñ)O(\sqrt{n})ϵϵ\epsilonΩ(n−−√)Ω(ñ)\Omega(\sqrt{n})ϵϵ\epsilon 不过,我很感兴趣,看看有什么可以在以下方面显示依赖性上和不同范围的下限尤其是当很小说或对于大。ϵϵ\epsilonϵϵ\epsilonϵϵ\epsilonϵ=exp(−Ω(n))ϵ=经验值⁡(-Ω(ñ))\epsilon= \exp(-\Omega(n))ϵ=1/nkϵ=1个/ñķ\epsilon=1/n^kkķk (给出一些背景信息,我遇到的一般现象是在量子查询复杂度的背景下。)

3
是否可以计算两个函数是否在扩展上相等?
如果您有两个实现不同排序算法的函数,那么是否可以通过源代码推断它们都具有相同的外部属性?意味着它们都将具有可能的未排序序列作为输入并具有已排序序列作为输出?这些外部属性可以通过什么方式由源代码确定?您将如何描述这些外部属性?将使用什么表示法? 可以通过显式定义外部属性(例如在类型系统中)来使外部属性已知,但是我想知道是否可以隐式完成。还是在某种程度上理论上无法推断出这种语义?我对这是否适用于任意函数(不仅是排序算法)感兴趣,并假设函数之类的东西总是会停滞并且没有副作用。 我应该看看指称语义还是无关的? 我对这方面的研究以及用于描述可能有助于我的文献检索的主题的不同术语感兴趣。

2
证明系统背后的直觉
我正在尝试了解有关PTIME的p-最优证明系统和逻辑的文章。本文中有一个称为证明系统的概念,但我没有得到直觉: Σ = { 0 ,1 }Σ={0,1}\Sigma = \{0,1\} ...我们认同的子集的问题在。问QQΣ∗Σ∗\Sigma^* 我认为直觉是我们用(例如无向图)编码某种结构,而这些结构的子集就是问题(例如平面图)。Σ∗Σ∗\Sigma^* 问题的证明系统是一个在多项式时间内计算的的射影函数。问⊂Σ∗Q⊂Σ∗Q \subset \Sigma^*P:Σ∗→ QP:Σ∗→QP:\Sigma^* \to Q 现在可以说是特定结构中所有可能模型的集合(例如,所有无向图)。但这没有意义,因为为什么将无向图映射到子集上?它可以被编码为图灵机,但这也没有意义...Σ∗Σ∗\Sigma^* 有任何想法吗?

2
下基本递归函数的复杂性结果?
克里斯·普莱斯(Chris Pressey)关于基本递归函数的有趣问题引起了我的兴趣,我正在探索更多并且无法在网络上找到该问题的答案。 该基本递归函数很好地对应指数谱系,DTIME(2n)∪DTIME(22n)∪⋯DTIME(2n)∪DTIME(22n)∪⋯\text{DTIME}(2^n) \cup \text{DTIME}(2^{2^n}) \cup \cdots。 从定义看来,直接由下级基本功能决定的决策问题(term?)应该包含在EXP中,实际上应该包含在DTIME中(2O(n))(2O(n))(2^{O(n)}); 这些函数还被约束为以其输入长度[1]线性输出字符串。 但另一方面,我看不到任何明显的下限;乍一看,似乎可以认为LOWER-ELEMENTARY可以严格包含NP,或者可能无法包含P中的某些问题,或者很可能是我尚未想到的某种可能性。如果LOWER-ELEMENTARY = NP会非常酷,但我认为这要求太多了。 所以我的问题是: 到目前为止,我的理解正确吗? 对限制较低的基本递归函数的复杂度类有什么了解? (加分)在对递归函数进行进一步限制时,我们是否有任何很好的复杂度级别表征?我特别在想限制log(x)log⁡(x)\log(x)有界求和,我认为它是在多项式时间内运行并产生线性输出;或常数有界求和,我认为它是在多项式时间内运行,并且最多会产生长度的输出n+O(1)n+O(1)n + O(1)。 [1]:我们可以证明(我相信)低阶元素功能通过结构归纳法受到这些限制,假设这些功能 h,g1,…,gmh,g1,…,gmh,g_1,\dots,g_m 有复杂性 2O(n)2O(n)2^{O(n)} 和位长的输出 O(n)O(n)O(n) 在长度输入上 nnn。什么时候f(x)=h(g1(x),…,gm(x))f(x)=h(g1(x),…,gm(x))f(x) = h(g_1(x),\dots,g_m(x)),让 n:=logxn:=log⁡xn := \log x,每个 ggg 输出长度 O(n)O(n)O(n),所以 hhh 有一个 O(n)O(n)O(n)长度输入(因此 O(n)O(n)O(n)长输出); 计算全部的复杂性gggs是 m2O(n)m2O(n)m2^{O(n)} 和的 hhh 是 2O(n)2O(n)2^{O(n)},所以 fff 有复杂性 2O(n)2O(n)2^{O(n)} 和长度的输出 O(n)O(n)O(n) …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.