equal
deleted
inserted
replaced
88 List.app do_fact facts |
88 List.app do_fact facts |
89 end |
89 end |
90 |
90 |
91 val prover_marker = "$a" |
91 val prover_marker = "$a" |
92 val isar_marker = "$i" |
92 val isar_marker = "$i" |
|
93 val missing_marker = "$m" |
93 val omitted_marker = "$o" |
94 val omitted_marker = "$o" |
94 val unprovable_marker = "$u" (* axiom or definition or characteristic theorem *) |
95 val unprovable_marker = "$u" (* axiom or definition or characteristic theorem *) |
95 val prover_failed_marker = "$x" |
96 val prover_failed_marker = "$x" |
96 |
97 |
97 fun smart_dependencies_of ctxt params_opt facts name_tabs th isar_deps_opt = |
98 fun smart_dependencies_of ctxt params_opt facts name_tabs th isar_deps_opt = |
103 |>> (fn true => prover_marker | false => prover_failed_marker) |
104 |>> (fn true => prover_marker | false => prover_failed_marker) |
104 | NONE => |
105 | NONE => |
105 let |
106 let |
106 val deps = |
107 val deps = |
107 (case isar_deps_opt of |
108 (case isar_deps_opt of |
108 SOME deps => deps |
109 NONE => isar_dependencies_of name_tabs th |
109 | NONE => isar_dependencies_of name_tabs th) |
110 | deps => deps) |
110 in (if null deps then unprovable_marker else isar_marker, deps) end) |
111 in |
|
112 ((case deps of |
|
113 NONE => missing_marker |
|
114 | SOME [] => unprovable_marker |
|
115 | SOME deps => isar_marker), []) |
|
116 end) |
111 in |
117 in |
112 (case trim_dependencies deps of |
118 (case trim_dependencies deps of |
113 SOME deps => (marker, deps) |
119 SOME deps => (marker, deps) |
114 | NONE => (omitted_marker, [])) |
120 | NONE => (omitted_marker, [])) |
115 end |
121 end |
145 generate_isar_or_prover_dependencies ctxt (SOME params) |
151 generate_isar_or_prover_dependencies ctxt (SOME params) |
146 |
152 |
147 fun is_bad_query ctxt ho_atp step j th isar_deps = |
153 fun is_bad_query ctxt ho_atp step j th isar_deps = |
148 j mod step <> 0 orelse |
154 j mod step <> 0 orelse |
149 Thm.legacy_get_kind th = "" orelse |
155 Thm.legacy_get_kind th = "" orelse |
150 null isar_deps orelse |
156 null (the_list isar_deps) orelse |
151 is_blacklisted_or_something ctxt ho_atp (Thm.get_name_hint th) |
157 is_blacklisted_or_something ctxt ho_atp (Thm.get_name_hint th) |
152 |
158 |
153 fun generate_isar_or_prover_commands ctxt prover params_opt (range, step) thys max_suggs file_name = |
159 fun generate_isar_or_prover_commands ctxt prover params_opt (range, step) thys max_suggs file_name = |
154 let |
160 let |
155 val ho_atp = is_ho_atp ctxt prover |
161 val ho_atp = is_ho_atp ctxt prover |
168 val goal_feats = |
174 val goal_feats = |
169 features_of ctxt (theory_of_thm th) (num_old_facts + j) const_tab stature [prop_of th] |
175 features_of ctxt (theory_of_thm th) (num_old_facts + j) const_tab stature [prop_of th] |
170 |> sort_wrt fst |
176 |> sort_wrt fst |
171 val access_facts = filter_accessible_from th new_facts @ old_facts |
177 val access_facts = filter_accessible_from th new_facts @ old_facts |
172 val (marker, deps) = |
178 val (marker, deps) = |
173 smart_dependencies_of ctxt params_opt access_facts name_tabs th (SOME isar_deps) |
179 smart_dependencies_of ctxt params_opt access_facts name_tabs th isar_deps |
174 |
180 |
175 fun extra_features_of (((_, stature), th), weight) = |
181 fun extra_features_of (((_, stature), th), weight) = |
176 [prop_of th] |
182 [prop_of th] |
177 |> features_of ctxt (theory_of_thm th) (num_old_facts + j) const_tab stature |
183 |> features_of ctxt (theory_of_thm th) (num_old_facts + j) const_tab stature |
178 |> map (apsnd (fn r => weight * extra_feature_factor * r)) |
184 |> map (apsnd (fn r => weight * extra_feature_factor * r)) |