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)
问题:
证明 ifbasecase 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)
是真的。我对吗?关于如何做到这一点的任何建议?