equal
deleted
inserted
replaced
152 val oracle = ("Eval", fn (thy, Eval t) => |
152 val oracle = ("Eval", fn (thy, Eval t) => |
153 Logic.mk_equals (t, eval_term' thy t)); |
153 Logic.mk_equals (t, eval_term' thy t)); |
154 |
154 |
155 val oracle_name = NameSpace.pack [Context.theory_name (the_context ()), fst oracle]; |
155 val oracle_name = NameSpace.pack [Context.theory_name (the_context ()), fst oracle]; |
156 |
156 |
157 |
|
158 fun conv ct = |
157 fun conv ct = |
159 let |
158 let |
160 val {thy, t, ...} = rep_cterm ct; |
159 val {thy, t, ...} = rep_cterm ct; |
161 val t' = HOLogic.dest_Trueprop t; |
160 val t' = HOLogic.dest_Trueprop t; |
162 val thm' = Thm.invoke_oracle_i thy oracle_name (thy, Eval t'); |
161 val thm' = Thm.invoke_oracle_i thy oracle_name (thy, Eval t'); |
204 |
203 |
205 lemma |
204 lemma |
206 "rev [0, Suc 0, Suc 0] = [Suc 0, Suc 0, 0]" by eval |
205 "rev [0, Suc 0, Suc 0] = [Suc 0, Suc 0, 0]" by eval |
207 |
206 |
208 lemma |
207 lemma |
209 "fst (snd (fst ( ((Some (2::nat), (Suc 0, ())), [0::nat]) ))) = Suc 0" by eval |
208 "fst (snd (fst ( ((Some (2::nat), (Suc 0, ())), [0::nat]) ))) = Suc (Suc 0) - 1" by eval |
210 |
209 |
211 end |
210 end |