src/HOL/List.thy
changeset 68646 7dc9fe795dae
parent 68527 2f4e2aab190a
child 68709 6d9eca4805ff
equal deleted inserted replaced
68645:5e15795788d3 68646:7dc9fe795dae
  5802 lemma lexn_length:
  5802 lemma lexn_length:
  5803   "(xs, ys) \<in> lexn r n \<Longrightarrow> length xs = n \<and> length ys = n"
  5803   "(xs, ys) \<in> lexn r n \<Longrightarrow> length xs = n \<and> length ys = n"
  5804 by (induct n arbitrary: xs ys) auto
  5804 by (induct n arbitrary: xs ys) auto
  5805 
  5805 
  5806 lemma wf_lex [intro!]: "wf r ==> wf (lex r)"
  5806 lemma wf_lex [intro!]: "wf r ==> wf (lex r)"
  5807 apply (unfold lex_def)
  5807   apply (unfold lex_def)
  5808 apply (rule wf_UN)
  5808   apply (rule wf_UN)
  5809 apply (blast intro: wf_lexn, clarify)
  5809    apply (simp add: wf_lexn)
  5810 apply (rename_tac m n)
  5810   apply (metis DomainE Int_emptyI RangeE lexn_length)
  5811 apply (subgoal_tac "m \<noteq> n")
  5811   done
  5812  prefer 2 apply blast
       
  5813 apply (blast dest: lexn_length not_sym)
       
  5814 done
       
  5815 
  5812 
  5816 lemma lexn_conv:
  5813 lemma lexn_conv:
  5817   "lexn r n =
  5814   "lexn r n =
  5818     {(xs,ys). length xs = n \<and> length ys = n \<and>
  5815     {(xs,ys). length xs = n \<and> length ys = n \<and>
  5819     (\<exists>xys x y xs' ys'. xs= xys @ x#xs' \<and> ys= xys @ y # ys' \<and> (x, y) \<in> r)}"
  5816     (\<exists>xys x y xs' ys'. xs= xys @ x#xs' \<and> ys= xys @ y # ys' \<and> (x, y) \<in> r)}"