小编mrs*_*eve的帖子

除了Caledon之外还有其他基于haskell的HOL编程语言吗?

有基于高阶逻辑(HOL)的编程语言和定理证明器.例子包括Twelf,lambda prolog,Isabelle.例如,Twelf既是编程语言又是定理证明者,而Isabelle主要是一个定理证明者,但是对于Isabelle代码提取是可用的.

我正在寻找一种基于haskell的HOL编程语言.原因是我非常喜欢lambda prolog,但它并不是一种实用的编程语言.Lambda prolog缺少标准库,与外部库的接口似乎并不简单.问题是如果你需要一些功能,比如为文本文件编写解析器,你就不能与haskell的许多可用现有库接口,而且,没有标准库,所以你从头开始.

今天我遇到了Caledon编程语言,它似乎是作为硕士论文实现的.从github页面:

Caledon是一种依赖类型,多态,高阶逻辑编程语言.

这很有趣,因为它是用haskell编写的,所以它应该很容易扩展并与现有的haskell库接口.但似乎该项目处于初期阶段,我不确定是否实现了输入输出(IO).由于我今天才了解卡利多,我想我可能错过了一些其他项目.(顺便说一句,我对像prolog这样的标准逻辑编程语言不感兴趣).

除了Caledon之外,是否有基于高阶逻辑的编程语言在haskell中实现?

(我要求"在haskell中实现",因为它很容易连接可以提取到haskell或在haskell中实现的编程语言.例如,Agda编程语言可以编译为haskell代码,haskell库可以方便地使用如果你知道如何使用haskell库是非常容易的.我相信的许多其他编程语言(例如,ATS)只提供最小的公共分母,这是一个基于C的外部函数接口(FFI).在我看来,连接相当麻烦两个更高级的编程语言通过它们各自的基于C的FFI接口.因此,似乎是"它应该在haskell中实现"的一部分.此外,作为旁注,一些用户过去曾因为我将Agda描述为编程语言而投降,但当然这不是真的,即考虑库里 - 霍华德)

haskell dependent-type isabelle

7
推荐指数
1
解决办法
784
查看次数

打印树有4个节点(简单森林)用于检查基准

我使用实施实验OOP语言和现在的基准垃圾收集存储性能基准测试.现在我想检查/打印下面的小深度基准(n = 2,3,4,..).

通过该buildTreeDepth方法生成树(具有4个子节点的林).代码如下:

import java.util.Arrays;

public final class StorageSimple {

    private int count;
    private int seed = 74755;

    public int randomNext() {
        seed = ((seed * 1309) + 13849) & 65535;
        return seed;
    }

    private Object buildTreeDepth(final int depth) {
        count++;
        if (depth == 1) {
            return new Object[randomNext() % 10 + 1];
        } else {
            Object[] arr = new Object[4];
            Arrays.setAll(arr, v -> buildTreeDepth(depth - 1));
            return arr;
        }
    }

