src/HOL/Partial_Function.thy
changeset 67399 eab6ce8368fa
parent 67091 1393c2340eec
child 69593 3dda49e08b9d
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
    11 
    11 
    12 named_theorems partial_function_mono "monotonicity rules for partial function definitions"
    12 named_theorems partial_function_mono "monotonicity rules for partial function definitions"
    13 ML_file "Tools/Function/partial_function.ML"
    13 ML_file "Tools/Function/partial_function.ML"
    14 
    14 
    15 lemma (in ccpo) in_chain_finite:
    15 lemma (in ccpo) in_chain_finite:
    16   assumes "Complete_Partial_Order.chain op \<le> A" "finite A" "A \<noteq> {}"
    16   assumes "Complete_Partial_Order.chain (\<le>) A" "finite A" "A \<noteq> {}"
    17   shows "\<Squnion>A \<in> A"
    17   shows "\<Squnion>A \<in> A"
    18 using assms(2,1,3)
    18 using assms(2,1,3)
    19 proof induction
    19 proof induction
    20   case empty thus ?case by simp
    20   case empty thus ?case by simp
    21 next
    21 next
    22   case (insert x A)
    22   case (insert x A)
    23   note chain = \<open>Complete_Partial_Order.chain op \<le> (insert x A)\<close>
    23   note chain = \<open>Complete_Partial_Order.chain (\<le>) (insert x A)\<close>
    24   show ?case
    24   show ?case
    25   proof(cases "A = {}")
    25   proof(cases "A = {}")
    26     case True thus ?thesis by simp
    26     case True thus ?thesis by simp
    27   next
    27   next
    28     case False
    28     case False
    29     from chain have chain': "Complete_Partial_Order.chain op \<le> A"
    29     from chain have chain': "Complete_Partial_Order.chain (\<le>) A"
    30       by(rule chain_subset) blast
    30       by(rule chain_subset) blast
    31     hence "\<Squnion>A \<in> A" using False by(rule insert.IH)
    31     hence "\<Squnion>A \<in> A" using False by(rule insert.IH)
    32     show ?thesis
    32     show ?thesis
    33     proof(cases "x \<le> \<Squnion>A")
    33     proof(cases "x \<le> \<Squnion>A")
    34       case True
    34       case True
    46     qed
    46     qed
    47   qed
    47   qed
    48 qed
    48 qed
    49 
    49 
    50 lemma (in ccpo) admissible_chfin:
    50 lemma (in ccpo) admissible_chfin:
    51   "(\<forall>S. Complete_Partial_Order.chain op \<le> S \<longrightarrow> finite S)
    51   "(\<forall>S. Complete_Partial_Order.chain (\<le>) S \<longrightarrow> finite S)
    52   \<Longrightarrow> ccpo.admissible Sup op \<le> P"
    52   \<Longrightarrow> ccpo.admissible Sup (\<le>) P"
    53 using in_chain_finite by (blast intro: ccpo.admissibleI)
    53 using in_chain_finite by (blast intro: ccpo.admissibleI)
    54 
    54 
    55 subsection \<open>Axiomatic setup\<close>
    55 subsection \<open>Axiomatic setup\<close>
    56 
    56 
    57 text \<open>This techical locale constains the requirements for function
    57 text \<open>This techical locale constains the requirements for function