thys/SpecExt.thy
changeset 293 1a4e5b94293b
parent 280 c840a99a3e05
child 294 c1de75d20aa4
--- a/thys/SpecExt.thy	Mon Sep 10 21:41:54 2018 +0100
+++ b/thys/SpecExt.thy	Sun Sep 30 12:02:04 2018 +0100
@@ -505,7 +505,10 @@
 | "\<lbrakk>\<forall>v \<in> set vs. \<Turnstile> v : r \<and> flat v \<noteq> [];
     length vs > n; length vs \<le> m\<rbrakk> \<Longrightarrow> \<Turnstile> Stars vs : NMTIMES r n m"
 
-  
+
+ 
+
+
 inductive_cases Prf_elims:
   "\<Turnstile> v : ZERO"
   "\<Turnstile> v : SEQ r1 r2"
@@ -764,7 +767,34 @@
   shows "L(r) = {flat v | v. \<Turnstile> v : r}"
 using L_flat_Prf1 L_flat_Prf2 by blast
 
+thm Prf.intros
+thm Prf.cases
 
+lemma
+  assumes "\<Turnstile> v : (STAR r)" 
+  shows "\<Turnstile> v : (FROMNTIMES r 0)"
+  using assms
+  apply(erule_tac Prf.cases)
+             apply(simp_all)
+  apply(case_tac vs)
+   apply(auto)
+  apply(subst append_Nil[symmetric])
+   apply(rule Prf.intros)
+     apply(auto)
+  apply(simp add: Prf.intros)
+  done
+
+lemma
+  assumes "\<Turnstile> v : (FROMNTIMES r 0)" 
+  shows "\<Turnstile> v : (STAR r)"
+  using assms
+  apply(erule_tac Prf.cases)
+             apply(simp_all)
+   apply(rule Prf.intros)
+   apply(simp)
+  apply(rule Prf.intros)
+   apply(simp)
+  done
 
 section {* Sets of Lexical Values *}