【发布时间】:2016-04-07 16:00:05
【问题描述】:
data Nat = Zero | Succ Nat
type Predicate = (Nat -> Bool)
-- forAllNat p = (p n) for every finite defined n :: Nat
implies :: Bool -> Bool -> Bool
implies p q = (not p) || q
basecase :: Predicate -> Bool
basecase p = p Zero
jump :: Predicate -> Predicate
jump p n = implies (p n) (p (Succ n))
indstep :: Predicate -> Bool
indstep p = forallnat (jump p)
问题:
证明如果basecase p和indstep p,那么forAllNat p
我不明白的是,如果basecase p和indstep p,那么forAllNat p当然应该是True。
我认为basecase p 说P(0) 是真的,并且
indstep p 表示 P(Succ n) 即 P(n+1) 是真的
我们需要证明P(n) 是真的。
我对吗?
有关如何执行此操作的任何建议?
【问题讨论】:
标签: haskell math proof induction