编译指示

请参见官方用户手册获取此页面上信息的最新版本。

总有机碳

杂注索引

期权索引

下表总结了Agda 2.3.2.1中可用的选项。您还可以使用agda—help查看最新列表。我们只以{-#options…#-}形式列出了.agda文件中可以提供的选项。

选项表
选项效果更多信息
--展示-暗示打印时显示隐式参数 
--显示相关项启用打印无关术语(默认情况下打印为_)2.3.2注意事项
--非逆多态禁用universe多态性2.3.0注意事项
--安全的禁用假设、不安全的OPTION杂注(例如--type-in-type)和primTrustMe2.3.0注意事项
--允许的非受控元允许导入未解决的模块元变量 
--实验无关性启用可能不可靠的无关功能(无关级别、无关数据匹配) 
--没有无关的投影禁用为无关字段自动生成投影2.2.10注意事项
--警备型控制器允许在生产力检查期间将类型构造函数视为归纳构造函数2.2.8注释
--注入型构造器启用类型构造函数的自动注入(使Agda非经典,请参阅注释)2.2.8注释
--无平衡检查禁用函数的案例覆盖检查程序 
--无阳性检查对数据类型构造函数禁用严格正性检查 
--不终止检查禁用终止检查程序(全局地,请参阅上面的杂注以禁用单个定义的终止检查) 
--终止深度=N在终止检查器中启用计数(N>=1)见下文;2.2.8注释
--大小-类型使用启用定义调整大小的类型 
--键入在类型检查期间禁用universe级别检查(使Agda不一致:吉拉德悖论) 

选项

{-#选项-opt1--opt2…#-}

将命令行选项传递给Agda。

默认情况下,注入类型构造函数处于关闭状态。

类型构造函数的自动注入已被禁用(默认设置)。要启用它,请使用标记--内射类型构造函数,在命令行或OPTIONS杂注中。请注意旗帜使Agda反经典,可能不一致:排除中间的Agda不一致http://thread.gmane.org/gmane.comp.lang.agda/1367有关示例,请参见test/success/InjectiveTypeConstructors.agda。

终止检查器可以计数。

有一个新标志--termination-depth=N接受值N>=1(N=1为默认值)影响终止检查器。到目前为止,终止检查器只比较递归参数时区分了三种情况使用被调用方的形参调用。

<:参数在结构上小于参数=:它们是相等的? : 参数较大或与参数无关

此行为仍然是默认的(N=1),不会将以下功能识别为终止。

相互的传真:ℕ → ℕf zero=零f(suc zero)=零f(suc(suc n))=辅助n辅助的:ℕ → ℕ辅助m=f(辅助m)

调用图

f--(<)-->辅助--(?)-->f

通过aux产生从f到f的递归调用,其中被调用者参数的调用参数计算为“不相关”(<和?的组成)。

设置N>=2可以进行更精细的分析:N少了两个构造函数比suc(sucn)多,而sucm比m多一个,所以我们接到了电话图表:

f--(-2)-->辅助--(+1)-->f

现在,间接调用f-->f标记为(-1)终止检查器可以识别出调用参数在这条路径上减少。

将终止深度设置为N意味着终止检查器计数最多减少N,最多增加N-1。默认值,N=1,表示不计算增加,每增加一次“无关”。

在实践中,当“with”时,有时会出现上面的示例使用。例如,程序

传真:ℕ → ℕf zero=零f(suc zero)=零f(suc(sucn))为零…|_=f(例如)

内部表示为

相互的传真:ℕ → ℕf zero=零f(suc zero)=零f(suc(sucn))=辅助n零辅助的:ℕ → ℕ → ℕ辅助m k=f(例如m)

因此,默认情况下,不接受使用“with”定义f通过终止检查器,即使它看起来是结构化的(suc n是suc suc n)的一个子类。现在,终止检查程序是如果使用选项“--终止深度=2”,则满足。

注意事项:

-这是一个实验性功能,有望被替换为

在不久的将来会变得更聪明。

-增加终止深度将很快导致很长时间

终止检查时间。所以,小心使用。设置终止习惯上深度为100,只是为了安全起见,这并不好想法!

-增加终止深度仅对线性数据有意义

类型,例如和尺寸。对于其他类型,不能增加确认。例如,考虑一个类似的列表示例。数据列表:设置位置nil:列表欺骗:ℕ → 列表列表相互的f:列表列表f nil=零f(cons x nil)=零f(cons x(cons y ys))=辅助y ys辅助的:ℕ → 列表列表aux z z s=f(cons z z s)这里,终止检查器将cons z z与z以及cons z与z进行比较z秒。在这两种情况下,无论如何,结果都是“无关的”我们设置终止深度。这是因为在比较时例如,conszzs到zs,z与zs无关,因此,conszzs也与zs无关。我们不能说这只是“一个”因为z可能是一个非常大的项到非类型化终止检查的弱点。为了重新获得增加终止深度的好处,我们需要按线性类型为列表编制索引,例如或尺寸。使用终止深度2,上述示例适用于向量而不是列表。

codata关键字已删除。要使用coinduction,请使用以下新内置程序:INFINITY、SHARP和FLAT。例子:

  #OPTIONS—通用多态性#模块Coduction其中打开导入级别中缀1000Ş_假设∞:{a}(a:集合a)设置一个♯_ : ∀ {a} {a:设置}A类→ ∞ A类♭  : ∀ {a} {a:设置}→ ∞ A类A类#构建无限∞#
  #打造锐利♯_ #
  #建筑平面图♭  #

请注意,SHARP上的(非依赖)模式匹配不再允许。

还要注意,如果您尝试将上面的杂注,带有COMPILED_TYPE、COMPILER_DATA或COMPILED杂注,或者如果杂注没有在假设之后发生。

编译器将INFINITY内建编译为空(更多或less),以便使用共创不会妨碍外国金融机构声明:

data Colist(A:设置):设置位置[]:大肠杆菌A_●_:(x:A)(xs:∞(大肠杆菌A))大肠杆菌A#COMPILED_DATA大肠杆菌[][](:)#

无限类型。

如果使用了新的标志-保护性保留类型构造函数,然后类型构造函数被视为归纳构造函数,当我们检查生产率(但仅限于参数,并且仅限于严格肯定地使用或根本不使用)。这就产生了如下示例可能的情况如下:

data Rec(A:∞集合):集合,其中折叠:A类记录A--∑不能是下面的记录类型。数据∑(A:设置)(B:ASet):设置位置_,_:(x:A)B个x∑A B语法∑A(λxB) =∑[x∶A]B--W型的共同担保定义。W:(A:套)(A)设置)设置W A B=收入((∑[x∶A](BxW A B))语法W A(λxB) =宽[x∶A]Bsup:{A:Set}{B:A集合}(x:A)(f:B xW A B)W A B公司sup x f=折叠(x,f)W-rec:{A:设置}{B:A集合}(P:W A B设置)({x}{f:BxWAB公司}(年P(f y))P(支持x支持)∀x价格xW-rec P h(倍数(x,f))=h(λyW-rec P h(f y))--归纳-再递归编码为同级递归。数据标签:设置位置‘0′1′2′σ′π′w:标签相互的U:设置U=∑标签U′U′:标签设置U′′0=⊤U′′1=⊤U′′2=⊤U′′σ=Rec((∑[a∶U](El aU) ))U′′π=Rec((∑[a∶U](El aU) ))U′′w=可采收水平((∑[a∶U](El aU) ))埃尔:U设置El(′0,_)=El(′1,_)=⊤El(′2,_)=布尔El(′σ,褶皱(a,b))=∑[x∶El a]El(b x)El(′π,折叠(a,b))=(x:El a)标高(b x)El(′w,褶皱(a,b))=w[x∶El a]El(b x)U记录:(P:∀U厄尔尼诺设置)P(′1,_)ttP(′2,_)真P(′2,_)假({abxy}P a x公司P(b x)yP(′σ,折叠(a,b))(x,y))({abf}(∀xP(b x)(f x))P(′π,折叠(a,b))f)({abxf}(∀yP(′w,折叠(a,b))(f y))P(′w,折叠(a,b))(sup x f))∀u(x:El u)价格U-rec P P1 P2t P2f PσPπPw=rec哪里记录:∀u(x:El u)价格记录('0,_)()rec(′1,_)_=P1rec(′2,_)真=P2trec(′2,_)假=P2frec(′σ,褶皱(a,b))(x,y)=Pσ(rec_x)(rec_y)rec(′π,折叠(a,b))f=Pπ(λx记录_(f x))rec(′w,倍数(a,b))(倍数(x,f))=Pw(λy记录_(f y))

--guardedness-preserving-type构造函数扩展基于对∞的操作性理解/♯_; 目前尚不清楚这个扩展是一致的。

其他

TODO公司

页面上次修改时间:2018年12月14日下午5:17
技术支持私人维基