equal
deleted
inserted
replaced
5 |
5 |
6 derive the characteristic axioms for the characteristic constants *) |
6 derive the characteristic axioms for the characteristic constants *) |
7 |
7 |
8 open Porder0; |
8 open Porder0; |
9 |
9 |
10 qed_goalw "refl_less" thy [ po_def ] "x << x" |
|
11 (fn prems => |
|
12 [ |
|
13 (fast_tac (HOL_cs addSIs [ax_refl_less]) 1) |
|
14 ]); |
|
15 |
|
16 AddIffs [refl_less]; |
10 AddIffs [refl_less]; |
17 |
|
18 qed_goalw "antisym_less" thy [ po_def ] "[| x << y; y << x |] ==> x = y" |
|
19 (fn prems => |
|
20 [ |
|
21 (fast_tac (HOL_cs addSIs prems@[ax_antisym_less]) 1) |
|
22 ]); |
|
23 |
|
24 qed_goalw "trans_less" thy [ po_def ] "[| x << y; y << z |] ==> x << z" |
|
25 (fn prems => |
|
26 [ |
|
27 (fast_tac (HOL_cs addIs prems@[ax_trans_less]) 1) |
|
28 ]); |
|
29 |
11 |
30 (* ------------------------------------------------------------------------ *) |
12 (* ------------------------------------------------------------------------ *) |
31 (* minimal fixes least element *) |
13 (* minimal fixes least element *) |
32 (* ------------------------------------------------------------------------ *) |
14 (* ------------------------------------------------------------------------ *) |
33 bind_thm("minimal2UU",allI RS (prove_goal thy "!x.uu<<x==>uu=(@u.!y.u<<y)" |
15 bind_thm("minimal2UU",allI RS (prove_goal thy "!x::'a::po.uu<<x==>uu=(@u.!y.u<<y)" |
34 (fn prems => |
16 (fn prems => |
35 [ |
17 [ |
36 (cut_facts_tac prems 1), |
18 (cut_facts_tac prems 1), |
37 (rtac antisym_less 1), |
19 (rtac antisym_less 1), |
38 (etac spec 1), |
20 (etac spec 1), |
43 |
25 |
44 (* ------------------------------------------------------------------------ *) |
26 (* ------------------------------------------------------------------------ *) |
45 (* the reverse law of anti--symmetrie of << *) |
27 (* the reverse law of anti--symmetrie of << *) |
46 (* ------------------------------------------------------------------------ *) |
28 (* ------------------------------------------------------------------------ *) |
47 |
29 |
48 qed_goal "antisym_less_inverse" thy "x=y ==> x << y & y << x" |
30 qed_goal "antisym_less_inverse" thy "(x::'a::po)=y ==> x << y & y << x" |
49 (fn prems => |
31 (fn prems => |
50 [ |
32 [ |
51 (cut_facts_tac prems 1), |
33 (cut_facts_tac prems 1), |
52 (rtac conjI 1), |
34 (rtac conjI 1), |
53 ((rtac subst 1) THEN (rtac refl_less 2) THEN (atac 1)), |
35 ((rtac subst 1) THEN (rtac refl_less 2) THEN (atac 1)), |
54 ((rtac subst 1) THEN (rtac refl_less 2) THEN (etac sym 1)) |
36 ((rtac subst 1) THEN (rtac refl_less 2) THEN (etac sym 1)) |
55 ]); |
37 ]); |
56 |
38 |
57 |
39 |
58 qed_goal "box_less" thy |
40 qed_goal "box_less" thy |
59 "[| a << b; c << a; b << d|] ==> c << d" |
41 "[| (a::'a::po) << b; c << a; b << d|] ==> c << d" |
60 (fn prems => |
42 (fn prems => |
61 [ |
43 [ |
62 (cut_facts_tac prems 1), |
44 (cut_facts_tac prems 1), |
63 (etac trans_less 1), |
45 (etac trans_less 1), |
64 (etac trans_less 1), |
46 (etac trans_less 1), |