# HG changeset patch # User desharna # Date 1403610494 -7200 # Node ID d2061dc953a46d44710ee18f6337b4ddea0f2dfa # Parent 498a62e65f5fd04e7a5e1c302dd452d71b44830b document property 'rel_coinduct' diff -r 498a62e65f5f -r d2061dc953a4 src/Doc/Datatypes/Datatypes.thy --- a/src/Doc/Datatypes/Datatypes.thy Tue Jun 24 13:48:14 2014 +0200 +++ b/src/Doc/Datatypes/Datatypes.thy Tue Jun 24 13:48:14 2014 +0200 @@ -941,7 +941,7 @@ \begin{indentblock} \begin{description} -\item[@{text "t."}\hthm{induct} @{text "[induct t, case_names C\<^sub>1 \ C\<^sub>n]"}\rm:] ~ \\ +\item[@{text "t."}\hthm{induct} @{text "[case_names C\<^sub>1 \ C\<^sub>n, induct t]"}\rm:] ~ \\ @{thm list.induct[no_vars]} \item[@{text "t\<^sub>1_\_t\<^sub>m."}\hthm{induct} @{text "[case_names C\<^sub>1 \ C\<^sub>n]"}\rm:] ~ \\ @@ -1727,8 +1727,9 @@ \begin{description} \item[\begin{tabular}{@ {}l@ {}} - @{text "t."}\hthm{coinduct} @{text "[coinduct t, consumes m, case_names t\<^sub>1 \ t\<^sub>m,"} \\ - \phantom{@{text "t."}\hthm{coinduct} @{text "["}}@{text "case_conclusion D\<^sub>1 \ D\<^sub>n]"}\rm: + @{text "t."}\hthm{coinduct} @{text "[consumes m, case_names t\<^sub>1 \ t\<^sub>m,"} \\ + \phantom{@{text "t."}\hthm{coinduct} @{text "["}}@{text "case_conclusion D\<^sub>1 \ + D\<^sub>n, coinduct t]"}\rm: \end{tabular}] ~ \\ @{thm llist.coinduct[no_vars]} @@ -1739,9 +1740,17 @@ @{thm llist.strong_coinduct[no_vars]} \item[\begin{tabular}{@ {}l@ {}} + @{text "t."}\hthm{rel_coinduct} @{text "[consumes m, case_names t\<^sub>1 \ t\<^sub>m,"} \\ + \phantom{@{text "t."}\hthm{rel_coinduct} @{text "["}}@{text "case_conclusion D\<^sub>1 \ + D\<^sub>n, coinduct pred]"}\rm: +\end{tabular}] ~ \\ +@{thm llist.rel_coinduct[no_vars]} + +\item[\begin{tabular}{@ {}l@ {}} @{text "t\<^sub>1_\_t\<^sub>m."}\hthm{coinduct} @{text "[case_names t\<^sub>1 \ t\<^sub>m, case_conclusion D\<^sub>1 \ D\<^sub>n]"} \\ @{text "t\<^sub>1_\_t\<^sub>m."}\hthm{strong\_coinduct} @{text "[case_names t\<^sub>1 \ t\<^sub>m,"} \\ - \phantom{@{text "t\<^sub>1_\_t\<^sub>m."}\hthm{strong\_coinduct} @{text "["}}@{text "case_conclusion D\<^sub>1 \ D\<^sub>n]"}\rm: + \phantom{@{text "t\<^sub>1_\_t\<^sub>m."}\hthm{strong\_coinduct} @{text "["}}@{text "case_conclusion D\<^sub>1 \ D\<^sub>n]"}\rm: \\ + @{text "t\<^sub>1_\_t\<^sub>m."}\hthm{rel_coinduct} @{text "[case_names t\<^sub>1 \ t\<^sub>m, case_conclusion D\<^sub>1 \ D\<^sub>n]"} \\ \end{tabular}] ~ \\ Given $m > 1$ mutually corecursive codatatypes, these coinduction rules can be used to prove $m$ properties simultaneously.