    public Object benchmark() { …
Run Code Online (Sandbox Code Playgroud)

java tree benchmarking microbenchmark

6
推荐指数
1
解决办法
135
查看次数

质量R代码学习形式

我想找到关于代码质量的5个顶级编程R包.

看看我想学习如何改进的代码.遗憾的是,许多包装都没有很好的编程.最近我越来越多地使用Map(),Reduce()和Filter()函数,这已经产生了更好的代码.

r

5
推荐指数
0
解决办法
483
查看次数

在leksah关掉警告

有充分的理由,我想在leksah IDE中暂时关闭丢失类型级别签名的警告.

我将标志更改为ghc cabal文件,当我从控制台运行"cabal install"时,警告不存在.

但是,如果我在leksah IDE中构建相同的项目,则仍会显示警告.

如何在leksah IDE中关闭"警告:没有类型签名的顶级绑定:"?

haskell leksah

5
推荐指数
2
解决办法
1236
查看次数

Agda:我的代码没有键入检查(如何获取隐式参数?)

"checkSimple"获取宇宙U的元素u,并检查是否(nat 1)可以转换为给定u的agda类型.返回转换结果.

现在我尝试编写一个控制台程序并从命令行获取"someU".

因此,我将"checkSimple"的类型更改为包含(u:Maybe U)作为参数(可能因为来自控制台的输入可以是"无").但是我无法获取键入检查的代码.

module CheckMain where


open import Prelude

-- Install Prelude
---- clone this git repo:
---- https://github.com/fkettelhoit/agda-prelude

-- Configure Prelude
--- press Meta/Alt and the letter X together
--- type "customize-group" (i.e. in the mini buffer)
--- type "agda2"
--- expand the Entry "Agda2 Include Dirs:"
--- add the directory 



data S : Set where
  nat  : (n : ?) ? S
  nil  : S

sTo? : S ? Maybe ?
sTo? (nat n) = just …
Run Code Online (Sandbox Code Playgroud)

haskell agda dependent-type

5
推荐指数
1
解决办法
561
查看次数

Agda:具有相同长度的一对向量

在Agda中,如何定义一对必须具有相同长度的向量?

-- my first try, but need to have 'n' implicitly  
b : ? ( n : ? ) ? ? (Vec ? n) (? _ ? Vec ? n) 
b 2 = (1 ? 2 ? []) , (3 ? 4 ? [])
b 3 = (1 ? 2 ? 3 ? []) , (4 ? 5 ? 6 ? [])
b _ = _

-- how can I define VecSameLength correctly?
VecSameLength : Set
VecSameLength = _

c …
Run Code Online (Sandbox Code Playgroud)

haskell agda

5
推荐指数
1
解决办法
682
查看次数

Z3py:将Z3公式转换为picosat使用的子句

链接:具有Pyhton绑定的
Z3定理证明者
picosat

我已经使用Z3作为SAT求解器。对于较大的公式,似乎存在性能问题,这就是为什么我想查看picosat来查看它是否是更快的替代方案。我现有的python代码使用z3语法生成一个命题公式:

from z3 import *

import pycosat
from pycosat import solve, itersolve

#
#1 2  3  4  5  6  7   8  (variable names in picosat are numbers!)
#
C, G, M, P, R, S, SN, B = Bools('C G M P R S SN B')
C = (And(*(S,Or(Not(S),P),Or(Not(P),S),Or(Not(P),B),Or(Not(C),P),Or(Not(G),P),Or(Not(M),P),Or(Not(R),P),Or(Not(SN),P),Or(Not(B),P),True,Not(False),Or(R,SN,B,G,M,C,True))))

# formula in Z3:
f = simplify(C)

print f 
Run Code Online (Sandbox Code Playgroud)

输出/结果

And(S,
    Or(Not(S), P),
    Or(Not(P), S),
    Or(Not(P), B),

    Or(Not(C), P),
    Or(Not(G), P),
    Or(Not(M), P),
    Or(Not(R), P),
    Or(Not(SN), P),
    Or(Not(B), …
Run Code Online (Sandbox Code Playgroud)

python sat-solvers z3 z3py

5
推荐指数
1
解决办法
1295
查看次数

Haskell:绑定到快速简单的SAT求解器

今天我也想看看在haskell中解决SAT的选项.首先,我想把自己的接口写入picosat求解器.

然后我发现有SBV库.它是Z3,Yices,CVC4和Boolector的接口.

此外,我在github上进行了谷歌搜索,它甚至可以使用Picosat绑定.

考虑到快速/高性能的限制,是否有任何其他针对SAT求解器的haskell绑定值得关注.Carification:适用于高性能SAT解决(例如,运行数天的问题,以及需要在检查2 ^ 20或更多SAT问题时尽快完成的问题).例如,我在hackage上特别缺少的是绑定到像Plingeling这样的快速并行 SAT求解器.(另外,我在github上发现了当前更新的picosat绑定更多的意外,我很可能会错过其他选项)

SBV库的默认选项是Z3 SMT解算器.在我受过良好教育的猜测中,我是否正确,对于简单的SAT解决而言,picosat比Z3更快?

haskell satisfiability smt z3 picosat

5
推荐指数
2
解决办法
2070
查看次数

如何在haskell中生成随机命题公式(CNF)?

如何在haskell中获得随机命题公式?我最好在CNF需要配方,但我愿意

我想使用也涉及SAT求解器的性能测试公式.请注意,我的目标不是测试SAT求解器的性能!我也对非常困难的公式不感兴趣,所以难度应该是随机的,否则只包括简单的公式.

我知道我的真实世界数据导致了SAT求解器并不困难的命题公式.

目前,我使用hattSBV库作为数据结构来处理命题公式.我也查看了hGen库,也许它可以用来生成随机公式.但是没有文档,我没有看到hGen的源代码.

我的目标是选择n并获取包含n布尔变量的公式.

haskell satisfiability smt

5
推荐指数
1
解决办法
534
查看次数

为什么ATS语言从计算机语言基准游戏中删除?

不久前,"ATS"编程语言已从计算机语言基准游戏中删除.您仍然可以通过后机查看旧页面.

为什么ATS编程语言不再包含在计算机语言基准游戏中?

benchmarking dependent-type ats

5
推荐指数
1
解决办法
1439
查看次数