Thm* 'a:S.
Thm* all
Thm* ( e:'a. all
Thm* ( e:'a. ( f:'a  hnum  'a. exists_unique
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. and
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. (equal(fn1(0),e)
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. ,all
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. ,( n:hnum. equal
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. ,( n:hnum. (fn1(suc(n))
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. ,( n:hnum. ,f
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. ,( n:hnum. ,(fn1(n)
Thm* ( e:'a. ( f:'a  hnum  'a. ( fn1:hnum  'a. ,( n:hnum. ,,n))))))) | [hnum_axiom] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  hnum  'a. and
Thm* ( x:'a. ( f:'a  hnum  'a. (equal(prim_rec(x,f,0),x)
Thm* ( x:'a. ( f:'a  hnum  'a. ,all
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. equal
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. (prim_rec(x,f,suc(m))
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ,f(prim_rec(x,f,m),m)))))) | [hprim_rec_thm] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  hnum  'a. and
Thm* ( x:'a. ( f:'a  hnum  'a. (all( n:hnum. equal(prim_rec_fun(x,f,0,n),x))
Thm* ( x:'a. ( f:'a  hnum  'a. ,all
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. all
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. equal
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. (prim_rec_fun
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ((x
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. (,f
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. (,suc(m)
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. (,n)
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,f
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,(prim_rec_fun
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,((x
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,(,f
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,(,m
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,(,pre(n))
Thm* ( x:'a. ( f:'a  hnum  'a. ,( m:hnum. ( n:hnum. ,,n))))))) | [hprim_rec_eqn] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  'a. and
Thm* ( x:'a. ( f:'a  'a. (equal(simp_rec(x,f,0),x)
Thm* ( x:'a. ( f:'a  'a. ,all
Thm* ( x:'a. ( f:'a  'a. ,( m:hnum. equal
Thm* ( x:'a. ( f:'a  'a. ,( m:hnum. (simp_rec(x,f,suc(m))
Thm* ( x:'a. ( f:'a  'a. ,( m:hnum. ,f(simp_rec(x,f,m))))))) | [hsimp_rec_thm] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  'a. all
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. exists
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ( fun:hnum  'a. simp_rec_rel
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ( fun:hnum  'a. (fun
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ( fun:hnum  'a. ,x
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ( fun:hnum  'a. ,f
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ( fun:hnum  'a. ,n))))) | [hsimp_rec_exists] |
Thm* 'a:S.
Thm* all
Thm* ( n:hnum. all
Thm* ( n:hnum. ( f:'a
Thm* ( n:hnum. ( 'a. all
Thm* ( n:hnum. ( 'a. ( x:'a. equal
Thm* ( n:hnum. ( 'a. ( x:'a. (exists( fun:hnum  'a. simp_rec_rel(fun,x,f,n))
Thm* ( n:hnum. ( 'a. ( x:'a. ,and
Thm* ( n:hnum. ( 'a. ( x:'a. ,(equal(simp_rec_fun(x,f,n,0),x)
Thm* ( n:hnum. ( 'a. ( x:'a. ,,all
Thm* ( n:hnum. ( 'a. ( x:'a. ,,( m:hnum. implies
Thm* ( n:hnum. ( 'a. ( x:'a. ,,( m:hnum. (lt(m,n)
Thm* ( n:hnum. ( 'a. ( x:'a. ,,( m:hnum. ,equal
Thm* ( n:hnum. ( 'a. ( x:'a. ,,( m:hnum. ,(simp_rec_fun(x,f,n,suc(m))
Thm* ( n:hnum. ( 'a. ( x:'a. ,,( m:hnum. ,,f(simp_rec_fun(x,f,n,m)))))))))) | [hsimp_rec_fun_lemma] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  hnum  'a. all
Thm* ( x:'a. ( f:'a  hnum  'a. ( m:hnum. equal
Thm* ( x:'a. ( f:'a  hnum  'a. ( m:hnum. (prim_rec(x,f,m)
Thm* ( x:'a. ( f:'a  hnum  'a. ( m:hnum. ,prim_rec_fun(x,f,m,pre(m)))))) | [hprim_rec_wd] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  hnum  'a. equal
Thm* ( x:'a. ( f:'a  hnum  'a. (prim_rec_fun(x,f)
Thm* ( x:'a. ( f:'a  hnum  'a. ,simp_rec
Thm* ( x:'a. ( f:'a  hnum  'a. ,(( n:hnum. x)
Thm* ( x:'a. ( f:'a  hnum  'a. ,, fun:hnum  'a. n:hnum. f
Thm* ( x:'a. ( f:'a  hnum  'a. ,, fun:hnum  'a. n:hnum. (fun(pre(n))
Thm* ( x:'a. ( f:'a  hnum  'a. ,, fun:hnum  'a. n:hnum. ,n))))) | [hprim_rec_fun_wd] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  'a. all
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. equal
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. (simp_rec(x,f,n)
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,simp_rec_fun(x,f,suc(n),n))))) | [hsimp_rec_wd] |
Thm* 'a:S.
Thm* all
Thm* ( x:'a. all
Thm* ( x:'a. ( f:'a  'a. all
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. equal
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. (simp_rec_fun(x,f,n)
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,select
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,( fun:hnum  'a. simp_rec_rel
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,( fun:hnum  'a. (fun
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,( fun:hnum  'a. ,x
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,( fun:hnum  'a. ,f
Thm* ( x:'a. ( f:'a  'a. ( n:hnum. ,( fun:hnum  'a. ,n)))))) | [hsimp_rec_fun_wd] |
Thm* 'a:S.
Thm* all
Thm* ( fun:hnum
Thm* ( 'a. all
Thm* ( 'a. ( x:'a. all
Thm* ( 'a. ( x:'a. ( f:'a  'a. all
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. equal
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. (simp_rec_rel(fun,x,f,n)
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,and
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,(equal(fun(0),x)
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,,all
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,,( m:hnum. implies
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,,( m:hnum. (lt(m,n)
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,,( m:hnum. ,equal
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,,( m:hnum. ,(fun(suc(m))
Thm* ( 'a. ( x:'a. ( f:'a  'a. ( n:hnum. ,,( m:hnum. ,,f(fun(m))))))))))) | [hsimp_rec_rel_wd] |
Thm* all
Thm* ( m:hnum. all
Thm* ( m:hnum. ( n:hnum. equal
Thm* ( m:hnum. ( n:hnum. (lt(m,n)
Thm* ( m:hnum. ( n:hnum. ,exists
Thm* ( m:hnum. ( n:hnum. ,( P:hnum  hbool. and
Thm* ( m:hnum. ( n:hnum. ,( P:hnum  hbool. (all
Thm* ( m:hnum. ( n:hnum. ,( P:hnum  hbool. (( n:hnum. implies(P(suc(n)),P(n)))
Thm* ( m:hnum. ( n:hnum. ,( P:hnum  hbool. ,and(P(m),not(P(n)))))))) | [hless_def] |
Thm* 'a:S. simp_rec_fun ('a  ('a  'a)  hnum  hnum  'a) | [hsimp_rec_fun_wf] |
Thm* 'a:S. simp_rec_rel ((hnum  'a)  'a  ('a  'a)  hnum  hbool) | [hsimp_rec_rel_wf] |
Def prim_rec_fun
Def == x:'a. f:'a    'a. simp_rec
Def == x:'a. f:'a    'a. (( n: . x)
Def == x:'a. f:'a    'a. , fun:  'a. n: . f(fun(pre(n)),n)) | [hprim_rec_fun] |