src/FOLP/FOLP.thy
changeset 22577 1a08fce38565
parent 17480 fd19f77dcf60
child 26322 eaf634e975fa
equal deleted inserted replaced
22576:1beba4e2aa9f 22577:1a08fce38565
    36   fun dest_eq (Const("Proof",_) $ (Const("op =",_)  $ t $ u) $ _) = (t,u);
    36   fun dest_eq (Const("Proof",_) $ (Const("op =",_)  $ t $ u) $ _) = (t,u);
    37 
    37 
    38   val imp_intr = impI
    38   val imp_intr = impI
    39 
    39 
    40   (*etac rev_cut_eq moves an equality to be the last premise. *)
    40   (*etac rev_cut_eq moves an equality to be the last premise. *)
    41   val rev_cut_eq = prove_goal (the_context ())
    41   val rev_cut_eq = prove_goal @{theory}
    42                 "[| p:a=b;  !!x. x:a=b ==> f(x):R |] ==> ?p:R"
    42                 "[| p:a=b;  !!x. x:a=b ==> f(x):R |] ==> ?p:R"
    43    (fn prems => [ REPEAT(resolve_tac prems 1) ]);
    43    (fn prems => [ REPEAT(resolve_tac prems 1) ]);
    44 
    44 
    45   val rev_mp = rev_mp
    45   val rev_mp = rev_mp
    46   val subst = subst
    46   val subst = subst
    47   val sym = sym
    47   val sym = sym
    48   val thin_refl = prove_goal (the_context ())
    48   val thin_refl = prove_goal @{theory} "!!X. [|p:x=x; PROP W|] ==> PROP W" (K [atac 1]);
    49                   "!!X. [|p:x=x; PROP W|] ==> PROP W" (K [atac 1]);
       
    50   end;
    49   end;
    51 
    50 
    52 structure Hypsubst = HypsubstFun(Hypsubst_Data);
    51 structure Hypsubst = HypsubstFun(Hypsubst_Data);
    53 open Hypsubst;
    52 open Hypsubst;
    54 *}
    53 *}