diff -r 9ddd66d53130 -r f2d58cafbc13 src/Doc/Isar_Ref/Proof.thy --- a/src/Doc/Isar_Ref/Proof.thy Tue Aug 13 15:34:46 2019 +0200 +++ b/src/Doc/Isar_Ref/Proof.thy Tue Aug 13 20:16:03 2019 +0200 @@ -766,6 +766,7 @@ @{command_def "print_rules"}\\<^sup>*\ & : & \context \\ \\[0.5ex] @{method_def "-"} & : & \method\ \\ @{method_def "goal_cases"} & : & \method\ \\ + @{method_def "subproofs"} & : & \method\ \\ @{method_def "fact"} & : & \method\ \\ @{method_def "assumption"} & : & \method\ \\ @{method_def "this"} & : & \method\ \\ @@ -782,6 +783,8 @@ \<^rail>\ @@{method goal_cases} (@{syntax name}*) ; + @@{method subproofs} @{syntax method} + ; @@{method fact} @{syntax thms}? ; @@{method (Pure) rule} @{syntax thms}? @@ -825,6 +828,14 @@ premises, and @{command let} variable @{variable_ref ?case} refer to the conclusion. + \<^descr> @{method "subproofs"}~\m\ applies the method expression \m\ consecutively + to each subgoal, constructing individual subproofs internally (analogous to + ``\<^theory_text>\show goal by m\'' for each subgoal of the proof state). Search + alternatives of \m\ are truncated: the method is forced to be deterministic. + This method combinator impacts the internal construction of proof terms: it + makes a cascade of let-expressions within the derivation tree and may thus + improve scalability. + \<^descr> @{method "fact"}~\a\<^sub>1 \ a\<^sub>n\ composes some fact from \a\<^sub>1, \, a\<^sub>n\ (or implicitly from the current proof context) modulo unification of schematic type and term variables. The rule structure is not taken into account, i.e.\