src/ZF/Resid/Conversion.ML
author clasohm
Sat, 09 Dec 1995 13:36:11 +0100
changeset 1401 0c439768f45c
parent 1048 5ba0314f8214
child 1461 6bcb44e4d6e5
permissions -rw-r--r--
removed quotes from consts and syntax sections
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     1
(*  Title: 	Conversion.ML
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     2
    ID:         $Id$
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     3
    Author: 	Ole Rasmussen
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
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    10
val conv_ss = reduc_ss addsimps (Sconv1.intrs@[Sconv.one_step,Sconv.refl]);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    11
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    12
val conv1_induct = Sconv1.mutual_induct RS spec RS spec RSN (2,rev_mp);  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    13
val conv_induct  = Sconv.mutual_induct RS spec RS spec RSN (2,rev_mp);  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    14
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    15
goal Conversion.thy  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    16
    "!!u.m<--->n ==> n<--->m";
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    17
by (eresolve_tac [conv_induct] 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    18
by (eresolve_tac [conv1_induct] 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    19
by (resolve_tac [Sconv.trans] 4);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    20
by (ALLGOALS(asm_simp_tac (conv_ss) ));
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    21
val conv_sym = result();
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
(*      Church_Rosser Theorem                                                *)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    25
(* ------------------------------------------------------------------------- *)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    26
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    27
goal Conversion.thy  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    28
    "!!u.m<--->n ==> EX p.(m --->p) & (n ---> p)";
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    29
by (eresolve_tac [conv_induct] 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    30
by (eresolve_tac [conv1_induct] 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    31
by (fast_tac (reduc_cs addIs [red1D1,redD2]) 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    32
by (fast_tac (reduc_cs addIs [red1D1,redD2]) 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    33
by (fast_tac (reduc_cs addIs [red1D1,redD2]) 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    34
by (cut_facts_tac [confluence_beta_reduction]  1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    35
by (rewrite_goals_tac [confluence_def]);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    36
by (step_tac ZF_cs 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    37
by (dres_inst_tac [("x4","n"),("x3","pa"),("x1","pb")] 
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    38
    (spec RS spec RS mp RS spec RS mp) 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    39
by (TRYALL assume_tac);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    40
by (step_tac ZF_cs 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    41
by (step_tac ZF_cs 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    42
by (step_tac ZF_cs 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    43
by (res_inst_tac [("n","pa")]Sred.trans 1);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    44
by (res_inst_tac [("n","pb"),("p","ua")] Sred.trans 3);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    45
by (TRYALL assume_tac);
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    46
val Church_Rosser = result();
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    47