diff -r f2094906e491 -r e44d86131648 src/ZF/Induct/Binary_Trees.thy --- a/src/ZF/Induct/Binary_Trees.thy Tue Sep 27 13:34:54 2022 +0200 +++ b/src/ZF/Induct/Binary_Trees.thy Tue Sep 27 16:51:35 2022 +0100 @@ -17,7 +17,7 @@ declare bt.intros [simp] -lemma Br_neq_left: "l \ bt(A) ==> Br(x, l, r) \ l" +lemma Br_neq_left: "l \ bt(A) \ Br(x, l, r) \ l" by (induct arbitrary: x r set: bt) auto lemma Br_iff: "Br(a, l, r) = Br(a', l', r') \ a = a' & l = l' & r = r'" @@ -32,7 +32,7 @@ definitions. \ -lemma bt_mono: "A \ B ==> bt(A) \ bt(B)" +lemma bt_mono: "A \ B \ bt(A) \ bt(B)" apply (unfold bt.defs) apply (rule lfp_mono) apply (rule bt.bnd_mono)+ @@ -46,18 +46,18 @@ apply (fast intro!: zero_in_univ Inl_in_univ Inr_in_univ Pair_in_univ) done -lemma bt_subset_univ: "A \ univ(B) ==> bt(A) \ univ(B)" +lemma bt_subset_univ: "A \ univ(B) \ bt(A) \ univ(B)" apply (rule subset_trans) apply (erule bt_mono) apply (rule bt_univ) done lemma bt_rec_type: - "[| t \ bt(A); + "\t \ bt(A); c \ C(Lf); - !!x y z r s. [| x \ A; y \ bt(A); z \ bt(A); r \ C(y); s \ C(z) |] ==> + \x y z r s. \x \ A; y \ bt(A); z \ bt(A); r \ C(y); s \ C(z)\ \ h(x, y, z, r, s) \ C(Br(x, y, z)) - |] ==> bt_rec(c, h, t) \ C(t)" +\ \ bt_rec(c, h, t) \ C(t)" \ \Type checking for recursor -- example only; not really needed.\ apply (induct_tac t) apply simp_all @@ -71,7 +71,7 @@ "n_nodes(Lf) = 0" "n_nodes(Br(a, l, r)) = succ(n_nodes(l) #+ n_nodes(r))" -lemma n_nodes_type [simp]: "t \ bt(A) ==> n_nodes(t) \ nat" +lemma n_nodes_type [simp]: "t \ bt(A) \ n_nodes(t) \ nat" by (induct set: bt) auto consts n_nodes_aux :: "i => i" @@ -81,7 +81,7 @@ (\k \ nat. n_nodes_aux(r) ` (n_nodes_aux(l) ` succ(k)))" lemma n_nodes_aux_eq: - "t \ bt(A) ==> k \ nat ==> n_nodes_aux(t)`k = n_nodes(t) #+ k" + "t \ bt(A) \ k \ nat \ n_nodes_aux(t)`k = n_nodes(t) #+ k" apply (induct arbitrary: k set: bt) apply simp apply (atomize, simp) @@ -89,9 +89,9 @@ definition n_nodes_tail :: "i => i" where - "n_nodes_tail(t) == n_nodes_aux(t) ` 0" + "n_nodes_tail(t) \ n_nodes_aux(t) ` 0" -lemma "t \ bt(A) ==> n_nodes_tail(t) = n_nodes(t)" +lemma "t \ bt(A) \ n_nodes_tail(t) = n_nodes(t)" by (simp add: n_nodes_tail_def n_nodes_aux_eq) @@ -103,7 +103,7 @@ "n_leaves(Lf) = 1" "n_leaves(Br(a, l, r)) = n_leaves(l) #+ n_leaves(r)" -lemma n_leaves_type [simp]: "t \ bt(A) ==> n_leaves(t) \ nat" +lemma n_leaves_type [simp]: "t \ bt(A) \ n_leaves(t) \ nat" by (induct set: bt) auto @@ -115,24 +115,24 @@ "bt_reflect(Lf) = Lf" "bt_reflect(Br(a, l, r)) = Br(a, bt_reflect(r), bt_reflect(l))" -lemma bt_reflect_type [simp]: "t \ bt(A) ==> bt_reflect(t) \ bt(A)" +lemma bt_reflect_type [simp]: "t \ bt(A) \ bt_reflect(t) \ bt(A)" by (induct set: bt) auto text \ \medskip Theorems about \<^term>\n_leaves\. \ -lemma n_leaves_reflect: "t \ bt(A) ==> n_leaves(bt_reflect(t)) = n_leaves(t)" +lemma n_leaves_reflect: "t \ bt(A) \ n_leaves(bt_reflect(t)) = n_leaves(t)" by (induct set: bt) (simp_all add: add_commute) -lemma n_leaves_nodes: "t \ bt(A) ==> n_leaves(t) = succ(n_nodes(t))" +lemma n_leaves_nodes: "t \ bt(A) \ n_leaves(t) = succ(n_nodes(t))" by (induct set: bt) simp_all text \ Theorems about \<^term>\bt_reflect\. \ -lemma bt_reflect_bt_reflect_ident: "t \ bt(A) ==> bt_reflect(bt_reflect(t)) = t" +lemma bt_reflect_bt_reflect_ident: "t \ bt(A) \ bt_reflect(bt_reflect(t)) = t" by (induct set: bt) simp_all end