theory More_Nat imports Nat Spartan.More_Types begin section \Equality on Nat\ text \Via the encode-decode method.\ context begin Lemma (derive) eq: shows "Nat \ Nat \ U O" apply intro focus vars m apply elim \ \m \ 0\ apply intro focus vars n apply elim \ by (rule TopF) \ \n \ 0\ \ by (rule BotF) \ \n \ suc _\ \ by (rule Ui_in_USi) done \ \m \ suc k\ apply intro focus vars k k_eq n apply (elim n) \ by (rule BotF) \ \n \ 0\ \ prems vars l proof - show "k_eq l: U O" by typechk qed \ by (rule Ui_in_USi) done by (rule Ui_in_USi) done text \ \<^term>\eq\ is defined by eq 0 0 \ \ eq 0 (suc k) \ \ eq (suc k) 0 \ \ eq (suc k) (suc l) \ eq k l \ end end