equal
deleted
inserted
replaced
1049 apply (case_tac poly, auto) |
1049 apply (case_tac poly, auto) |
1050 done |
1050 done |
1051 |
1051 |
1052 lemma simplt_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1052 lemma simplt_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1053 shows "tmbound0 t \<Longrightarrow> bound0 (simplt t)" |
1053 shows "tmbound0 t \<Longrightarrow> bound0 (simplt t)" |
1054 using split0 [of "simptm t" vs bs] |
1054 using split0 [of "simptm t" "vs::'a list" bs] |
1055 proof(simp add: simplt_def Let_def split_def) |
1055 proof(simp add: simplt_def Let_def split_def) |
1056 assume nb: "tmbound0 t" |
1056 assume nb: "tmbound0 t" |
1057 hence nb': "tmbound0 (simptm t)" by simp |
1057 hence nb': "tmbound0 (simptm t)" by simp |
1058 let ?c = "fst (split0 (simptm t))" |
1058 let ?c = "fst (split0 (simptm t))" |
1059 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1059 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1066 fst (split0 (simptm t)) = 0\<^sub>p" by (simp add: simplt_def Let_def split_def lt_nb) |
1066 fst (split0 (simptm t)) = 0\<^sub>p" by (simp add: simplt_def Let_def split_def lt_nb) |
1067 qed |
1067 qed |
1068 |
1068 |
1069 lemma simple_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1069 lemma simple_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1070 shows "tmbound0 t \<Longrightarrow> bound0 (simple t)" |
1070 shows "tmbound0 t \<Longrightarrow> bound0 (simple t)" |
1071 using split0 [of "simptm t" vs bs] |
1071 using split0 [of "simptm t" "vs::'a list" bs] |
1072 proof(simp add: simple_def Let_def split_def) |
1072 proof(simp add: simple_def Let_def split_def) |
1073 assume nb: "tmbound0 t" |
1073 assume nb: "tmbound0 t" |
1074 hence nb': "tmbound0 (simptm t)" by simp |
1074 hence nb': "tmbound0 (simptm t)" by simp |
1075 let ?c = "fst (split0 (simptm t))" |
1075 let ?c = "fst (split0 (simptm t))" |
1076 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1076 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1083 fst (split0 (simptm t)) = 0\<^sub>p" by (simp add: simplt_def Let_def split_def le_nb) |
1083 fst (split0 (simptm t)) = 0\<^sub>p" by (simp add: simplt_def Let_def split_def le_nb) |
1084 qed |
1084 qed |
1085 |
1085 |
1086 lemma simpeq_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1086 lemma simpeq_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1087 shows "tmbound0 t \<Longrightarrow> bound0 (simpeq t)" |
1087 shows "tmbound0 t \<Longrightarrow> bound0 (simpeq t)" |
1088 using split0 [of "simptm t" vs bs] |
1088 using split0 [of "simptm t" "vs::'a list" bs] |
1089 proof(simp add: simpeq_def Let_def split_def) |
1089 proof(simp add: simpeq_def Let_def split_def) |
1090 assume nb: "tmbound0 t" |
1090 assume nb: "tmbound0 t" |
1091 hence nb': "tmbound0 (simptm t)" by simp |
1091 hence nb': "tmbound0 (simptm t)" by simp |
1092 let ?c = "fst (split0 (simptm t))" |
1092 let ?c = "fst (split0 (simptm t))" |
1093 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1093 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1100 fst (split0 (simptm t)) = 0\<^sub>p" by (simp add: simpeq_def Let_def split_def eq_nb) |
1100 fst (split0 (simptm t)) = 0\<^sub>p" by (simp add: simpeq_def Let_def split_def eq_nb) |
1101 qed |
1101 qed |
1102 |
1102 |
1103 lemma simpneq_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1103 lemma simpneq_nb[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" |
1104 shows "tmbound0 t \<Longrightarrow> bound0 (simpneq t)" |
1104 shows "tmbound0 t \<Longrightarrow> bound0 (simpneq t)" |
1105 using split0 [of "simptm t" vs bs] |
1105 using split0 [of "simptm t" "vs::'a list" bs] |
1106 proof(simp add: simpneq_def Let_def split_def) |
1106 proof(simp add: simpneq_def Let_def split_def) |
1107 assume nb: "tmbound0 t" |
1107 assume nb: "tmbound0 t" |
1108 hence nb': "tmbound0 (simptm t)" by simp |
1108 hence nb': "tmbound0 (simptm t)" by simp |
1109 let ?c = "fst (split0 (simptm t))" |
1109 let ?c = "fst (split0 (simptm t))" |
1110 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |
1110 from tmbound_split0[OF nb'[unfolded tmbound0_tmbound_iff[symmetric]]] |