# HG changeset patch # User Brian Huffman # Date 1286323677 25200 # Node ID 9023b897e67a6599531a9f0f8775dc569538a720 # Parent 0b8e19f588a472701183a1322b95286ecb55874a simplify proofs of powerdomain inequalities diff -r 0b8e19f588a4 -r 9023b897e67a src/HOLCF/ConvexPD.thy --- a/src/HOLCF/ConvexPD.thy Mon Oct 04 06:58:37 2010 -0700 +++ b/src/HOLCF/ConvexPD.thy Tue Oct 05 17:07:57 2010 -0700 @@ -312,48 +312,24 @@ lemma convex_unit_below_plus_iff [simp]: "{x}\ \ ys +\ zs \ {x}\ \ ys \ {x}\ \ zs" - apply (rule iffI) - apply (subgoal_tac - "adm (\f. f\{x}\ \ f\ys \ f\{x}\ \ f\zs)") - apply (drule admD, rule chain_approx) - apply (drule_tac f="approx i" in monofun_cfun_arg) - apply (cut_tac x="approx i\x" in compact_basis.compact_imp_principal, simp) - apply (cut_tac x="approx i\ys" in convex_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\zs" in convex_pd.compact_imp_principal, simp) - apply (clarify, simp) - apply simp - apply simp - apply (erule conjE) - apply (subst convex_plus_absorb [of "{x}\", symmetric]) - apply (erule (1) monofun_cfun [OF monofun_cfun_arg]) +apply (induct x rule: compact_basis.principal_induct, simp) +apply (induct ys rule: convex_pd.principal_induct, simp) +apply (induct zs rule: convex_pd.principal_induct, simp) +apply simp done lemma convex_plus_below_unit_iff [simp]: "xs +\ ys \ {z}\ \ xs \ {z}\ \ ys \ {z}\" - apply (rule iffI) - apply (subgoal_tac - "adm (\f. f\xs \ f\{z}\ \ f\ys \ f\{z}\)") - apply (drule admD, rule chain_approx) - apply (drule_tac f="approx i" in monofun_cfun_arg) - apply (cut_tac x="approx i\xs" in convex_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\ys" in convex_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\z" in compact_basis.compact_imp_principal, simp) - apply (clarify, simp) - apply simp - apply simp - apply (erule conjE) - apply (subst convex_plus_absorb [of "{z}\", symmetric]) - apply (erule (1) monofun_cfun [OF monofun_cfun_arg]) +apply (induct xs rule: convex_pd.principal_induct, simp) +apply (induct ys rule: convex_pd.principal_induct, simp) +apply (induct z rule: compact_basis.principal_induct, simp) +apply simp done lemma convex_unit_below_iff [simp]: "{x}\ \ {y}\ \ x \ y" - apply (rule iffI) - apply (rule profinite_below_ext) - apply (drule_tac f="approx i" in monofun_cfun_arg, simp) - apply (cut_tac x="approx i\x" in compact_basis.compact_imp_principal, simp) - apply (cut_tac x="approx i\y" in compact_basis.compact_imp_principal, simp) - apply clarsimp - apply (erule monofun_cfun_arg) +apply (induct x rule: compact_basis.principal_induct, simp) +apply (induct y rule: compact_basis.principal_induct, simp) +apply simp done lemma convex_unit_eq_iff [simp]: "{x}\ = {y}\ \ x = y" @@ -627,14 +603,9 @@ "(xs \ ys) = (convex_to_upper\xs \ convex_to_upper\ys \ convex_to_lower\xs \ convex_to_lower\ys)" - apply (safe elim!: monofun_cfun_arg) - apply (rule profinite_below_ext) - apply (drule_tac f="approx i" in monofun_cfun_arg) - apply (drule_tac f="approx i" in monofun_cfun_arg) - apply (cut_tac x="approx i\xs" in convex_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\ys" in convex_pd.compact_imp_principal, simp) - apply clarify - apply (simp add: approx_convex_to_upper approx_convex_to_lower convex_le_def) +apply (induct xs rule: convex_pd.principal_induct, simp) +apply (induct ys rule: convex_pd.principal_induct, simp) +apply (simp add: convex_le_def) done lemmas convex_plus_below_plus_iff = diff -r 0b8e19f588a4 -r 9023b897e67a src/HOLCF/LowerPD.thy --- a/src/HOLCF/LowerPD.thy Mon Oct 04 06:58:37 2010 -0700 +++ b/src/HOLCF/LowerPD.thy Tue Oct 05 17:07:57 2010 -0700 @@ -288,30 +288,16 @@ lemma lower_unit_below_plus_iff: "{x}\ \ ys +\ zs \ {x}\ \ ys \ {x}\ \ zs" - apply (rule iffI) - apply (subgoal_tac - "adm (\f. f\{x}\ \ f\ys \ f\{x}\ \ f\zs)") - apply (drule admD, rule chain_approx) - apply (drule_tac f="approx i" in monofun_cfun_arg) - apply (cut_tac x="approx i\x" in compact_basis.compact_imp_principal, simp) - apply (cut_tac x="approx i\ys" in lower_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\zs" in lower_pd.compact_imp_principal, simp) - apply (clarify, simp add: lower_le_PDUnit_PDPlus_iff) - apply simp - apply simp - apply (erule disjE) - apply (erule below_trans [OF _ lower_plus_below1]) - apply (erule below_trans [OF _ lower_plus_below2]) +apply (induct x rule: compact_basis.principal_induct, simp) +apply (induct ys rule: lower_pd.principal_induct, simp) +apply (induct zs rule: lower_pd.principal_induct, simp) +apply (simp add: lower_le_PDUnit_PDPlus_iff) done lemma lower_unit_below_iff [simp]: "{x}\ \ {y}\ \ x \ y" - apply (rule iffI) - apply (rule profinite_below_ext) - apply (drule_tac f="approx i" in monofun_cfun_arg, simp) - apply (cut_tac x="approx i\x" in compact_basis.compact_imp_principal, simp) - apply (cut_tac x="approx i\y" in compact_basis.compact_imp_principal, simp) - apply clarsimp - apply (erule monofun_cfun_arg) +apply (induct x rule: compact_basis.principal_induct, simp) +apply (induct y rule: compact_basis.principal_induct, simp) +apply simp done lemmas lower_pd_below_simps = diff -r 0b8e19f588a4 -r 9023b897e67a src/HOLCF/UpperPD.thy --- a/src/HOLCF/UpperPD.thy Mon Oct 04 06:58:37 2010 -0700 +++ b/src/HOLCF/UpperPD.thy Tue Oct 05 17:07:57 2010 -0700 @@ -286,30 +286,16 @@ lemma upper_plus_below_unit_iff: "xs +\ ys \ {z}\ \ xs \ {z}\ \ ys \ {z}\" - apply (rule iffI) - apply (subgoal_tac - "adm (\f. f\xs \ f\{z}\ \ f\ys \ f\{z}\)") - apply (drule admD, rule chain_approx) - apply (drule_tac f="approx i" in monofun_cfun_arg) - apply (cut_tac x="approx i\xs" in upper_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\ys" in upper_pd.compact_imp_principal, simp) - apply (cut_tac x="approx i\z" in compact_basis.compact_imp_principal, simp) - apply (clarify, simp add: upper_le_PDPlus_PDUnit_iff) - apply simp - apply simp - apply (erule disjE) - apply (erule below_trans [OF upper_plus_below1]) - apply (erule below_trans [OF upper_plus_below2]) +apply (induct xs rule: upper_pd.principal_induct, simp) +apply (induct ys rule: upper_pd.principal_induct, simp) +apply (induct z rule: compact_basis.principal_induct, simp) +apply (simp add: upper_le_PDPlus_PDUnit_iff) done lemma upper_unit_below_iff [simp]: "{x}\ \ {y}\ \ x \ y" - apply (rule iffI) - apply (rule profinite_below_ext) - apply (drule_tac f="approx i" in monofun_cfun_arg, simp) - apply (cut_tac x="approx i\x" in compact_basis.compact_imp_principal, simp) - apply (cut_tac x="approx i\y" in compact_basis.compact_imp_principal, simp) - apply clarsimp - apply (erule monofun_cfun_arg) +apply (induct x rule: compact_basis.principal_induct, simp) +apply (induct y rule: compact_basis.principal_induct, simp) +apply simp done lemmas upper_pd_below_simps =