diff -r a0460a450cf9 -r bbfc360db011 doc-src/TutorialI/Overview/LNCS/Ordinal.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc-src/TutorialI/Overview/LNCS/Ordinal.thy Mon Jul 01 15:33:03 2002 +0200 @@ -0,0 +1,52 @@ +theory Ordinal = Main: + +datatype ordinal = Zero | Succ ordinal | Limit "nat \ ordinal" + +consts + pred :: "ordinal \ nat \ ordinal option" +primrec + "pred Zero n = None" + "pred (Succ a) n = Some a" + "pred (Limit f) n = Some (f n)" + +constdefs + OpLim :: "(nat \ (ordinal \ ordinal)) \ (ordinal \ ordinal)" + "OpLim F a \ Limit (\n. F n a)" + OpItw :: "(ordinal \ ordinal) \ (ordinal \ ordinal)" ("\") + "\f \ OpLim (power f)" + +consts + cantor :: "ordinal \ ordinal \ ordinal" +primrec + "cantor a Zero = Succ a" + "cantor a (Succ b) = \(\x. cantor x b) a" + "cantor a (Limit f) = Limit (\n. cantor a (f n))" + +consts + Nabla :: "(ordinal \ ordinal) \ (ordinal \ ordinal)" ("\") +primrec + "\f Zero = f Zero" + "\f (Succ a) = f (Succ (\f a))" + "\f (Limit h) = Limit (\n. \f (h n))" + +constdefs + deriv :: "(ordinal \ ordinal) \ (ordinal \ ordinal)" + "deriv f \ \(\f)" + +consts + veblen :: "ordinal \ ordinal \ ordinal" +primrec + "veblen Zero = \(OpLim (power (cantor Zero)))" + "veblen (Succ a) = \(OpLim (power (veblen a)))" + "veblen (Limit f) = \(OpLim (\n. veblen (f n)))" + +constdefs + veb :: "ordinal \ ordinal" + "veb a \ veblen a Zero" + epsilon0 :: ordinal ("\\<^sub>0") + "\\<^sub>0 \ veb Zero" + Gamma0 :: ordinal ("\\<^sub>0") + "\\<^sub>0 \ Limit (\n. (veb^n) Zero)" +thm Gamma0_def + +end