所以我试图理解为什么这段代码在()周围给出黄色突出显示
data sometype : List ? ? Set where
constr : (l1 l2 : List ?)(n : ?) ? sometype (l1 ++ (n ? l2))
somef : sometype [] ? ?
somef ()
Run Code Online (Sandbox Code Playgroud)
但事实并非如此
data sometype : List ? ? Set where
constr : (l1 l2 : List ?)(n : ?) ? sometype (n ? (l1 ++ l2))
somef : sometype [] ? ?
somef ()
Run Code Online (Sandbox Code Playgroud)
两者似乎都是sometype []是空的,但是Agda无法想出第一个?为什么?这背后的代码是什么?我能否以某种方式定义somef以使第一个定义有效?
例如
Record posreal : Type := mkposreal {pos :> R; cond_pos : 0 < pos}.
Run Code Online (Sandbox Code Playgroud)
":>"是什么意思?我希望这不是重复,但很难找到符号.
我是相对较新的haskell,我刚刚学习了Applicative Functors,我只使用仿函数和布尔函数为xor创建了这个代码.我想知道你们是否可以用仿函数提出一个更短的解决方案(我确信存在).
xor :: Bool->Bool->Bool
xor=(<$>) (not<$>) ((<*>).((((not<$>)<$>(&&))<$>)<$>((not<$>)<$>(&&)))<*>(||))
Run Code Online (Sandbox Code Playgroud)
我知道这可能不是很好的做法; 对我来说这更像是一个脑筋急转弯.
PS我希望这是允许的
我正在尝试理解Agda标准库的某些部分,我似乎无法弄清楚它的定义REL
.FWIW这里的定义是REL
:
-- Binary relations
-- Heterogeneous binary relations
REL : ? {a b} ? Set a ? Set b ? (? : Level) ? Set (a ? b ? suc ?)
REL A B ? = A ? B ? Set ?
Run Code Online (Sandbox Code Playgroud)
我在网上找不到任何解释这个的文档,这就是我在这里问的原因.这如何定义二元关系?
这是Coq标准库中定义的完整性公理.
Definition is_upper_bound (E:R -> Prop) (m:R) := forall x:R, E x -> x <= m.
Definition bound (E:R -> Prop) := exists m : R, is_upper_bound E m.
Definition is_lub (E:R -> Prop) (m:R) :=
is_upper_bound E m /\ (forall b:R, is_upper_bound E b -> m <= b).
Axiom completeness :
forall E:R -> Prop,
bound E -> (exists x : R, E x) -> { m:R | is_lub E m }.
Run Code Online (Sandbox Code Playgroud)
假设我加入
Axiom supremum :forall E:R -> Prop, …
Run Code Online (Sandbox Code Playgroud) 我听说阿格达的Martin-Lof类型理论与排除中的理论是一致的.我如何将其添加为假设?另外,在添加LEM之后,它是经典的一阶逻辑吗?我的意思是,我是否也有(对所有)=存在(不)等价?我不知道类型理论,所以如果你在类型理论中引用任何结果,请添加其他解释.