src/ZF/Resid/Conversion.ML
author paulson
Fri, 03 Jan 1997 15:01:55 +0100
changeset 2469 b50b8c0eec01
parent 1732 38776e927da8
child 3734 33f355f56f82
permissions -rw-r--r--
Implicit simpsets and clasets for FOL and ZF
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1048
diff changeset
     1
(*  Title:      Conversion.ML
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1048
diff changeset
     3
    Author:     Ole Rasmussen
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     4
    Copyright   1995  University of Cambridge
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     5
    Logic Image: ZF
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     6
*)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     7
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     8
open Conversion;
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     9
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    10
val (!simpset) = (!simpset) addsimps (Sconv1.intrs@[Sconv.one_step,Sconv.refl]);
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    11
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    12
goal Conversion.thy  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    13
    "!!u.m<--->n ==> n<--->m";
1732
38776e927da8 Updated for new form of induction rules
paulson
parents: 1461
diff changeset
    14
by (etac Sconv.induct 1);
38776e927da8 Updated for new form of induction rules
paulson
parents: 1461
diff changeset
    15
by (etac Sconv1.induct 1);
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    16
by (resolve_tac [Sconv.trans] 4);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    17
by (ALLGOALS(asm_simp_tac (!simpset) ));
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    18
val conv_sym = result();
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    19
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    20
(* ------------------------------------------------------------------------- *)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    21
(*      Church_Rosser Theorem                                                *)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    22
(* ------------------------------------------------------------------------- *)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    23
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    24
goal Conversion.thy  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    25
    "!!u.m<--->n ==> EX p.(m --->p) & (n ---> p)";
1732
38776e927da8 Updated for new form of induction rules
paulson
parents: 1461
diff changeset
    26
by (etac Sconv.induct 1);
38776e927da8 Updated for new form of induction rules
paulson
parents: 1461
diff changeset
    27
by (etac Sconv1.induct 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    28
by (fast_tac (!claset addIs [red1D1,redD2]) 1);
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    29
by (fast_tac (!claset addIs [red1D1,redD2]) 1);
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    30
by (fast_tac (!claset addIs [red1D1,redD2]) 1);
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    31
by (cut_facts_tac [confluence_beta_reduction]  1);
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1048
diff changeset
    32
by (rewtac confluence_def);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    33
by (step_tac (!claset) 1);
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    34
by (dres_inst_tac [("x4","n"),("x3","pa"),("x1","pb")] 
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    35
    (spec RS spec RS mp RS spec RS mp) 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    36
by (TRYALL assume_tac);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    37
by (step_tac (!claset) 1);
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    38
by (step_tac (!claset) 1);
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1732
diff changeset
    39
by (step_tac (!claset) 1);
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    40
by (res_inst_tac [("n","pa")]Sred.trans 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    41
by (res_inst_tac [("n","pb"),("p","ua")] Sred.trans 3);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    42
by (TRYALL assume_tac);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    43
val Church_Rosser = result();
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    44