GTRecS(递归方案的游戏和类型)2:高阶递归方案的模型检查器和转换器

这是一个新版本的高阶模型检查器的Web界面,扩展了转换功能计算传感器输出的递归方案。新设计的底层模型检查算法工作良好(至少比以前的模型更好)checkers:)的递归方案紧表示大型有限树。高阶模型检查程序的其他实现(TRecS公司,在小林的PPDP09论文中描述GTrecS公司小林的FoSSaCS 11论文中描述的)在其他地方也可以买到。

GTrecS 2提供以下三个特性。

注意:GTRecS2不擅长反驳给定的属性。因此,决定一个属性知道答案),一般来说,您需要准备两个自动机,一个表示属性,另一个表示属性的求反,并并行运行两个自动机的GTRecS2。在下面的例子中,所有的自动机都表示递归模式所满足的属性(因此您不需要否定这些属性)。

在下面的框中输入递归方案和树自动机,选择功能,然后按“提交”按钮。下面给出了一些例子。更多的例子可用在这里作为zip文件请注意,在这个web界面上,只能测试小的示例(超时设置为3秒)。如果您需要源代码,请与小林直一联系。

TRecS是基于类型的模型检查器的另一个版本在这里。


示例

下面给出了一些例子。(将零件从%BEGING剪切到%ENDA并粘贴到上面的框中。)

例1(用于查询)

