2014-07-14 19:32:44 +00:00
|
|
|
(*
|
2020-03-09 06:18:30 +00:00
|
|
|
* Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
|
2014-07-14 19:32:44 +00:00
|
|
|
*
|
2020-03-09 06:18:30 +00:00
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
2014-07-14 19:32:44 +00:00
|
|
|
*)
|
|
|
|
|
|
|
|
(*
|
|
|
|
* Transform the state of a L1 monad to remove local variables, lifting them to
|
|
|
|
* Isabelle's logic.
|
|
|
|
*)
|
|
|
|
|
|
|
|
theory LocalVarExtract
|
|
|
|
imports SimplConv L2Defs
|
|
|
|
begin
|
|
|
|
|
2016-05-16 07:21:55 +00:00
|
|
|
(* These are used to translate unsimplified L1_specs. *)
|
|
|
|
lemma Collect_prod_inter:
|
|
|
|
"{(s, t). P s t} \<inter> {(s, t). Q s t} = {(s, t). P s t \<and> Q s t}"
|
|
|
|
by (fastforce intro: set_eqI)
|
|
|
|
|
|
|
|
lemma Collect_prod_union:
|
|
|
|
"{(s, t). P s t} \<union> {(s, t). Q s t} = {(s, t). P s t \<or> Q s t}"
|
|
|
|
by (fastforce intro: set_eqI)
|
|
|
|
|
2014-07-14 19:32:44 +00:00
|
|
|
end
|