src/LCF/pair.ML
author wenzelm
Tue, 13 Sep 2005 22:19:23 +0200
changeset 17339 ab97ccef124a
parent 17248 81bf91654e73
permissions -rw-r--r--
tuned Isar interfaces; tuned IsarThy.theorem_i;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
     1
(*  Title:      LCF/pair
660
7fe6ec24d842 added header files; deleted commented-out code
lcp
parents: 442
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
     3
    Author:     Tobias Nipkow
660
7fe6ec24d842 added header files; deleted commented-out code
lcp
parents: 442
diff changeset
     4
    Copyright   1992  University of Cambridge
7fe6ec24d842 added header files; deleted commented-out code
lcp
parents: 442
diff changeset
     5
*)
7fe6ec24d842 added header files; deleted commented-out code
lcp
parents: 442
diff changeset
     6
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 1461
diff changeset
     7
val expand_all_PROD = prove_goal (the_context ())
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
     8
        "(ALL p. P(p)) <-> (ALL x y. P(<x,y>))"
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
     9
        (fn _ => [rtac iffI 1, fast_tac FOL_cs 1, rtac allI 1,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    10
                  rtac (surj_pairing RS subst) 1, fast_tac FOL_cs 1]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
local
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    13
val ppair = read_instantiate [("z","p::'a*'b")] surj_pairing;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
val qpair = read_instantiate [("z","q::'a*'b")] surj_pairing;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    15
in
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 1461
diff changeset
    16
val PROD_less = prove_goal (the_context ())
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    17
        "(p::'a*'b) << q <-> FST(p) << FST(q) & SND(p) << SND(q)"
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    18
        (fn _ => [EVERY1[rtac iffI,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    19
                  rtac conjI, etac less_ap_term, etac less_ap_term,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    20
                  rtac (ppair RS subst), rtac (qpair RS subst),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    21
                  etac conjE, rtac mono, etac less_ap_term, atac]]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
end;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    23
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 1461
diff changeset
    24
val PROD_eq = prove_goal (the_context ()) "p=q <-> FST(p)=FST(q) & SND(p)=SND(q)"
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    25
        (fn _ => [rtac iffI 1, asm_simp_tac LCF_ss 1,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    26
                  rewtac eq_def,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    27
                  asm_simp_tac (LCF_ss addsimps [PROD_less]) 1]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    28
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 1461
diff changeset
    29
val PAIR_less = prove_goal (the_context ()) "<a,b> << <c,d> <-> a<<c & b<<d"
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    30
        (fn _ => [simp_tac (LCF_ss addsimps [PROD_less])1]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    31
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 1461
diff changeset
    32
val PAIR_eq = prove_goal (the_context ()) "<a,b> = <c,d> <-> a=c & b=d"
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    33
        (fn _ => [simp_tac (LCF_ss addsimps [PROD_eq])1]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    34
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 1461
diff changeset
    35
val UU_is_UU_UU = prove_goal (the_context ()) "<UU,UU> << UU"
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    36
                (fn _ => [simp_tac (LCF_ss addsimps [PROD_less]) 1])
6bcb44e4d6e5 expanded tabs
clasohm
parents: 660
diff changeset
    37
        RS less_UU RS sym;
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    38
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    39
val LCF_ss = LCF_ss addsimps [PAIR_less,PAIR_eq,UU_is_UU_UU];