File Pred.ML
goal Pred.thy "bnds(P && Q) =(bnds(P) Int bnds(Q))";
by (simp_tac (simpset() addsimps [bnds_def]) 1);
by (blast_tac (claset() addIs [] addEs []) 1);
qed "bnds_land";
Goal "bnds(lnot P) = UNIV - bnds(P)";
by (simp_tac (simpset() addsimps [bnds_def]) 1);
by (blast_tac (claset() addIs [] addEs []) 1);
qed "bnds_lnot";
(*
goal Pred.thy "bnds(lnot P) = (Compl(bnds(P)))";
by (simp_tac (simpset() addsimps [bnds_def,lnot_def]) 1);
by (simp_tac (simpset() addsimps [Collect_mem_eq]) 1);
by (blast_tac (claset() addIs [] addEs []) 1);
qed "bnds_lnot";
*)
goal Pred.thy "bnds(p1 <=> p2) = (bnds(p1) Int bnds(p2)) Un (UNIV - (bnds(p1) Un bnds(p2)))";
by (simp_tac (simpset() addsimps [bnds_def]) 1);
by (blast_tac (claset() addIs [] addEs []) 1);
qed "bnds_equiv";
goal Pred.thy "bnds(p1 || p2) = (bnds(p1) Un bnds(p2)) ";
by (simp_tac (simpset() addsimps [bnds_def]) 1);
by (blast_tac (claset() addIs [] addEs []) 1);
qed "bnds_lor";
goal Pred.thy "bnds(p1 => p2) = ((UNIV - (bnds(p1))) Un bnds(p2)) ";
by (simp_tac (simpset() addsimps [bnds_def]) 1);
by (blast_tac (claset() addIs [] addEs []) 1);
qed "bnds_implies";
(*
val [prem1] = goal Pred.thy "[| !! b. (p1 <=> p2)(b) |] ==> bnds(p1) = bnds(p2)";
by (asm_full_simp_tac (simpset() addsimps [prem1,equiv_def,bnds_def]) 1);
by (resolve_tac [Collect_cong] 1);
by (Asm_simp_tac 1);
by (cut_facts_tac [prem1] 1);
by (asm_full_simp_tac (simpset() addsimps [equiv_def]) 1);
qed "equiv_bnds_eq";
*)
val prems = goal Pred.thy "|[P <=> Q]| ==> bnds(P) = bnds(Q)";
by (cut_facts_tac prems 1);
by (asm_full_simp_tac (simpset() addsimps [everywhere_def,bnds_def]) 1);
qed "bnds_equiv_every_eq";
val prems = goal Pred.thy "|[P => Q]| ==> bnds(P) <= bnds(Q)";
by (cut_facts_tac prems 1);
by (asm_full_simp_tac (simpset() addsimps [everywhere_def,bnds_def]) 1);
by (resolve_tac [subsetI] 1);
by (asm_full_simp_tac (simpset() addsimps []) 1);
qed "bnds_implies_subset";
(*
val prems = goal Pred.thy "[| v:Var_set; x:Val; b: Bnds_set |] ==> (b (+) {v |--> x}) : Bnds_set";
by (cut_facts_tac prems 1);
by (asm_full_simp_tac (simpset() addsimps [Bnds_set_def]) 1);
by (resolve_tac [override_single_total_function] 1);
by (eq_assume_tac 1);
by (eq_assume_tac 1);
by (eq_assume_tac 1);
qed "override_bindings"; *)
Goal "entails A P ==> |[A]| --> |[P]|";
by (asm_full_simp_tac (simpset() addsimps [entails_def,everywhere_def]) 1);
qed "entails_everywhere_imp";
Goal "|[P]| ==> entails A P";
by (asm_full_simp_tac (simpset() addsimps [entails_def,everywhere_def]) 1);
qed "remove_context";
Goal "[|entails S T; entails T U|] ==> entails S U";
by (asm_full_simp_tac (simpset() addsimps [entails_def]) 1);
qed "entails_trans";
Goal "[| entails X A; entails X B |] ==> entails X (A && B)";
by (asm_full_simp_tac (simpset() addsimps [entails_def]) 1);
qed "entails_and";
(*
Goal "|[A && B]| = |[A ]| & |[ B]|";
by (simp_tac (simpset() addsimps [everywhere_def]) 1);
by (Blast_tac 1);
qed "everywhere_and";
*)
Goal "[|entails A B; |[A]| |] ==> |[B]|";
by (asm_full_simp_tac (simpset() addsimps [entails_def,everywhere_def]) 1);
qed "everywhere_mp";
Goal "|[ A => B ]| = entails A B";
by (asm_full_simp_tac (simpset() addsimps [entails_def,everywhere_def]) 1);
qed "entails_everywhere";
Goal "entails A (B => C) = entails (A && B) C";
by (simp_tac (simpset() addsimps [entails_def]) 1);
by (Blast_tac 1);
qed "entails_implies";
Goal "entails A B ==> entails (A && C) B";
by (asm_full_simp_tac (simpset() addsimps [entails_def]) 1);
qed "entails_landE1";
Goal "entails A B ==> entails (C && A) B";
by (asm_full_simp_tac (simpset() addsimps [entails_def]) 1);
qed "entails_landE2";
Addsimps [entails_implies];
Goal "[| entails T U; entails S T |] ==> entails S U";
by (asm_full_simp_tac (simpset() addsimps [entails_def]) 1);
qed "entails_trans2";