src/HOL/Import/HOL_Light_Maps.thy
changeset 67399 eab6ce8368fa
parent 63950 cdc1e59aa513
child 73869 7181130f5872
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
    14 lemma [import_const T]:
    14 lemma [import_const T]:
    15   "True = ((\<lambda>p :: bool. p) = (\<lambda>p. p))"
    15   "True = ((\<lambda>p :: bool. p) = (\<lambda>p. p))"
    16   by simp
    16   by simp
    17 
    17 
    18 lemma [import_const "/\\"]:
    18 lemma [import_const "/\\"]:
    19   "(op \<and>) = (\<lambda>p q. (\<lambda>f. f p q :: bool) = (\<lambda>f. f True True))"
    19   "(\<and>) = (\<lambda>p q. (\<lambda>f. f p q :: bool) = (\<lambda>f. f True True))"
    20   by metis
    20   by metis
    21 
    21 
    22 lemma [import_const "==>"]:
    22 lemma [import_const "==>"]:
    23   "(op \<longrightarrow>) = (\<lambda>(p::bool) q::bool. (p \<and> q) = p)"
    23   "(\<longrightarrow>) = (\<lambda>(p::bool) q::bool. (p \<and> q) = p)"
    24   by auto
    24   by auto
    25 
    25 
    26 lemma [import_const "!"]:
    26 lemma [import_const "!"]:
    27   "All = (\<lambda>P::'A \<Rightarrow> bool. P = (\<lambda>x::'A. True))"
    27   "All = (\<lambda>P::'A \<Rightarrow> bool. P = (\<lambda>x::'A. True))"
    28   by auto
    28   by auto
    30 lemma [import_const "?"]:
    30 lemma [import_const "?"]:
    31   "Ex = (\<lambda>P::'A \<Rightarrow> bool. All (\<lambda>q::bool. (All (\<lambda>x::'A::type. (P x) \<longrightarrow> q)) \<longrightarrow> q))"
    31   "Ex = (\<lambda>P::'A \<Rightarrow> bool. All (\<lambda>q::bool. (All (\<lambda>x::'A::type. (P x) \<longrightarrow> q)) \<longrightarrow> q))"
    32   by auto
    32   by auto
    33 
    33 
    34 lemma [import_const "\\/"]:
    34 lemma [import_const "\\/"]:
    35   "(op \<or>) = (\<lambda>p q. \<forall>r. (p \<longrightarrow> r) \<longrightarrow> (q \<longrightarrow> r) \<longrightarrow> r)"
    35   "(\<or>) = (\<lambda>p q. \<forall>r. (p \<longrightarrow> r) \<longrightarrow> (q \<longrightarrow> r) \<longrightarrow> r)"
    36   by auto
    36   by auto
    37 
    37 
    38 lemma [import_const F]:
    38 lemma [import_const F]:
    39   "False = (\<forall>p. p)"
    39   "False = (\<forall>p. p)"
    40   by auto
    40   by auto
    59 lemma [import_const COND]:
    59 lemma [import_const COND]:
    60   "If = (\<lambda>t (t1 :: 'A) t2. SOME x. (t = True \<longrightarrow> x = t1) \<and> (t = False \<longrightarrow> x = t2))"
    60   "If = (\<lambda>t (t1 :: 'A) t2. SOME x. (t = True \<longrightarrow> x = t1) \<and> (t = False \<longrightarrow> x = t2))"
    61   unfolding fun_eq_iff by auto
    61   unfolding fun_eq_iff by auto
    62 
    62 
    63 lemma [import_const o]:
    63 lemma [import_const o]:
    64   "(op \<circ>) = (\<lambda>(f::'B \<Rightarrow> 'C) g x::'A. f (g x))"
    64   "(\<circ>) = (\<lambda>(f::'B \<Rightarrow> 'C) g x::'A. f (g x))"
    65   unfolding fun_eq_iff by simp
    65   unfolding fun_eq_iff by simp
    66 
    66 
    67 lemma [import_const I]: "id = (\<lambda>x::'A. x)"
    67 lemma [import_const I]: "id = (\<lambda>x::'A. x)"
    68   by auto
    68   by auto
    69 
    69 
   164 lemma LT[import_const "<" : less]:
   164 lemma LT[import_const "<" : less]:
   165   "(\<forall>m :: nat. m < (id 0) = False) \<and> (\<forall>m n. m < (Suc n) = (m = n \<or> m < n))"
   165   "(\<forall>m :: nat. m < (id 0) = False) \<and> (\<forall>m n. m < (Suc n) = (m = n \<or> m < n))"
   166   by auto
   166   by auto
   167 
   167 
   168 lemma DEF_GE[import_const ">=" : greater_eq]:
   168 lemma DEF_GE[import_const ">=" : greater_eq]:
   169   "(op \<ge>) = (\<lambda>x y :: nat. y \<le> x)"
   169   "(\<ge>) = (\<lambda>x y :: nat. y \<le> x)"
   170   by simp
   170   by simp
   171 
   171 
   172 lemma DEF_GT[import_const ">" : greater]:
   172 lemma DEF_GT[import_const ">" : greater]:
   173   "(op >) = (\<lambda>x y :: nat. y < x)"
   173   "(>) = (\<lambda>x y :: nat. y < x)"
   174   by simp
   174   by simp
   175 
   175 
   176 lemma DEF_MAX[import_const "MAX"]:
   176 lemma DEF_MAX[import_const "MAX"]:
   177   "max = (\<lambda>x y :: nat. if x \<le> y then y else x)"
   177   "max = (\<lambda>x y :: nat. if x \<le> y then y else x)"
   178   by (auto simp add: max.absorb_iff2 fun_eq_iff)
   178   by (auto simp add: max.absorb_iff2 fun_eq_iff)