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 |