src/ZF/Ordinal.thy
changeset 46993 7371429c527d
parent 46954 d8b3412cdb99
child 58871 c399ae4b836f
equal deleted inserted replaced
46985:bd955d9f464b 46993:7371429c527d
   351 section{*Fundamental properties of the epsilon ordering (< on ordinals)*}
   351 section{*Fundamental properties of the epsilon ordering (< on ordinals)*}
   352 
   352 
   353 
   353 
   354 subsubsection{*Proving That < is a Linear Ordering on the Ordinals*}
   354 subsubsection{*Proving That < is a Linear Ordering on the Ordinals*}
   355 
   355 
   356 lemma Ord_linear [rule_format]:
   356 lemma Ord_linear:
   357      "Ord(i) ==> (\<forall>j. Ord(j) \<longrightarrow> i\<in>j | i=j | j\<in>i)"
   357      "Ord(i) \<Longrightarrow> Ord(j) \<Longrightarrow> i\<in>j | i=j | j\<in>i"
   358 apply (erule trans_induct)
   358 proof (induct i arbitrary: j rule: trans_induct)
   359 apply (rule impI [THEN allI])
   359   case (step i)
   360 apply (erule_tac i=j in trans_induct)
   360   note step_i = step
   361 apply (blast dest: Ord_trans)
   361   show ?case using `Ord(j)`
   362 done
   362     proof (induct j rule: trans_induct)
       
   363       case (step j)
       
   364       thus ?case using step_i
       
   365         by (blast dest: Ord_trans)
       
   366     qed
       
   367 qed
   363 
   368 
   364 text{*The trichotomy law for ordinals*}
   369 text{*The trichotomy law for ordinals*}
   365 lemma Ord_linear_lt:
   370 lemma Ord_linear_lt:
   366  assumes o: "Ord(i)" "Ord(j)"
   371  assumes o: "Ord(i)" "Ord(j)"
   367  obtains (lt) "i<j" | (eq) "i=j" | (gt) "j<i"
   372  obtains (lt) "i<j" | (eq) "i=j" | (gt) "j<i"