equal
deleted
inserted
replaced
15 (* Prism theorem *) |
15 (* Prism theorem *) |
16 (* ============= *) |
16 (* ============= *) |
17 (* ------------------------------------------------------------------------- *) |
17 (* ------------------------------------------------------------------------- *) |
18 |
18 |
19 (* Having more assumptions than needed -- removed below *) |
19 (* Having more assumptions than needed -- removed below *) |
20 goal Cube.thy |
20 Goal |
21 "!!u. v<==u ==> \ |
21 "!!u. v<==u ==> \ |
22 \ regular(u)-->(ALL w. w~v-->w~u--> \ |
22 \ regular(u)-->(ALL w. w~v-->w~u--> \ |
23 \ w |> u = (w|>v) |> (u|>v))"; |
23 \ w |> u = (w|>v) |> (u|>v))"; |
24 by (etac Ssub.induct 1); |
24 by (etac Ssub.induct 1); |
25 by (ALLGOALS (asm_simp_tac prism_ss)); |
25 by (ALLGOALS (asm_simp_tac prism_ss)); |
29 by (dresolve_tac [spec RS mp RS mp] 1 THEN resolve_tac [Scomp.Comp_Fun] 1 |
29 by (dresolve_tac [spec RS mp RS mp] 1 THEN resolve_tac [Scomp.Comp_Fun] 1 |
30 THEN resolve_tac [Scomp.Comp_Fun] 2 THEN (REPEAT(assume_tac 1))); |
30 THEN resolve_tac [Scomp.Comp_Fun] 2 THEN (REPEAT(assume_tac 1))); |
31 by (asm_full_simp_tac prism_ss 1); |
31 by (asm_full_simp_tac prism_ss 1); |
32 qed_spec_mp "prism_l"; |
32 qed_spec_mp "prism_l"; |
33 |
33 |
34 goal Cube.thy |
34 Goal |
35 "!!u.[|v <== u; regular(u); w~v|]==> \ |
35 "!!u.[|v <== u; regular(u); w~v|]==> \ |
36 \ w |> u = (w|>v) |> (u|>v)"; |
36 \ w |> u = (w|>v) |> (u|>v)"; |
37 by (rtac prism_l 1); |
37 by (rtac prism_l 1); |
38 by (rtac comp_trans 4); |
38 by (rtac comp_trans 4); |
39 by (assume_tac 4); |
39 by (assume_tac 4); |
43 |
43 |
44 (* ------------------------------------------------------------------------- *) |
44 (* ------------------------------------------------------------------------- *) |
45 (* Levy's Cube Lemma *) |
45 (* Levy's Cube Lemma *) |
46 (* ------------------------------------------------------------------------- *) |
46 (* ------------------------------------------------------------------------- *) |
47 |
47 |
48 goal Cube.thy |
48 Goal |
49 "!!u.[|u~v; regular(v); regular(u); w~u|]==> \ |
49 "!!u.[|u~v; regular(v); regular(u); w~u|]==> \ |
50 \ (w|>u) |> (v|>u) = (w|>v) |> (u|>v)"; |
50 \ (w|>u) |> (v|>u) = (w|>v) |> (u|>v)"; |
51 by (stac preservation 1 |
51 by (stac preservation 1 |
52 THEN assume_tac 1 THEN assume_tac 1); |
52 THEN assume_tac 1 THEN assume_tac 1); |
53 by (stac preservation 1 |
53 by (stac preservation 1 |
66 |
66 |
67 (* ------------------------------------------------------------------------- *) |
67 (* ------------------------------------------------------------------------- *) |
68 (* paving theorem *) |
68 (* paving theorem *) |
69 (* ------------------------------------------------------------------------- *) |
69 (* ------------------------------------------------------------------------- *) |
70 |
70 |
71 goal Cube.thy |
71 Goal |
72 "!!u.[|w~u; w~v; regular(u); regular(v)|]==> \ |
72 "!!u.[|w~u; w~v; regular(u); regular(v)|]==> \ |
73 \ EX uv vu. (w|>u) |> vu = (w|>v) |> uv & (w|>u)~vu &\ |
73 \ EX uv vu. (w|>u) |> vu = (w|>v) |> uv & (w|>u)~vu &\ |
74 \ regular(vu) & (w|>v)~uv & regular(uv) "; |
74 \ regular(vu) & (w|>v)~uv & regular(uv) "; |
75 by (subgoal_tac "u~v" 1); |
75 by (subgoal_tac "u~v" 1); |
76 by (safe_tac (claset() addSIs [exI])); |
76 by (safe_tac (claset() addSIs [exI])); |