- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 ATS 代码:
extern prfun mul_nx0_0 {n:int} (): MUL(n, 0, 0)
extern prfun mul_nx1_n {n:int} (): MUL(n, 1, n)
extern prfun mul_neg_1 {m,n,p:int} (MUL(m, n, p)): MUL(~m, n, ~p)
extern prfun mul_neg_2 {m,n,p:int} (MUL(m, n, p)): MUL(m, ~n, ~p)
extern prfun mul_assoc {a,b,c,ab,bc,abc:int}
( MUL(a, b, ab)
, MUL(b, c, bc)
, MUL(ab, c, abc)
): MUL(a, bc, abc)
primplmnt mul_assoc {a,b,c,ab,bc,abc:int} (pf1, pf2, pf3) =
let
prfun mul_assoc1 {a,b,c,ab,bc,abc:nat} .<a>.
(pf1: MUL(a, b, ab), pf2: MUL(b, c, bc), pf3: MUL(ab, c, abc)) : MUL(a, bc, abc) =
case+ pf1 of
| MULbas() => MULbas()
| MULind(pf1') =>
case+ pf2 of
| MULbas() => mul_nx0_0 {a} ()
| MULind(pf2') =>
case+ pf3 of
| MULbas() =>
sif a == 0
then MULbas()
else mul_nx0_0 {a} ()
| MULind(pf3') => MULind(mul_assoc1(pf1', pf2', pf3'))
in
sif a < 0
then let
prval _pf1 = mul_neg_1(pf1)
prval _pf3 = mul_neg_1(pf3)
in
sif b < 0
then let
prval __pf1 = mul_neg_2(_pf1)
prval _pf2 = mul_neg_1(pf2)
prval __pf3 = mul_neg_1(_pf3)
in
sif c < 0
then let
prval __pf2 = mul_neg_2(_pf2)
prval ___pf3 = mul_neg_2(__pf3)
in
MULneg(mul_assoc1(__pf1, __pf2, ___pf3))
end
else MULneg(mul_neg_2(mul_assoc1(__pf1, _pf2, __pf3)))
end
else MULneg(mul_assoc1(_pf1, pf2, _pf3))
end
else sif b < 0
then sif c < 0
then let
prval _pf1 = mul_neg_2(pf1)
prval _pf2 = mul_neg_1(mul_neg_2(pf2))
prval _pf3 = mul_neg_1(mul_neg_2(pf3))
in
mul_assoc1(_pf1, _pf2, _pf3)
end
else let
prval _pf1 = mul_neg_2(pf1)
prval _pf2 = mul_neg_2(pf2)
prval _pf3 = mul_neg_2(pf3)
in
MULneg(mul_assoc1(_pf1, _pf2, _pf3))
end
else sif c < 0
then let
prval _pf2 = mul_neg_1(pf2)
prval _pf3 = mul_neg_1(pf3)
in
MULneg(mul_assoc1(pf1, _pf2, _pf3))
end
else mul_assoc1(pf1, pf2, pf3)
end
implement main0 () = ()
代码的动机是使用依赖类型系统完成一个简单的练习:证明整数乘法是关联的。证明的思想是将 3 个整数变量 a、b、c 分解为它们符号的可能情况,然后将问题简化为证明自然数乘法的结合性,我们可以在其中使用归纳法。
从数学上讲,这个策略应该是合理的(尽管分解案例并制作一个巨大的决策树是乏味的)。问题是,当我尝试使用命令 patscc assoc.dats
编译上述文件时,我收到以下错误消息:
assoc.dats: 591(line=20, offs=27) -- 599(line=20, offs=35): error(3): unsolved constraint: C3NSTRprop(C3TKmain(); S2Eeqeq(S2Eintinf(0); S2Evar(abc(4303))))
typechecking has failed: there are some unsolved constraints: please inspect the above reported error message(s) for information.
exit(ATS): uncaught exception: _2tmp_2ATS_2dPostiats_2src_2pats_error_2esats__FatalErrorExn(1025)
坦率地说,我不知道如何解释此错误消息。什么是约束 C3NSTRprop(C3TKmain(); S2Eeqeq(S2Eintinf(0); S2Evar(abc(4303))))
?
最佳答案
当前代码存在不少问题。例如,以下案例不起作用:
case+ pf1 of
| MULbas() => MULbas()
因为abc==0还没有被证明。这可以很容易地修复如下:
case+ pf1 of
| MULbas() => let prval MULbas() = pf3 in MULbas() end
我不建议继续使用当前的验证代码。
一般来说,如果你想从第一性原理证明涉及MUL的定理,那么你几乎总是需要以下两个证明函数:
extern
prfun
mul_is_tot
{a,b:int}() : [c:int] MUL(a, b, c)
extern
prfun
mul_is_fun
{a,b,c1,c2:int}
( pf1: MUL(a, b, c1)
, pf2: MUL(a, b, c2)): [c1==c2] void
顺便说一句,mul_assoc 的以下实现通过了类型检查:
extern
prfun
mul_is_tot
{a,b:int}() : [c:int] MUL(a, b, c)
extern
prfun
mul_is_fun
{a,b,c1,c2:int}
( pf1: MUL(a, b, c1)
, pf2: MUL(a, b, c2)): [c1==c2] void
extern
prfun
mul_distrib
{a,b,c,ac,bc:int}
( MUL(a, c, ac)
, MUL(b, c, bc)): MUL(a+b, c, ac+bc)
extern
prfun
mul_assoc
{a,b,c,ab,bc,abc:int}
( pf1: MUL(a, b, ab),
pf2: MUL(b, c, bc),
pf3: MUL(ab, c, abc)): MUL(a, bc, abc)
extern
prfun
mul_neg_1
{m,n,p:int}(MUL(m, n, p)): MUL(~m, n, ~p)
primplmnt
mul_assoc
{a,b,c
,ab,bc,abc:int}
(pf1, pf2, pf3) =
(
sif
(a >= 0)
then
mul_assoc1(pf1, pf2, pf3)
else
mul_neg_1(mul_assoc1(mul_neg_1(pf1), pf2, mul_neg_1(pf3)))
) where
{
prfun
mul_assoc1
{a:nat
;b,c,ab,bc,abc:int} .<a>.
( pf1: MUL(a, b, ab),
pf2: MUL(b, c, bc),
pf3: MUL(ab, c, abc)): MUL(a, bc, abc) =
(
case+ pf1 of
| MULbas() =>
let
prval MULbas() = pf3 in MULbas()
end
| MULind(pf1') => // a = a'+1 // ab = a'b + b
let
prval pf3' = mul_is_tot() // (a'*b)*c
prval res' = mul_assoc1(pf1', pf2, pf3') // (a'*b)*c = a'*(b*c)
prval ( ) = mul_is_fun(pf3, mul_distrib(pf3', pf2))
in
MULind(res')
end
)
} (* end of [mul_assoc] *)
关于ATS - 约束 C3NSTRprop(C3TKmain(); S2Eeqeq(S2Eintinf(0); S2Evar(abc(4303)))) 指的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58495126/
我可以添加一个检查约束来确保所有值都是唯一的,但允许默认值重复吗? 最佳答案 您可以使用基于函数的索引 (FBI) 来实现此目的: create unique index idx on my_tabl
嗨,我在让我的约束在grails项目中工作时遇到了一些麻烦。我试图确保Site_ID的字段不留为空白,但仍接受空白输入。另外,我尝试设置字段显示的顺序,但即使尝试时也无法反射(reflect)在页面上
我似乎做错了,我正在尝试将一个字段修改为外键,并使用级联删除...我做错了什么? ALTER TABLE my_table ADD CONSTRAINT $4 FOREIGN KEY my_field
阅读目录 1、约束的基本概念 2、约束的案例实践 3、外键约束介绍 4、外键约束展示 5、删除
SQLite 约束 约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。 约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整
我在 SerenityOS project 中偶然发现了这段代码: template void dbgln(CheckedFormatString&& fmtstr, const Parameters
我有表 tariffs,有两列:(tariff_id, reception) 我有表 users,有两列:(user_id, reception) 我的表 users_tariffs 有两列:(use
在 Derby 服务器中,如何使用模式的系统表中的信息来创建选择语句以检索每个表的约束名称? 最佳答案 相关手册是Derby Reference Manual .有许多可用版本:10.13 是 201
我正在使用 z3py 进行编码。请参阅以下示例。 from z3 import * x = Int('x') y = Int('y') s = Solver() s.add(x+y>3) if s.c
非常快速和简单的问题。我正在运行一个脚本来导入数据并声明了一个临时表并将检查约束应用于该表。显然,如果脚本运行不止一次,我会检查临时表是否已经存在,如果存在,我会删除并重新创建临时表。这也会删除并重新
我有一个浮点变量 x在一个线性程序中,它应该是 0或两个常量之间 CONSTANT_A和 CONSTANT_B : LP.addConstraint(x == 0 OR CONSTANT_A <= x
我在使用grails的spring-data-neo4j获得唯一约束时遇到了一些麻烦。 我怀疑这是因为我没有正确连接它,但是存储库正在扫描和连接,并且CRUD正在工作,所以我不确定我做错了什么。 我正
这个问题在这里已经有了答案: Is there a constraint that restricts my generic method to numeric types? (24 个回答) 7年前
我有一个浮点变量 x在一个线性程序中,它应该是 0或两个常量之间 CONSTANT_A和 CONSTANT_B : LP.addConstraint(x == 0 OR CONSTANT_A <= x
在iOS的 ScrollView 中将图像和带有动态文本(动态高度)的标签居中的最佳方法是什么? 我必须添加哪些约束?我真的无法弄清楚它是如何工作的,也许我无法处理它,因为我是一名 Android 开
考虑以下代码: class Foo f class Bar b newtype D d = D call :: Proxy c -> (forall a . c a => a -> Bool) ->
我有一个类型类,它强加了 KnownNat约束: class KnownNat (Card a) => HasFin a where type Card a :: Nat ... 而且,我有几
我知道REST原则上与HTTP无关。 HTTP是协议,REST是用于通过Web传输hypermedia的体系结构样式。 REST可以使用诸如HTTP,FTP等的任何应用程序层协议。关于REST的讨论很
我有这样的情况,我必须在数据库中存储复杂的数据编号。类似于 21/2011,其中 21 是文件编号,但 2011 是文件年份。所以我需要一些约束来处理唯一性,因为有编号为 21/2010 和 21/2
我有一个 MySql (InnoDb) 表,表示对许多类型的对象之一所做的评论。因为我正在使用 Concrete Table Inheritance ,对于下面显示的每种类型的对象(商店、类别、项目)
我是一名优秀的程序员,十分优秀!