我想(怀念)使用Isabelle来说明两个给定的公式在语法上是等效的。例如A ? B = B ? A
。
我不想对公式背后的逻辑进行任何详细说明。我不想A ? B
在A和B都为真时也是如此。我只想在结构上比较这两个公式,并说由于可交换性,它们是等效的。
基本上,我希望能够编写将2个公式与某些相等函数进行比较的引理,并使用给定的引理,但是要指定它们,公理。
到目前为止,我认为可以并且应该使用来完成此操作axiomatization
,但是这里的每个人都告诉我axiomatzation
不好。
这使我想到了应该如何完成此任务的问题。2,说命题公式,如何在伊莎贝尔语中就其句法等效性进行比较。举一个具体的例子:
formula ? formula | formula ? formula
Run Code Online (Sandbox Code Playgroud)
以运算符的形式给出,如果可能的话,以数据类型的形式给出
并distributive and commutative property
作为规则给出。
A ? B = B ? A
,如果在定理中陈述,则应该是可证明的。
那就是我想要做的,我希望这个主意很明确,并且有人可以向我解释如何在Isabelle中正确地做到这一点。提前致谢。
我正在将FORTRAN 77代码的一部分转换为C++
DIMENSION ARRAY(513),JRRAY(2,513)
EQUIVALENCE (ARRAY(1),JRRAY(1,1))
Run Code Online (Sandbox Code Playgroud)
这是隐式代码,其中以I,J,K,L,M,N,O,P开头的每个变量名称被隐式地视为整数类型.因此,这里我们有一个名为ARRAY的双精度数组和一个名为JRRAY的整数数组.
等价语句将两个数组的开头指向相同的内存位置.然而,不知何故,当调用ARRAY(I)时,字节被不同地解释为double;当调用JRRAY(I,J)时,字节被解释为整数(至少这就是我认为会发生什么).
在C++中是否有类似的方式可以将相同的内存位置解释为不同的类型?
或者与FORTRAN中的EQUIVALENCE相同的东西,但是在C++中.
番石榴的JavaDoc的Sets.SetView.union()
(以及intersection()
,difference()
和symmetricDifference()
)提及"对等关系":
结果是不确定的,如果
set1
和set2
是基于不同的等价关系集(如HashSet
,TreeSet
和Map.keySet()
一个的IdentityHashMap
都是).
我很难理解那句话的意思.
术语表将"等价关系"定义为反身(" a.relation(a)
总是true
"),对称(a1.relation(a2) == a2.relation(a1)
)和传递(a1.relation(a2) && a2.relation(a3)
暗示a1.relation(a3)
) - 并且指Object.equals()
'docs'.(不幸的是,番石榴维基没有详细说明......
但是Set
在这方面不同类型的不同(即等价关系)如何?他们似乎都继承equals()
了AbstractSet
?它与集合所持有的对象类型(例如Set<Cow>
vs. Set<Chicken>
)无关,是吗?
我有以下用于操纵机器人的API的代码:
data Direction = Left | Right
forward :: IO ()
blocked :: IO Bool
turn :: Direction -> IO ()
Run Code Online (Sandbox Code Playgroud)
我正在尝试理解两个程序,它们将使机器人向前移动,除非它被障碍物挡住,在这种情况下,机器人应向正确的方向旋转。
但是,我不确定以下两个程序之间有什么区别:
-- program 1
robot = do
detected <- blocked
if detected
then turn Right
else forward
robot
-- program 2
robot = do
detected <- blocked
if detected
then turn Right
robot
else forward
robot
Run Code Online (Sandbox Code Playgroud)
该行将detected <- blocked
布尔值从IO中取出。如果条件if detected
为真,则机器人向右转,否则机器人向前移动。在程序1中,向右或向前移动机器人后,将再次调用功能机器人。在程序2中,在右转或前进后直接调用功能机器人。
我不确定在if-else
语句之后(在程序1中)调用机器人与在程序2 中的then
and else
案例中调用机器人之间有什么区别?我是否正确地说这两个程序是等效的?任何见解都表示赞赏。
monads haskell functional-programming equivalence do-notation
可能重复:
Java String.equals与==
我是java的新手,所以不要指望事情变得容易,但这让我感到震惊.为什么地球上没有if语句正确评估:
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class StringMystery extends JFrame {
JTextArea txt = new JTextArea();
String string1 = "abcde";
String string2 = string1.substring(0,4);
public StringMystery() {
setLayout(null);
txt.setBounds(20, 20, 100, 100);
add(txt);
txt.setText(string2);
//string 2 is definitely equal to "abcd" but this doesn't evaluate:
if (string2 == "abcd"){
txt.setText("string2 = abcd");
}
}
public static void main(String[] args) {
StringMystery jtxt = new StringMystery();
jtxt.setSize(200,200);
jtxt.setTitle("String Mystery");
jtxt.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud) 我已将错误隔离到此行:string.getClass()== jojo.getClass()此行不应该创建两个Class对象,然后检查它们(如在两个引用中)是否指向同一个对象?代码不会返回false值,而是不会运行.
public class Tester
{
public static void main(String[] args)
{
OreoJar jojo = new OreoJar(0);
OreoJar momo = new OreoJar(1);
String string = "Hello";
if (momo.getClass() == jojo.getClass())
{
System.out.println("Momo and jojo are of the same class");
}
if (string.getClass() == jojo.getClass())
{
System.out.println("String and jojo are of the same class");
}
}
}
public class OreoJar
{
int oreos;
public OreoJar(int oreos)
{
this.oreos = oreos;
}
public void count()
{
System.out.println(oreos + " oreos in this …
Run Code Online (Sandbox Code Playgroud) 我严重睡眠不足,我需要帮助重写这个小的Python逻辑
for _ in range(100):
if a:
continue
elif b:
continue
elif c and d:
continue
else:
e()
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西
if (some_exprt of a,b,c,d):
e()
Run Code Online (Sandbox Code Playgroud)
我得到的是:
if not a and not b and (not c or not d):
e()
Run Code Online (Sandbox Code Playgroud)
但是我真的不知道这是否正确,我是对的吗?
我想知道PHP中下面的javascript代码的等价物:
setTimeout ( "doSomething()", 5000 );
function doSomething ( )
{
document.write('hello');
setTimeout ( "doSomething()", 5000 );
}
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法?
我有一个名为'Value'的属性的类,它是Object类型.值可以是任何类型,结构,类,数组,IList等.
我的问题在于设置器并确定值是否已更改.对于值类型来说这很简单,但引用类型和列表存在问题.
对于一个类,您会假设Equals方法已正确实现,或者只是假设每次调用setter时值都已更改?如果我确实认为它已经改变了,那么也许我应该将其视为值类型,以便行为是一致的.
对于列表,我可以检查大小,然后检查集合中的每个项目,看看它们是否已更改.
你们怎么处理这个问题?
附加的脚本对样本变量x,y和z执行等效性测试.
equivalence.xyplot()
虽然基本的格子图形很难用,但它确实很方便.如何使用ggplot2绘制这些数据而不是基本点阵图形?
编辑:
例如,using ggplot(plot1)
返回以下错误:
错误:ggplot2不知道如何处理类格子的数据
我不知道从哪里开始将格子类数据转换为ggplot2格式.关于将基于格子的图形转换为ggplot2的任何具体建议都将受到赞赏.
require(equivalence)
require(gridExtra)
require(lattice)
x = c(1,4,3,5,3,7,8,6,7,8,9)
y = c(1,5,4,5,3,6,7,6,7,2,8)
z = c(2,4,3,5,4,7,8,5,6,6,9)
mydata = data.frame(x,y,z)
plot1 = equivalence.xyplot(mydata$x~mydata$y,alpha=0.05, b0.ii=0.25, b1.ii=0.25)
plot2 = equivalence.xyplot(mydata$x~mydata$z,alpha=0.05, b0.ii=0.25, b1.ii=0.25)
plot3 = equivalence.xyplot(mydata$y~mydata$z,alpha=0.05, b0.ii=0.25, b1.ii=0.25)
# Combine plots into one figure
grid.arrange(plot1, plot2, plot3, ncol=2)
Run Code Online (Sandbox Code Playgroud)
equivalence ×10
java ×3
.net ×1
c# ×1
c++ ×1
collections ×1
control-flow ×1
do-notation ×1
fortran ×1
ggplot2 ×1
graphics ×1
guava ×1
haskell ×1
isabelle ×1
javascript ×1
lattice ×1
logic ×1
monads ×1
php ×1
python ×1
r ×1
set ×1
substring ×1
vb.net ×1