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