Picat 3.0发布(基于逻辑的多范例编程语言)

2020-09-28 03:50:25

3.0版(2020年9月26日)=+对SAT编译器进行了大量改进。+重新实现了SAT模块的电路约束,如CP';20论文中所述。+支持Horn条款。Horn子句根据用户提供的或自动生成的索引声明转换为模式匹配规则。+支持DCG规则。DCG规则通过Horn子句转换为模式匹配规则。+从Prolog添加了以下新的内置谓词:arg(I,T,A)functor(T,F,N)';=..';(X,Y)\+!+更改了高阶调用的绑定规则。+改进了高阶呼叫的实现。+改进了调试器。无法跟踪私有调用或编译器生成的调用。+修复了大整数编译中的错误。+改进了cp中乘法约束的实现。+修复了使用//、div、mod或abs的非线性约束的预处理器中的错误。+修复了Windows的listdir/1中的错误。+更改了OPEN(File,Mode)的行为:即使文件已经打开,它也会返回文件的新流。+改进了函数到尾递归谓词的转换。+改进了对约束中幂函数的处理,使其不太可能导致溢出。+修复了vars/1函数中的错误。+美化了C源代码。版本2.8(2019年12月5日)=+在SAT模块子电路_GRID(A)子电路_GRID(A)子电路_GRID(A,K)+针对至多-k个约束的改进SAT编码+改进的错误消息+添加了nn(神经网络)模块new_nn(层)=nn new_parse_nn(层)=nn new_parse_nn(层,速率)=nn new_Standard_nn(层)=nn new_Standard_(NN)nn_Destroy_all nn_load(文件)=nn_print(Nn)nn_run(NN,NN)=nn new_parse_nn(层,速率)=nn new_parse_nn(层,速率)=nn new_Standard_nn(层)=nn new_Standard_nn_load(文件)=nn_print(NN)nn_run(NN,NN。INPUT)=OUTPUT nn_RUN(NN,INPUT,OPTS)=OUTPUT nn_SAVE(NN,文件)nn_SET_ACTIVATION_Function_HIDDEN(NN,函数)nn_SET_ACTIVATION_Function_Layer(NN,Func)nn_Set_ACTIVATION_Function_OUTPUT(NN,Func)nn_Set_ACTIVATION_Function_Output(NN,Func)nn_Set_ACTIVATION_STEPNNESS_HIDDEN(NN,陡度)nn_SET_ACTIVATION_STEPNNESS_OUTPUT(NN,陡度)nn_SET_ACTIVATION_STEPNNESS_OUTPUT(NN,DATA。Opts)nn_RAIN_DATA_GET(DATA,I)=Pair nn_TRAIN_DATA_LOAD(文件)=DATA nn_TRAIN_DATA_SAVE(数据,文件)nn_TRAIN_DATA_SIZE(DATA)=SIZE+支持CBC作为基础MIP解算器MIP模块中的解算谓词支持名为CBC的新选项,该选项指示Picat使用CBC MIP解算器。Picat使用以下命令调用CBC解算器:CBC TmpFile solu Solu SolFile,其中SolFile是解决方案的文件,TmpFile是存储CPLEX格式约束的文件。如果命令CBC不可用,则Picat抛出EXISTING_ERROR。+显著改进了SAT编译器。如果算术约束中不涉及变量,则使用直接编码。表约束的混合编码。小域算术约束的新编码。优化问题分枝定界算法的新实现。新的回路、子回路和规则约束分解器。+ASCII字符的新内置ascii_digit(Char)=>;ascii_digit(Char)。ASCII_Alpha(字符)=>;ASCII_Alpha(字符)。ASCII_Alpha_Digit(字符)=>;ASCII_Alpha_Digit(字符)。ASCII_LOWERCASE(CHAR)=>;ASCII_LOWERCASE(CHAR)。ASCII_UPERCASE(CHAR)=>;ASCII_UPERPERCASE(CHAR)。+更改了Bigint乘法版本2.6(2019年2月7日)中log(Base,X)+Bug FIX的实现=+表约束可以涉及短元组,其中值可以是DON';T-CARE符号*。+在基本模块中添加了新的内置谓词Bigint(X)。+改进了错误消息+表约束的BDD编码+表约束中的元组必须使用语法{a1,...,an},并且表约束中的元组不再支持语法(a1,...,an)。版本2.5(2018年10月8日)=+添加了名为SMT的新模块用于约束求解。该模块需要Z3或CVC4作为SMT求解器。+允许下标范围:A[FROM..TO]与Slice(A,From,To)相同。+COPY_TERM_SHALLOW(T)=COPY_TERM_SHALLOW(T)。+常规约束中的一个错误修复+SAT编码器中的一个错误修复+大整数算术版本2.4(2018年4月15日)中的一个错误修复=+堆数据结构heap_is_Empty(Heap)=>;heap_is_Empty(Heap)的支持。HEAP_POP(堆)=HEAP_POP(堆)。HEAP_PUSH(HEAP,ELM)=>;HEAP_PUSH(HEAP,ELM)。Heap_size(Heap)=heap_size(Heap)。Heap_to_list(Heap)=heap_to_list(Heap)。HEAP_TOP(堆)=HEAP_TOP(堆)。New_max_heap(IntOrList)=new_max_heap(IntOrList)。New_min_heap(IntOrList)=new_min_heap(IntOrList)。+点符号被视为术语构造函数和约束中的函数。示例:x=$f(math.pi)R=new_rectangle(),R.x#=R.Y,R.width#=R.Height,R.color#=cg.red+对伪Boolea的SAT编译器的改进