equal
deleted
inserted
replaced
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)}" |