问题标签 [partial-ordering]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
coq - 如何证明偏序归纳谓词的可判定性?
语境
我试图用le
Coq 中的关系定义偏序 A ≤ B ≤ C 并证明它是可判定的forall x y, {le x y} + {~le x y}
:
我通过等效的布尔函数成功地做到了这一点,leb
但找不到直接证明它的方法(或le_antisym
为那个母校)。我陷入以下情况:
问题
- 我如何证明,这
le C A
是一个错误的前提? - 我应该使用其他证明策略吗?
- 我应该以不同的方式定义我的谓词
le
吗?
最小的可执行示例
c++ - C++ 模板:无法匹配可变参数类模板中的最后一个模板
我正在学习 C++11 可变参数模板并创建了一个模板结构来计算给定列表的最大数量并尝试:
但 g++ 抱怨:
我可以通过在前面添加一个简单的声明来使其运行:
并将上面的第一个模板更改为:
我提到了 cppreference:https ://en.cppreference.com/w/cpp/language/partial_specialization#Partial_ordering 但我找不到任何有用的解释。
问题可能来自max<a>
只有一个模板参数的最后一个模板 ( ),它不是主模板的专用版本。
所以我的问题是:
为什么max<a>
不能匹配?是否有任何规则或标准来处理这个问题?
==================================================== ================
好的,我发现 C++ 标准(文档编号 N4659)说:
[注意:类模板的部分特化是通过查找主要类模板然后考虑该模板的所有部分特化来找到的。如果 using-declaration 命名类模板,则在 using-declaration 之后引入的部分特化有效可见,因为主模板是可见的 (17.5.5)。——尾注]
所以我认为任何不从基本/主要模板专门化的部分专门化模板都被认为是错误的,即使有时我们可以从正常的表达形式生成一些非专门化形式。
c# - 按标题排序文本文件,然后按正文
我有一个TextFile
用 a命名的类Title
,Body
它们都是字符串。
在我的应用程序中,我希望最终用户能够对这些文件执行搜索。
我想创建我的算法,首先对标题中包含搜索词的文件进行排序,然后是正文中包含搜索词的文件。
示例搜索词:“农民”
文件 1:
书名:《欧洲农民》
正文:包含 'Farmer' 50 次
文件 2:
作品名称:《菜地》
正文:包含 'Farmer' 10 次
文件 3:
书名:《世界农民》
正文:包含 'Farmer' 10 次
结果将是(按金额降序排列):
- 文件 1
- 文件 3
- 文件 2
我的问题:当文件在标题中包含搜索词的确切次数时,我如何开始订购(参见文件 1 和文件 3)?
我如何先按标题排序,然后按正文中的出现次数排序?
coq - 如何证明交换其参数的关系的可判定性?
我有一种情况,我定义了一个归纳数据类型t
和一个偏序le
(cf le_refl
、le_trans
和le_antisym
)。在这种情况下,顺序具有这种特殊性le_C
,即在归纳假设中交换了参数的顺序。
因此,我没有成功证明这种排序关系是确定性的(cf le_dec
)。有问题的子目标如下。
归纳假设是指le t1 t2
当我需要时le t2 t1
。
当我想到这一点时,这是有道理的,这个二进制函数既不是在第一个参数上也不是在第二个参数上的原始递归,而是在两个参数的对上。我的印象是我应该以某种方式同时对两个论点进行归纳,但看不到如何做到这一点。
我确实设法定义了一个布尔函数leb
并用它来证明le_dec
,但我想知道,从学习的角度来看,如何直接用归纳法进行证明。
问题
- 如何根据定义直接证明(即不先定义等效的布尔函数)?
le_dec
le
最小的可执行示例
主要定义
辅助引理
偏序证明
等效布尔函数
我真正想证明的
基于亚瑟答案的解决方案
c - SCTP 有序消息传递
是否可以强制SCTP发送完全有序的所有数据?
让我们做这个实验:
1)拿这个SCTP-discard-server和这个SCTP-client。
2)让客户端数到100很多次,每次分别向服务器发送一个字节。
3) 让服务器以同样的方式计数,并将其数量与收到的数量进行比较。
几秒钟后:
瞧!
我在我的Ubuntu 18.04机器上$ gcc discard_server.c -Wall -lusrsctp
使用gcc7.3.0编译了这个。是的,我已经尝试通过.SCTP_NODELAY
我错过了什么?提前感谢您的任何提示。
scala - How to do ordering of a sealed trait?
I have a distributed system defined by a sort of "state machine" ( "flow chart" )
each system writes there state in a shared "log"
I'm representing each state as part of a sealed trait and a given "status" for that state
I want to "merge/reduce" to a single status which represents the current progress.
(There are some relaxations in place as not all must succeed in order for the final status to complete successfully)
There are 2 sealed traits representing the flow:
Log:
now there are a set of rules which I use to define a single status reduction
basically it gives a priority
A < B < C, ... < Z
and
Pending < InProgress < Success < Fail
so if there is a status of:
(A, Success)
versus (C, Pending)
I want to reduce it to (C,Pending)
and if
(A,Success)
versus (B, Fail)
I want to reduce it to (B, Fail)
I can model this as a simple integer comparison in my case (possibly with an outlier which I explicitly test for)
I'm not clear how to make the sealed traits comparible/orderable which would make my life way easier
something along these lines is adequate:
c++ - 向量的部分排序
给定 5 个向量,例如:
我试图找到类似的向量,例如 ifA[X1]>B[X1]
和A[X2]>B[X2]
,我们删除B
A 并将其保留为“好”向量。如果A[X1]>B[X1]
然后A[X2]<B[X2]
我们保留它们。我尝试在向量之间使用余弦相似度,但结果不正确。例如,上述向量将只有 3 个剩余的“好”向量,A,C,D
。比较每个属性并按列排序(部分排序)是我正在考虑的一种方式。但是如果我有d = 10
属性呢?如何解决这个问题?
z3 - 哪种编码更适合使用 Z3 来解决偏序理论?
我正在考虑对偏序关系进行编码以提供 Z3 的多种方法。
该问题已经以各种方式受到限制,并使用 QF_ 逻辑变体(主要是 LIA 或 LRA)。
我有额外的约束,我可以用偏序来改进解决方案,形式为 if variable ei>0 => a0 precedes ai
,其中ei
我的问题的一个变量存在并且ai
变量是新的,并表示“先于”偏序约束。
因此,这种偏序将以多种方式限制根据 ei 获得的解。
一个解决方案可能是使用像这个例子这样未解释的函数: https ://rise4fun.com/Z3/fZQc
这正是我想要的,但这也引入了一个带有量词的新逻辑。
另一种选择是将我的元素放入一个具体的域中,例如 Real 或 Int: https ://rise4fun.com/Z3/U0Hp
代码更简单并且不使用量词,但它迫使(也许?)求解器过度思考,因为 Real 比第一个版本中的抽象域 A 具有更多的属性。
那么通常应该首选哪种编码来编码部分订单?是否有我应该考虑的其他参数,或者我可以配置的策略来帮助解决此类问题?
c++ - 如何理解 T& 和 T const& 的偏序规则
我对这些部分排序规则感到困惑。以下是一些报价:[temp.deduct.partial]/5
在完成偏序之前,对用于偏序的类型执行某些转换:
如果
P
是引用类型,P
则替换为引用的类型。如果
A
是引用类型,A
则替换为引用的类型。
如果
P
和A
都是引用类型(在被上面提到的类型替换之前),确定这两种类型中的哪一种(如果有的话)比另一种更具 cv 限定性;否则,这些类型被认为是同等 cv 限定的,用于部分排序目的。下面将使用该确定的结果。
删除任何顶级 cv 限定符:
如果
P
是 cv 限定类型,P
则替换为 的 cv 不限定版本P
。如果
A
是 cv 限定类型,A
则替换为 的 cv 不限定版本A
。
首先,两者void show(T&)
和void show(T const&)
都可以通过传递int
左值来调用,因此我们需要使用偏序规则来决定哪个函数更匹配。然后,根据上面的引用,我们做一些转换。步骤1:
第2步:
#5 => #6
, #6 => #5
, 双向推演成功。然后以下规则起作用:[temp.deduct.partial]/9
如果对于给定类型,推导在两个方向上都成功(即,在上述转换之后类型相同)并且两者
P
都是A
引用类型(在被上述类型替换之前):
如果参数模板中的类型是左值引用,而参数模板中的类型不是,则参数类型不被认为至少与参数类型一样特化;
否则,如果参数模板中的类型比参数模板中的类型更具 cv 限定性(如上所述),则参数类型不被认为至少与参数类型一样特化。
那么#4
更专业呢#3
。对于给定的 value a
,#2
应该调用#1
function,但实际上调用的是 function。为什么?我的理解有问题吗?