检查第1024个Fibonacci单词是否包含“aa”作为子字符串。
%开始/***重写递归方案的规则。非终结符必须以大写字母开头***//***第一个规则的非终结符被解释为开始符号***//***无界名称(本规则中的“a”、“b”)被解释为终端***/S=两次(两次(两次(两次(两次(两次(两次(两次(两次)))))))Fst b a。两次f k x y=f(f k)x y。下一个k x y=k y(Concat y x)。Fst x y=x e。Concat x y c=x(y c)。%结束语%Buchi树自动机的BEGINA/***转换规则***//*含有aa*/q0 a->问题1/***第一个状态被解释为初始状态**/q0 b->q0。问题1 b->问题0。问题1 a->问题2。问题2 a->问题2。问题2 b->问题2。问题2 e->。%尾端

例2(用于查询)

检查第1024个Fibonacci字是否不包含“bb”作为子字符串。
%开始S=两次(两次(两次(两次(两次(两次(两次(两次(两次)))))))Fst b a。两次f k x y=f(f k)x y。下一个k x y=k y(Concat y x)。Fst x y=x e。Concat x y c=x(y c)。%结束语%贝吉纳/*不包含aaa*/q0 a->q0。q0 b->q1。问题1 a->问题0。问题0 e->。问题1 e->。%尾端

例2'(用于查询)

检查第1024个Fibonacci字是否不包含“aaa”作为子字符串。
%开始S=两次(两次(两次(两次(两次(两次(两次(两次(两次)))))))Fst b a。两次f k x y=f(f k)x y。下一个k x y=k y(Concat y x)。Fst x y=x e。Concat x y c=x(y c)。%结束语%贝吉纳/*不包含aaa*/q0 a->q1。q0 b->q0。问题1 b->问题0。问题1 a->问题2。问题2 b->问题0。问题0 e->。问题1 e->。问题2 e->。%尾端

例3(用于转换)

用“bb”替换第1024个Fibonacci单词中出现的“ab”。(注意:您需要将以下规则添加到转换的输出中:
Taq1_q0 x=x。Tbq0_q0 x=b(x)。Taq1_q1 x=a(x)。Tbq0_q1 x=b(b(x))。Teq0=e。Teq1=a(e)。
)
%开始S=两次(两次(两次(两次(两次(两次(两次(两次(两次)))))))Fst b a。两次f k x y=f(f k)x y。下一个k x y=k y(Concat y x)。Fst x y=x e。Concat x y c=x(y c)。%结束语%贝吉纳/*将ab替换为bb*/q0 a->问题1/*ε*/q0 b->q0./*b*/问题1 a->问题1/*a*/问题1 b->问题0/*bb公司*/问题0 e->./*e*/问题1 e->./*a e*/%尾端

例4(用于查询)

检查DNA序列(由下面的递归方案表示)不包含“acgtac”作为子字符串。
%开始S=X119(X45(X116(X80(X119(X80(X64(X41(X75 a))(a(g))(X111安(c(X75克(X79(t)(X68摄氏度(X20(X19摄氏度(X112(X44(X99))c(X66(克(X89)(克(X20(X61(t)(X79(a(X43(X86(X24安(X78))(X105吨(X42(X95吨(X37(X78(克)(X112(a)(X85(X18(X105安))(X65(X117(X114(t(X78(X36(x 35(X108 a)(X33(x 30(X64))c(X92吨(X13(X117(X48吨(X95摄氏度(X16(X18摄氏度(x105摄氏度(X42摄氏度(X77))(X12(X83吨(克(X43(克(X37))X16(克(克(X36))(碳(X43(甲(X77))(X6(X87(X60(X44)(X111摄氏度(X83摄氏度)(t(X86(X36(X15(X87))(t(X99安(克(X102摄氏度e) ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))。X4 x1 x2 x3=x1(x2 x3)。X5 x y=x 4 t x y。x.x x x x高。X10 x7 x8 x9=x8(x7 x9)。X11 x y=X10 t x y。X12 x=X11 c x。X13 x=x 5克x。X14 x y=x 10 c x y。X15 x=X14克x。X16 x=X14 x x。X17 x y=X4 x x y。X18 x=X17 t x。X19 x=X17 x x。X20 x=X5 c x。X21 x y=x 4 c x y。X24 x22 x23=g(x22(x22 x23))。X28 x25 x26 x27=x25(x26(x25 x27))。X29 x y=X10 x 13 x y。X30 x=X28 t c x。X31 x y=X28 c x y。X32 x=X31 c x。X33 x=X29厘米x。X34 x y=x 4 x 16 x y。X35 x=x 34 c x。X36 x=X29 x x。X37 x=X31 x x。X40 x38 x39=x38(x38(a x39))。X41 x y=X10 x 16 x y。X42 x=x 34 t x。X43 x=X41 t x。X44 x=x 40 t x。X45 x=x 40 c x。X48 x46 x47=c(x46(x46(X6 x47)))。X52 x49 x50 x51=x49(x49(a(x50 x51)))。X53 x y=X52 x x y。X54 x=X53 t x。X55 x y=X10 x 45 x y。X56 x=X55 x x。X59 x57 x58=x57(c(X20 x58))。X60 x=X53 c x。X61 x=X52 c t x。X64 x62 x63=t(x62(X43(x62 x63)))。X65 x=X55克x。X66 x=X59 x x。X68 x67 y=X24(X5 x67)y。X72 x69 x70 x71=x69(x70(X16(x69 x71)))。X75 x73 x74=c(X12(x73(x73(c x74)))。X76 x y=X72 c x y。X77 x=X68 x x。X78 x=X76 c x。X79 x=X76 x x。X80 x=X72 a c x。X83 x81 x82=g(X18(t(x81(x81(X16 x82))))))。X85 x84=X44(X32 x84)。X86 x=x 31 x 66 x。X87 x=X59 x 61 x。X88 x=x 31 x 80 x。X89 x=X11 x 85 x。X92 x90 x91=c(X56(x90(a(x90(x90 x91))))))。X95 x93 x94=X43(x93(X56(c(x93 x94)))。X99 x96 x98=X21 x96(X33(x96(x96(t(X21 x96 x98)))))。X102 x100 x101=X6(x100(c(X54(g(x100 x101)))))。X105 x103 x104=X18(X45(x103(X32(x103(X12 x104)))))。X108 x106 x107=t(X66(X35(x106(t(x106 x107)))))。X111 x109 x110=X48摄氏度(x109(X30(x109(a x110)))。X112 x=X55 x 89 x。X114 x113=X89(X56 x113)。X116 x115=c(a(X92 c x115))。X117 x=X21 X114 x。X119 x118=c(X116(X88 x118))。%结束语%贝吉纳q0 a->q1。q0 c->q0。q0 t->q0。q0 g->q0。问题1 a->问题1。q1 c->q2。问题1 t->q0。问题1 g->问题0。问题2 a->问题1。问题2 c->问题0。第二季度->第三季度。问题2 g->问题0。问题3 a->问题1。问题3 c->问题0。q3 t->q0。q3 g->q4。问题4 a->问题5。q4 c->q0。q4 t->q0。q4 g->q0。问题5 a->问题1。问题5 c->问题6。q5 t->q0。q5 g->q0。q6 a->q6。q6 c->q6。q6 t->q6。q6 g->q6。问题0 e->。问题1 e->。问题2 e->。问题3 e->。第4季度e->。问题5 e->。%尾端

例5(用于普通自动机模型检查)

检查Fibonacci单词是否包含“aaa”作为子字符串。
%开始S=光纤b a。Fib x0 x1=br(x0 e)(纤维x1(Concat x1 x0))。Concat x y c=x(y c)。%结束语%贝吉纳/*不包含aaa*/q0 br->q0 q0。q0 a->q1。q0 b->q0。问题1 b->问题0。问题1 a->问题2。问题2 b->问题0。问题0 e->。问题1 e->。问题2 e->。%尾端

例6(用于查询)

通过以下方式定义L系统的第n个序列S(n):
S(0)=fS(n+1)=S(n)[+S(n)]S(n)[-S(n)]S(n)
检查S(999)是否不包含“ff”作为子字符串。
%开始/*S(999)(以下编码使用999的二进制表示11111000111)*/S=一(一(一)(零(零(一(一(一)(一(一)步))))))f e。步骤gz=g(lpar(加上(hg(lpar(减去(hgz)))))))。零h g z=h(h(g))z。一个h g z=h(h(步骤g))z。H g z=g(rpar(g z))。%结束语%贝吉纳/*不包含ff*/q0 f->q1。q0 lpar->q0。q0 rpar->q0。q0加->q0。q0减->q0。q1 f->q2。q1 lpar->q0。q1 rpar->q0。q1加->q0。q1减->q0。问题0 e->。问题1 e->。%尾端