src/Pure/Isar/obtain.ML
changeset 60461 22995ec9fefd
parent 60456 323b15b5af73
child 60475 4c65bd64bba4
equal deleted inserted replaced
60460:abee0de69a89 60461:22995ec9fefd
   156     state
   156     state
   157     |> Proof.have NONE (K I)
   157     |> Proof.have NONE (K I)
   158       [(Binding.name Auto_Bind.thesisN, NONE, NoSyn)]
   158       [(Binding.name Auto_Bind.thesisN, NONE, NoSyn)]
   159       (map (fn (a, A) => ((a, [Context_Rules.intro_query NONE]), [(A, [])])) obtains)
   159       (map (fn (a, A) => ((a, [Context_Rules.intro_query NONE]), [(A, [])])) obtains)
   160       [((Binding.empty, atts), [(thesis, [])])] int
   160       [((Binding.empty, atts), [(thesis, [])])] int
   161     |> (fn state' => state'
   161     |-> Proof.refine_insert
   162         |> Proof.refine_insert (Assumption.local_prems_of (Proof.context_of state') ctxt))
       
   163   end;
   162   end;
   164 
   163 
   165 in
   164 in
   166 
   165 
   167 val consider = gen_consider cert_obtains;
   166 val consider = gen_consider cert_obtains;
   231     state
   230     state
   232     |> Proof.have NONE after_qed
   231     |> Proof.have NONE after_qed
   233       [(Binding.name Auto_Bind.thesisN, NONE, NoSyn)]
   232       [(Binding.name Auto_Bind.thesisN, NONE, NoSyn)]
   234       [((that_binding, [Context_Rules.intro_query NONE]), [(that_prop, [])])]
   233       [((that_binding, [Context_Rules.intro_query NONE]), [(that_prop, [])])]
   235       [(Thm.empty_binding, [(thesis, [])])] int
   234       [(Thm.empty_binding, [(thesis, [])])] int
   236     |> (fn state' => state'
   235     |-> Proof.refine_insert
   237         |> Proof.refine_insert (Assumption.local_prems_of (Proof.context_of state') ctxt))
       
   238     |> Proof.map_context (fold Variable.bind_term binds')
   236     |> Proof.map_context (fold Variable.bind_term binds')
   239   end;
   237   end;
   240 
   238 
   241 in
   239 in
   242 
   240 
   405     |> Proof.enter_forward
   403     |> Proof.enter_forward
   406     |> Proof.begin_block
   404     |> Proof.begin_block
   407     |> Proof.fix [(Binding.name Auto_Bind.thesisN, NONE, NoSyn)]
   405     |> Proof.fix [(Binding.name Auto_Bind.thesisN, NONE, NoSyn)]
   408     |> Proof.chain_facts chain_facts
   406     |> Proof.chain_facts chain_facts
   409     |> Proof.internal_goal print_result Proof_Context.mode_schematic "guess"
   407     |> Proof.internal_goal print_result Proof_Context.mode_schematic "guess"
   410       (SOME before_qed) after_qed [] [] [(Thm.empty_binding, [(Logic.mk_term goal, []), (goal, [])])]
   408       (SOME before_qed) after_qed
       
   409       [] [] [(Thm.empty_binding, [(Logic.mk_term goal, []), (goal, [])])]
       
   410     |> snd
   411     |> Proof.refine (Method.primitive_text (fn _ => fn _ =>
   411     |> Proof.refine (Method.primitive_text (fn _ => fn _ =>
   412         Goal.init (Thm.cterm_of ctxt thesis))) |> Seq.hd
   412         Goal.init (Thm.cterm_of ctxt thesis)))
       
   413     |> Seq.hd
   413   end;
   414   end;
   414 
   415 
   415 in
   416 in
   416 
   417 
   417 val guess = gen_guess Proof_Context.cert_var;
   418 val guess = gen_guess Proof_Context.cert_var;