src/HOLCF/ex/Dlist.ML
author wenzelm
Fri, 10 Oct 1997 19:02:28 +0200
changeset 3842 b55686a7b22c
parent 2570 24d7e8fb8261
permissions -rw-r--r--
fixed dots;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     1
open Dlist;
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     2
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     3
(* ------------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     4
(* expand fixed point properties of lmap                                     *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     5
(* ------------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     6
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     7
bind_thm ("lmap_def2", fix_prover2 Dlist.thy lmap_def 
3842
b55686a7b22c fixed dots;
wenzelm
parents: 2570
diff changeset
     8
        "lmap = (LAM f s. case s of dnil => dnil | x ## l => f`x ## lmap`f`l )");
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     9
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    10
(* ------------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    11
(* recursive  properties   of lmap                                           *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    12
(* ------------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    13
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    14
qed_goal "lmap1" Dlist.thy "lmap`f`UU = UU"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    15
 (fn prems =>
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    16
	[
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    17
	(rtac (lmap_def2 RS ssubst) 1),
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    18
	(simp_tac (HOLCF_ss addsimps dlist.when_rews) 1)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    19
	]);
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    20
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    21
qed_goal "lmap2" Dlist.thy "lmap`f`dnil = dnil"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    22
 (fn prems =>
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    23
	[
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    24
	(rtac (lmap_def2 RS ssubst) 1),
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    25
	(simp_tac (HOLCF_ss addsimps dlist.when_rews) 1)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    26
	]);
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    27
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    28
qed_goal "lmap3" Dlist.thy 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    29
	"[|x~=UU; xs~=UU|] ==> lmap`f`(x##xs) = (f`x)##(lmap`f`xs)"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    30
 (fn prems =>
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    31
	[
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    32
	(cut_facts_tac prems 1),
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    33
	(rtac trans 1),
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    34
	(rtac (lmap_def2 RS ssubst) 1),
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    35
	(asm_simp_tac (HOLCF_ss addsimps dlist.rews) 1),
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    36
	(rtac refl 1)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    37
	]);