假设我有算符A和算符B,它们作用于f(x) = 2x。如何创建一个函数来说明在python中A(B(f(X) == B(A(f(X)?
这是我的尝试:
#Commutation: Creating a function that checks whether operators A and B commutate on some dummy function f(x) = 2*x
#[A,B](2x) =?= 0
def commutate(A,B):
f = lambda x: 2*x
if lambda x: A(B(f)) - B(A(f)) == 0:
我有一个编程语言的AST的数据类型,我想解释一下,但AST大约有10个不同的构造函数。
data Term : Set where
UnitTerm : Term
VarTerm : Var -> Term
...
SeqTerm : Term -> Term -> Term
我正在尝试编写一个函数,它对这种语言的语法树具有可判定的等价性。从理论上讲,这很简单:没有什么太复杂的,它只是存储在AST中的简单数据。
问题是,编写这样一个函数似乎需要大约100个用例:对于每个构造函数,有10个用例。
eqDecide : (x : Term) -> (y
我有一个字典d (和一个单独排序的键列表keys)。我希望循环只处理值为False的条目-所以我尝试了以下方法:
for key in keys and not d[key]:
#do foo
我想我对python sytax的理解并不是我想的那样--因为赋值不应该发生在上面,并且我得到了一个实例化错误。
下面的代码当然可以,但我真的希望能够使用上面的代码。有可能吗?
for key in keys:
if d[key]: continue
#foo time!
谢谢!
我正在试着解决这个问题。希望有人能帮上忙。
假设我们有一个名为Confusion的程序;
Program confusion
if(Virus-Finder(Confusion) = false) then
infect-executable
else
halt
End program confusion
显然这是伪代码,所以不会运行。
对于任何程序P,我们可以运行Virus-Finder(P),如果是病毒,则结果为True,如果不是,则结果为False。
infect-executable是一个模块,它扫描内存中的可执行程序,并在这些可执行程序中复制程序Confusion。
我们
我对哈斯克尔很陌生,只是玩了一会儿。
我编写了一个轻量级的OOP仿真:
--OOP.hs
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, UndecidableInstances, ScopedTypeVariables, FunctionalDependencies #-}
module OOP where
class Provides obj iface where
provide::obj->iface
(#>)::obj->(iface->a)->a
o #>
我在想的是证据不相关的问题。一份可以证明的声明说:
如果一种类型的相等是可判定的,那么平等语句只能有一个证明,即自反性。
我想知道是否有可能在COQ中使用多个等式证明来构造类型。因此,我会问,下面的构造是否一致?
(*it is known that f=g is undecidable in COQ *)
Definition f(n:nat) := n.
Definition g(n:nat) := n+0.
Axiom p1: f=g.
Axiom p2: f=g.
Axiom nonirrelevance:p1<>p2.
我在这里困惑的是,通过引入p1,
Inductive ty: Set :=
| I
| O.
Definition f (x: ty) (y: ty): nat :=
if x = y then 0 else 1.
我希望函数f比较ty类型的两个术语,但是它没有编译,我看到了这个错误:
术语x = y有Prop类型,它不是(共同)归纳类型.