| 73846 |      1 | theory Interpretation_in_nested_targets
 | 
|  |      2 |   imports Main
 | 
|  |      3 | begin
 | 
|  |      4 | 
 | 
|  |      5 | locale injection =
 | 
|  |      6 |   fixes f :: \<open>'a \<Rightarrow> 'b\<close>
 | 
|  |      7 |   assumes eqI: \<open>f x = f y \<Longrightarrow> x = y\<close>
 | 
|  |      8 | begin
 | 
|  |      9 | 
 | 
|  |     10 | lemma eq_iff:
 | 
|  |     11 |   \<open>x = y \<longleftrightarrow> f x = f y\<close>
 | 
|  |     12 |   by (auto intro: eqI)
 | 
|  |     13 | 
 | 
|  |     14 | lemma inv_apply:
 | 
|  |     15 |   \<open>inv f (f x) = x\<close>
 | 
|  |     16 |   by (rule inv_f_f) (simp add: eqI injI)
 | 
|  |     17 | 
 | 
|  |     18 | end
 | 
|  |     19 | 
 | 
|  |     20 | context
 | 
|  |     21 |   fixes f :: \<open>'a::linorder \<Rightarrow> 'b::linorder\<close>
 | 
|  |     22 |   assumes \<open>strict_mono f\<close>
 | 
|  |     23 | begin
 | 
|  |     24 | 
 | 
|  |     25 | global_interpretation strict_mono: injection f
 | 
|  |     26 |   by standard (simp add: \<open>strict_mono f\<close> strict_mono_eq)
 | 
|  |     27 | 
 | 
|  |     28 | thm strict_mono.eq_iff
 | 
|  |     29 | thm strict_mono.inv_apply
 | 
|  |     30 | 
 | 
|  |     31 | end
 | 
|  |     32 | 
 | 
|  |     33 | thm strict_mono.eq_iff
 | 
|  |     34 | thm strict_mono.inv_apply
 | 
|  |     35 | 
 | 
|  |     36 | end
 |