首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于Coq的矩阵代码生成技术的形式化描述方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:南京航空航天大学

摘要:本发明公开了一种基于Coq的矩阵代码生成技术的形式化描述方法,该方法根据DPIA原理在Coq定理证明器内对矩阵代码生成技术进行形式化描述,以及对该技术的完善和扩展,具体包括:对数据类型、功能原语、命令原语进行形式化描述;对翻译器和代码转换规则进行形式化描述;利用重写技术实现代码转换;定义新变量名自动生成规则,解决变量命名重复问题;对原语和规则进行扩展以实现更多矩阵操作的代码转换。本发明将形式化技术应用于矩阵代码生成技术,在Coq定理证明器中实现了从带有执行策略的函数式矩阵代码到并行矩阵C代码的矩阵代码生成技术,解决了新变量命名重复问题。

主权项:1.一种基于Coq的矩阵代码生成技术的形式化描述方法,其特征在于,所述方法包括如下步骤:步骤S1、对数据类型、功能原语、命令原语进行形式化描述;步骤S2、对代码转换规则进行形式化描述,其中,所述代码转换规则包括:从高级功能原语到高级命令式宏的转换、从高级命令式宏到低级for循环的转换、命令和接收器以及与表达式之间的显示转换;步骤S3、利用Coq中的重写功能编写自动化重写策略以实现矩阵代码生成;步骤S4、构建变量名自动生成函数,并设立和证明了不同的命令中变量声明个数引理,再将引理引入命令的显示翻译规则中,实现在对命令显示翻译时新变量命名无重复声明;步骤S5、进行原句和规则的扩展,以实现更多矩阵代码的生成,其中,所述原句包括:矩阵赋值、倒置、转置、标量功能原语以及索引功能原语;在所述步骤S1中,所述数据类型包括:数值、索引、数组、对偶以及相应的接受器和表达式;所述功能原语包括:标量功能原语、数组功能原语以及对偶功能原语;所述命令原语包括:空命令、顺序执行、赋值、新变量声明、顺序for循环以及并行for循环;对数据类型进行形式化描述,具体包括:利用Coq中常用大类Type实现数据类型和短语类型所属类型kind、短语类型phrase;数据类型包括:数值类型num、接受一个自然数作为参数的索引类型idx、接受一个自然数和一个数据类型作为参数的数组类型ary、接受两个数据类型作为参数的对偶类型tensor;接收器类型与表达式类型接受一个数据类型作为输入参数返回短语类型;对所述标量功能原语进行形式化描述,具体包括:取负函数neg接受一个数值表达式参数,再输出一个数值表达式;加法函数add、乘法函数mul、除法函数div以及减法函数sub接受两个数值表达式参数,再输出一个数值表达式;对所述数组功能原语进行形式化描述,具体包括:映射函数map接受一个自然数n、数据类型s和t、映射函数、长度为n且元素类型为s的表达式的数组作为参数,输出类型为长度为n且数据类型为t的数组表达式,其中,映射函数map接受的映射函数,其接受数据以数据类型为s的表达式为参数,以数据类型为t的表达式为输出;规定顺序映射函数mapSeq与并行映射函数mapPar同映射函数map的类型相同;规约函数reduce接受一个自然数、数据类型s和t、计算函数、初始值、长度为n且元素类型为s的表达式的数组作为参数,输出类型为t的表达式类型,其中,该计算函数接受s的表达式类型和t的表达式类型,并且以t的表达式类型作为输出类型,该初始值为t的表达式类型;顺序执行的规约函数reduceSeq的类型同规约函数reduce的类型相同;组合函数zip接受一个自然数、数据类型s和t、长度为n且元素类型为s的表达式的数组、长度为n且数据类型为t的表达式的数组作为参数,输出类型为长度为n且元素类型为s与t的对偶的数组表达式;查询函数fun_idx接受一个自然数n、数据类型t、长度为n且数据类型为t的数组表达式,并且以小于n的索引表达式作为参数,输出类型为t的表达式;接收器组合左分量函数zipAcc1接受一个自然数n、数据类型s和t,长度为n且数据类型为s和t的对偶类型的接收器作为输入,输出为长度为n且数据类型为s的接收器;接收器组合右分量函数zipAcc2接受一个自然数n、数据类型s和t,长度为n且数据类型为s和t的对偶类型的接收器作为输入,输出为长度为n且数据类型为t的接收器;接收器查询函数idxAcc接受自然数n、数据类型t、长度为n且数据类型为t的数组接收器、小于n的索引表达式作为参数,输出为数据类型为t的接收器;对对偶功能原语进行形式化描述,具体包括:对偶函数Pair接受数据类型s和t、数据类型为s的表达式、数据类型为t的表达式作为参数,输出为数据类型为s和t的对偶的表达式;左分量函数Fst接受数据类型s和t、数据类型为s和t的对偶的表达式作为参数,输出为数据类型为s的表达式;右分量函数Snd接受数据类型s和t、数据类型为s和t的对偶的表达式作为参数,输出为数据类型为t的表达式;接收器对偶左分量函数pairAcc1接受数据类型s和t、数据类型为s和t的对偶的接收器作为参数,输出类型为数据类型为s的接收器;接收器对偶右分量函数pairAcc2接受数据类型s和t、数据类型为s和t的对偶的接收器作为参数,输出类型为数据类型为t的接收器;其中,对命令原语进行形式化描述,具体包括:顺序语句seq接受命令类型组成的对偶作为参数,输出类型为命令类型;空语句skip为命令类型;赋值语句assign接受一个数据类型d以及d的接收器与表达式的对偶作为参数,输出类型为命令类型;新变量声明语句接受一个数据类型t、以及一个函数作为参数,输出类型为命令,其中,所述新变量声明语句接受的函数,其以接受参数为t的接收器和表达式的对偶作为参数,其输出类型为命令类型;顺序循环seqfor接受自然数n、一个函数作为参数,输出类型为命令,其中,所述顺序循环seqfor接受的函数,其以接受小于n的索引表达式作为输入,其输出类型为命令类型;并行循环parfor接受自然数n、数据类型t、一个函数作为参数,输出类型为命令类型,其中,所述并行循环parfor接受的函数,其以接受一个长度为n数据类型为t的数组接受器、小于n的索引表达式以及数据类型为t的接收器作为输入,其输出类型为命令;所述步骤S2中,所述从高级功能原语到高级命令式宏的转换,其通过Acceptor-passing翻译器、Continuation-passing翻译器实现;所述命令和接收器以和表达式之间的显示转换,其通过命令翻译器、接收器翻译器和表达式翻译器实现;其中,Acceptor-passing翻译器的形式化描述,具体包括:翻译器A接受数据类型d、数据类型为d的表达式和接收器作为参数,输出类型为命令类型;Acceptor-passing规则的形式化描述,具体包括:数值类型的表达式e和接收器a经过翻译器A的转换规则;数组类型的表达式e和接收器a经过翻译器A的转换规则;对偶类型的表达式和接收器经过翻译器A的转换规则;数值类型的表达式取负经过翻译器A的转换规则;数值类型的表达式e1和e2相加经过翻译器A的转换规则;数值类型的表达式e1和e2相乘经过翻译器A的转换规则;经过顺序映射mapSeq的数组表达式经过翻译器A的转换规则;并行映射mapPar作用的数组表达式经过翻译器A的转换规则;顺序规约reduceSeql作用的数组表达式经过翻译器A的转换规则;组合函数zip作用的数组表达式经过翻译器A的转换规则;对偶函数Pair作用的表达式经过翻译器A的转换规则;左分量函数Fst作用的表达式经过翻译器A的转换规则;右分量函数Snd作用的表达式经过翻译器A的转换规则;Continuation-passing翻译器的形式化描述,具体包括:翻译器C接受一个数据类型d、数据类型为d的表达式和一个函数作为参数,输出类型为命令类型,其中,该翻译器C接受的一个函数,其输入参数为数据类型为d的表达式,输出类型为命令类型;Continuation-passing规则的形式化描述,具体包括:数据类型为d的表达式和后续调用操作c经过翻译器C的转换规则;数值类型的表达式取负经过翻译器C的转换规则;数值类型的表达式e1和e2相加经过翻译器C的转换规则;数值类型的表达式e1和e2相乘经过翻译器C的转换规则;并行映射mapPar作用的数组表达式经过翻译器C的转换规则;经过顺序映射mapSeq的数组表达式经过翻译器C的转换规则;顺序规约reduceSeql作用的数组表达式经过翻译器C的转换规则;组合函数zip作用的数组表达式经过翻译器C的转换规则;对偶函数Pair作用的表达式经过翻译器C的转换规则;所述从高级命令式宏到低级for循环的转换,其形式化描述,具体包括:并行映射mapParl接受自然数n、数据类型s和t、一个函数、长度为n且数据类型为s的数组表达式xs、长度为n且数据类型为t的接收器out作为参数,使用并行循环parfor将映射函数f作用于xs的每个元素之上,并将结果存储于out中,其中,所述并行映射mapParl接受的一个函数,其输入参数为数据类型为s的表达式和数据类型为y的接收器;顺序映射mapSeql接受自然数n、数据类型s和t、一个函数、长度为n且数据类型为s的数组表达式xs、长度为n且数据类型为t的接收器out作为参数,使用顺序循环seqfor将映射函数f作用于xs和out的每个对应元素之上,其中,所述顺序映射mapSeql接受的一个函数,其输入参数为数据类型为s的表达式和数据类型为t的接收器;顺序规约reduceSeql接受自然数n、数据类型的d1和d2、一个函数、初始值、长度为n且数据类型为d1的数组表达式xs、后续处理函数c,实现为新生命一个临时变量,将初始值赋值于该变量,然后通过顺序循环seqfor将f作用于数组内的每个元素与该临时变量之上,最后将后续处理函数作用于该临时变量之上,其中,所述顺序规约reduceSeql接受的一个函数,其输入参数为数据类型为d1和d2的表达式和数据类型为d2的接收器,所述顺序规约reduceSeql接受的初始值,其为数据类型为d2的表达式,所述顺序规约reduceSeql接受的后续处理函数c,其以接受数据类型为d2为参数,其输出为命令类型。

全文数据:

权利要求:

百度查询: 南京航空航天大学 一种基于Coq的矩阵代码生成技术的形式化描述方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术