src/Pure/drule.ML
changeset 14854 61bdf2ae4dc5
parent 14824 336ade035a34
child 15001 fb2141a9f8c0
equal deleted inserted replaced
14853:8d710bece29f 14854:61bdf2ae4dc5
   546 fun store_standard_thm name thm = store_thm name (standard thm);
   546 fun store_standard_thm name thm = store_thm name (standard thm);
   547 fun store_thm_open name thm = hd (PureThy.smart_store_thms_open (name, [thm]));
   547 fun store_thm_open name thm = hd (PureThy.smart_store_thms_open (name, [thm]));
   548 fun store_standard_thm_open name thm = store_thm_open name (standard' thm);
   548 fun store_standard_thm_open name thm = store_thm_open name (standard' thm);
   549 
   549 
   550 val reflexive_thm =
   550 val reflexive_thm =
   551   let val cx = cterm_of proto_sign (Var(("x",0),TVar(("'a",0),logicS)))
   551   let val cx = cterm_of proto_sign (Var(("x",0),TVar(("'a",0),[])))
   552   in store_standard_thm_open "reflexive" (Thm.reflexive cx) end;
   552   in store_standard_thm_open "reflexive" (Thm.reflexive cx) end;
   553 
   553 
   554 val symmetric_thm =
   554 val symmetric_thm =
   555   let val xy = read_prop "x::'a::logic == y"
   555   let val xy = read_prop "x == y"
   556   in store_standard_thm_open "symmetric" (Thm.implies_intr_hyps (Thm.symmetric (Thm.assume xy))) end;
   556   in store_standard_thm_open "symmetric" (Thm.implies_intr_hyps (Thm.symmetric (Thm.assume xy))) end;
   557 
   557 
   558 val transitive_thm =
   558 val transitive_thm =
   559   let val xy = read_prop "x::'a::logic == y"
   559   let val xy = read_prop "x == y"
   560       val yz = read_prop "y::'a::logic == z"
   560       val yz = read_prop "y == z"
   561       val xythm = Thm.assume xy and yzthm = Thm.assume yz
   561       val xythm = Thm.assume xy and yzthm = Thm.assume yz
   562   in store_standard_thm_open "transitive" (Thm.implies_intr yz (Thm.transitive xythm yzthm)) end;
   562   in store_standard_thm_open "transitive" (Thm.implies_intr yz (Thm.transitive xythm yzthm)) end;
   563 
   563 
   564 fun symmetric_fun thm = thm RS symmetric_thm;
   564 fun symmetric_fun thm = thm RS symmetric_thm;
   565 
   565 
   696   Rewrite rule for HHF normalization.*)
   696   Rewrite rule for HHF normalization.*)
   697 
   697 
   698 val norm_hhf_eq =
   698 val norm_hhf_eq =
   699   let
   699   let
   700     val cert = Thm.cterm_of proto_sign;
   700     val cert = Thm.cterm_of proto_sign;
   701     val aT = TFree ("'a", Term.logicS);
   701     val aT = TFree ("'a", []);
   702     val all = Term.all aT;
   702     val all = Term.all aT;
   703     val x = Free ("x", aT);
   703     val x = Free ("x", aT);
   704     val phi = Free ("phi", propT);
   704     val phi = Free ("phi", propT);
   705     val psi = Free ("psi", aT --> propT);
   705     val psi = Free ("psi", aT --> propT);
   706 
   706