caledon-3.2.0.0: examples/tactics.ncc
#include "../prelude/logic.ncc"
-- just because we can define the theorem
-- doesn't mean we can prove it (we don't have switch?)
defn natural : prop
as ∀ a : prop . a → (a → a) → a
defn zero : natural
as λ a : prop . λ z : a . λ s : a → a . z
defn succ : natural → natural
as λ n : natural . λ a : prop . λ z : a . λ s : a → a . s (n a z s)
defn even : natural → prop
| even-zero = even zero
| even-succ = [A : natural] even A -> even (succ (succ A))
defn add : natural → natural → natural
as λ n₁ n₂ : natural . n₁ natural n₂ succ
defn thm : prop
as ∀ N . even (add N N)