| author | paulson | 
| Fri, 04 Jul 1997 11:57:33 +0200 | |
| changeset 3495 | 04739732b13e | 
| parent 2640 | ee4dfce170a0 | 
| child 4098 | 71e05eb27fb6 | 
| permissions | -rw-r--r-- | 
| 2275 | 1 | (* Title: HOLCF/One.ML | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 2 | ID: $Id$ | 
| 2640 | 3 | Author: Oscar Slotosch | 
| 4 | Copyright 1997 Technische Universitaet Muenchen | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 5 | |
| 2640 | 6 | Lemmas for One.thy | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 7 | *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 8 | |
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 9 | open One; | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 10 | |
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 11 | (* ------------------------------------------------------------------------ *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 12 | (* Exhaustion and Elimination for type one *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 13 | (* ------------------------------------------------------------------------ *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 14 | |
| 2640 | 15 | qed_goalw "Exh_one" thy [ONE_def] "t=UU | t = ONE" | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 16 | (fn prems => | 
| 1461 | 17 | [ | 
| 2640 | 18 | (lift.induct_tac "t" 1), | 
| 19 | (fast_tac HOL_cs 1), | |
| 20 | (Simp_tac 1), | |
| 21 | (rtac unit_eq 1) | |
| 22 | ]); | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 23 | |
| 2640 | 24 | qed_goal "oneE" thy | 
| 25 | "[| p=UU ==> Q; p = ONE ==>Q|] ==>Q" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 26 | (fn prems => | 
| 1461 | 27 | [ | 
| 28 | (rtac (Exh_one RS disjE) 1), | |
| 29 | (eresolve_tac prems 1), | |
| 30 | (eresolve_tac prems 1) | |
| 31 | ]); | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 32 | |
| 2640 | 33 | (* ------------------------------------------------------------------------ *) | 
| 34 | (* tactic for one-thms *) | |
| 35 | (* ------------------------------------------------------------------------ *) | |
| 36 | ||
| 37 | fun prover t = prove_goalw thy [ONE_def] t | |
| 38 | (fn prems => | |
| 39 | [ | |
| 40 | (asm_simp_tac (!simpset addsimps [inst_lift_po]) 1) | |
| 41 | ]); | |
| 42 | ||
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 43 | (* ------------------------------------------------------------------------ *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 44 | (* distinctness for type one : stored in a list *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 45 | (* ------------------------------------------------------------------------ *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 46 | |
| 2640 | 47 | val dist_less_one = map prover ["~ONE << UU"]; | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 48 | |
| 2640 | 49 | val dist_eq_one = map prover ["ONE~=UU","UU~=ONE"]; | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 50 | |
| 2640 | 51 | Addsimps (dist_less_one@dist_eq_one); |