equal
deleted
inserted
replaced
14 |
14 |
15 lemma eta_expand: |
15 lemma eta_expand: |
16 fixes f :: "'a::{} \<Rightarrow> 'b::{}" |
16 fixes f :: "'a::{} \<Rightarrow> 'b::{}" |
17 shows "f \<equiv> \<lambda>x. f x" . |
17 shows "f \<equiv> \<lambda>x. f x" . |
18 |
18 |
|
19 lemma rewr_imp: |
|
20 assumes "PROP A \<equiv> PROP B" |
|
21 shows "(PROP A \<Longrightarrow> PROP C) \<equiv> (PROP B \<Longrightarrow> PROP C)" |
|
22 apply (rule Pure.equal_intr_rule) |
|
23 apply (drule equal_elim_rule2[OF assms]; assumption) |
|
24 apply (drule equal_elim_rule1[OF assms]; assumption) |
|
25 done |
|
26 |
|
27 lemma imp_cong_eq: |
|
28 "(PROP A \<Longrightarrow> (PROP B \<Longrightarrow> PROP C) \<equiv> (PROP B' \<Longrightarrow> PROP C')) \<equiv> ((PROP B \<Longrightarrow> PROP A \<Longrightarrow> PROP C) \<equiv> (PROP B' \<Longrightarrow> PROP A \<Longrightarrow> PROP C'))" |
|
29 apply (intro Pure.equal_intr_rule) |
|
30 apply (drule (1) cut_rl; drule Pure.equal_elim_rule1 Pure.equal_elim_rule2; assumption)+ |
|
31 apply (drule Pure.equal_elim_rule1 Pure.equal_elim_rule2; assumption)+ |
|
32 done |
|
33 |
19 ML_file "cconv.ML" |
34 ML_file "cconv.ML" |
20 ML_file "rewrite.ML" |
35 ML_file "rewrite.ML" |
21 |
36 |
22 end |
37 end |