问题标签 [equivalence]

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.

0 投票
2 回答
393 浏览

automata - 自动机:仅使用等价类来证明规律性

我试图以多种方式解决这个问题,并在几个地方都没有答案。问题如下:

[问题]
给定两种常规语言(可以称为有限描述语言,idk)L1L2,我们定义一种新语言如下:

我应该用来证明L is regular,但是我有以下限制:

  • 我必须使用 Equivalence 类,别无他法

  • 我不能使用Rank(L),如显示对等价类数量的限制,而是必须显示它们

  • 我可以使用所有常规语言都拥有的闭包属性

我并不期待一个完整的证明(尽管这将不胜感激),而是对如何去做这样的事情的解释。
提前致谢。

0 投票
3 回答
409 浏览

termination - Agda:子集合的等价关系

我想在CoList (Maybe Nat)s 上定义一个仅考虑justs 的相等性。当然,我不能只是从CoList (Maybe A)to 开始CoList A,因为那不一定是富有成效的。

那么,我的问题是如何定义这样的等价关系(不考虑可判定性)?如果我可以将无限just尾视为不等价,它是否有帮助?

下面的@gallais 建议我应该能够天真地定义这种关系:

但是证明它的传递性会从终止检查器中进入(预期的)问题:

所以我试着让双方都不nothing那么模棱两可的情况(就像@Vitus建议的那样):

但现在我不知道如何定义有问题的情况trans(我留下一个洞的情况)

0 投票
1 回答
365 浏览

javascript - Primitives and Object Wrapper Equivalence in JavaScript

EDIT: Based on everyone's feedback, the original version of this question is more design-related, not standards-related. Making more SO-friendly.


Original:

Should a JS primitive be considered "equivalent" to an object-wrapped version of that primitive according to the ECMA standards?


Revised Question

Is there a universal agreement on how to compare primitive-wrapped objects in current JavaScript?


EDIT:

As @Pointy commented, ECMA spec (262, S15.1.2.4) describes a Number.isNaN() method that behaves as follows:

Apparently, the justification for this behavior is that isNaN will return true IF the argument coerces to NaN. new Number(NaN) does not directly coerce based on how the native isNaN operates.

It seems that the performance hit and trickiness in type conversion, etc, of directly using native Object Wrappers as opposed to primitives outweighs the semantic benefits for now.

See this JSPerf.

0 投票
3 回答
1133 浏览

java - == 运算符的编译错误

我已经将错误隔离到这一行: string.getClass() == jojo.getClass() 这行不应该创建两个 Class 对象,然后检查它们(如在两个引用中)是否指向同一个对象?代码不会运行,而不是返回 false 值。

这个评论有点隐藏,我认为值得一提,因为它对初学者(比如我自己)最有意义

- 根据 JLS “如果无法通过强制转换将任一操作数的类型转换为另一个操作数的类型,则这是编译时错误”,因此可以比较类型 A 和 B 的两个引用,如果且仅如果,A 可以转换为 B,或者 B 可以转换为 A。——Patricia Shanahan

0 投票
0 回答
170 浏览

coq - Morphism - Coq 中不可转换术语的 Setoid

我在 Coq 中有以下功能。现在我想定义一个实例如下。在我的例子中,类型 [nat] 上的等价性 [==] 已定义,但未在 [StringMap.t String.t] 上定义。请如果您解决了 Instace SC_Proper。谢谢。

0 投票
4 回答
318 浏览

c++ - C++ Stl 设置行为

我试图运行下面的代码。我发现输出存在差异。我了解比较器功能中使用的排序机制存在问题。我基本上要寻找的是:1)Set如何在内部存储数据。2)如何解决此问题或将数据复制到不同集合的最佳方法。3)排序究竟是如何产生这个问题的。

0 投票
3 回答
1135 浏览

c++ - 为什么向量的多参数构造函数采用未标记为“显式”的构造参数?

我在标准 C++ 库中观察到以下向量构造函数

没有标记第二个构造函数是否有原因explicit?这编译,让我感觉不好

虽然如果我省略"foo",它不会编译,当我将一个 int 和一个字符串的对(复合)值传递给一个需要字符串向量的函数时,这就是我所期望的。

0 投票
3 回答
2120 浏览

java - 如何在Java中实现等价类?

在 Java 中实现等价类的简单方法是什么?有没有为此目的的图书馆?

麻烦的部分是如何编写一个高效且非天真的“相等”运算符。

S = {x,y,z,w,h}. 如果我们x->1, y->1, z->1, w->2, h->2对 S 的等价类使用映射,则必须将映射x->10, y->10, z->10, w->20, h->20视为相同的等价类。

当集合 S 的基数变大时,幼稚的“相等”运算符会很快变得耗时。

什么是简单的方法?任何想法?

[编辑]为了澄清,具体问题可以形式化如下:

令 S 为非空集。我们用 M 表示一组从 V 到整数的部分映射。比较容易证明下面定义的二元关系 \sim 导出了 M 上的等价关系。

对于 m1 和 m2 M 的两个部分映射,m1 \sim m2 当且仅当,

  1. 对于 V 的任何 a,当且仅当定义了 m2(a) 时,才定义 m1(a)
  2. 对于 V 的任何 a,b,m1(a) 和 m1(b) 都被定义为相同的整数值 'z1' 当且仅当 m2(a) 和 m2(b) 都被定义为相同的整数值“z2”(可能与“z1”不同,也可能不同)

    例子。

    a->9,b->9,w->1 \sim a->10,b->10,w->0

    但是这样说是不对的

    a->5 \sim b->9

谢谢。

0 投票
2 回答
232 浏览

php - 可以在 PHP 中重现的带有 jQ​​uery 的唯一哈希

我正在使用一个脚本,我需要使用 jQuery 创建一个独特的Hash,我将能够类似于 PHP 函数uniqid()

有什么帮助吗?

0 投票
2 回答
382 浏览

python - 检查 C 中的两个“简单”“if 语句”是否等价

我有来自两个不同来源的“if 语句”,它们试图以不同的方式实现相同的条件。“if 语句”是 C。如果可能的话,我需要一个 python 脚本来决定成对条件是否相等。一个基本的例子:

来源1:((op1 != v1) || ((op2 != v2) || (op3 != v3)))

来源2:((op2 != v2) || (op1 != v1) || (op3 != v3))

当然,任何运算符都是允许的,函数调用,当然还有括号。

欢迎任何想法。

编辑 1:函数调用没有副作用。