src/ZF/Resid/Cube.ML
changeset 2469 b50b8c0eec01
parent 2034 5079fdf938dd
child 2493 bdeb5024353a
equal deleted inserted replaced
2468:428efffe8599 2469:b50b8c0eec01
    20 goal Cube.thy 
    20 goal Cube.thy 
    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 (asm_simp_tac (prism_ss) 1);
    25 by (asm_simp_tac prism_ss 1);
    26 by (asm_simp_tac (prism_ss ) 1);
    26 by (asm_simp_tac prism_ss 1);
    27 by (asm_simp_tac (prism_ss ) 1);
    27 by (asm_simp_tac prism_ss 1);
    28 by (dresolve_tac [spec RS mp RS mp] 1 THEN resolve_tac [Scomp.Comp_Fun] 1 
    28 by (dresolve_tac [spec RS mp RS mp] 1 THEN resolve_tac [Scomp.Comp_Fun] 1 
    29     THEN resolve_tac [Scomp.Comp_Fun] 2 THEN (REPEAT(assume_tac 1)));
    29     THEN resolve_tac [Scomp.Comp_Fun] 2 THEN (REPEAT(assume_tac 1)));
    30 by (asm_full_simp_tac (prism_ss ) 1);
    30 by (asm_full_simp_tac prism_ss 1);
    31 by (asm_simp_tac (prism_ss ) 1);
    31 by (asm_simp_tac prism_ss 1);
    32 by (dresolve_tac [spec RS mp RS mp] 1 THEN resolve_tac [Scomp.Comp_Fun] 1 
    32 by (dresolve_tac [spec RS mp RS mp] 1 THEN resolve_tac [Scomp.Comp_Fun] 1 
    33     THEN resolve_tac [Scomp.Comp_Fun] 2 THEN (REPEAT(assume_tac 1)));
    33     THEN resolve_tac [Scomp.Comp_Fun] 2 THEN (REPEAT(assume_tac 1)));
    34 by (asm_full_simp_tac (prism_ss ) 1);
    34 by (asm_full_simp_tac prism_ss 1);
    35 val prism_l = result();
    35 val prism_l = result();
    36 
    36 
    37 goal Cube.thy 
    37 goal Cube.thy 
    38     "!!u.[|v <== u; regular(u); w~v|]==> \
    38     "!!u.[|v <== u; regular(u); w~v|]==> \
    39 \       w |> u = (w|>v) |> (u|>v)";
    39 \       w |> u = (w|>v) |> (u|>v)";
    40 by (resolve_tac [prism_l RS mp RS spec RS mp RS mp ] 1);
    40 by (resolve_tac [prism_l RS mp RS spec RS mp RS mp ] 1);
    41 by (rtac comp_trans 4);
    41 by (rtac comp_trans 4);
    42 by (assume_tac 4);
    42 by (assume_tac 4);
    43 by (ALLGOALS(asm_simp_tac (prism_ss)));
    43 by (ALLGOALS(asm_simp_tac prism_ss));
    44 val prism = result();
    44 val prism = result();
    45 
    45 
    46 
    46 
    47 (* ------------------------------------------------------------------------- *)
    47 (* ------------------------------------------------------------------------- *)
    48 (*    Levy's Cube Lemma                                                      *)
    48 (*    Levy's Cube Lemma                                                      *)
    55     THEN assume_tac 1 THEN assume_tac 1);
    55     THEN assume_tac 1 THEN assume_tac 1);
    56 by (res_inst_tac [("u2","v"),("v2","u")](preservation RS ssubst) 1);
    56 by (res_inst_tac [("u2","v"),("v2","u")](preservation RS ssubst) 1);
    57 by (etac comp_sym 1);
    57 by (etac comp_sym 1);
    58 by (atac 1);
    58 by (atac 1);
    59 by (stac (prism RS sym) 1);
    59 by (stac (prism RS sym) 1);
    60 by (asm_full_simp_tac (res1_ss addsimps 
    60 by (asm_full_simp_tac (!simpset addsimps 
    61     [prism RS sym,union_l,union_preserve_regular,
    61 		       [prism RS sym,union_l,union_preserve_regular,
    62      comp_sym_iff, union_sym]) 4);
    62 			comp_sym_iff, union_sym]) 4);
    63 by (asm_full_simp_tac (res1_ss addsimps [union_r, comp_sym_iff]) 1);
    63 by (asm_full_simp_tac (!simpset addsimps [union_r, comp_sym_iff]) 1);
    64 by (asm_full_simp_tac (res1_ss addsimps 
    64 by (asm_full_simp_tac (!simpset addsimps 
    65     [union_preserve_regular, comp_sym_iff]) 1);
    65 		       [union_preserve_regular, comp_sym_iff]) 1);
    66 by (etac comp_trans 1);
    66 by (etac comp_trans 1);
    67 by (atac 1);
    67 by (atac 1);
    68 val cube = result();
    68 val cube = result();
    69 
    69 
    70 
    70 
    75 goal Cube.thy 
    75 goal Cube.thy 
    76     "!!u.[|w~u; w~v; regular(u); regular(v)|]==> \
    76     "!!u.[|w~u; w~v; regular(u); regular(v)|]==> \
    77 \          EX uv.EX vu. (w|>u) |> vu = (w|>v) |> uv & (w|>u)~vu &\
    77 \          EX uv.EX vu. (w|>u) |> vu = (w|>v) |> uv & (w|>u)~vu &\
    78 \            regular(vu) & (w|>v)~uv & regular(uv) ";
    78 \            regular(vu) & (w|>v)~uv & regular(uv) ";
    79 by (forw_inst_tac [("x1","v")] (comp_sym RS comp_trans) 1);
    79 by (forw_inst_tac [("x1","v")] (comp_sym RS comp_trans) 1);
    80 by (REPEAT(step_tac ZF_cs 1));
    80 by (REPEAT(Step_tac 1));
    81 by (rtac cube 1);
    81 by (rtac cube 1);
    82 by (asm_simp_tac (prism_ss addsimps [comp_sym_iff]) 1);
    82 by (asm_simp_tac (prism_ss addsimps [comp_sym_iff]) 1);
    83 by (asm_simp_tac (prism_ss addsimps [comp_sym_iff]) 1);
    83 by (asm_simp_tac (prism_ss addsimps [comp_sym_iff]) 1);
    84 by (asm_simp_tac (prism_ss addsimps [comp_sym_iff]) 1);
    84 by (asm_simp_tac (prism_ss addsimps [comp_sym_iff]) 1);
    85 by (atac 1);
    85 by (atac 1);