src/Pure/Proof/extraction.ML
changeset 70417 eb6ff14767cd
parent 70414 dc65ea294736
child 70435 52fbcf7a61f8
equal deleted inserted replaced
70416:5be1da847b24 70417:eb6ff14767cd
   114             (Net.match_term rules (Envir.eta_contract tm)))
   114             (Net.match_term rules (Envir.eta_contract tm)))
   115       end;
   115       end;
   116 
   116 
   117   in rew end;
   117   in rew end;
   118 
   118 
   119 val chtype = Proofterm.change_type o SOME;
   119 val chtypes = Proofterm.change_types o SOME;
   120 
   120 
   121 fun extr_name s vs = Long_Name.append "extr" (space_implode "_" (s :: vs));
   121 fun extr_name s vs = Long_Name.append "extr" (space_implode "_" (s :: vs));
   122 fun corr_name s vs = extr_name s vs ^ "_correctness";
   122 fun corr_name s vs = extr_name s vs ^ "_correctness";
   123 
   123 
   124 fun msg d s = writeln (Symbol.spaces d ^ s);
   124 fun msg d s = writeln (Symbol.spaces d ^ s);
   729                     val rhs = app_rlz_rews [] vs' (rlz $ list_comb (c, args') $ prop);
   729                     val rhs = app_rlz_rews [] vs' (rlz $ list_comb (c, args') $ prop);
   730                     val f = app_rlz_rews [] vs'
   730                     val f = app_rlz_rews [] vs'
   731                       (Abs ("x", T, rlz $ list_comb (Bound 0, args') $ prop));
   731                       (Abs ("x", T, rlz $ list_comb (Bound 0, args') $ prop));
   732 
   732 
   733                     val corr_prf' = mkabsp shyps
   733                     val corr_prf' = mkabsp shyps
   734                       (chtype [] Proofterm.equal_elim_axm %> lhs %> rhs %%
   734                       (chtypes [] Proofterm.equal_elim_axm %> lhs %> rhs %%
   735                        (chtype [propT] Proofterm.symmetric_axm %> rhs %> lhs %%
   735                        (chtypes [propT] Proofterm.symmetric_axm %> rhs %> lhs %%
   736                          (chtype [T, propT] Proofterm.combination_axm %> f %> f %> c %> t' %%
   736                          (chtypes [T, propT] Proofterm.combination_axm %> f %> f %> c %> t' %%
   737                            (chtype [T --> propT] Proofterm.reflexive_axm %> f) %%
   737                            (chtypes [T --> propT] Proofterm.reflexive_axm %> f) %%
   738                            PAxm (Thm.def_name cname, eqn,
   738                            PAxm (Thm.def_name cname, eqn,
   739                              SOME (map TVar (Term.add_tvars eqn [] |> rev))))) %% corr_prf);
   739                              SOME (map TVar (Term.add_tvars eqn [] |> rev))))) %% corr_prf);
   740                     val corr_prop = Reconstruct.prop_of corr_prf';
   740                     val corr_prop = Reconstruct.prop_of corr_prf';
   741                     val corr_prf'' =
   741                     val corr_prf'' =
   742                       Proofterm.proof_combP (Proofterm.proof_combt
   742                       Proofterm.proof_combP (Proofterm.proof_combt