src/HOL/Import/HOLLight/HOLLight.thy
author blanchet
Fri, 26 Aug 2011 10:25:13 +0200
changeset 44509 369e8c28a61a
parent 43843 16f2fd9103bd
child 44633 8a2fd7418435
permissions -rw-r--r--
added a component in generated file names reflecting whether the minimizer is used -- needed for evaluation to keep these files separated from the main problem files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     1
(* AUTOMATICALLY GENERATED, DO NOT EDIT! *)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     2
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
     3
theory HOLLight imports "../HOLLightCompat" "../HOL4Syntax" begin 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     4
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     5
;setup_theory hollight
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     6
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     7
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     8
  "_FALSITY_" :: "bool" ("'_FALSITY'_")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     9
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    10
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    11
  "_FALSITY__def": "_FALSITY_ == False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    12
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    13
lemma DEF__FALSITY_: "_FALSITY_ = False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    14
  by (import hollight DEF__FALSITY_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    15
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    16
lemma CONJ_ACI: "(p & q) = (q & p) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    17
((p & q) & r) = (p & q & r) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    18
(p & q & r) = (q & p & r) & (p & p) = p & (p & p & q) = (p & q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    19
  by (import hollight CONJ_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    20
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    21
lemma DISJ_ACI: "(p | q) = (q | p) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    22
((p | q) | r) = (p | q | r) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    23
(p | q | r) = (q | p | r) & (p | p) = p & (p | p | q) = (p | q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    24
  by (import hollight DISJ_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    25
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    26
lemma IMP_CONJ_ALT: "(p & q --> r) = (q --> p --> r)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    27
  by (import hollight IMP_CONJ_ALT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    28
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    29
lemma EQ_CLAUSES: "(True = t) = t & (t = True) = t & (False = t) = (~ t) & (t = False) = (~ t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    30
  by (import hollight EQ_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    31
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    32
lemma NOT_CLAUSES_WEAK: "(~ True) = False & (~ False) = True"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    33
  by (import hollight NOT_CLAUSES_WEAK)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    34
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    35
lemma AND_CLAUSES: "(True & t) = t &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    36
(t & True) = t & (False & t) = False & (t & False) = False & (t & t) = t"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    37
  by (import hollight AND_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    38
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    39
lemma OR_CLAUSES: "(True | t) = True &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    40
(t | True) = True & (False | t) = t & (t | False) = t & (t | t) = t"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    41
  by (import hollight OR_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    42
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    43
lemma IMP_CLAUSES: "(True --> t) = t &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    44
(t --> True) = True &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    45
(False --> t) = True & (t --> t) = True & (t --> False) = (~ t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    46
  by (import hollight IMP_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    47
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    48
lemma IMP_EQ_CLAUSE: "((x::'q_851) = x --> (p::bool)) = p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    49
  by (import hollight IMP_EQ_CLAUSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    50
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    51
lemma TRIV_EXISTS_AND_THM: "(EX x::'A. (P::bool) & (Q::bool)) = ((EX x::'A. P) & (EX x::'A. Q))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    52
  by (import hollight TRIV_EXISTS_AND_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    53
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    54
lemma TRIV_AND_EXISTS_THM: "((EX x::'A. (P::bool)) & (EX x::'A. (Q::bool))) = (EX x::'A. P & Q)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    55
  by (import hollight TRIV_AND_EXISTS_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    56
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    57
lemma TRIV_FORALL_OR_THM: "(ALL x::'A. (P::bool) | (Q::bool)) = ((ALL x::'A. P) | (ALL x::'A. Q))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    58
  by (import hollight TRIV_FORALL_OR_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    59
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    60
lemma TRIV_OR_FORALL_THM: "((ALL x::'A. (P::bool)) | (ALL x::'A. (Q::bool))) = (ALL x::'A. P | Q)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    61
  by (import hollight TRIV_OR_FORALL_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    62
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    63
lemma TRIV_FORALL_IMP_THM: "(ALL x::'A. (P::bool) --> (Q::bool)) = ((EX x::'A. P) --> (ALL x::'A. Q))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    64
  by (import hollight TRIV_FORALL_IMP_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    65
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    66
lemma TRIV_EXISTS_IMP_THM: "(EX x::'A. (P::bool) --> (Q::bool)) = ((ALL x::'A. P) --> (EX x::'A. Q))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    67
  by (import hollight TRIV_EXISTS_IMP_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    68
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    69
lemma EXISTS_UNIQUE_ALT: "Ex1 (P::'A => bool) = (EX x::'A. ALL y::'A. P y = (x = y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    70
  by (import hollight EXISTS_UNIQUE_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    71
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    72
lemma SELECT_UNIQUE: "(!!y::'A. (P::'A => bool) y = (y = (x::'A))) ==> Eps P = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    73
  by (import hollight SELECT_UNIQUE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    74
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    75
lemma EXCLUDED_MIDDLE: "t | ~ t"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    76
  by (import hollight EXCLUDED_MIDDLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    77
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    78
lemma COND_CLAUSES: "(if True then x::'A else (xa::'A)) = x & (if False then x else xa) = xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    79
  by (import hollight COND_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    80
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    81
lemma COND_EXPAND: "(if b then t1 else t2) = ((~ b | t1) & (b | t2))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    82
  by (import hollight COND_EXPAND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    83
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    84
lemma COND_RATOR: "(if b::bool then f::'A => 'B else (g::'A => 'B)) (x::'A) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    85
(if b then f x else g x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    86
  by (import hollight COND_RATOR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    87
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    88
lemma COND_ABS: "(%x::'A. if b::bool then (f::'A => 'B) x else (g::'A => 'B) x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    89
(if b then f else g)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    90
  by (import hollight COND_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    91
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    92
lemma MONO_COND: "[| (A --> B) & (C --> D); if b then A else C |] ==> if b then B else D"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    93
  by (import hollight MONO_COND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    94
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    95
lemma SKOLEM_THM: "(ALL x::'A. Ex ((P::'A => 'B => bool) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    96
(EX x::'A => 'B. ALL xa::'A. P xa (x xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    97
  by (import hollight SKOLEM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    98
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
    99
lemma UNIQUE_SKOLEM_ALT: "(ALL x::'A. Ex1 ((P::'A => 'B => bool) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   100
(EX f::'A => 'B. ALL (x::'A) y::'B. P x y = (f x = y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   101
  by (import hollight UNIQUE_SKOLEM_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   102
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   103
lemma COND_EQ_CLAUSE: "(if (x::'q_2963) = x then y::'q_2956 else (z::'q_2956)) = y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   104
  by (import hollight COND_EQ_CLAUSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   105
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   106
lemma bool_RECURSION: "EX x::bool => 'A. x False = (a::'A) & x True = (b::'A)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   107
  by (import hollight bool_RECURSION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   108
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   109
lemma o_ASSOC: "(f::'C => 'D) o ((g::'B => 'C) o (h::'A => 'B)) = f o g o h"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   110
  by (import hollight o_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   111
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   112
lemma I_O_ID: "id o (f::'A => 'B) = f & f o id = f"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   113
  by (import hollight I_O_ID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   114
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   115
lemma EXISTS_ONE_REP: "EX x. x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   116
  by (import hollight EXISTS_ONE_REP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   117
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   118
lemma one_axiom: "(f::'A => unit) = (x::'A => unit)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   119
  by (import hollight one_axiom)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   120
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   121
lemma one_RECURSION: "EX x::unit => 'A. x () = (e::'A)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   122
  by (import hollight one_RECURSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   123
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   124
lemma one_Axiom: "EX! fn::unit => 'A. fn () = (e::'A)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   125
  by (import hollight one_Axiom)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   126
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   127
lemma th_cond: "(b = False --> x = x0) & (b = True --> x = x1) ==> x = (b & x1 | ~ b & x0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   128
  by (import hollight th_cond)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   129
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   130
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   131
  LET_END :: "'A => 'A"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   132
  "LET_END == %t::'A. t"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   133
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   134
lemma DEF_LET_END: "LET_END = (%t::'A. t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   135
  by (import hollight DEF_LET_END)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   136
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   137
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   138
  "_SEQPATTERN" :: "('q_4007 => 'q_4004 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   139
=> ('q_4007 => 'q_4004 => bool) => 'q_4007 => 'q_4004 => bool" ("'_SEQPATTERN")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   140
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   141
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   142
  "_SEQPATTERN_def": "_SEQPATTERN ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   143
%(r::'q_4007 => 'q_4004 => bool) (s::'q_4007 => 'q_4004 => bool) x::'q_4007.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   144
   if Ex (r x) then r x else s x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   145
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   146
lemma DEF__SEQPATTERN: "_SEQPATTERN =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   147
(%(r::'q_4007 => 'q_4004 => bool) (s::'q_4007 => 'q_4004 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   148
    x::'q_4007. if Ex (r x) then r x else s x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   149
  by (import hollight DEF__SEQPATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   150
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   151
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   152
  "_UNGUARDED_PATTERN" :: "bool => bool => bool" ("'_UNGUARDED'_PATTERN")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   153
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   154
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   155
  "_UNGUARDED_PATTERN_def": "_UNGUARDED_PATTERN == op &"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   156
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   157
lemma DEF__UNGUARDED_PATTERN: "_UNGUARDED_PATTERN = op &"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   158
  by (import hollight DEF__UNGUARDED_PATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   159
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   160
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   161
  "_GUARDED_PATTERN" :: "bool => bool => bool => bool" ("'_GUARDED'_PATTERN")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   162
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   163
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   164
  "_GUARDED_PATTERN_def": "_GUARDED_PATTERN == %p g r. p & g & r"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   165
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   166
lemma DEF__GUARDED_PATTERN: "_GUARDED_PATTERN = (%p g r. p & g & r)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   167
  by (import hollight DEF__GUARDED_PATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   168
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   169
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   170
  "_MATCH" :: "'q_4049 => ('q_4049 => 'q_4053 => bool) => 'q_4053" ("'_MATCH")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   171
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   172
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   173
  "_MATCH_def": "_MATCH ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   174
%(e::'q_4049) r::'q_4049 => 'q_4053 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   175
   if Ex1 (r e) then Eps (r e) else SOME z::'q_4053. False"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   176
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   177
lemma DEF__MATCH: "_MATCH =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   178
(%(e::'q_4049) r::'q_4049 => 'q_4053 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   179
    if Ex1 (r e) then Eps (r e) else SOME z::'q_4053. False)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   180
  by (import hollight DEF__MATCH)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   181
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   182
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   183
  "_FUNCTION" :: "('q_4071 => 'q_4075 => bool) => 'q_4071 => 'q_4075" ("'_FUNCTION")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   184
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   185
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   186
  "_FUNCTION_def": "_FUNCTION ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   187
%(r::'q_4071 => 'q_4075 => bool) x::'q_4071.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   188
   if Ex1 (r x) then Eps (r x) else SOME z::'q_4075. False"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   189
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   190
lemma DEF__FUNCTION: "_FUNCTION =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   191
(%(r::'q_4071 => 'q_4075 => bool) x::'q_4071.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   192
    if Ex1 (r x) then Eps (r x) else SOME z::'q_4075. False)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   193
  by (import hollight DEF__FUNCTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   194
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   195
lemma PAIR_EXISTS_THM: "EX (x::'A => 'B => bool) (a::'A) b::'B. x = Pair_Rep a b"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   196
  by (import hollight PAIR_EXISTS_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   197
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   198
lemma pair_RECURSION: "EX x::'A * 'B => 'C.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   199
   ALL (a0::'A) a1::'B. x (a0, a1) = (PAIR'::'A => 'B => 'C) a0 a1"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   200
  by (import hollight pair_RECURSION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   201
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   202
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   203
  UNCURRY :: "('A => 'B => 'C) => 'A * 'B => 'C"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   204
  "UNCURRY == %(u::'A => 'B => 'C) ua::'A * 'B. u (fst ua) (snd ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   205
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   206
lemma DEF_UNCURRY: "UNCURRY = (%(u::'A => 'B => 'C) ua::'A * 'B. u (fst ua) (snd ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   207
  by (import hollight DEF_UNCURRY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   208
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   209
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   210
  PASSOC :: "(('A * 'B) * 'C => 'D) => 'A * 'B * 'C => 'D"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   211
  "PASSOC ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   212
%(u::('A * 'B) * 'C => 'D) ua::'A * 'B * 'C.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   213
   u ((fst ua, fst (snd ua)), snd (snd ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   214
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   215
lemma DEF_PASSOC: "PASSOC =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   216
(%(u::('A * 'B) * 'C => 'D) ua::'A * 'B * 'C.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   217
    u ((fst ua, fst (snd ua)), snd (snd ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   218
  by (import hollight DEF_PASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   219
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   220
lemma LAMBDA_PAIR_THM: "(x::'q_4547 * 'q_4546 => 'q_4539) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   221
(SOME f::'q_4547 * 'q_4546 => 'q_4539.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   222
    ALL (xa::'q_4547) y::'q_4546. f (xa, y) = x (xa, y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   223
  by (import hollight LAMBDA_PAIR_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   224
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   225
lemma FORALL_PAIRED_THM: "All (SOME f::'q_4576 * 'q_4575 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   226
        ALL (x::'q_4576) y::'q_4575.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   227
           f (x, y) = (P::'q_4576 => 'q_4575 => bool) x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   228
(ALL x::'q_4576. All (P x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   229
  by (import hollight FORALL_PAIRED_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   230
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   231
lemma EXISTS_PAIRED_THM: "Ex (SOME f::'q_4612 * 'q_4611 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   232
       ALL (x::'q_4612) y::'q_4611.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   233
          f (x, y) = (P::'q_4612 => 'q_4611 => bool) x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   234
(EX x::'q_4612. Ex (P x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   235
  by (import hollight EXISTS_PAIRED_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   236
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   237
lemma FORALL_TRIPLED_THM: "All (SOME f::'q_4649 * 'q_4648 * 'q_4647 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   238
        ALL (x::'q_4649) (y::'q_4648) z::'q_4647.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   239
           f (x, y, z) = (P::'q_4649 => 'q_4648 => 'q_4647 => bool) x y z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   240
(ALL (x::'q_4649) y::'q_4648. All (P x y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   241
  by (import hollight FORALL_TRIPLED_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   242
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   243
lemma EXISTS_TRIPLED_THM: "Ex (SOME f::'q_4695 * 'q_4694 * 'q_4693 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   244
       ALL (x::'q_4695) (y::'q_4694) z::'q_4693.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   245
          f (x, y, z) = (P::'q_4695 => 'q_4694 => 'q_4693 => bool) x y z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   246
(EX (x::'q_4695) y::'q_4694. Ex (P x y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   247
  by (import hollight EXISTS_TRIPLED_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   248
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   249
lemma IND_SUC_0_EXISTS: "EX (x::ind => ind) z::ind.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   250
   (ALL (x1::ind) x2::ind. (x x1 = x x2) = (x1 = x2)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   251
   (ALL xa::ind. x xa ~= z)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   252
  by (import hollight IND_SUC_0_EXISTS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   253
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   254
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   255
  IND_SUC :: "ind => ind"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   256
  "IND_SUC ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   257
SOME f. EX z. (ALL x1 x2. (f x1 = f x2) = (x1 = x2)) & (ALL x. f x ~= z)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   258
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   259
lemma DEF_IND_SUC: "IND_SUC =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   260
(SOME f. EX z. (ALL x1 x2. (f x1 = f x2) = (x1 = x2)) & (ALL x. f x ~= z))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   261
  by (import hollight DEF_IND_SUC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   262
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   263
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   264
  IND_0 :: "ind"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   265
  "IND_0 ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   266
SOME z.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   267
   (ALL x1 x2. (IND_SUC x1 = IND_SUC x2) = (x1 = x2)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   268
   (ALL x. IND_SUC x ~= z)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   269
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   270
lemma DEF_IND_0: "IND_0 =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   271
(SOME z.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   272
    (ALL x1 x2. (IND_SUC x1 = IND_SUC x2) = (x1 = x2)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   273
    (ALL x. IND_SUC x ~= z))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   274
  by (import hollight DEF_IND_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   275
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   276
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   277
  NUM_REP :: "ind => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   278
  "NUM_REP ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   279
%a. ALL NUM_REP'.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   280
       (ALL a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   281
           a = IND_0 | (EX i. a = IND_SUC i & NUM_REP' i) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   282
           NUM_REP' a) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   283
       NUM_REP' a"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   284
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   285
lemma DEF_NUM_REP: "NUM_REP =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   286
(%a. ALL NUM_REP'.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   287
        (ALL a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   288
            a = IND_0 | (EX i. a = IND_SUC i & NUM_REP' i) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   289
            NUM_REP' a) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   290
        NUM_REP' a)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   291
  by (import hollight DEF_NUM_REP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   292
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   293
lemma num_RECURSION_STD: "EX fn::nat => 'Z.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   294
   fn (0::nat) = (e::'Z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   295
   (ALL n::nat. fn (Suc n) = (f::nat => 'Z => 'Z) n (fn n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   296
  by (import hollight num_RECURSION_STD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   297
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   298
lemma ADD_CLAUSES: "(ALL x::nat. (0::nat) + x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   299
(ALL x::nat. x + (0::nat) = x) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   300
(ALL (x::nat) xa::nat. Suc x + xa = Suc (x + xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   301
(ALL (x::nat) xa::nat. x + Suc xa = Suc (x + xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   302
  by (import hollight ADD_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   303
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   304
lemma ADD_AC: "(m::nat) + (n::nat) = n + m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   305
m + n + (p::nat) = m + (n + p) & m + (n + p) = n + (m + p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   306
  by (import hollight ADD_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   307
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   308
lemma EQ_ADD_LCANCEL_0: "((m::nat) + (n::nat) = m) = (n = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   309
  by (import hollight EQ_ADD_LCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   310
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   311
lemma EQ_ADD_RCANCEL_0: "((x::nat) + (xa::nat) = xa) = (x = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   312
  by (import hollight EQ_ADD_RCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   313
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   314
lemma BIT1: "2 * x + 1 = Suc (x + x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   315
  by (import hollight BIT1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   316
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   317
lemma BIT1_THM: "2 * x + 1 = Suc (x + x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   318
  by (import hollight BIT1_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   319
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   320
lemma TWO: "2 = Suc 1"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   321
  by (import hollight TWO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   322
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   323
lemma MULT_CLAUSES: "(ALL x::nat. (0::nat) * x = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   324
(ALL x::nat. x * (0::nat) = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   325
(ALL x::nat. (1::nat) * x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   326
(ALL x::nat. x * (1::nat) = x) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   327
(ALL (x::nat) xa::nat. Suc x * xa = x * xa + xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   328
(ALL (x::nat) xa::nat. x * Suc xa = x + x * xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   329
  by (import hollight MULT_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   330
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   331
lemma MULT_AC: "(m::nat) * (n::nat) = n * m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   332
m * n * (p::nat) = m * (n * p) & m * (n * p) = n * (m * p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   333
  by (import hollight MULT_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   334
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   335
lemma EXP_EQ_1: "((x::nat) ^ (n::nat) = (1::nat)) = (x = (1::nat) | n = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   336
  by (import hollight EXP_EQ_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   337
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   338
lemma LT_ANTISYM: "~ ((m::nat) < (n::nat) & n < m)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   339
  by (import hollight LT_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   340
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   341
lemma LET_ANTISYM: "~ ((m::nat) <= (n::nat) & n < m)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   342
  by (import hollight LET_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   343
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   344
lemma LTE_ANTISYM: "~ ((x::nat) < (xa::nat) & xa <= x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   345
  by (import hollight LTE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   346
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   347
lemma LT_CASES: "(m::nat) < (n::nat) | n < m | m = n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   348
  by (import hollight LT_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   349
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   350
lemma LTE_CASES: "(x::nat) < (xa::nat) | xa <= x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   351
  by (import hollight LTE_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   352
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   353
lemma LE_1: "(ALL x::nat. x ~= (0::nat) --> (0::nat) < x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   354
(ALL x::nat. x ~= (0::nat) --> (1::nat) <= x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   355
(ALL x>0::nat. x ~= (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   356
(ALL x>0::nat. (1::nat) <= x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   357
(ALL x>=1::nat. (0::nat) < x) & (ALL x>=1::nat. x ~= (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   358
  by (import hollight LE_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   359
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   360
lemma LT_EXISTS: "(m < n) = (EX d. n = m + Suc d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   361
  by (import hollight LT_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   362
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   363
lemma LT_ADD: "((m::nat) < m + (n::nat)) = ((0::nat) < n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   364
  by (import hollight LT_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   365
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   366
lemma LT_ADDR: "((xa::nat) < (x::nat) + xa) = ((0::nat) < x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   367
  by (import hollight LT_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   368
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   369
lemma LT_LMULT: "(m::nat) ~= (0::nat) & (n::nat) < (p::nat) ==> m * n < m * p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   370
  by (import hollight LT_LMULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   371
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   372
lemma LE_MULT_LCANCEL: "((m::nat) * (n::nat) <= m * (p::nat)) = (m = (0::nat) | n <= p)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   373
  by (import hollight LE_MULT_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   374
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   375
lemma LE_MULT_RCANCEL: "((x::nat) * (xb::nat) <= (xa::nat) * xb) = (x <= xa | xb = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   376
  by (import hollight LE_MULT_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   377
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   378
lemma LT_MULT_LCANCEL: "((m::nat) * (n::nat) < m * (p::nat)) = (m ~= (0::nat) & n < p)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   379
  by (import hollight LT_MULT_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   380
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   381
lemma LT_MULT_RCANCEL: "((x::nat) * (xb::nat) < (xa::nat) * xb) = (x < xa & xb ~= (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   382
  by (import hollight LT_MULT_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   383
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   384
lemma LT_MULT2: "(m::nat) < (n::nat) & (p::nat) < (q::nat) ==> m * p < n * q"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   385
  by (import hollight LT_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   386
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   387
lemma WLOG_LE: "(ALL (m::nat) n::nat. (P::nat => nat => bool) m n = P n m) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   388
(ALL (m::nat) n::nat. m <= n --> P m n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   389
==> P (m::nat) (x::nat)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   390
  by (import hollight WLOG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   391
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   392
lemma WLOG_LT: "(ALL m::nat. (P::nat => nat => bool) m m) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   393
(ALL (m::nat) n::nat. P m n = P n m) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   394
(ALL (m::nat) n::nat. m < n --> P m n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   395
==> P (m::nat) (x::nat)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   396
  by (import hollight WLOG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   397
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   398
lemma num_WOP: "Ex (P::nat => bool) = (EX n::nat. P n & (ALL m<n. ~ P m))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   399
  by (import hollight num_WOP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   400
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   401
lemma num_MAX: "(Ex (P::nat => bool) & (EX M::nat. ALL x::nat. P x --> x <= M)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   402
(EX m::nat. P m & (ALL x::nat. P x --> x <= m))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   403
  by (import hollight num_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   404
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   405
lemma NOT_EVEN: "odd (n::nat) = odd n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   406
  by (import hollight NOT_EVEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   407
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   408
lemma NOT_ODD: "(~ odd (n::nat)) = even n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   409
  by (import hollight NOT_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   410
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   411
lemma EVEN_OR_ODD: "even (n::nat) | odd n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   412
  by (import hollight EVEN_OR_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   413
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   414
lemma EVEN_AND_ODD: "~ (even (x::nat) & odd x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   415
  by (import hollight EVEN_AND_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   416
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   417
lemma EVEN_EXP: "even ((m::nat) ^ (n::nat)) = (even m & n ~= (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   418
  by (import hollight EVEN_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   419
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   420
lemma ODD_MULT: "odd ((m::nat) * (n::nat)) = (odd m & odd n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   421
  by (import hollight ODD_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   422
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   423
lemma ODD_EXP: "odd ((m::nat) ^ (n::nat)) = (odd m | n = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   424
  by (import hollight ODD_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   425
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   426
lemma EVEN_DOUBLE: "even ((2::nat) * (n::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   427
  by (import hollight EVEN_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   428
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   429
lemma ODD_DOUBLE: "odd (Suc (2 * x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   430
  by (import hollight ODD_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   431
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   432
lemma EVEN_EXISTS_LEMMA: "(even n --> (EX m. n = 2 * m)) & (odd n --> (EX m. n = Suc (2 * m)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   433
  by (import hollight EVEN_EXISTS_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   434
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   435
lemma EVEN_ODD_DECOMPOSITION: "(EX (k::nat) m::nat. odd m & (n::nat) = (2::nat) ^ k * m) = (n ~= (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   436
  by (import hollight EVEN_ODD_DECOMPOSITION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   437
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   438
lemma SUB_0: "(0::nat) - (x::nat) = (0::nat) & x - (0::nat) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   439
  by (import hollight SUB_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   440
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   441
lemma SUB_PRESUC: "Suc m - n - Suc 0 = m - n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   442
  by (import hollight SUB_PRESUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   443
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   444
lemma ADD_SUBR: "(xa::nat) - ((x::nat) + xa) = (0::nat)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   445
  by (import hollight ADD_SUBR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   446
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   447
lemma EVEN_SUB: "even ((m::nat) - (n::nat)) = (m <= n | even m = even n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   448
  by (import hollight EVEN_SUB)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   449
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   450
lemma ODD_SUB: "odd ((x::nat) - (xa::nat)) = (xa < x & odd x ~= odd xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   451
  by (import hollight ODD_SUB)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   452
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   453
lemma EXP_LT_0: "((0::nat) < (xa::nat) ^ (x::nat)) = (xa ~= (0::nat) | x = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   454
  by (import hollight EXP_LT_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   455
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   456
lemma LT_EXP: "((x::nat) ^ (m::nat) < x ^ (n::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   457
((2::nat) <= x & m < n | x = (0::nat) & m ~= (0::nat) & n = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   458
  by (import hollight LT_EXP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   459
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   460
lemma LE_EXP: "((x::nat) ^ (m::nat) <= x ^ (n::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   461
(if x = (0::nat) then m = (0::nat) --> n = (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   462
 else x = (1::nat) | m <= n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   463
  by (import hollight LE_EXP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   464
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   465
lemma EQ_EXP: "((x::nat) ^ (m::nat) = x ^ (n::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   466
(if x = (0::nat) then (m = (0::nat)) = (n = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   467
 else x = (1::nat) | m = n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   468
  by (import hollight EQ_EXP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   469
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   470
lemma EXP_MONO_LE_IMP: "(x::nat) <= (xa::nat) ==> x ^ (xb::nat) <= xa ^ xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   471
  by (import hollight EXP_MONO_LE_IMP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   472
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   473
lemma EXP_MONO_LT_IMP: "(x::nat) < (y::nat) & (n::nat) ~= (0::nat) ==> x ^ n < y ^ n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   474
  by (import hollight EXP_MONO_LT_IMP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   475
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   476
lemma EXP_MONO_LE: "((x::nat) ^ (n::nat) <= (y::nat) ^ n) = (x <= y | n = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   477
  by (import hollight EXP_MONO_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   478
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   479
lemma EXP_MONO_LT: "((x::nat) ^ (xb::nat) < (xa::nat) ^ xb) = (x < xa & xb ~= (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   480
  by (import hollight EXP_MONO_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   481
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   482
lemma EXP_MONO_EQ: "((x::nat) ^ (xb::nat) = (xa::nat) ^ xb) = (x = xa | xb = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   483
  by (import hollight EXP_MONO_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   484
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   485
lemma DIVMOD_EXIST: "(n::nat) ~= (0::nat) ==> EX (q::nat) r::nat. (m::nat) = q * n + r & r < n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   486
  by (import hollight DIVMOD_EXIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   487
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   488
lemma DIVMOD_EXIST_0: "EX (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   489
   if (n::nat) = (0::nat) then x = (0::nat) & xa = (m::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   490
   else m = x * n + xa & xa < n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   491
  by (import hollight DIVMOD_EXIST_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   492
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   493
lemma DIVISION: "(n::nat) ~= (0::nat) ==> (m::nat) = m div n * n + m mod n & m mod n < n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   494
  by (import hollight DIVISION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   495
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   496
lemma DIVMOD_UNIQ_LEMMA: "((m::nat) = (q1::nat) * (n::nat) + (r1::nat) & r1 < n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   497
m = (q2::nat) * n + (r2::nat) & r2 < n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   498
==> q1 = q2 & r1 = r2"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   499
  by (import hollight DIVMOD_UNIQ_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   500
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   501
lemma DIVMOD_UNIQ: "(m::nat) = (q::nat) * (n::nat) + (r::nat) & r < n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   502
==> m div n = q & m mod n = r"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   503
  by (import hollight DIVMOD_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   504
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   505
lemma MOD_UNIQ: "(m::nat) = (q::nat) * (n::nat) + (r::nat) & r < n ==> m mod n = r"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   506
  by (import hollight MOD_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   507
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   508
lemma DIV_UNIQ: "(m::nat) = (q::nat) * (n::nat) + (r::nat) & r < n ==> m div n = q"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   509
  by (import hollight DIV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   510
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   511
lemma MOD_EQ: "(m::nat) = (n::nat) + (q::nat) * (p::nat) ==> m mod p = n mod p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   512
  by (import hollight MOD_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   513
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   514
lemma DIV_LE: "(n::nat) ~= (0::nat) ==> (m::nat) div n <= m"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   515
  by (import hollight DIV_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   516
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   517
lemma DIV_MUL_LE: "(n::nat) * ((m::nat) div n) <= m"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   518
  by (import hollight DIV_MUL_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   519
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   520
lemma MOD_MOD: "(n::nat) * (p::nat) ~= (0::nat) ==> (m::nat) mod (n * p) mod n = m mod n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   521
  by (import hollight MOD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   522
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   523
lemma MOD_MOD_REFL: "(n::nat) ~= (0::nat) ==> (m::nat) mod n mod n = m mod n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   524
  by (import hollight MOD_MOD_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   525
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   526
lemma DIV_MULT2: "(x::nat) * (xb::nat) ~= (0::nat) ==> x * (xa::nat) div (x * xb) = xa div xb"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   527
  by (import hollight DIV_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   528
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   529
lemma MOD_MULT2: "(x::nat) * (xb::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   530
==> x * (xa::nat) mod (x * xb) = x * (xa mod xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   531
  by (import hollight MOD_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   532
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   533
lemma MOD_EXISTS: "(EX q::nat. (m::nat) = (n::nat) * q) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   534
(if n = (0::nat) then m = (0::nat) else m mod n = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   535
  by (import hollight MOD_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   536
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   537
lemma LE_RDIV_EQ: "(a::nat) ~= (0::nat) ==> ((n::nat) <= (b::nat) div a) = (a * n <= b)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   538
  by (import hollight LE_RDIV_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   539
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   540
lemma LE_LDIV_EQ: "(a::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   541
==> ((b::nat) div a <= (n::nat)) = (b < a * (n + (1::nat)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   542
  by (import hollight LE_LDIV_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   543
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   544
lemma LE_LDIV: "(x::nat) ~= (0::nat) & (xa::nat) <= x * (xb::nat) ==> xa div x <= xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   545
  by (import hollight LE_LDIV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   546
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   547
lemma DIV_MONO: "(p::nat) ~= (0::nat) & (m::nat) <= (n::nat) ==> m div p <= n div p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   548
  by (import hollight DIV_MONO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   549
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   550
lemma DIV_MONO_LT: "(p::nat) ~= (0::nat) & (m::nat) + p <= (n::nat) ==> m div p < n div p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   551
  by (import hollight DIV_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   552
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   553
lemma DIV_EQ_0: "(n::nat) ~= (0::nat) ==> ((m::nat) div n = (0::nat)) = (m < n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   554
  by (import hollight DIV_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   555
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   556
lemma MOD_EQ_0: "(n::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   557
==> ((m::nat) mod n = (0::nat)) = (EX q::nat. m = q * n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   558
  by (import hollight MOD_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   559
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   560
lemma EVEN_MOD: "even (n::nat) = (n mod (2::nat) = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   561
  by (import hollight EVEN_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   562
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   563
lemma ODD_MOD: "odd (n::nat) = (n mod (2::nat) = (1::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   564
  by (import hollight ODD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   565
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   566
lemma MOD_MULT_RMOD: "(n::nat) ~= (0::nat) ==> (m::nat) * ((p::nat) mod n) mod n = m * p mod n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   567
  by (import hollight MOD_MULT_RMOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   568
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   569
lemma MOD_MULT_LMOD: "(xa::nat) ~= (0::nat) ==> (x::nat) mod xa * (xb::nat) mod xa = x * xb mod xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   570
  by (import hollight MOD_MULT_LMOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   571
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   572
lemma MOD_MULT_MOD2: "(xa::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   573
==> (x::nat) mod xa * ((xb::nat) mod xa) mod xa = x * xb mod xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   574
  by (import hollight MOD_MULT_MOD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   575
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   576
lemma MOD_EXP_MOD: "(n::nat) ~= (0::nat) ==> ((m::nat) mod n) ^ (p::nat) mod n = m ^ p mod n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   577
  by (import hollight MOD_EXP_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   578
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   579
lemma MOD_ADD_MOD: "(n::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   580
==> ((a::nat) mod n + (b::nat) mod n) mod n = (a + b) mod n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   581
  by (import hollight MOD_ADD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   582
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   583
lemma DIV_ADD_MOD: "(n::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   584
==> (((a::nat) + (b::nat)) mod n = a mod n + b mod n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   585
    ((a + b) div n = a div n + b div n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   586
  by (import hollight DIV_ADD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   587
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   588
lemma MOD_LE: "(n::nat) ~= (0::nat) ==> (m::nat) mod n <= m"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   589
  by (import hollight MOD_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   590
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   591
lemma DIV_MONO2: "(p::nat) ~= (0::nat) & p <= (m::nat) ==> (n::nat) div m <= n div p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   592
  by (import hollight DIV_MONO2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   593
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   594
lemma DIV_LE_EXCLUSION: "(b::nat) ~= (0::nat) & b * (c::nat) < ((a::nat) + (1::nat)) * (d::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   595
==> c div d <= a div b"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   596
  by (import hollight DIV_LE_EXCLUSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   597
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   598
lemma DIV_EQ_EXCLUSION: "(b::nat) * (c::nat) < ((a::nat) + (1::nat)) * (d::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   599
a * d < (c + (1::nat)) * b
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   600
==> a div b = c div d"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   601
  by (import hollight DIV_EQ_EXCLUSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   602
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   603
lemma MULT_DIV_LE: "(p::nat) ~= (0::nat) ==> (m::nat) * ((n::nat) div p) <= m * n div p"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   604
  by (import hollight MULT_DIV_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   605
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   606
lemma DIV_DIV: "(xa::nat) * (xb::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   607
==> (x::nat) div xa div xb = x div (xa * xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   608
  by (import hollight DIV_DIV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   609
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   610
lemma DIV_MOD: "(xa::nat) * (xb::nat) ~= (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   611
==> (x::nat) div xa mod xb = x mod (xa * xb) div xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   612
  by (import hollight DIV_MOD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   613
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   614
lemma PRE_ELIM_THM: "P (n - Suc 0) = (ALL m. n = Suc m | m = 0 & n = 0 --> P m)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   615
  by (import hollight PRE_ELIM_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   616
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   617
lemma SUB_ELIM_THM: "(P::nat => bool) ((a::nat) - (b::nat)) =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   618
(ALL d::nat. a = b + d | a < b & d = (0::nat) --> P d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   619
  by (import hollight SUB_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   620
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   621
lemma DIVMOD_ELIM_THM: "(P::nat => nat => bool) ((m::nat) div (n::nat)) (m mod n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   622
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   623
    n = (0::nat) & x = (0::nat) & xa = m | m = x * n + xa & xa < n -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   624
    P x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   625
  by (import hollight DIVMOD_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   626
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   627
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   628
  minimal :: "(nat => bool) => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   629
  "minimal == %u. SOME n. u n & (ALL m<n. ~ u m)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   630
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   631
lemma DEF_minimal: "minimal = (%u. SOME n. u n & (ALL m<n. ~ u m))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   632
  by (import hollight DEF_minimal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   633
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   634
lemma MINIMAL: "Ex P = (P (minimal P) & (ALL x<minimal P. ~ P x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   635
  by (import hollight MINIMAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   636
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   637
lemma TRANSITIVE_STEPWISE_LT_EQ: "(!!x y z. R x y & R y z ==> R x z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   638
==> (ALL m n. m < n --> R m n) = (ALL n. R n (Suc n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   639
  by (import hollight TRANSITIVE_STEPWISE_LT_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   640
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   641
lemma TRANSITIVE_STEPWISE_LT: "[| (ALL x y z. R x y & R y z --> R x z) & (ALL n. R n (Suc n)); m < n |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   642
==> R m n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   643
  by (import hollight TRANSITIVE_STEPWISE_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   644
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   645
lemma TRANSITIVE_STEPWISE_LE_EQ: "(ALL x. R x x) & (ALL x y z. R x y & R y z --> R x z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   646
==> (ALL m n. m <= n --> R m n) = (ALL n. R n (Suc n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   647
  by (import hollight TRANSITIVE_STEPWISE_LE_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   648
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   649
lemma TRANSITIVE_STEPWISE_LE: "[| (ALL x. R x x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   650
   (ALL x y z. R x y & R y z --> R x z) & (ALL n. R n (Suc n));
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   651
   m <= n |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   652
==> R m n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   653
  by (import hollight TRANSITIVE_STEPWISE_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   654
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   655
lemma WF_EQ: "wfP (u_556::'A => 'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   656
(ALL P::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   657
    Ex P = (EX x::'A. P x & (ALL y::'A. u_556 y x --> ~ P y)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   658
  by (import hollight WF_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   659
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   660
lemma WF_IND: "wfP (u_556::'A => 'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   661
(ALL P::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   662
    (ALL x::'A. (ALL y::'A. u_556 y x --> P y) --> P x) --> All P)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   663
  by (import hollight WF_IND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   664
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   665
lemma WF_DCHAIN: "wfP (u_556::'A => 'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   666
(~ (EX s::nat => 'A. ALL n::nat. u_556 (s (Suc n)) (s n)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   667
  by (import hollight WF_DCHAIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   668
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   669
lemma WF_UREC: "[| wfP (u_556::'A => 'A => bool);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   670
   !!(f::'A => 'B) (g::'A => 'B) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   671
      (!!z::'A. u_556 z x ==> f z = g z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   672
      ==> (H::('A => 'B) => 'A => 'B) f x = H g x;
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   673
   (ALL x::'A. (f::'A => 'B) x = H f x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   674
   (ALL x::'A. (g::'A => 'B) x = H g x) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   675
==> f = g"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   676
  by (import hollight WF_UREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   677
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   678
lemma WF_UREC_WF: "(!!(H::('A => bool) => 'A => bool) (f::'A => bool) g::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   679
    [| !!(f::'A => bool) (g::'A => bool) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   680
          (!!z::'A. (u_556::'A => 'A => bool) z x ==> f z = g z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   681
          ==> H f x = H g x;
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   682
       (ALL x::'A. f x = H f x) & (ALL x::'A. g x = H g x) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   683
    ==> f = g)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   684
==> wfP u_556"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   685
  by (import hollight WF_UREC_WF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   686
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   687
lemma WF_REC_INVARIANT: "[| wfP (u_556::'A => 'A => bool);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   688
   !!(f::'A => 'B) (g::'A => 'B) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   689
      (!!z::'A. u_556 z x ==> f z = g z & (S::'A => 'B => bool) z (f z))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   690
      ==> (H::('A => 'B) => 'A => 'B) f x = H g x & S x (H f x) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   691
==> EX f::'A => 'B. ALL x::'A. f x = H f x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   692
  by (import hollight WF_REC_INVARIANT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   693
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   694
lemma WF_REC: "[| wfP (u_556::'A => 'A => bool);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   695
   !!(f::'A => 'B) (g::'A => 'B) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   696
      (!!z::'A. u_556 z x ==> f z = g z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   697
      ==> (H::('A => 'B) => 'A => 'B) f x = H g x |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   698
==> EX f::'A => 'B. ALL x::'A. f x = H f x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   699
  by (import hollight WF_REC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   700
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   701
lemma WF_REC_WF: "(!!H::('A => nat) => 'A => nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   702
    (!!(f::'A => nat) (g::'A => nat) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   703
        (!!z::'A. (u_556::'A => 'A => bool) z x ==> f z = g z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   704
        ==> H f x = H g x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   705
    ==> EX f::'A => nat. ALL x::'A. f x = H f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   706
==> wfP u_556"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   707
  by (import hollight WF_REC_WF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   708
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   709
lemma WF_EREC: "[| wfP (u_556::'A => 'A => bool);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   710
   !!(f::'A => 'B) (g::'A => 'B) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   711
      (!!z::'A. u_556 z x ==> f z = g z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   712
      ==> (H::('A => 'B) => 'A => 'B) f x = H g x |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   713
==> EX! f::'A => 'B. ALL x::'A. f x = H f x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   714
  by (import hollight WF_EREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   715
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   716
lemma WF_SUBSET: "(ALL (x::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   717
    (u_556::'A => 'A => bool) x y --> (u_670::'A => 'A => bool) x y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   718
wfP u_670
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   719
==> wfP u_556"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   720
  by (import hollight WF_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   721
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   722
lemma WF_MEASURE_GEN: "wfP (u_556::'B => 'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   723
==> wfP (%(x::'A) x'::'A. u_556 ((m::'A => 'B) x) (m x'))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   724
  by (import hollight WF_MEASURE_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   725
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   726
lemma WF_LEX_DEPENDENT: "wfP (R::'A => 'A => bool) & (ALL x::'A. wfP ((S::'A => 'B => 'B => bool) x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   727
==> wfP (SOME f::'A * 'B => 'A * 'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   728
            ALL (r1::'A) s1::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   729
               f (r1, s1) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   730
               (SOME f::'A * 'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   731
                   ALL (r2::'A) s2::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   732
                      f (r2, s2) = (R r1 r2 | r1 = r2 & S r1 s1 s2)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   733
  by (import hollight WF_LEX_DEPENDENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   734
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   735
lemma WF_LEX: "wfP (x::'A => 'A => bool) & wfP (xa::'B => 'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   736
==> wfP (SOME f::'A * 'B => 'A * 'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   737
            ALL (r1::'A) s1::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   738
               f (r1, s1) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   739
               (SOME f::'A * 'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   740
                   ALL (r2::'A) s2::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   741
                      f (r2, s2) = (x r1 r2 | r1 = r2 & xa s1 s2)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   742
  by (import hollight WF_LEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   743
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   744
lemma WF_POINTWISE: "wfP (u_556::'A => 'A => bool) & wfP (u_670::'B => 'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   745
==> wfP (SOME f::'A * 'B => 'A * 'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   746
            ALL (x1::'A) y1::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   747
               f (x1, y1) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   748
               (SOME f::'A * 'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   749
                   ALL (x2::'A) y2::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   750
                      f (x2, y2) = (u_556 x1 x2 & u_670 y1 y2)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   751
  by (import hollight WF_POINTWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   752
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   753
lemma WF_num: "(wfP::(nat => nat => bool) => bool) (op <::nat => nat => bool)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   754
  by (import hollight WF_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   755
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   756
lemma WF_REC_num: "(!!(f::nat => 'A) (g::nat => 'A) x::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   757
    (!!z::nat. z < x ==> f z = g z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   758
    ==> (H::(nat => 'A) => nat => 'A) f x = H g x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   759
==> EX f::nat => 'A. ALL x::nat. f x = H f x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   760
  by (import hollight WF_REC_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   761
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   762
lemma WF_MEASURE: "wfP (%(a::'A) b::'A. measure (m::'A => nat) (a, b))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   763
  by (import hollight WF_MEASURE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   764
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   765
lemma MEASURE_LE: "(ALL x::'q_12099.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   766
    measure (m::'q_12099 => nat) (x, a::'q_12099) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   767
    measure m (x, b::'q_12099)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   768
(m a <= m b)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   769
  by (import hollight MEASURE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   770
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   771
lemma WF_REFL: "wfP (u_556::'A => 'A => bool) ==> ~ u_556 (x::'A) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   772
  by (import hollight WF_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   773
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   774
lemma WF_REC_TAIL: "EX f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   775
   ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   776
      f x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   777
      (if (P::'A => bool) x then f ((g::'A => 'A) x) else (h::'A => 'B) x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   778
  by (import hollight WF_REC_TAIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   779
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   780
lemma WF_REC_TAIL_GENERAL: "wfP (u_556::'A => 'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   781
(ALL (f::'A => 'B) (g::'A => 'B) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   782
    (ALL z::'A. u_556 z x --> f z = g z) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   783
    (P::('A => 'B) => 'A => bool) f x = P g x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   784
    (G::('A => 'B) => 'A => 'A) f x = G g x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   785
    (H::('A => 'B) => 'A => 'B) f x = H g x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   786
(ALL (f::'A => 'B) (g::'A => 'B) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   787
    (ALL z::'A. u_556 z x --> f z = g z) --> H f x = H g x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   788
(ALL (f::'A => 'B) (x::'A) y::'A. P f x & u_556 y (G f x) --> u_556 y x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   789
==> EX f::'A => 'B. ALL x::'A. f x = (if P f x then f (G f x) else H f x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   790
  by (import hollight WF_REC_TAIL_GENERAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   791
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   792
lemma ARITH_ZERO: "(0::nat) = (0::nat) & (0::nat) = (0::nat)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   793
  by (import hollight ARITH_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   794
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   795
lemma ARITH_SUC: "(ALL x. Suc x = Suc x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   796
Suc 0 = 1 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   797
(ALL x. Suc (2 * x) = 2 * x + 1) & (ALL x. Suc (2 * x + 1) = 2 * Suc x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   798
  by (import hollight ARITH_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   799
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   800
lemma ARITH_PRE: "(ALL x. x - Suc 0 = x - Suc 0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   801
0 - Suc 0 = 0 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   802
(ALL x. 2 * x - Suc 0 = (if x = 0 then 0 else 2 * (x - Suc 0) + 1)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   803
(ALL x. 2 * x + 1 - Suc 0 = 2 * x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   804
  by (import hollight ARITH_PRE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   805
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   806
lemma ARITH_ADD: "(ALL (x::nat) xa::nat. x + xa = x + xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   807
(0::nat) + (0::nat) = (0::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   808
(ALL x::nat. (0::nat) + (2::nat) * x = (2::nat) * x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   809
(ALL x::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   810
    (0::nat) + ((2::nat) * x + (1::nat)) = (2::nat) * x + (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   811
(ALL x::nat. (2::nat) * x + (0::nat) = (2::nat) * x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   812
(ALL x::nat. (2::nat) * x + (1::nat) + (0::nat) = (2::nat) * x + (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   813
(ALL (x::nat) xa::nat. (2::nat) * x + (2::nat) * xa = (2::nat) * (x + xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   814
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   815
    (2::nat) * x + ((2::nat) * xa + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   816
    (2::nat) * (x + xa) + (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   817
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   818
    (2::nat) * x + (1::nat) + (2::nat) * xa =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   819
    (2::nat) * (x + xa) + (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   820
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   821
    (2::nat) * x + (1::nat) + ((2::nat) * xa + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   822
    (2::nat) * Suc (x + xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   823
  by (import hollight ARITH_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   824
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   825
lemma ARITH_MULT: "(ALL (x::nat) xa::nat. x * xa = x * xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   826
(0::nat) * (0::nat) = (0::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   827
(ALL x::nat. (0::nat) * ((2::nat) * x) = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   828
(ALL x::nat. (0::nat) * ((2::nat) * x + (1::nat)) = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   829
(ALL x::nat. (2::nat) * x * (0::nat) = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   830
(ALL x::nat. ((2::nat) * x + (1::nat)) * (0::nat) = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   831
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   832
    (2::nat) * x * ((2::nat) * xa) = (2::nat) * ((2::nat) * (x * xa))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   833
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   834
    (2::nat) * x * ((2::nat) * xa + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   835
    (2::nat) * x + (2::nat) * ((2::nat) * (x * xa))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   836
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   837
    ((2::nat) * x + (1::nat)) * ((2::nat) * xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   838
    (2::nat) * xa + (2::nat) * ((2::nat) * (x * xa))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   839
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   840
    ((2::nat) * x + (1::nat)) * ((2::nat) * xa + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   841
    (2::nat) * x + (1::nat) +
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   842
    ((2::nat) * xa + (2::nat) * ((2::nat) * (x * xa))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   843
  by (import hollight ARITH_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   844
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   845
lemma ARITH_EXP: "(ALL (x::nat) xa::nat. x ^ xa = x ^ xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   846
(0::nat) ^ (0::nat) = (1::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   847
(ALL m::nat. ((2::nat) * m) ^ (0::nat) = (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   848
(ALL m::nat. ((2::nat) * m + (1::nat)) ^ (0::nat) = (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   849
(ALL n::nat. (0::nat) ^ ((2::nat) * n) = (0::nat) ^ n * (0::nat) ^ n) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   850
(ALL (m::nat) n::nat.
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   851
    ((2::nat) * m) ^ ((2::nat) * n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   852
    ((2::nat) * m) ^ n * ((2::nat) * m) ^ n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   853
(ALL (m::nat) n::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   854
    ((2::nat) * m + (1::nat)) ^ ((2::nat) * n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   855
    ((2::nat) * m + (1::nat)) ^ n * ((2::nat) * m + (1::nat)) ^ n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   856
(ALL n::nat. (0::nat) ^ ((2::nat) * n + (1::nat)) = (0::nat)) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   857
(ALL (m::nat) n::nat.
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   858
    ((2::nat) * m) ^ ((2::nat) * n + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   859
    (2::nat) * m * (((2::nat) * m) ^ n * ((2::nat) * m) ^ n)) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   860
(ALL (m::nat) n::nat.
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   861
    ((2::nat) * m + (1::nat)) ^ ((2::nat) * n + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   862
    ((2::nat) * m + (1::nat)) *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   863
    (((2::nat) * m + (1::nat)) ^ n * ((2::nat) * m + (1::nat)) ^ n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   864
  by (import hollight ARITH_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   865
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   866
lemma ARITH_EVEN: "(ALL x::nat. even x = even x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   867
even (0::nat) = True &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   868
(ALL x::nat. even ((2::nat) * x) = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   869
(ALL x::nat. even ((2::nat) * x + (1::nat)) = False)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   870
  by (import hollight ARITH_EVEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   871
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   872
lemma ARITH_ODD: "(ALL x::nat. odd x = odd x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   873
odd (0::nat) = False &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   874
(ALL x::nat. odd ((2::nat) * x) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   875
(ALL x::nat. odd ((2::nat) * x + (1::nat)) = True)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   876
  by (import hollight ARITH_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   877
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   878
lemma ARITH_LE: "(ALL (x::nat) xa::nat. (x <= xa) = (x <= xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   879
((0::nat) <= (0::nat)) = True &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   880
(ALL x::nat. ((2::nat) * x <= (0::nat)) = (x <= (0::nat))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   881
(ALL x::nat. ((2::nat) * x + (1::nat) <= (0::nat)) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   882
(ALL x::nat. ((0::nat) <= (2::nat) * x) = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   883
(ALL x::nat. ((0::nat) <= (2::nat) * x + (1::nat)) = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   884
(ALL (x::nat) xa::nat. ((2::nat) * x <= (2::nat) * xa) = (x <= xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   885
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   886
    ((2::nat) * x <= (2::nat) * xa + (1::nat)) = (x <= xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   887
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   888
    ((2::nat) * x + (1::nat) <= (2::nat) * xa) = (x < xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   889
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   890
    ((2::nat) * x + (1::nat) <= (2::nat) * xa + (1::nat)) = (x <= xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   891
  by (import hollight ARITH_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   892
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   893
lemma ARITH_LT: "(ALL (x::nat) xa::nat. (x < xa) = (x < xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   894
((0::nat) < (0::nat)) = False &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   895
(ALL x::nat. ((2::nat) * x < (0::nat)) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   896
(ALL x::nat. ((2::nat) * x + (1::nat) < (0::nat)) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   897
(ALL x::nat. ((0::nat) < (2::nat) * x) = ((0::nat) < x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   898
(ALL x::nat. ((0::nat) < (2::nat) * x + (1::nat)) = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   899
(ALL (x::nat) xa::nat. ((2::nat) * x < (2::nat) * xa) = (x < xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   900
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   901
    ((2::nat) * x < (2::nat) * xa + (1::nat)) = (x <= xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   902
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   903
    ((2::nat) * x + (1::nat) < (2::nat) * xa) = (x < xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   904
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   905
    ((2::nat) * x + (1::nat) < (2::nat) * xa + (1::nat)) = (x < xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   906
  by (import hollight ARITH_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   907
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   908
lemma ARITH_EQ: "(ALL (x::nat) xa::nat. (x = xa) = (x = xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   909
((0::nat) = (0::nat)) = True &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   910
(ALL x::nat. ((2::nat) * x = (0::nat)) = (x = (0::nat))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   911
(ALL x::nat. ((2::nat) * x + (1::nat) = (0::nat)) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   912
(ALL x::nat. ((0::nat) = (2::nat) * x) = ((0::nat) = x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   913
(ALL x::nat. ((0::nat) = (2::nat) * x + (1::nat)) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   914
(ALL (x::nat) xa::nat. ((2::nat) * x = (2::nat) * xa) = (x = xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   915
(ALL (x::nat) xa::nat. ((2::nat) * x = (2::nat) * xa + (1::nat)) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   916
(ALL (x::nat) xa::nat. ((2::nat) * x + (1::nat) = (2::nat) * xa) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   917
(ALL (x::nat) xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   918
    ((2::nat) * x + (1::nat) = (2::nat) * xa + (1::nat)) = (x = xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   919
  by (import hollight ARITH_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   920
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   921
lemma ARITH_SUB: "(ALL (x::nat) xa::nat. x - xa = x - xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   922
(0::nat) - (0::nat) = (0::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   923
(ALL x::nat. (0::nat) - (2::nat) * x = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   924
(ALL x::nat. (0::nat) - ((2::nat) * x + (1::nat)) = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   925
(ALL x::nat. (2::nat) * x - (0::nat) = (2::nat) * x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   926
(ALL x::nat. (2::nat) * x + (1::nat) - (0::nat) = (2::nat) * x + (1::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   927
(ALL (m::nat) n::nat. (2::nat) * m - (2::nat) * n = (2::nat) * (m - n)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   928
(ALL (m::nat) n::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   929
    (2::nat) * m - ((2::nat) * n + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   930
    (2::nat) * (m - n) - Suc (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   931
(ALL (m::nat) n::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   932
    (2::nat) * m + (1::nat) - (2::nat) * n =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   933
    (if n <= m then (2::nat) * (m - n) + (1::nat) else (0::nat))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   934
(ALL (m::nat) n::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   935
    (2::nat) * m + (1::nat) - ((2::nat) * n + (1::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   936
    (2::nat) * (m - n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   937
  by (import hollight ARITH_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   938
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   939
lemma right_th: "(s::nat) * ((2::nat) * (x::nat) + (1::nat)) = s + (2::nat) * (s * x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   940
  by (import hollight right_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   941
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   942
lemma SEMIRING_PTHS: "(ALL (x::'A) (y::'A) z::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   943
    (add::'A => 'A => 'A) x (add y z) = add (add x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   944
(ALL (x::'A) y::'A. add x y = add y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   945
(ALL x::'A. add (r0::'A) x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   946
(ALL (x::'A) (y::'A) z::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   947
    (mul::'A => 'A => 'A) x (mul y z) = mul (mul x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   948
(ALL (x::'A) y::'A. mul x y = mul y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   949
(ALL x::'A. mul (r1::'A) x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   950
(ALL x::'A. mul r0 x = r0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   951
(ALL (x::'A) (y::'A) z::'A. mul x (add y z) = add (mul x y) (mul x z)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   952
(ALL x::'A. (pwr::'A => nat => 'A) x (0::nat) = r1) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   953
(ALL (x::'A) n::nat. pwr x (Suc n) = mul x (pwr x n))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   954
==> mul r1 (x::'A) = x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   955
    add (mul (a::'A) (m::'A)) (mul (b::'A) m) = mul (add a b) m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   956
    add (mul a m) m = mul (add a r1) m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   957
    add m (mul a m) = mul (add a r1) m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   958
    add m m = mul (add r1 r1) m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   959
    mul r0 m = r0 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   960
    add r0 a = a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   961
    add a r0 = a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   962
    mul a b = mul b a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   963
    mul (add a b) (c::'A) = add (mul a c) (mul b c) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   964
    mul r0 a = r0 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   965
    mul a r0 = r0 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   966
    mul r1 a = a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   967
    mul a r1 = a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   968
    mul (mul (lx::'A) (ly::'A)) (mul (rx::'A) (ry::'A)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   969
    mul (mul lx rx) (mul ly ry) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   970
    mul (mul lx ly) (mul rx ry) = mul lx (mul ly (mul rx ry)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   971
    mul (mul lx ly) (mul rx ry) = mul rx (mul (mul lx ly) ry) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   972
    mul (mul lx ly) rx = mul (mul lx rx) ly &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   973
    mul (mul lx ly) rx = mul lx (mul ly rx) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   974
    mul lx rx = mul rx lx &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   975
    mul lx (mul rx ry) = mul (mul lx rx) ry &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   976
    mul lx (mul rx ry) = mul rx (mul lx ry) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   977
    add (add a b) (add c (d::'A)) = add (add a c) (add b d) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   978
    add (add a b) c = add a (add b c) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   979
    add a (add c d) = add c (add a d) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   980
    add (add a b) c = add (add a c) b &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   981
    add a c = add c a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   982
    add a (add c d) = add (add a c) d &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   983
    mul (pwr x (p::nat)) (pwr x (q::nat)) = pwr x (p + q) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   984
    mul x (pwr x q) = pwr x (Suc q) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   985
    mul (pwr x q) x = pwr x (Suc q) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   986
    mul x x = pwr x (2::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   987
    pwr (mul x (y::'A)) q = mul (pwr x q) (pwr y q) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   988
    pwr (pwr x p) q = pwr x (p * q) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   989
    pwr x (0::nat) = r1 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   990
    pwr x (1::nat) = x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   991
    mul x (add y (z::'A)) = add (mul x y) (mul x z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   992
    pwr x (Suc q) = mul x (pwr x q)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   993
  by (import hollight SEMIRING_PTHS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   994
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   995
lemma NUM_INTEGRAL_LEMMA: "(w::nat) = (x::nat) + (d::nat) & (y::nat) = (z::nat) + (e::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   996
==> (w * y + x * z = w * z + x * y) = (w = x | y = z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   997
  by (import hollight NUM_INTEGRAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   998
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
   999
lemma NUM_INTEGRAL: "(ALL x::nat. (0::nat) * x = (0::nat)) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1000
(ALL (x::nat) (xa::nat) xb::nat. (x + xa = x + xb) = (xa = xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1001
(ALL (w::nat) (x::nat) (y::nat) z::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1002
    (w * y + x * z = w * z + x * y) = (w = x | y = z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1003
  by (import hollight NUM_INTEGRAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1004
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1005
lemma INJ_INVERSE2: "(!!(x1::'A) (y1::'B) (x2::'A) y2::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1006
    ((P::'A => 'B => 'C) x1 y1 = P x2 y2) = (x1 = x2 & y1 = y2))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1007
==> EX (x::'C => 'A) Y::'C => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1008
       ALL (xa::'A) y::'B. x (P xa y) = xa & Y (P xa y) = y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1009
  by (import hollight INJ_INVERSE2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1010
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1011
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1012
  NUMPAIR :: "nat => nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1013
  "NUMPAIR == %u ua. 2 ^ u * (2 * ua + 1)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1014
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1015
lemma DEF_NUMPAIR: "NUMPAIR = (%u ua. 2 ^ u * (2 * ua + 1))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1016
  by (import hollight DEF_NUMPAIR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1017
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1018
lemma NUMPAIR_INJ_LEMMA: "NUMPAIR x xa = NUMPAIR xb xc ==> x = xb"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1019
  by (import hollight NUMPAIR_INJ_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1020
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1021
lemma NUMPAIR_INJ: "(NUMPAIR x1 y1 = NUMPAIR x2 y2) = (x1 = x2 & y1 = y2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1022
  by (import hollight NUMPAIR_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1023
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1024
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1025
  NUMFST :: "nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1026
  "NUMFST == SOME X. EX Y. ALL x y. X (NUMPAIR x y) = x & Y (NUMPAIR x y) = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1027
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1028
lemma DEF_NUMFST: "NUMFST = (SOME X. EX Y. ALL x y. X (NUMPAIR x y) = x & Y (NUMPAIR x y) = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1029
  by (import hollight DEF_NUMFST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1030
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1031
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1032
  NUMSND :: "nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1033
  "NUMSND == SOME Y. ALL x y. NUMFST (NUMPAIR x y) = x & Y (NUMPAIR x y) = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1034
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1035
lemma DEF_NUMSND: "NUMSND = (SOME Y. ALL x y. NUMFST (NUMPAIR x y) = x & Y (NUMPAIR x y) = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1036
  by (import hollight DEF_NUMSND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1037
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1038
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1039
  NUMSUM :: "bool => nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1040
  "NUMSUM == %u ua. if u then Suc (2 * ua) else 2 * ua"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1041
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1042
lemma DEF_NUMSUM: "NUMSUM = (%u ua. if u then Suc (2 * ua) else 2 * ua)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1043
  by (import hollight DEF_NUMSUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1044
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1045
lemma NUMSUM_INJ: "(NUMSUM b1 x1 = NUMSUM b2 x2) = (b1 = b2 & x1 = x2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1046
  by (import hollight NUMSUM_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1047
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1048
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1049
  NUMLEFT :: "nat => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1050
  "NUMLEFT == SOME X. EX Y. ALL x y. X (NUMSUM x y) = x & Y (NUMSUM x y) = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1051
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1052
lemma DEF_NUMLEFT: "NUMLEFT = (SOME X. EX Y. ALL x y. X (NUMSUM x y) = x & Y (NUMSUM x y) = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1053
  by (import hollight DEF_NUMLEFT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1054
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1055
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1056
  NUMRIGHT :: "nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1057
  "NUMRIGHT == SOME Y. ALL x y. NUMLEFT (NUMSUM x y) = x & Y (NUMSUM x y) = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1058
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1059
lemma DEF_NUMRIGHT: "NUMRIGHT = (SOME Y. ALL x y. NUMLEFT (NUMSUM x y) = x & Y (NUMSUM x y) = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1060
  by (import hollight DEF_NUMRIGHT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1061
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1062
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1063
  INJN :: "nat => nat => 'A => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1064
  "INJN == %(u::nat) (n::nat) a::'A. n = u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1065
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1066
lemma DEF_INJN: "INJN = (%(u::nat) (n::nat) a::'A. n = u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1067
  by (import hollight DEF_INJN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1068
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1069
lemma INJN_INJ: "(op =::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1070
 ((op =::(nat => 'A::type => bool) => (nat => 'A::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1071
   ((INJN::nat => nat => 'A::type => bool) (n1::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1072
   ((INJN::nat => nat => 'A::type => bool) (n2::nat)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1073
 ((op =::nat => nat => bool) n1 n2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1074
  by (import hollight INJN_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1075
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1076
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1077
  INJA :: "'A => nat => 'A => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1078
  "INJA == %(u::'A) (n::nat) b::'A. b = u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1079
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1080
lemma DEF_INJA: "INJA = (%(u::'A) (n::nat) b::'A. b = u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1081
  by (import hollight DEF_INJA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1082
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1083
lemma INJA_INJ: "(INJA (a1::'A) = INJA (a2::'A)) = (a1 = a2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1084
  by (import hollight INJA_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1085
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1086
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1087
  INJF :: "(nat => nat => 'A => bool) => nat => 'A => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1088
  "INJF == %(u::nat => nat => 'A => bool) n::nat. u (NUMFST n) (NUMSND n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1089
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1090
lemma DEF_INJF: "INJF = (%(u::nat => nat => 'A => bool) n::nat. u (NUMFST n) (NUMSND n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1091
  by (import hollight DEF_INJF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1092
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1093
lemma INJF_INJ: "(INJF (f1::nat => nat => 'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1094
 INJF (f2::nat => nat => 'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1095
(f1 = f2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1096
  by (import hollight INJF_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1097
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1098
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1099
  INJP :: "(nat => 'A => bool) => (nat => 'A => bool) => nat => 'A => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1100
  "INJP ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1101
%(u::nat => 'A => bool) (ua::nat => 'A => bool) (n::nat) a::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1102
   if NUMLEFT n then u (NUMRIGHT n) a else ua (NUMRIGHT n) a"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1103
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1104
lemma DEF_INJP: "INJP =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1105
(%(u::nat => 'A => bool) (ua::nat => 'A => bool) (n::nat) a::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1106
    if NUMLEFT n then u (NUMRIGHT n) a else ua (NUMRIGHT n) a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1107
  by (import hollight DEF_INJP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1108
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1109
lemma INJP_INJ: "(INJP (f1::nat => 'A => bool) (f2::nat => 'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1110
 INJP (f1'::nat => 'A => bool) (f2'::nat => 'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1111
(f1 = f1' & f2 = f2')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1112
  by (import hollight INJP_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1113
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1114
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1115
  ZCONSTR :: "nat => 'A => (nat => nat => 'A => bool) => nat => 'A => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1116
  "ZCONSTR ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1117
%(u::nat) (ua::'A) ub::nat => nat => 'A => bool.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1118
   INJP (INJN (Suc u)) (INJP (INJA ua) (INJF ub))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1119
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1120
lemma DEF_ZCONSTR: "ZCONSTR =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1121
(%(u::nat) (ua::'A) ub::nat => nat => 'A => bool.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1122
    INJP (INJN (Suc u)) (INJP (INJA ua) (INJF ub)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1123
  by (import hollight DEF_ZCONSTR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1124
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1125
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1126
  ZBOT :: "nat => 'A => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1127
  "ZBOT == INJP (INJN (0::nat)) (SOME z::nat => 'A => bool. True)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1128
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1129
lemma DEF_ZBOT: "ZBOT = INJP (INJN (0::nat)) (SOME z::nat => 'A => bool. True)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1130
  by (import hollight DEF_ZBOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1131
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1132
lemma ZCONSTR_ZBOT: "ZCONSTR (x::nat) (xa::'A) (xb::nat => nat => 'A => bool) ~= ZBOT"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1133
  by (import hollight ZCONSTR_ZBOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1134
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1135
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1136
  ZRECSPACE :: "(nat => 'A => bool) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1137
  "ZRECSPACE ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1138
%a::nat => 'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1139
   ALL ZRECSPACE'::(nat => 'A => bool) => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1140
      (ALL a::nat => 'A => bool.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1141
          a = ZBOT |
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1142
          (EX (c::nat) (i::'A) r::nat => nat => 'A => bool.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1143
              a = ZCONSTR c i r & (ALL n::nat. ZRECSPACE' (r n))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1144
          ZRECSPACE' a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1145
      ZRECSPACE' a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1146
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1147
lemma DEF_ZRECSPACE: "ZRECSPACE =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1148
(%a::nat => 'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1149
    ALL ZRECSPACE'::(nat => 'A => bool) => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1150
       (ALL a::nat => 'A => bool.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1151
           a = ZBOT |
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1152
           (EX (c::nat) (i::'A) r::nat => nat => 'A => bool.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1153
               a = ZCONSTR c i r & (ALL n::nat. ZRECSPACE' (r n))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1154
           ZRECSPACE' a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1155
       ZRECSPACE' a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1156
  by (import hollight DEF_ZRECSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1157
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1158
typedef (open) ('A) recspace = "Collect ZRECSPACE"  morphisms "_dest_rec" "_mk_rec"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1159
  apply (rule light_ex_imp_nonempty[where t="ZBOT"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1160
  by (import hollight TYDEF_recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1161
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1162
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1163
  "_dest_rec" :: _ ("'_dest'_rec")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1164
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1165
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1166
  "_mk_rec" :: _ ("'_mk'_rec")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1167
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1168
lemmas "TYDEF_recspace_@intern" = typedef_hol2hollight 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1169
  [where a="a :: 'A recspace" and r=r ,
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1170
   OF type_definition_recspace]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1171
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1172
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1173
  BOTTOM :: "'A recspace"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1174
  "BOTTOM == _mk_rec ZBOT"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1175
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1176
lemma DEF_BOTTOM: "BOTTOM = _mk_rec ZBOT"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1177
  by (import hollight DEF_BOTTOM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1178
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1179
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1180
  CONSTR :: "nat => 'A => (nat => 'A recspace) => 'A recspace"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1181
  "CONSTR ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1182
%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1183
   _mk_rec (ZCONSTR u ua (%n::nat. _dest_rec (ub n)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1184
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1185
lemma DEF_CONSTR: "CONSTR =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1186
(%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1187
    _mk_rec (ZCONSTR u ua (%n::nat. _dest_rec (ub n))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1188
  by (import hollight DEF_CONSTR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1189
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1190
lemma MK_REC_INJ: "[| _mk_rec (x::nat => 'A::type => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1191
   _mk_rec (y::nat => 'A::type => bool);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1192
   ZRECSPACE x & ZRECSPACE y |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1193
==> x = y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1194
  by (import hollight MK_REC_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1195
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1196
lemma CONSTR_BOT: "CONSTR (c::nat) (i::'A) (r::nat => 'A recspace) ~= BOTTOM"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1197
  by (import hollight CONSTR_BOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1198
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1199
lemma CONSTR_INJ: "(CONSTR (c1::nat) (i1::'A) (r1::nat => 'A recspace) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1200
 CONSTR (c2::nat) (i2::'A) (r2::nat => 'A recspace)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1201
(c1 = c2 & i1 = i2 & r1 = r2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1202
  by (import hollight CONSTR_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1203
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1204
lemma CONSTR_IND: "(P::'A recspace => bool) BOTTOM &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1205
(ALL (c::nat) (i::'A) r::nat => 'A recspace.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1206
    (ALL n::nat. P (r n)) --> P (CONSTR c i r))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1207
==> P (x::'A recspace)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1208
  by (import hollight CONSTR_IND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1209
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1210
lemma CONSTR_REC: "EX f::'A recspace => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1211
   ALL (c::nat) (i::'A) r::nat => 'A recspace.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1212
      f (CONSTR c i r) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1213
      (Fn::nat => 'A => (nat => 'A recspace) => (nat => 'B) => 'B) c i r
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1214
       (%n::nat. f (r n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1215
  by (import hollight CONSTR_REC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1216
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1217
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1218
  FCONS :: "'A => (nat => 'A) => nat => 'A"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1219
  "FCONS ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1220
SOME FCONS::'A => (nat => 'A) => nat => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1221
   (ALL (a::'A) f::nat => 'A. FCONS a f (0::nat) = a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1222
   (ALL (a::'A) (f::nat => 'A) n::nat. FCONS a f (Suc n) = f n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1223
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1224
lemma DEF_FCONS: "FCONS =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1225
(SOME FCONS::'A => (nat => 'A) => nat => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1226
    (ALL (a::'A) f::nat => 'A. FCONS a f (0::nat) = a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1227
    (ALL (a::'A) (f::nat => 'A) n::nat. FCONS a f (Suc n) = f n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1228
  by (import hollight DEF_FCONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1229
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1230
lemma FCONS_UNDO: "(f::nat => 'A) = FCONS (f (0::nat)) (f o Suc)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1231
  by (import hollight FCONS_UNDO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1232
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1233
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1234
  FNIL :: "nat => 'A"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1235
  "FNIL == %u::nat. SOME x::'A. True"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1236
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1237
lemma DEF_FNIL: "FNIL = (%u::nat. SOME x::'A. True)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1238
  by (import hollight DEF_FNIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1239
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1240
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1241
  ISO :: "('A => 'B) => ('B => 'A) => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1242
  "ISO ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1243
%(u::'A => 'B) ua::'B => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1244
   (ALL x::'B. u (ua x) = x) & (ALL y::'A. ua (u y) = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1245
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1246
lemma DEF_ISO: "ISO =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1247
(%(u::'A => 'B) ua::'B => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1248
    (ALL x::'B. u (ua x) = x) & (ALL y::'A. ua (u y) = y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1249
  by (import hollight DEF_ISO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1250
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1251
lemma ISO_REFL: "ISO (%x::'A. x) (%x::'A. x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1252
  by (import hollight ISO_REFL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1253
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1254
lemma ISO_FUN: "ISO (f::'A => 'A') (f'::'A' => 'A) & ISO (g::'B => 'B') (g'::'B' => 'B)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1255
==> ISO (%(h::'A => 'B) a'::'A'. g (h (f' a')))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1256
     (%(h::'A' => 'B') a::'A. g' (h (f a)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1257
  by (import hollight ISO_FUN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1258
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1259
lemma ISO_USAGE: "ISO (f::'q_17485 => 'q_17482) (g::'q_17482 => 'q_17485)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1260
==> (ALL P::'q_17485 => bool. All P = (ALL x::'q_17482. P (g x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1261
    (ALL P::'q_17485 => bool. Ex P = (EX x::'q_17482. P (g x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1262
    (ALL (a::'q_17485) b::'q_17482. (a = g b) = (f a = b))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1263
  by (import hollight ISO_USAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1264
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1265
typedef (open) char = "{a. ALL char'.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1266
       (ALL a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1267
           (EX a0 a1 a2 a3 a4 a5 a6 a7.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1268
               a =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1269
               CONSTR (NUMERAL 0) (a0, a1, a2, a3, a4, a5, a6, a7)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1270
                (%n. BOTTOM)) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1271
           char' a) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1272
       char' a}"  morphisms "_dest_char" "_mk_char"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1273
  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL 0) (a0, a1, a2, a3, a4, a5, a6, a7) (%n. BOTTOM)"])
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1274
  by (import hollight TYDEF_char)
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1275
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1276
syntax
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1277
  "_dest_char" :: _ ("'_dest'_char")
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1278
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1279
syntax
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1280
  "_mk_char" :: _ ("'_mk'_char")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1281
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1282
lemmas "TYDEF_char_@intern" = typedef_hol2hollight 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1283
  [where a="a :: hollight.char" and r=r ,
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1284
   OF type_definition_char]
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1285
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1286
consts
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1287
  "_11937" :: "bool
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1288
=> bool => bool => bool => bool => bool => bool => bool => hollight.char" ("'_11937")
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1289
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1290
defs
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1291
  "_11937_def": "_11937 ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1292
%(a0::bool) (a1::bool) (a2::bool) (a3::bool) (a4::bool) (a5::bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1293
   (a6::bool) a7::bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1294
   _mk_char
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1295
    (CONSTR (0::nat) (a0, a1, a2, a3, a4, a5, a6, a7) (%n::nat. BOTTOM))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1296
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1297
lemma DEF__11937: "_11937 =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1298
(%(a0::bool) (a1::bool) (a2::bool) (a3::bool) (a4::bool) (a5::bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1299
    (a6::bool) a7::bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1300
    _mk_char
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1301
     (CONSTR (0::nat) (a0, a1, a2, a3, a4, a5, a6, a7) (%n::nat. BOTTOM)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1302
  by (import hollight DEF__11937)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1303
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1304
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1305
  ASCII :: "bool
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1306
=> bool => bool => bool => bool => bool => bool => bool => hollight.char"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1307
  "ASCII == _11937"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1308
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1309
lemma DEF_ASCII: "ASCII = _11937"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1310
  by (import hollight DEF_ASCII)
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1311
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1312
consts
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1313
  dist :: "nat * nat => nat" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1314
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1315
defs
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1316
  dist_def: "hollight.dist == %u. fst u - snd u + (snd u - fst u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1317
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1318
lemma DEF_dist: "hollight.dist = (%u. fst u - snd u + (snd u - fst u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1319
  by (import hollight DEF_dist)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1320
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1321
lemma DIST_REFL: "hollight.dist (x, x) = 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1322
  by (import hollight DIST_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1323
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1324
lemma DIST_LZERO: "hollight.dist (0, x) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1325
  by (import hollight DIST_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1326
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1327
lemma DIST_RZERO: "hollight.dist (x, 0) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1328
  by (import hollight DIST_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1329
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1330
lemma DIST_SYM: "hollight.dist (x, xa) = hollight.dist (xa, x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1331
  by (import hollight DIST_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1332
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1333
lemma DIST_LADD: "hollight.dist (x + xb, x + xa) = hollight.dist (xb, xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1334
  by (import hollight DIST_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1335
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1336
lemma DIST_RADD: "hollight.dist (x + xa, xb + xa) = hollight.dist (x, xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1337
  by (import hollight DIST_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1338
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1339
lemma DIST_LADD_0: "hollight.dist (x + xa, x) = xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1340
  by (import hollight DIST_LADD_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1341
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1342
lemma DIST_RADD_0: "hollight.dist (x, x + xa) = xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1343
  by (import hollight DIST_RADD_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1344
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1345
lemma DIST_LMUL: "x * hollight.dist (xa, xb) = hollight.dist (x * xa, x * xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1346
  by (import hollight DIST_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1347
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1348
lemma DIST_RMUL: "hollight.dist (x, xa) * xb = hollight.dist (x * xb, xa * xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1349
  by (import hollight DIST_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1350
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1351
lemma DIST_EQ_0: "(hollight.dist (x, xa) = 0) = (x = xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1352
  by (import hollight DIST_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1353
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1354
lemma DIST_ELIM_THM: "P (hollight.dist (x, y)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1355
(ALL d. (x = y + d --> P d) & (y = x + d --> P d))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1356
  by (import hollight DIST_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1357
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1358
lemma DIST_LE_CASES: "(hollight.dist (m, n) <= p) = (m <= n + p & n <= m + p)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1359
  by (import hollight DIST_LE_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1360
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1361
lemma DIST_TRIANGLE_LE: "hollight.dist (m, n) + hollight.dist (n, p) <= q
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1362
==> hollight.dist (m, p) <= q"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1363
  by (import hollight DIST_TRIANGLE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1364
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1365
lemma DIST_TRIANGLES_LE: "hollight.dist (m, n) <= r & hollight.dist (p, q) <= s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1366
==> hollight.dist (m, p) <= hollight.dist (n, q) + (r + s)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1367
  by (import hollight DIST_TRIANGLES_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1368
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1369
lemma BOUNDS_LINEAR: "(ALL n::nat. (A::nat) * n <= (B::nat) * n + (C::nat)) = (A <= B)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1370
  by (import hollight BOUNDS_LINEAR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1371
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1372
lemma BOUNDS_LINEAR_0: "(ALL n::nat. (A::nat) * n <= (B::nat)) = (A = (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1373
  by (import hollight BOUNDS_LINEAR_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1374
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1375
lemma BOUNDS_DIVIDED: "(EX B::nat. ALL n::nat. (P::nat => nat) n <= B) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1376
(EX (x::nat) B::nat. ALL n::nat. n * P n <= x * n + B)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1377
  by (import hollight BOUNDS_DIVIDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1378
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1379
lemma BOUNDS_NOTZERO: "(P::nat => nat => nat) (0::nat) (0::nat) = (0::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1380
(ALL (m::nat) n::nat. P m n <= (A::nat) * (m + n) + (B::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1381
==> EX x::nat. ALL (m::nat) n::nat. P m n <= x * (m + n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1382
  by (import hollight BOUNDS_NOTZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1383
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1384
lemma BOUNDS_IGNORE: "(EX B::nat. ALL i::nat. (P::nat => nat) i <= (Q::nat => nat) i + B) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1385
(EX (x::nat) N::nat. ALL i>=N. P i <= Q i + x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1386
  by (import hollight BOUNDS_IGNORE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1387
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1388
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1389
  is_nadd :: "(nat => nat) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1390
  "is_nadd ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1391
%u. EX B. ALL m n. hollight.dist (m * u n, n * u m) <= B * (m + n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1392
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1393
lemma DEF_is_nadd: "is_nadd =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1394
(%u. EX B. ALL m n. hollight.dist (m * u n, n * u m) <= B * (m + n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1395
  by (import hollight DEF_is_nadd)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1396
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1397
lemma is_nadd_0: "is_nadd (%n. 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1398
  by (import hollight is_nadd_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1399
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1400
typedef (open) nadd = "Collect is_nadd"  morphisms "dest_nadd" "mk_nadd"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1401
  apply (rule light_ex_imp_nonempty[where t="%n. NUMERAL 0"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1402
  by (import hollight TYDEF_nadd)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1403
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1404
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1405
  dest_nadd :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1406
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1407
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1408
  mk_nadd :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1409
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1410
lemmas "TYDEF_nadd_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1411
  [where a="a :: nadd" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1412
   OF type_definition_nadd]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1413
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1414
lemma NADD_CAUCHY: "EX xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1415
   ALL xb xc.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1416
      hollight.dist (xb * dest_nadd x xc, xc * dest_nadd x xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1417
      <= xa * (xb + xc)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1418
  by (import hollight NADD_CAUCHY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1419
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1420
lemma NADD_BOUND: "EX xa B. ALL n. dest_nadd x n <= xa * n + B"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1421
  by (import hollight NADD_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1422
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1423
lemma NADD_MULTIPLICATIVE: "EX xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1424
   ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1425
      hollight.dist (dest_nadd x (m * n), m * dest_nadd x n) <= xa * m + xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1426
  by (import hollight NADD_MULTIPLICATIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1427
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1428
lemma NADD_ADDITIVE: "EX xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1429
   ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1430
      hollight.dist (dest_nadd x (m + n), dest_nadd x m + dest_nadd x n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1431
      <= xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1432
  by (import hollight NADD_ADDITIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1433
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1434
lemma NADD_SUC: "EX xa. ALL n. hollight.dist (dest_nadd x (Suc n), dest_nadd x n) <= xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1435
  by (import hollight NADD_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1436
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1437
lemma NADD_DIST_LEMMA: "EX xa. ALL m n. hollight.dist (dest_nadd x (m + n), dest_nadd x m) <= xa * n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1438
  by (import hollight NADD_DIST_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1439
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1440
lemma NADD_DIST: "EX xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1441
   ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1442
      hollight.dist (dest_nadd x m, dest_nadd x n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1443
      <= xa * hollight.dist (m, n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1444
  by (import hollight NADD_DIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1445
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1446
lemma NADD_ALTMUL: "EX A B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1447
   ALL n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1448
      hollight.dist
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1449
       (n * dest_nadd x (dest_nadd y n), dest_nadd x n * dest_nadd y n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1450
      <= A * n + B"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1451
  by (import hollight NADD_ALTMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1452
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1453
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1454
  nadd_eq :: "nadd => nadd => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1455
  "nadd_eq ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1456
%u ua. EX B. ALL n. hollight.dist (dest_nadd u n, dest_nadd ua n) <= B"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1457
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1458
lemma DEF_nadd_eq: "nadd_eq =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1459
(%u ua. EX B. ALL n. hollight.dist (dest_nadd u n, dest_nadd ua n) <= B)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1460
  by (import hollight DEF_nadd_eq)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1461
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1462
lemma NADD_EQ_REFL: "nadd_eq x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1463
  by (import hollight NADD_EQ_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1464
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1465
lemma NADD_EQ_SYM: "nadd_eq x y = nadd_eq y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1466
  by (import hollight NADD_EQ_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1467
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1468
lemma NADD_EQ_TRANS: "nadd_eq x y & nadd_eq y z ==> nadd_eq x z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1469
  by (import hollight NADD_EQ_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1470
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1471
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1472
  nadd_of_num :: "nat => nadd"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1473
  "nadd_of_num == %u. mk_nadd (op * u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1474
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1475
lemma DEF_nadd_of_num: "nadd_of_num = (%u. mk_nadd (op * u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1476
  by (import hollight DEF_nadd_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1477
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1478
lemma NADD_OF_NUM: "dest_nadd (nadd_of_num x) = op * x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1479
  by (import hollight NADD_OF_NUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1480
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1481
lemma NADD_OF_NUM_WELLDEF: "m = n ==> nadd_eq (nadd_of_num m) (nadd_of_num n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1482
  by (import hollight NADD_OF_NUM_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1483
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1484
lemma NADD_OF_NUM_EQ: "nadd_eq (nadd_of_num m) (nadd_of_num n) = (m = n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1485
  by (import hollight NADD_OF_NUM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1486
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1487
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1488
  nadd_le :: "nadd => nadd => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1489
  "nadd_le == %u ua. EX B. ALL n. dest_nadd u n <= dest_nadd ua n + B"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1490
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1491
lemma DEF_nadd_le: "nadd_le = (%u ua. EX B. ALL n. dest_nadd u n <= dest_nadd ua n + B)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1492
  by (import hollight DEF_nadd_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1493
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1494
lemma NADD_LE_WELLDEF_LEMMA: "nadd_eq x x' & nadd_eq y y' & nadd_le x y ==> nadd_le x' y'"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1495
  by (import hollight NADD_LE_WELLDEF_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1496
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1497
lemma NADD_LE_WELLDEF: "nadd_eq x x' & nadd_eq y y' ==> nadd_le x y = nadd_le x' y'"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1498
  by (import hollight NADD_LE_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1499
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1500
lemma NADD_LE_REFL: "nadd_le x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1501
  by (import hollight NADD_LE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1502
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1503
lemma NADD_LE_TRANS: "nadd_le x y & nadd_le y z ==> nadd_le x z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1504
  by (import hollight NADD_LE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1505
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1506
lemma NADD_LE_ANTISYM: "(nadd_le x y & nadd_le y x) = nadd_eq x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1507
  by (import hollight NADD_LE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1508
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1509
lemma NADD_LE_TOTAL_LEMMA: "~ nadd_le x y ==> EX n. n ~= 0 & dest_nadd y n + B < dest_nadd x n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1510
  by (import hollight NADD_LE_TOTAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1511
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1512
lemma NADD_LE_TOTAL: "nadd_le x y | nadd_le y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1513
  by (import hollight NADD_LE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1514
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1515
lemma NADD_ARCH: "EX xa. nadd_le x (nadd_of_num xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1516
  by (import hollight NADD_ARCH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1517
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1518
lemma NADD_OF_NUM_LE: "nadd_le (nadd_of_num m) (nadd_of_num n) = (m <= n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1519
  by (import hollight NADD_OF_NUM_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1520
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1521
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1522
  nadd_add :: "nadd => nadd => nadd"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1523
  "nadd_add == %u ua. mk_nadd (%n. dest_nadd u n + dest_nadd ua n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1524
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1525
lemma DEF_nadd_add: "nadd_add = (%u ua. mk_nadd (%n. dest_nadd u n + dest_nadd ua n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1526
  by (import hollight DEF_nadd_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1527
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1528
lemma NADD_ADD: "dest_nadd (nadd_add x y) = (%n. dest_nadd x n + dest_nadd y n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1529
  by (import hollight NADD_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1530
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1531
lemma NADD_ADD_WELLDEF: "nadd_eq x x' & nadd_eq y y' ==> nadd_eq (nadd_add x y) (nadd_add x' y')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1532
  by (import hollight NADD_ADD_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1533
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1534
lemma NADD_ADD_SYM: "nadd_eq (nadd_add x y) (nadd_add y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1535
  by (import hollight NADD_ADD_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1536
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1537
lemma NADD_ADD_ASSOC: "nadd_eq (nadd_add x (nadd_add y z)) (nadd_add (nadd_add x y) z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1538
  by (import hollight NADD_ADD_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1539
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1540
lemma NADD_ADD_LID: "nadd_eq (nadd_add (nadd_of_num 0) x) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1541
  by (import hollight NADD_ADD_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1542
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1543
lemma NADD_ADD_LCANCEL: "nadd_eq (nadd_add x y) (nadd_add x z) ==> nadd_eq y z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1544
  by (import hollight NADD_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1545
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1546
lemma NADD_LE_ADD: "nadd_le x (nadd_add x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1547
  by (import hollight NADD_LE_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1548
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1549
lemma NADD_LE_EXISTS: "nadd_le x y ==> EX d. nadd_eq y (nadd_add x d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1550
  by (import hollight NADD_LE_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1551
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1552
lemma NADD_OF_NUM_ADD: "nadd_eq (nadd_add (nadd_of_num x) (nadd_of_num xa)) (nadd_of_num (x + xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1553
  by (import hollight NADD_OF_NUM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1554
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1555
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1556
  nadd_mul :: "nadd => nadd => nadd"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1557
  "nadd_mul == %u ua. mk_nadd (%n. dest_nadd u (dest_nadd ua n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1558
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1559
lemma DEF_nadd_mul: "nadd_mul = (%u ua. mk_nadd (%n. dest_nadd u (dest_nadd ua n)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1560
  by (import hollight DEF_nadd_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1561
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1562
lemma NADD_MUL: "dest_nadd (nadd_mul x y) = (%n. dest_nadd x (dest_nadd y n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1563
  by (import hollight NADD_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1564
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1565
lemma NADD_MUL_SYM: "nadd_eq (nadd_mul x y) (nadd_mul y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1566
  by (import hollight NADD_MUL_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1567
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1568
lemma NADD_MUL_ASSOC: "nadd_eq (nadd_mul x (nadd_mul y z)) (nadd_mul (nadd_mul x y) z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1569
  by (import hollight NADD_MUL_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1570
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1571
lemma NADD_MUL_LID: "nadd_eq (nadd_mul (nadd_of_num 1) x) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1572
  by (import hollight NADD_MUL_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1573
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1574
lemma NADD_LDISTRIB: "nadd_eq (nadd_mul x (nadd_add y z)) (nadd_add (nadd_mul x y) (nadd_mul x z))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1575
  by (import hollight NADD_LDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1576
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1577
lemma NADD_MUL_WELLDEF_LEMMA: "nadd_eq y y' ==> nadd_eq (nadd_mul x y) (nadd_mul x y')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1578
  by (import hollight NADD_MUL_WELLDEF_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1579
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1580
lemma NADD_MUL_WELLDEF: "nadd_eq x x' & nadd_eq y y' ==> nadd_eq (nadd_mul x y) (nadd_mul x' y')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1581
  by (import hollight NADD_MUL_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1582
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1583
lemma NADD_OF_NUM_MUL: "nadd_eq (nadd_mul (nadd_of_num x) (nadd_of_num xa)) (nadd_of_num (x * xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1584
  by (import hollight NADD_OF_NUM_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1585
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1586
lemma NADD_LE_0: "nadd_le (nadd_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1587
  by (import hollight NADD_LE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1588
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1589
lemma NADD_EQ_IMP_LE: "nadd_eq x y ==> nadd_le x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1590
  by (import hollight NADD_EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1591
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1592
lemma NADD_LE_LMUL: "nadd_le y z ==> nadd_le (nadd_mul x y) (nadd_mul x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1593
  by (import hollight NADD_LE_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1594
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1595
lemma NADD_LE_RMUL: "nadd_le x y ==> nadd_le (nadd_mul x z) (nadd_mul y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1596
  by (import hollight NADD_LE_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1597
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1598
lemma NADD_LE_RADD: "nadd_le (nadd_add x z) (nadd_add y z) = nadd_le x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1599
  by (import hollight NADD_LE_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1600
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1601
lemma NADD_LE_LADD: "nadd_le (nadd_add x y) (nadd_add x z) = nadd_le y z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1602
  by (import hollight NADD_LE_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1603
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1604
lemma NADD_RDISTRIB: "nadd_eq (nadd_mul (nadd_add x y) z) (nadd_add (nadd_mul x z) (nadd_mul y z))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1605
  by (import hollight NADD_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1606
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1607
lemma NADD_ARCH_MULT: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1608
==> EX xa. nadd_le (nadd_of_num k) (nadd_mul (nadd_of_num xa) x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1609
  by (import hollight NADD_ARCH_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1610
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1611
lemma NADD_ARCH_ZERO: "(!!n. nadd_le (nadd_mul (nadd_of_num n) x) k) ==> nadd_eq x (nadd_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1612
  by (import hollight NADD_ARCH_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1613
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1614
lemma NADD_ARCH_LEMMA: "(!!n. nadd_le (nadd_mul (nadd_of_num n) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1615
       (nadd_add (nadd_mul (nadd_of_num n) y) z))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1616
==> nadd_le x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1617
  by (import hollight NADD_ARCH_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1618
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1619
lemma NADD_COMPLETE: "Ex P & (EX M. ALL x. P x --> nadd_le x M)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1620
==> EX M. (ALL x. P x --> nadd_le x M) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1621
          (ALL M'. (ALL x. P x --> nadd_le x M') --> nadd_le M M')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1622
  by (import hollight NADD_COMPLETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1623
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1624
lemma NADD_UBOUND: "EX xa N. ALL n>=N. dest_nadd x n <= xa * n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1625
  by (import hollight NADD_UBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1626
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1627
lemma NADD_NONZERO: "~ nadd_eq x (nadd_of_num 0) ==> EX N. ALL n>=N. dest_nadd x n ~= 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1628
  by (import hollight NADD_NONZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1629
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1630
lemma NADD_LBOUND: "~ nadd_eq x (nadd_of_num 0) ==> EX A N. ALL n>=N. n <= A * dest_nadd x n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1631
  by (import hollight NADD_LBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1632
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1633
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1634
  nadd_rinv :: "nadd => nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1635
  "nadd_rinv == %u n. n * n div dest_nadd u n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1636
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1637
lemma DEF_nadd_rinv: "nadd_rinv = (%u n. n * n div dest_nadd u n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1638
  by (import hollight DEF_nadd_rinv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1639
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1640
lemma NADD_MUL_LINV_LEMMA0: "~ nadd_eq x (nadd_of_num 0) ==> EX xa B. ALL i. nadd_rinv x i <= xa * i + B"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1641
  by (import hollight NADD_MUL_LINV_LEMMA0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1642
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1643
lemma NADD_MUL_LINV_LEMMA1: "dest_nadd x n ~= 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1644
==> hollight.dist (dest_nadd x n * nadd_rinv x n, n * n) <= dest_nadd x n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1645
  by (import hollight NADD_MUL_LINV_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1646
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1647
lemma NADD_MUL_LINV_LEMMA2: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1648
==> EX N. ALL n>=N.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1649
             hollight.dist (dest_nadd x n * nadd_rinv x n, n * n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1650
             <= dest_nadd x n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1651
  by (import hollight NADD_MUL_LINV_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1652
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1653
lemma NADD_MUL_LINV_LEMMA3: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1654
==> EX N. ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1655
             N <= n -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1656
             hollight.dist
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1657
              (m * (dest_nadd x m * (dest_nadd x n * nadd_rinv x n)),
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1658
               m * (dest_nadd x m * (n * n)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1659
             <= m * (dest_nadd x m * dest_nadd x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1660
  by (import hollight NADD_MUL_LINV_LEMMA3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1661
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1662
lemma NADD_MUL_LINV_LEMMA4: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1663
==> EX N. ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1664
             N <= m & N <= n -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1665
             dest_nadd x m * dest_nadd x n *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1666
             hollight.dist (m * nadd_rinv x n, n * nadd_rinv x m)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1667
             <= m * n *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1668
                hollight.dist (m * dest_nadd x n, n * dest_nadd x m) +
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1669
                dest_nadd x m * dest_nadd x n * (m + n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1670
  by (import hollight NADD_MUL_LINV_LEMMA4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1671
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1672
lemma NADD_MUL_LINV_LEMMA5: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1673
==> EX B N.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1674
       ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1675
          N <= m & N <= n -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1676
          dest_nadd x m * dest_nadd x n *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1677
          hollight.dist (m * nadd_rinv x n, n * nadd_rinv x m)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1678
          <= B * (m * n * (m + n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1679
  by (import hollight NADD_MUL_LINV_LEMMA5)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1680
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1681
lemma NADD_MUL_LINV_LEMMA6: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1682
==> EX B N.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1683
       ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1684
          N <= m & N <= n -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1685
          m * n * hollight.dist (m * nadd_rinv x n, n * nadd_rinv x m)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1686
          <= B * (m * n * (m + n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1687
  by (import hollight NADD_MUL_LINV_LEMMA6)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1688
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1689
lemma NADD_MUL_LINV_LEMMA7: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1690
==> EX B N.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1691
       ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1692
          N <= m & N <= n -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1693
          hollight.dist (m * nadd_rinv x n, n * nadd_rinv x m)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1694
          <= B * (m + n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1695
  by (import hollight NADD_MUL_LINV_LEMMA7)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1696
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1697
lemma NADD_MUL_LINV_LEMMA7a: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1698
==> EX A B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1699
       ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1700
          m <= N -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1701
          hollight.dist (m * nadd_rinv x n, n * nadd_rinv x m) <= A * n + B"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1702
  by (import hollight NADD_MUL_LINV_LEMMA7a)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1703
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1704
lemma NADD_MUL_LINV_LEMMA8: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1705
==> EX B. ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1706
             hollight.dist (m * nadd_rinv x n, n * nadd_rinv x m)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1707
             <= B * (m + n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1708
  by (import hollight NADD_MUL_LINV_LEMMA8)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1709
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1710
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1711
  nadd_inv :: "nadd => nadd"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1712
  "nadd_inv ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1713
%u. if nadd_eq u (nadd_of_num 0) then nadd_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1714
    else mk_nadd (nadd_rinv u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1715
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1716
lemma DEF_nadd_inv: "nadd_inv =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1717
(%u. if nadd_eq u (nadd_of_num 0) then nadd_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1718
     else mk_nadd (nadd_rinv u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1719
  by (import hollight DEF_nadd_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1720
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1721
lemma NADD_INV: "dest_nadd (nadd_inv x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1722
(if nadd_eq x (nadd_of_num 0) then %n. 0 else nadd_rinv x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1723
  by (import hollight NADD_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1724
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1725
lemma NADD_MUL_LINV: "~ nadd_eq x (nadd_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1726
==> nadd_eq (nadd_mul (nadd_inv x) x) (nadd_of_num 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1727
  by (import hollight NADD_MUL_LINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1728
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1729
lemma NADD_INV_0: "nadd_eq (nadd_inv (nadd_of_num 0)) (nadd_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1730
  by (import hollight NADD_INV_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1731
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1732
lemma NADD_INV_WELLDEF: "nadd_eq x y ==> nadd_eq (nadd_inv x) (nadd_inv y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1733
  by (import hollight NADD_INV_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1734
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1735
typedef (open) hreal = "{s. EX x. s = nadd_eq x}"  morphisms "dest_hreal" "mk_hreal"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1736
  apply (rule light_ex_imp_nonempty[where t="nadd_eq x"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1737
  by (import hollight TYDEF_hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1738
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1739
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1740
  dest_hreal :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1741
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1742
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1743
  mk_hreal :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1744
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1745
lemmas "TYDEF_hreal_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1746
  [where a="a :: hreal" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1747
   OF type_definition_hreal]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1748
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1749
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1750
  hreal_of_num :: "nat => hreal"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1751
  "hreal_of_num == %m. mk_hreal (nadd_eq (nadd_of_num m))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1752
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1753
lemma DEF_hreal_of_num: "hreal_of_num = (%m. mk_hreal (nadd_eq (nadd_of_num m)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1754
  by (import hollight DEF_hreal_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1755
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1756
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1757
  hreal_add :: "hreal => hreal => hreal"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1758
  "hreal_add ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1759
%x y. mk_hreal
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1760
       (%u. EX xa ya.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1761
               nadd_eq (nadd_add xa ya) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1762
               dest_hreal x xa & dest_hreal y ya)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1763
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1764
lemma DEF_hreal_add: "hreal_add =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1765
(%x y. mk_hreal
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1766
        (%u. EX xa ya.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1767
                nadd_eq (nadd_add xa ya) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1768
                dest_hreal x xa & dest_hreal y ya))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1769
  by (import hollight DEF_hreal_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1770
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1771
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1772
  hreal_mul :: "hreal => hreal => hreal"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1773
  "hreal_mul ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1774
%x y. mk_hreal
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1775
       (%u. EX xa ya.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1776
               nadd_eq (nadd_mul xa ya) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1777
               dest_hreal x xa & dest_hreal y ya)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1778
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1779
lemma DEF_hreal_mul: "hreal_mul =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1780
(%x y. mk_hreal
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1781
        (%u. EX xa ya.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1782
                nadd_eq (nadd_mul xa ya) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1783
                dest_hreal x xa & dest_hreal y ya))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1784
  by (import hollight DEF_hreal_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1785
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1786
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1787
  hreal_le :: "hreal => hreal => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1788
  "hreal_le ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1789
%x y. SOME u.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1790
         EX xa ya. nadd_le xa ya = u & dest_hreal x xa & dest_hreal y ya"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1791
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1792
lemma DEF_hreal_le: "hreal_le =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1793
(%x y. SOME u.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1794
          EX xa ya. nadd_le xa ya = u & dest_hreal x xa & dest_hreal y ya)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1795
  by (import hollight DEF_hreal_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1796
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1797
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1798
  hreal_inv :: "hreal => hreal"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1799
  "hreal_inv ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1800
%x. mk_hreal (%u. EX xa. nadd_eq (nadd_inv xa) u & dest_hreal x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1801
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1802
lemma DEF_hreal_inv: "hreal_inv =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1803
(%x. mk_hreal (%u. EX xa. nadd_eq (nadd_inv xa) u & dest_hreal x xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1804
  by (import hollight DEF_hreal_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1805
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1806
lemma HREAL_LE_EXISTS_DEF: "hreal_le m n = (EX d. n = hreal_add m d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1807
  by (import hollight HREAL_LE_EXISTS_DEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1808
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1809
lemma HREAL_EQ_ADD_LCANCEL: "(hreal_add m n = hreal_add m p) = (n = p)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1810
  by (import hollight HREAL_EQ_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1811
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1812
lemma HREAL_EQ_ADD_RCANCEL: "(hreal_add x xb = hreal_add xa xb) = (x = xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1813
  by (import hollight HREAL_EQ_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1814
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1815
lemma HREAL_LE_ADD_LCANCEL: "hreal_le (hreal_add x xa) (hreal_add x xb) = hreal_le xa xb"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1816
  by (import hollight HREAL_LE_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1817
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1818
lemma HREAL_LE_ADD_RCANCEL: "hreal_le (hreal_add x xb) (hreal_add xa xb) = hreal_le x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1819
  by (import hollight HREAL_LE_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1820
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1821
lemma HREAL_ADD_RID: "hreal_add x (hreal_of_num 0) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1822
  by (import hollight HREAL_ADD_RID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1823
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1824
lemma HREAL_ADD_RDISTRIB: "hreal_mul (hreal_add x xa) xb = hreal_add (hreal_mul x xb) (hreal_mul xa xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1825
  by (import hollight HREAL_ADD_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1826
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1827
lemma HREAL_MUL_LZERO: "hreal_mul (hreal_of_num 0) m = hreal_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1828
  by (import hollight HREAL_MUL_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1829
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1830
lemma HREAL_MUL_RZERO: "hreal_mul x (hreal_of_num 0) = hreal_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1831
  by (import hollight HREAL_MUL_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1832
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1833
lemma HREAL_ADD_AC: "hreal_add m n = hreal_add n m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1834
hreal_add (hreal_add m n) p = hreal_add m (hreal_add n p) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1835
hreal_add m (hreal_add n p) = hreal_add n (hreal_add m p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1836
  by (import hollight HREAL_ADD_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1837
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1838
lemma HREAL_LE_ADD2: "hreal_le a b & hreal_le c d ==> hreal_le (hreal_add a c) (hreal_add b d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1839
  by (import hollight HREAL_LE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1840
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1841
lemma HREAL_LE_MUL_RCANCEL_IMP: "hreal_le a b ==> hreal_le (hreal_mul a c) (hreal_mul b c)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1842
  by (import hollight HREAL_LE_MUL_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1843
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1844
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1845
  treal_of_num :: "nat => hreal * hreal"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1846
  "treal_of_num == %u. (hreal_of_num u, hreal_of_num 0)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1847
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1848
lemma DEF_treal_of_num: "treal_of_num = (%u. (hreal_of_num u, hreal_of_num 0))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1849
  by (import hollight DEF_treal_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1850
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1851
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1852
  treal_neg :: "hreal * hreal => hreal * hreal"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1853
  "treal_neg == %u. (snd u, fst u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1854
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1855
lemma DEF_treal_neg: "treal_neg = (%u. (snd u, fst u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1856
  by (import hollight DEF_treal_neg)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1857
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1858
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1859
  treal_add :: "hreal * hreal => hreal * hreal => hreal * hreal"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1860
  "treal_add == %u ua. (hreal_add (fst u) (fst ua), hreal_add (snd u) (snd ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1861
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1862
lemma DEF_treal_add: "treal_add =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1863
(%u ua. (hreal_add (fst u) (fst ua), hreal_add (snd u) (snd ua)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1864
  by (import hollight DEF_treal_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1865
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1866
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1867
  treal_mul :: "hreal * hreal => hreal * hreal => hreal * hreal"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1868
  "treal_mul ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1869
%u ua.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1870
   (hreal_add (hreal_mul (fst u) (fst ua)) (hreal_mul (snd u) (snd ua)),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1871
    hreal_add (hreal_mul (fst u) (snd ua)) (hreal_mul (snd u) (fst ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1872
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1873
lemma DEF_treal_mul: "treal_mul =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1874
(%u ua.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1875
    (hreal_add (hreal_mul (fst u) (fst ua)) (hreal_mul (snd u) (snd ua)),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1876
     hreal_add (hreal_mul (fst u) (snd ua)) (hreal_mul (snd u) (fst ua))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1877
  by (import hollight DEF_treal_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1878
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1879
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1880
  treal_le :: "hreal * hreal => hreal * hreal => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1881
  "treal_le ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1882
%u ua. hreal_le (hreal_add (fst u) (snd ua)) (hreal_add (fst ua) (snd u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1883
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1884
lemma DEF_treal_le: "treal_le =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1885
(%u ua. hreal_le (hreal_add (fst u) (snd ua)) (hreal_add (fst ua) (snd u)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1886
  by (import hollight DEF_treal_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1887
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1888
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1889
  treal_inv :: "hreal * hreal => hreal * hreal"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1890
  "treal_inv ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1891
%u. if fst u = snd u then (hreal_of_num 0, hreal_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1892
    else if hreal_le (snd u) (fst u)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1893
         then (hreal_inv (SOME d. fst u = hreal_add (snd u) d),
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1894
               hreal_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1895
         else (hreal_of_num 0,
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1896
               hreal_inv (SOME d. snd u = hreal_add (fst u) d))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1897
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1898
lemma DEF_treal_inv: "treal_inv =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1899
(%u. if fst u = snd u then (hreal_of_num 0, hreal_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1900
     else if hreal_le (snd u) (fst u)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1901
          then (hreal_inv (SOME d. fst u = hreal_add (snd u) d),
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1902
                hreal_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1903
          else (hreal_of_num 0,
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1904
                hreal_inv (SOME d. snd u = hreal_add (fst u) d)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1905
  by (import hollight DEF_treal_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1906
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1907
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1908
  treal_eq :: "hreal * hreal => hreal * hreal => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1909
  "treal_eq == %u ua. hreal_add (fst u) (snd ua) = hreal_add (fst ua) (snd u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1910
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1911
lemma DEF_treal_eq: "treal_eq = (%u ua. hreal_add (fst u) (snd ua) = hreal_add (fst ua) (snd u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1912
  by (import hollight DEF_treal_eq)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1913
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1914
lemma TREAL_EQ_REFL: "treal_eq x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1915
  by (import hollight TREAL_EQ_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1916
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1917
lemma TREAL_EQ_SYM: "treal_eq x y = treal_eq y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1918
  by (import hollight TREAL_EQ_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1919
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1920
lemma TREAL_EQ_TRANS: "treal_eq x y & treal_eq y z ==> treal_eq x z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1921
  by (import hollight TREAL_EQ_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1922
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1923
lemma TREAL_EQ_AP: "x = xa ==> treal_eq x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1924
  by (import hollight TREAL_EQ_AP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1925
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1926
lemma TREAL_OF_NUM_EQ: "treal_eq (treal_of_num x) (treal_of_num xa) = (x = xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1927
  by (import hollight TREAL_OF_NUM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1928
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1929
lemma TREAL_OF_NUM_LE: "treal_le (treal_of_num x) (treal_of_num xa) = (x <= xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1930
  by (import hollight TREAL_OF_NUM_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1931
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1932
lemma TREAL_OF_NUM_ADD: "treal_eq (treal_add (treal_of_num x) (treal_of_num xa))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1933
 (treal_of_num (x + xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1934
  by (import hollight TREAL_OF_NUM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1935
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1936
lemma TREAL_OF_NUM_MUL: "treal_eq (treal_mul (treal_of_num x) (treal_of_num xa))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1937
 (treal_of_num (x * xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1938
  by (import hollight TREAL_OF_NUM_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1939
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1940
lemma TREAL_ADD_SYM_EQ: "treal_add x y = treal_add y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1941
  by (import hollight TREAL_ADD_SYM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1942
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1943
lemma TREAL_MUL_SYM_EQ: "treal_mul x y = treal_mul y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1944
  by (import hollight TREAL_MUL_SYM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1945
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1946
lemma TREAL_ADD_SYM: "treal_eq (treal_add x y) (treal_add y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1947
  by (import hollight TREAL_ADD_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1948
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1949
lemma TREAL_ADD_ASSOC: "treal_eq (treal_add x (treal_add y z)) (treal_add (treal_add x y) z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1950
  by (import hollight TREAL_ADD_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1951
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1952
lemma TREAL_ADD_LID: "treal_eq (treal_add (treal_of_num 0) x) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1953
  by (import hollight TREAL_ADD_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1954
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1955
lemma TREAL_ADD_LINV: "treal_eq (treal_add (treal_neg x) x) (treal_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1956
  by (import hollight TREAL_ADD_LINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1957
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1958
lemma TREAL_MUL_SYM: "treal_eq (treal_mul x xa) (treal_mul xa x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1959
  by (import hollight TREAL_MUL_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1960
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1961
lemma TREAL_MUL_ASSOC: "treal_eq (treal_mul x (treal_mul y z)) (treal_mul (treal_mul x y) z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1962
  by (import hollight TREAL_MUL_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1963
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1964
lemma TREAL_MUL_LID: "treal_eq (treal_mul (treal_of_num 1) x) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1965
  by (import hollight TREAL_MUL_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1966
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1967
lemma TREAL_ADD_LDISTRIB: "treal_eq (treal_mul x (treal_add y z))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1968
 (treal_add (treal_mul x y) (treal_mul x z))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1969
  by (import hollight TREAL_ADD_LDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1970
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1971
lemma TREAL_LE_REFL: "treal_le x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1972
  by (import hollight TREAL_LE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1973
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1974
lemma TREAL_LE_ANTISYM: "(treal_le x y & treal_le y x) = treal_eq x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1975
  by (import hollight TREAL_LE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1976
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1977
lemma TREAL_LE_TRANS: "treal_le x y & treal_le y z ==> treal_le x z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1978
  by (import hollight TREAL_LE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1979
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1980
lemma TREAL_LE_TOTAL: "treal_le x y | treal_le y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1981
  by (import hollight TREAL_LE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1982
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1983
lemma TREAL_LE_LADD_IMP: "treal_le y z ==> treal_le (treal_add x y) (treal_add x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1984
  by (import hollight TREAL_LE_LADD_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1985
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1986
lemma TREAL_LE_MUL: "treal_le (treal_of_num 0) x & treal_le (treal_of_num 0) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1987
==> treal_le (treal_of_num 0) (treal_mul x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1988
  by (import hollight TREAL_LE_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1989
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1990
lemma TREAL_INV_0: "treal_eq (treal_inv (treal_of_num 0)) (treal_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1991
  by (import hollight TREAL_INV_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1992
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1993
lemma TREAL_MUL_LINV: "~ treal_eq x (treal_of_num 0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1994
==> treal_eq (treal_mul (treal_inv x) x) (treal_of_num 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1995
  by (import hollight TREAL_MUL_LINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1996
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  1997
lemma TREAL_OF_NUM_WELLDEF: "m = n ==> treal_eq (treal_of_num m) (treal_of_num n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1998
  by (import hollight TREAL_OF_NUM_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1999
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2000
lemma TREAL_NEG_WELLDEF: "treal_eq x1 x2 ==> treal_eq (treal_neg x1) (treal_neg x2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2001
  by (import hollight TREAL_NEG_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2002
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2003
lemma TREAL_ADD_WELLDEFR: "treal_eq x1 x2 ==> treal_eq (treal_add x1 y) (treal_add x2 y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2004
  by (import hollight TREAL_ADD_WELLDEFR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2005
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2006
lemma TREAL_ADD_WELLDEF: "treal_eq x1 x2 & treal_eq y1 y2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2007
==> treal_eq (treal_add x1 y1) (treal_add x2 y2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2008
  by (import hollight TREAL_ADD_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2009
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2010
lemma TREAL_MUL_WELLDEFR: "treal_eq x1 x2 ==> treal_eq (treal_mul x1 y) (treal_mul x2 y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2011
  by (import hollight TREAL_MUL_WELLDEFR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2012
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2013
lemma TREAL_MUL_WELLDEF: "treal_eq x1 x2 & treal_eq y1 y2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2014
==> treal_eq (treal_mul x1 y1) (treal_mul x2 y2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2015
  by (import hollight TREAL_MUL_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2016
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2017
lemma TREAL_EQ_IMP_LE: "treal_eq x y ==> treal_le x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2018
  by (import hollight TREAL_EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2019
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2020
lemma TREAL_LE_WELLDEF: "treal_eq x1 x2 & treal_eq y1 y2 ==> treal_le x1 y1 = treal_le x2 y2"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2021
  by (import hollight TREAL_LE_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2022
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2023
lemma TREAL_INV_WELLDEF: "treal_eq x y ==> treal_eq (treal_inv x) (treal_inv y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2024
  by (import hollight TREAL_INV_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2025
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2026
typedef (open) real = "{s. EX x. s = treal_eq x}"  morphisms "dest_real" "mk_real"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2027
  apply (rule light_ex_imp_nonempty[where t="treal_eq x"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2028
  by (import hollight TYDEF_real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2029
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2030
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2031
  dest_real :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2032
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2033
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2034
  mk_real :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2035
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2036
lemmas "TYDEF_real_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2037
  [where a="a :: hollight.real" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2038
   OF type_definition_real]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2039
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2040
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2041
  real_of_num :: "nat => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2042
  "real_of_num == %m. mk_real (treal_eq (treal_of_num m))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2043
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2044
lemma DEF_real_of_num: "real_of_num = (%m. mk_real (treal_eq (treal_of_num m)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2045
  by (import hollight DEF_real_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2046
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2047
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2048
  real_neg :: "hollight.real => hollight.real"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2049
  "real_neg ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2050
%x1. mk_real (%u. EX x1a. treal_eq (treal_neg x1a) u & dest_real x1 x1a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2051
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2052
lemma DEF_real_neg: "real_neg =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2053
(%x1. mk_real (%u. EX x1a. treal_eq (treal_neg x1a) u & dest_real x1 x1a))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2054
  by (import hollight DEF_real_neg)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2055
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2056
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2057
  real_add :: "hollight.real => hollight.real => hollight.real"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2058
  "real_add ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2059
%x1 y1.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2060
   mk_real
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2061
    (%u. EX x1a y1a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2062
            treal_eq (treal_add x1a y1a) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2063
            dest_real x1 x1a & dest_real y1 y1a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2064
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2065
lemma DEF_real_add: "real_add =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2066
(%x1 y1.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2067
    mk_real
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2068
     (%u. EX x1a y1a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2069
             treal_eq (treal_add x1a y1a) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2070
             dest_real x1 x1a & dest_real y1 y1a))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2071
  by (import hollight DEF_real_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2072
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2073
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2074
  real_mul :: "hollight.real => hollight.real => hollight.real"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2075
  "real_mul ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2076
%x1 y1.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2077
   mk_real
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2078
    (%u. EX x1a y1a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2079
            treal_eq (treal_mul x1a y1a) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2080
            dest_real x1 x1a & dest_real y1 y1a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2081
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2082
lemma DEF_real_mul: "real_mul =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2083
(%x1 y1.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2084
    mk_real
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2085
     (%u. EX x1a y1a.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2086
             treal_eq (treal_mul x1a y1a) u &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2087
             dest_real x1 x1a & dest_real y1 y1a))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2088
  by (import hollight DEF_real_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2089
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2090
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2091
  real_le :: "hollight.real => hollight.real => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2092
  "real_le ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2093
%x1 y1.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2094
   SOME u.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2095
      EX x1a y1a. treal_le x1a y1a = u & dest_real x1 x1a & dest_real y1 y1a"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2096
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2097
lemma DEF_real_le: "real_le =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2098
(%x1 y1.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2099
    SOME u.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2100
       EX x1a y1a.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2101
          treal_le x1a y1a = u & dest_real x1 x1a & dest_real y1 y1a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2102
  by (import hollight DEF_real_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2103
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2104
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2105
  real_inv :: "hollight.real => hollight.real"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2106
  "real_inv ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2107
%x. mk_real (%u. EX xa. treal_eq (treal_inv xa) u & dest_real x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2108
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2109
lemma DEF_real_inv: "real_inv =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2110
(%x. mk_real (%u. EX xa. treal_eq (treal_inv xa) u & dest_real x xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2111
  by (import hollight DEF_real_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2112
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2113
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2114
  real_sub :: "hollight.real => hollight.real => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2115
  "real_sub == %u ua. real_add u (real_neg ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2116
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2117
lemma DEF_real_sub: "real_sub = (%u ua. real_add u (real_neg ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2118
  by (import hollight DEF_real_sub)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2119
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2120
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2121
  real_lt :: "hollight.real => hollight.real => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2122
  "real_lt == %u ua. ~ real_le ua u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2123
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2124
lemma DEF_real_lt: "real_lt = (%u ua. ~ real_le ua u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2125
  by (import hollight DEF_real_lt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2126
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2127
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2128
  real_ge :: "hollight.real => hollight.real => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2129
  "real_ge == %u ua. real_le ua u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2130
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2131
lemma DEF_real_ge: "real_ge = (%u ua. real_le ua u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2132
  by (import hollight DEF_real_ge)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2133
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2134
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2135
  real_gt :: "hollight.real => hollight.real => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2136
  "real_gt == %u ua. real_lt ua u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2137
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2138
lemma DEF_real_gt: "real_gt = (%u ua. real_lt ua u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2139
  by (import hollight DEF_real_gt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2140
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2141
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2142
  real_abs :: "hollight.real => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2143
  "real_abs == %u. if real_le (real_of_num 0) u then u else real_neg u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2144
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2145
lemma DEF_real_abs: "real_abs = (%u. if real_le (real_of_num 0) u then u else real_neg u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2146
  by (import hollight DEF_real_abs)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2147
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2148
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2149
  real_pow :: "hollight.real => nat => hollight.real"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2150
  "real_pow ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2151
SOME real_pow.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2152
   (ALL x. real_pow x 0 = real_of_num 1) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2153
   (ALL x n. real_pow x (Suc n) = real_mul x (real_pow x n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2154
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2155
lemma DEF_real_pow: "real_pow =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2156
(SOME real_pow.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2157
    (ALL x. real_pow x 0 = real_of_num 1) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2158
    (ALL x n. real_pow x (Suc n) = real_mul x (real_pow x n)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2159
  by (import hollight DEF_real_pow)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2160
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2161
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2162
  real_div :: "hollight.real => hollight.real => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2163
  "real_div == %u ua. real_mul u (real_inv ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2164
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2165
lemma DEF_real_div: "real_div = (%u ua. real_mul u (real_inv ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2166
  by (import hollight DEF_real_div)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2167
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2168
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2169
  real_max :: "hollight.real => hollight.real => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2170
  "real_max == %u ua. if real_le u ua then ua else u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2171
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2172
lemma DEF_real_max: "real_max = (%u ua. if real_le u ua then ua else u)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2173
  by (import hollight DEF_real_max)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2174
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2175
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2176
  real_min :: "hollight.real => hollight.real => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2177
  "real_min == %u ua. if real_le u ua then u else ua"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2178
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2179
lemma DEF_real_min: "real_min = (%u ua. if real_le u ua then u else ua)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2180
  by (import hollight DEF_real_min)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2181
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2182
lemma REAL_HREAL_LEMMA1: "EX x. (ALL xa. real_le (real_of_num 0) xa = (EX y. xa = x y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2183
      (ALL y z. hreal_le y z = real_le (x y) (x z))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2184
  by (import hollight REAL_HREAL_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2185
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2186
lemma REAL_HREAL_LEMMA2: "EX x r.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2187
   (ALL xa. x (r xa) = xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2188
   (ALL xa. real_le (real_of_num 0) xa --> r (x xa) = xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2189
   (ALL x. real_le (real_of_num 0) (r x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2190
   (ALL x y. hreal_le x y = real_le (r x) (r y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2191
  by (import hollight REAL_HREAL_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2192
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2193
lemma REAL_COMPLETE_SOMEPOS: "(EX x. P x & real_le (real_of_num 0) x) & (EX M. ALL x. P x --> real_le x M)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2194
==> EX M. (ALL x. P x --> real_le x M) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2195
          (ALL M'. (ALL x. P x --> real_le x M') --> real_le M M')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2196
  by (import hollight REAL_COMPLETE_SOMEPOS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2197
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2198
lemma REAL_COMPLETE: "Ex P & (EX M. ALL x. P x --> real_le x M)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2199
==> EX M. (ALL x. P x --> real_le x M) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2200
          (ALL M'. (ALL x. P x --> real_le x M') --> real_le M M')"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2201
  by (import hollight REAL_COMPLETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2202
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2203
lemma REAL_ADD_AC: "real_add m n = real_add n m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2204
real_add (real_add m n) p = real_add m (real_add n p) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2205
real_add m (real_add n p) = real_add n (real_add m p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2206
  by (import hollight REAL_ADD_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2207
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2208
lemma REAL_ADD_RINV: "real_add x (real_neg x) = real_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2209
  by (import hollight REAL_ADD_RINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2210
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2211
lemma REAL_EQ_ADD_LCANCEL: "(real_add x y = real_add x z) = (y = z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2212
  by (import hollight REAL_EQ_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2213
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2214
lemma REAL_EQ_ADD_RCANCEL: "(real_add x z = real_add y z) = (x = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2215
  by (import hollight REAL_EQ_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2216
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2217
lemma REAL_MUL_RZERO: "real_mul x (real_of_num 0) = real_of_num 0"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2218
  by (import hollight REAL_MUL_RZERO)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2219
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2220
lemma REAL_MUL_LZERO: "real_mul (real_of_num 0) x = real_of_num 0"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2221
  by (import hollight REAL_MUL_LZERO)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2222
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2223
lemma REAL_NEG_NEG: "real_neg (real_neg x) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2224
  by (import hollight REAL_NEG_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2225
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2226
lemma REAL_MUL_RNEG: "real_mul x (real_neg y) = real_neg (real_mul x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2227
  by (import hollight REAL_MUL_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2228
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2229
lemma REAL_MUL_LNEG: "real_mul (real_neg x) y = real_neg (real_mul x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2230
  by (import hollight REAL_MUL_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2231
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2232
lemma REAL_NEG_ADD: "real_neg (real_add x y) = real_add (real_neg x) (real_neg y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2233
  by (import hollight REAL_NEG_ADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2234
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2235
lemma REAL_ADD_RID: "real_add x (real_of_num 0) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2236
  by (import hollight REAL_ADD_RID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2237
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2238
lemma REAL_NEG_0: "real_neg (real_of_num 0) = real_of_num 0"
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2239
  by (import hollight REAL_NEG_0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2240
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2241
lemma REAL_LE_LNEG: "real_le (real_neg x) y = real_le (real_of_num 0) (real_add x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2242
  by (import hollight REAL_LE_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2243
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2244
lemma REAL_LE_NEG2: "real_le (real_neg x) (real_neg y) = real_le y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2245
  by (import hollight REAL_LE_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2246
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2247
lemma REAL_LE_RNEG: "real_le x (real_neg y) = real_le (real_add x y) (real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2248
  by (import hollight REAL_LE_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2249
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2250
lemma REAL_OF_NUM_POW: "real_pow (real_of_num x) n = real_of_num (x ^ n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2251
  by (import hollight REAL_OF_NUM_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2252
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2253
lemma REAL_POW_NEG: "real_pow (real_neg x) n =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2254
(if even n then real_pow x n else real_neg (real_pow x n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2255
  by (import hollight REAL_POW_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2256
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2257
lemma REAL_ABS_NUM: "real_abs (real_of_num x) = real_of_num x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2258
  by (import hollight REAL_ABS_NUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2259
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2260
lemma REAL_ABS_NEG: "real_abs (real_neg x) = real_abs x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2261
  by (import hollight REAL_ABS_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2262
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2263
lemma REAL_LTE_TOTAL: "real_lt x xa | real_le xa x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2264
  by (import hollight REAL_LTE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2265
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2266
lemma REAL_LET_TOTAL: "real_le x xa | real_lt xa x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2267
  by (import hollight REAL_LET_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2268
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2269
lemma REAL_LT_IMP_LE: "real_lt x y ==> real_le x y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2270
  by (import hollight REAL_LT_IMP_LE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2271
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2272
lemma REAL_LTE_TRANS: "real_lt x y & real_le y z ==> real_lt x z"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2273
  by (import hollight REAL_LTE_TRANS)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2274
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2275
lemma REAL_LET_TRANS: "real_le x y & real_lt y z ==> real_lt x z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2276
  by (import hollight REAL_LET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2277
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2278
lemma REAL_LT_TRANS: "real_lt x y & real_lt y z ==> real_lt x z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2279
  by (import hollight REAL_LT_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2280
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2281
lemma REAL_LE_ADD: "real_le (real_of_num 0) x & real_le (real_of_num 0) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2282
==> real_le (real_of_num 0) (real_add x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2283
  by (import hollight REAL_LE_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2284
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2285
lemma REAL_LTE_ANTISYM: "~ (real_lt x y & real_le y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2286
  by (import hollight REAL_LTE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2287
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2288
lemma REAL_SUB_LE: "real_le (real_of_num 0) (real_sub x xa) = real_le xa x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2289
  by (import hollight REAL_SUB_LE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2290
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2291
lemma REAL_NEG_SUB: "real_neg (real_sub x xa) = real_sub xa x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2292
  by (import hollight REAL_NEG_SUB)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2293
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2294
lemma REAL_LE_LT: "real_le x xa = (real_lt x xa | x = xa)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2295
  by (import hollight REAL_LE_LT)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2296
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2297
lemma REAL_SUB_LT: "real_lt (real_of_num 0) (real_sub x xa) = real_lt xa x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2298
  by (import hollight REAL_SUB_LT)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2299
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2300
lemma REAL_NOT_LT: "(~ real_lt x xa) = real_le xa x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2301
  by (import hollight REAL_NOT_LT)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2302
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2303
lemma REAL_SUB_0: "(real_sub x y = real_of_num 0) = (x = y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2304
  by (import hollight REAL_SUB_0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2305
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2306
lemma REAL_LT_LE: "real_lt x y = (real_le x y & x ~= y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2307
  by (import hollight REAL_LT_LE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2308
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2309
lemma REAL_LT_REFL: "~ real_lt x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2310
  by (import hollight REAL_LT_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2311
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2312
lemma REAL_LTE_ADD: "real_lt (real_of_num 0) x & real_le (real_of_num 0) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2313
==> real_lt (real_of_num 0) (real_add x y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2314
  by (import hollight REAL_LTE_ADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2315
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2316
lemma REAL_LET_ADD: "real_le (real_of_num 0) x & real_lt (real_of_num 0) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2317
==> real_lt (real_of_num 0) (real_add x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2318
  by (import hollight REAL_LET_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2319
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2320
lemma REAL_LT_ADD: "real_lt (real_of_num 0) x & real_lt (real_of_num 0) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2321
==> real_lt (real_of_num 0) (real_add x y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2322
  by (import hollight REAL_LT_ADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2323
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2324
lemma REAL_ENTIRE: "(real_mul x y = real_of_num 0) = (x = real_of_num 0 | y = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2325
  by (import hollight REAL_ENTIRE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2326
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2327
lemma REAL_LE_NEGTOTAL: "real_le (real_of_num 0) x | real_le (real_of_num 0) (real_neg x)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2328
  by (import hollight REAL_LE_NEGTOTAL)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2329
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2330
lemma REAL_LE_SQUARE: "real_le (real_of_num 0) (real_mul x x)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2331
  by (import hollight REAL_LE_SQUARE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2332
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2333
lemma REAL_MUL_RID: "real_mul x (real_of_num 1) = x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2334
  by (import hollight REAL_MUL_RID)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2335
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2336
lemma REAL_POW_2: "real_pow x 2 = real_mul x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2337
  by (import hollight REAL_POW_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2338
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2339
lemma REAL_POLY_CLAUSES: "(ALL x y z. real_add x (real_add y z) = real_add (real_add x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2340
(ALL x y. real_add x y = real_add y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2341
(ALL x. real_add (real_of_num 0) x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2342
(ALL x y z. real_mul x (real_mul y z) = real_mul (real_mul x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2343
(ALL x y. real_mul x y = real_mul y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2344
(ALL x. real_mul (real_of_num 1) x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2345
(ALL x. real_mul (real_of_num 0) x = real_of_num 0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2346
(ALL x xa xb.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2347
    real_mul x (real_add xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2348
    real_add (real_mul x xa) (real_mul x xb)) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2349
(ALL x. real_pow x 0 = real_of_num 1) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2350
(ALL x xa. real_pow x (Suc xa) = real_mul x (real_pow x xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2351
  by (import hollight REAL_POLY_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2352
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2353
lemma REAL_POLY_NEG_CLAUSES: "(ALL x. real_neg x = real_mul (real_neg (real_of_num 1)) x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2354
(ALL x xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2355
    real_sub x xa = real_add x (real_mul (real_neg (real_of_num 1)) xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2356
  by (import hollight REAL_POLY_NEG_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2357
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2358
lemma REAL_POS: "real_le (real_of_num 0) (real_of_num x)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2359
  by (import hollight REAL_POS)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2360
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2361
lemma REAL_OF_NUM_LT: "real_lt (real_of_num x) (real_of_num xa) = (x < xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2362
  by (import hollight REAL_OF_NUM_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2363
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2364
lemma REAL_OF_NUM_GE: "real_ge (real_of_num x) (real_of_num xa) = (xa <= x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2365
  by (import hollight REAL_OF_NUM_GE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2366
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2367
lemma REAL_OF_NUM_GT: "real_gt (real_of_num x) (real_of_num xa) = (xa < x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2368
  by (import hollight REAL_OF_NUM_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2369
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2370
lemma REAL_OF_NUM_MAX: "real_max (real_of_num x) (real_of_num xa) = real_of_num (max x xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2371
  by (import hollight REAL_OF_NUM_MAX)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2372
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2373
lemma REAL_OF_NUM_MIN: "real_min (real_of_num x) (real_of_num xa) = real_of_num (min x xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2374
  by (import hollight REAL_OF_NUM_MIN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2375
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2376
lemma REAL_OF_NUM_SUC: "real_add (real_of_num x) (real_of_num 1) = real_of_num (Suc x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2377
  by (import hollight REAL_OF_NUM_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2378
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2379
lemma REAL_OF_NUM_SUB: "m <= n ==> real_sub (real_of_num n) (real_of_num m) = real_of_num (n - m)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2380
  by (import hollight REAL_OF_NUM_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2381
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2382
lemma REAL_MUL_AC: "real_mul m n = real_mul n m &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2383
real_mul (real_mul m n) p = real_mul m (real_mul n p) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2384
real_mul m (real_mul n p) = real_mul n (real_mul m p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2385
  by (import hollight REAL_MUL_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2386
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2387
lemma REAL_ADD_RDISTRIB: "real_mul (real_add x y) z = real_add (real_mul x z) (real_mul y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2388
  by (import hollight REAL_ADD_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2389
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2390
lemma REAL_LT_LADD_IMP: "real_lt y z ==> real_lt (real_add x y) (real_add x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2391
  by (import hollight REAL_LT_LADD_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2392
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2393
lemma REAL_LT_MUL: "real_lt (real_of_num 0) x & real_lt (real_of_num 0) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2394
==> real_lt (real_of_num 0) (real_mul x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2395
  by (import hollight REAL_LT_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2396
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2397
lemma REAL_EQ_ADD_LCANCEL_0: "(real_add x y = x) = (y = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2398
  by (import hollight REAL_EQ_ADD_LCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2399
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2400
lemma REAL_EQ_ADD_RCANCEL_0: "(real_add x y = y) = (x = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2401
  by (import hollight REAL_EQ_ADD_RCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2402
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2403
lemma REAL_LNEG_UNIQ: "(real_add x y = real_of_num 0) = (x = real_neg y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2404
  by (import hollight REAL_LNEG_UNIQ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2405
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2406
lemma REAL_RNEG_UNIQ: "(real_add x y = real_of_num 0) = (y = real_neg x)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2407
  by (import hollight REAL_RNEG_UNIQ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2408
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2409
lemma REAL_NEG_LMUL: "real_neg (real_mul x y) = real_mul (real_neg x) y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2410
  by (import hollight REAL_NEG_LMUL)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2411
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2412
lemma REAL_NEG_RMUL: "real_neg (real_mul x y) = real_mul x (real_neg y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2413
  by (import hollight REAL_NEG_RMUL)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2414
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2415
lemma REAL_NEGNEG: "real_neg (real_neg x) = x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2416
  by (import hollight REAL_NEGNEG)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2417
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2418
lemma REAL_NEG_MUL2: "real_mul (real_neg x) (real_neg y) = real_mul x y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2419
  by (import hollight REAL_NEG_MUL2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2420
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2421
lemma REAL_LT_LADD: "real_lt (real_add x y) (real_add x z) = real_lt y z"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2422
  by (import hollight REAL_LT_LADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2423
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2424
lemma REAL_LT_RADD: "real_lt (real_add x z) (real_add y z) = real_lt x y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2425
  by (import hollight REAL_LT_RADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2426
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2427
lemma REAL_LT_ANTISYM: "~ (real_lt x y & real_lt y x)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2428
  by (import hollight REAL_LT_ANTISYM)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2429
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2430
lemma REAL_LT_GT: "real_lt x y ==> ~ real_lt y x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2431
  by (import hollight REAL_LT_GT)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2432
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2433
lemma REAL_NOT_EQ: "(x ~= y) = (real_lt x y | real_lt y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2434
  by (import hollight REAL_NOT_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2435
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2436
lemma REAL_LET_ANTISYM: "~ (real_le x y & real_lt y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2437
  by (import hollight REAL_LET_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2438
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2439
lemma REAL_NEG_LT0: "real_lt (real_neg x) (real_of_num 0) = real_lt (real_of_num 0) x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2440
  by (import hollight REAL_NEG_LT0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2441
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2442
lemma REAL_NEG_GT0: "real_lt (real_of_num 0) (real_neg x) = real_lt x (real_of_num 0)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2443
  by (import hollight REAL_NEG_GT0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2444
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2445
lemma REAL_NEG_LE0: "real_le (real_neg x) (real_of_num 0) = real_le (real_of_num 0) x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2446
  by (import hollight REAL_NEG_LE0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2447
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2448
lemma REAL_NEG_GE0: "real_le (real_of_num 0) (real_neg x) = real_le x (real_of_num 0)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2449
  by (import hollight REAL_NEG_GE0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2450
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2451
lemma REAL_LT_TOTAL: "x = y | real_lt x y | real_lt y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2452
  by (import hollight REAL_LT_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2453
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2454
lemma REAL_LT_NEGTOTAL: "x = real_of_num 0 |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2455
real_lt (real_of_num 0) x | real_lt (real_of_num 0) (real_neg x)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2456
  by (import hollight REAL_LT_NEGTOTAL)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2457
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2458
lemma REAL_LE_01: "real_le (real_of_num 0) (real_of_num 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2459
  by (import hollight REAL_LE_01)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2460
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2461
lemma REAL_LT_01: "real_lt (real_of_num 0) (real_of_num 1)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2462
  by (import hollight REAL_LT_01)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2463
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2464
lemma REAL_LE_LADD: "real_le (real_add x y) (real_add x z) = real_le y z"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2465
  by (import hollight REAL_LE_LADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2466
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2467
lemma REAL_LE_RADD: "real_le (real_add x z) (real_add y z) = real_le x y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2468
  by (import hollight REAL_LE_RADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2469
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2470
lemma REAL_LT_ADD2: "real_lt w x & real_lt y z ==> real_lt (real_add w y) (real_add x z)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2471
  by (import hollight REAL_LT_ADD2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2472
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2473
lemma REAL_LE_ADD2: "real_le w x & real_le y z ==> real_le (real_add w y) (real_add x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2474
  by (import hollight REAL_LE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2475
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2476
lemma REAL_LT_LNEG: "real_lt (real_neg x) xa = real_lt (real_of_num 0) (real_add x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2477
  by (import hollight REAL_LT_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2478
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2479
lemma REAL_LT_RNEG: "real_lt x (real_neg xa) = real_lt (real_add x xa) (real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2480
  by (import hollight REAL_LT_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2481
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2482
lemma REAL_LT_ADDNEG: "real_lt y (real_add x (real_neg z)) = real_lt (real_add y z) x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2483
  by (import hollight REAL_LT_ADDNEG)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2484
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2485
lemma REAL_LT_ADDNEG2: "real_lt (real_add x (real_neg y)) z = real_lt x (real_add z y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2486
  by (import hollight REAL_LT_ADDNEG2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2487
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2488
lemma REAL_LT_ADD1: "real_le x y ==> real_lt x (real_add y (real_of_num 1))"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2489
  by (import hollight REAL_LT_ADD1)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2490
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2491
lemma REAL_SUB_ADD: "real_add (real_sub x y) y = x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2492
  by (import hollight REAL_SUB_ADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2493
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2494
lemma REAL_SUB_ADD2: "real_add y (real_sub x y) = x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2495
  by (import hollight REAL_SUB_ADD2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2496
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2497
lemma REAL_SUB_REFL: "real_sub x x = real_of_num 0"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2498
  by (import hollight REAL_SUB_REFL)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2499
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2500
lemma REAL_LE_DOUBLE: "real_le (real_of_num 0) (real_add x x) = real_le (real_of_num 0) x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2501
  by (import hollight REAL_LE_DOUBLE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2502
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2503
lemma REAL_LE_NEGL: "real_le (real_neg x) x = real_le (real_of_num 0) x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2504
  by (import hollight REAL_LE_NEGL)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2505
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2506
lemma REAL_LE_NEGR: "real_le x (real_neg x) = real_le x (real_of_num 0)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2507
  by (import hollight REAL_LE_NEGR)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2508
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2509
lemma REAL_NEG_EQ_0: "(real_neg x = real_of_num 0) = (x = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2510
  by (import hollight REAL_NEG_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2511
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2512
lemma REAL_ADD_SUB: "real_sub (real_add x y) x = y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2513
  by (import hollight REAL_ADD_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2514
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2515
lemma REAL_NEG_EQ: "(real_neg x = y) = (x = real_neg y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2516
  by (import hollight REAL_NEG_EQ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2517
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2518
lemma REAL_NEG_MINUS1: "real_neg x = real_mul (real_neg (real_of_num 1)) x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2519
  by (import hollight REAL_NEG_MINUS1)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2520
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2521
lemma REAL_LT_IMP_NE: "real_lt x y ==> x ~= y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2522
  by (import hollight REAL_LT_IMP_NE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2523
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2524
lemma REAL_LE_ADDR: "real_le x (real_add x y) = real_le (real_of_num 0) y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2525
  by (import hollight REAL_LE_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2526
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2527
lemma REAL_LE_ADDL: "real_le y (real_add x y) = real_le (real_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2528
  by (import hollight REAL_LE_ADDL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2529
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2530
lemma REAL_LT_ADDR: "real_lt x (real_add x y) = real_lt (real_of_num 0) y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2531
  by (import hollight REAL_LT_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2532
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2533
lemma REAL_LT_ADDL: "real_lt y (real_add x y) = real_lt (real_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2534
  by (import hollight REAL_LT_ADDL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2535
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2536
lemma REAL_SUB_SUB: "real_sub (real_sub x y) x = real_neg y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2537
  by (import hollight REAL_SUB_SUB)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2538
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2539
lemma REAL_LT_ADD_SUB: "real_lt (real_add x y) z = real_lt x (real_sub z y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2540
  by (import hollight REAL_LT_ADD_SUB)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2541
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2542
lemma REAL_LT_SUB_RADD: "real_lt (real_sub x y) z = real_lt x (real_add z y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2543
  by (import hollight REAL_LT_SUB_RADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2544
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2545
lemma REAL_LT_SUB_LADD: "real_lt x (real_sub y z) = real_lt (real_add x z) y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2546
  by (import hollight REAL_LT_SUB_LADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2547
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2548
lemma REAL_LE_SUB_LADD: "real_le x (real_sub y z) = real_le (real_add x z) y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2549
  by (import hollight REAL_LE_SUB_LADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2550
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2551
lemma REAL_LE_SUB_RADD: "real_le (real_sub x y) z = real_le x (real_add z y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2552
  by (import hollight REAL_LE_SUB_RADD)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2553
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2554
lemma REAL_LT_NEG: "real_lt (real_neg x) (real_neg y) = real_lt y x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2555
  by (import hollight REAL_LT_NEG)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2556
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2557
lemma REAL_LE_NEG: "real_le (real_neg x) (real_neg y) = real_le y x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2558
  by (import hollight REAL_LE_NEG)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2559
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2560
lemma REAL_ADD2_SUB2: "real_sub (real_add a b) (real_add c d) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2561
real_add (real_sub a c) (real_sub b d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2562
  by (import hollight REAL_ADD2_SUB2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2563
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2564
lemma REAL_SUB_LZERO: "real_sub (real_of_num 0) x = real_neg x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2565
  by (import hollight REAL_SUB_LZERO)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2566
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2567
lemma REAL_SUB_RZERO: "real_sub x (real_of_num 0) = x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2568
  by (import hollight REAL_SUB_RZERO)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2569
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2570
lemma REAL_LET_ADD2: "real_le w x & real_lt y z ==> real_lt (real_add w y) (real_add x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2571
  by (import hollight REAL_LET_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2572
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2573
lemma REAL_LTE_ADD2: "real_lt w x & real_le y z ==> real_lt (real_add w y) (real_add x z)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2574
  by (import hollight REAL_LTE_ADD2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2575
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2576
lemma REAL_SUB_LNEG: "real_sub (real_neg x) y = real_neg (real_add x y)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2577
  by (import hollight REAL_SUB_LNEG)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2578
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2579
lemma REAL_SUB_RNEG: "real_sub x (real_neg y) = real_add x y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2580
  by (import hollight REAL_SUB_RNEG)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2581
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2582
lemma REAL_SUB_NEG2: "real_sub (real_neg x) (real_neg y) = real_sub y x"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2583
  by (import hollight REAL_SUB_NEG2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2584
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2585
lemma REAL_SUB_TRIANGLE: "real_add (real_sub a b) (real_sub b c) = real_sub a c"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2586
  by (import hollight REAL_SUB_TRIANGLE)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2587
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2588
lemma REAL_EQ_SUB_LADD: "(x = real_sub y z) = (real_add x z = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2589
  by (import hollight REAL_EQ_SUB_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2590
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2591
lemma REAL_EQ_SUB_RADD: "(real_sub x y = z) = (x = real_add z y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2592
  by (import hollight REAL_EQ_SUB_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2593
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2594
lemma REAL_SUB_SUB2: "real_sub x (real_sub x y) = y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2595
  by (import hollight REAL_SUB_SUB2)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2596
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2597
lemma REAL_ADD_SUB2: "real_sub x (real_add x y) = real_neg y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2598
  by (import hollight REAL_ADD_SUB2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2599
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2600
lemma REAL_EQ_IMP_LE: "x = y ==> real_le x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2601
  by (import hollight REAL_EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2602
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2603
lemma REAL_POS_NZ: "real_lt (real_of_num 0) x ==> x ~= real_of_num 0"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2604
  by (import hollight REAL_POS_NZ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2605
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2606
lemma REAL_DIFFSQ: "real_mul (real_add x y) (real_sub x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2607
real_sub (real_mul x x) (real_mul y y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2608
  by (import hollight REAL_DIFFSQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2609
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2610
lemma REAL_EQ_NEG2: "(real_neg x = real_neg y) = (x = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2611
  by (import hollight REAL_EQ_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2612
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2613
lemma REAL_LT_NEG2: "real_lt (real_neg x) (real_neg y) = real_lt y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2614
  by (import hollight REAL_LT_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2615
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2616
lemma REAL_SUB_LDISTRIB: "real_mul x (real_sub y z) = real_sub (real_mul x y) (real_mul x z)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2617
  by (import hollight REAL_SUB_LDISTRIB)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2618
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2619
lemma REAL_SUB_RDISTRIB: "real_mul (real_sub x y) z = real_sub (real_mul x z) (real_mul y z)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2620
  by (import hollight REAL_SUB_RDISTRIB)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2621
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2622
lemma REAL_ABS_ZERO: "(real_abs x = real_of_num 0) = (x = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2623
  by (import hollight REAL_ABS_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2624
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2625
lemma REAL_ABS_0: "real_abs (real_of_num 0) = real_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2626
  by (import hollight REAL_ABS_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2627
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2628
lemma REAL_ABS_1: "real_abs (real_of_num 1) = real_of_num 1"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2629
  by (import hollight REAL_ABS_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2630
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2631
lemma REAL_ABS_TRIANGLE: "real_le (real_abs (real_add x y)) (real_add (real_abs x) (real_abs y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2632
  by (import hollight REAL_ABS_TRIANGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2633
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2634
lemma REAL_ABS_TRIANGLE_LE: "real_le (real_add (real_abs x) (real_abs (real_sub y x))) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2635
==> real_le (real_abs y) z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2636
  by (import hollight REAL_ABS_TRIANGLE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2637
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2638
lemma REAL_ABS_TRIANGLE_LT: "real_lt (real_add (real_abs x) (real_abs (real_sub y x))) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2639
==> real_lt (real_abs y) z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2640
  by (import hollight REAL_ABS_TRIANGLE_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2641
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2642
lemma REAL_ABS_POS: "real_le (real_of_num 0) (real_abs x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2643
  by (import hollight REAL_ABS_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2644
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2645
lemma REAL_ABS_SUB: "real_abs (real_sub x y) = real_abs (real_sub y x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2646
  by (import hollight REAL_ABS_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2647
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2648
lemma REAL_ABS_NZ: "(x ~= real_of_num 0) = real_lt (real_of_num 0) (real_abs x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2649
  by (import hollight REAL_ABS_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2650
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2651
lemma REAL_ABS_ABS: "real_abs (real_abs x) = real_abs x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2652
  by (import hollight REAL_ABS_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2653
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2654
lemma REAL_ABS_LE: "real_le x (real_abs x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2655
  by (import hollight REAL_ABS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2656
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2657
lemma REAL_ABS_REFL: "(real_abs x = x) = real_le (real_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2658
  by (import hollight REAL_ABS_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2659
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2660
lemma REAL_ABS_BETWEEN: "(real_lt (real_of_num 0) d &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2661
 real_lt (real_sub x d) y & real_lt y (real_add x d)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2662
real_lt (real_abs (real_sub y x)) d"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2663
  by (import hollight REAL_ABS_BETWEEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2664
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2665
lemma REAL_ABS_BOUND: "real_lt (real_abs (real_sub x y)) d ==> real_lt y (real_add x d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2666
  by (import hollight REAL_ABS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2667
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2668
lemma REAL_ABS_STILLNZ: "real_lt (real_abs (real_sub x y)) (real_abs y) ==> x ~= real_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2669
  by (import hollight REAL_ABS_STILLNZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2670
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2671
lemma REAL_ABS_CASES: "x = real_of_num 0 | real_lt (real_of_num 0) (real_abs x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2672
  by (import hollight REAL_ABS_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2673
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2674
lemma REAL_ABS_BETWEEN1: "real_lt x z & real_lt (real_abs (real_sub y x)) (real_sub z x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2675
==> real_lt y z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2676
  by (import hollight REAL_ABS_BETWEEN1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2677
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2678
lemma REAL_ABS_SIGN: "real_lt (real_abs (real_sub x y)) y ==> real_lt (real_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2679
  by (import hollight REAL_ABS_SIGN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2680
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2681
lemma REAL_ABS_SIGN2: "real_lt (real_abs (real_sub x y)) (real_neg y) ==> real_lt x (real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2682
  by (import hollight REAL_ABS_SIGN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2683
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2684
lemma REAL_ABS_CIRCLE: "real_lt (real_abs h) (real_sub (real_abs y) (real_abs x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2685
==> real_lt (real_abs (real_add x h)) (real_abs y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2686
  by (import hollight REAL_ABS_CIRCLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2687
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2688
lemma REAL_SUB_ABS: "real_le (real_sub (real_abs x) (real_abs y)) (real_abs (real_sub x y))"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2689
  by (import hollight REAL_SUB_ABS)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2690
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2691
lemma REAL_ABS_SUB_ABS: "real_le (real_abs (real_sub (real_abs x) (real_abs y)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2692
 (real_abs (real_sub x y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2693
  by (import hollight REAL_ABS_SUB_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2694
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2695
lemma REAL_ABS_BETWEEN2: "real_lt x0 y0 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2696
real_lt (real_mul (real_of_num 2) (real_abs (real_sub x x0)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2697
 (real_sub y0 x0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2698
real_lt (real_mul (real_of_num 2) (real_abs (real_sub y y0)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2699
 (real_sub y0 x0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2700
==> real_lt x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2701
  by (import hollight REAL_ABS_BETWEEN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2702
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2703
lemma REAL_ABS_BOUNDS: "real_le (real_abs x) k = (real_le (real_neg k) x & real_le x k)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2704
  by (import hollight REAL_ABS_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2705
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2706
lemma REAL_BOUNDS_LE: "(real_le (real_neg k) x & real_le x k) = real_le (real_abs x) k"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2707
  by (import hollight REAL_BOUNDS_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2708
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2709
lemma REAL_BOUNDS_LT: "(real_lt (real_neg k) x & real_lt x k) = real_lt (real_abs x) k"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2710
  by (import hollight REAL_BOUNDS_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2711
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2712
lemma REAL_MIN_MAX: "real_min x y = real_neg (real_max (real_neg x) (real_neg y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2713
  by (import hollight REAL_MIN_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2714
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2715
lemma REAL_MAX_MIN: "real_max x y = real_neg (real_min (real_neg x) (real_neg y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2716
  by (import hollight REAL_MAX_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2717
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2718
lemma REAL_MAX_MAX: "real_le x (real_max x y) & real_le y (real_max x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2719
  by (import hollight REAL_MAX_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2720
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2721
lemma REAL_MIN_MIN: "real_le (real_min x y) x & real_le (real_min x y) y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2722
  by (import hollight REAL_MIN_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2723
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2724
lemma REAL_MAX_SYM: "real_max x y = real_max y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2725
  by (import hollight REAL_MAX_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2726
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2727
lemma REAL_MIN_SYM: "real_min x y = real_min y x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2728
  by (import hollight REAL_MIN_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2729
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2730
lemma REAL_LE_MAX: "real_le z (real_max x y) = (real_le z x | real_le z y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2731
  by (import hollight REAL_LE_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2732
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2733
lemma REAL_LE_MIN: "real_le z (real_min x y) = (real_le z x & real_le z y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2734
  by (import hollight REAL_LE_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2735
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2736
lemma REAL_LT_MAX: "real_lt z (real_max x y) = (real_lt z x | real_lt z y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2737
  by (import hollight REAL_LT_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2738
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2739
lemma REAL_LT_MIN: "real_lt z (real_min x y) = (real_lt z x & real_lt z y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2740
  by (import hollight REAL_LT_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2741
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2742
lemma REAL_MAX_LE: "real_le (real_max x y) z = (real_le x z & real_le y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2743
  by (import hollight REAL_MAX_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2744
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2745
lemma REAL_MIN_LE: "real_le (real_min x y) z = (real_le x z | real_le y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2746
  by (import hollight REAL_MIN_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2747
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2748
lemma REAL_MAX_LT: "real_lt (real_max x y) z = (real_lt x z & real_lt y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2749
  by (import hollight REAL_MAX_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2750
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2751
lemma REAL_MIN_LT: "real_lt (real_min x y) z = (real_lt x z | real_lt y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2752
  by (import hollight REAL_MIN_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2753
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2754
lemma REAL_MAX_ASSOC: "real_max x (real_max y z) = real_max (real_max x y) z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2755
  by (import hollight REAL_MAX_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2756
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2757
lemma REAL_MIN_ASSOC: "real_min x (real_min y z) = real_min (real_min x y) z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2758
  by (import hollight REAL_MIN_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2759
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2760
lemma REAL_MAX_ACI: "real_max x y = real_max y x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2761
real_max (real_max x y) z = real_max x (real_max y z) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2762
real_max x (real_max y z) = real_max y (real_max x z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2763
real_max x x = x & real_max x (real_max x y) = real_max x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2764
  by (import hollight REAL_MAX_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2765
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2766
lemma REAL_MIN_ACI: "real_min x y = real_min y x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2767
real_min (real_min x y) z = real_min x (real_min y z) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2768
real_min x (real_min y z) = real_min y (real_min x z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2769
real_min x x = x & real_min x (real_min x y) = real_min x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2770
  by (import hollight REAL_MIN_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2771
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2772
lemma REAL_ABS_MUL: "real_abs (real_mul x y) = real_mul (real_abs x) (real_abs y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2773
  by (import hollight REAL_ABS_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2774
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2775
lemma REAL_POW_LE: "real_le (real_of_num 0) x ==> real_le (real_of_num 0) (real_pow x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2776
  by (import hollight REAL_POW_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2777
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2778
lemma REAL_POW_LT: "real_lt (real_of_num 0) x ==> real_lt (real_of_num 0) (real_pow x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2779
  by (import hollight REAL_POW_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2780
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2781
lemma REAL_ABS_POW: "real_abs (real_pow x n) = real_pow (real_abs x) n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2782
  by (import hollight REAL_ABS_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2783
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2784
lemma REAL_LE_LMUL: "real_le (real_of_num 0) x & real_le xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2785
==> real_le (real_mul x xa) (real_mul x xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2786
  by (import hollight REAL_LE_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2787
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2788
lemma REAL_LE_RMUL: "real_le x y & real_le (real_of_num 0) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2789
==> real_le (real_mul x z) (real_mul y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2790
  by (import hollight REAL_LE_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2791
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2792
lemma REAL_LT_LMUL: "real_lt (real_of_num 0) x & real_lt xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2793
==> real_lt (real_mul x xa) (real_mul x xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2794
  by (import hollight REAL_LT_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2795
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2796
lemma REAL_LT_RMUL: "real_lt x y & real_lt (real_of_num 0) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2797
==> real_lt (real_mul x z) (real_mul y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2798
  by (import hollight REAL_LT_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2799
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2800
lemma REAL_EQ_MUL_LCANCEL: "(real_mul x y = real_mul x z) = (x = real_of_num 0 | y = z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2801
  by (import hollight REAL_EQ_MUL_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2802
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2803
lemma REAL_EQ_MUL_RCANCEL: "(real_mul x xb = real_mul xa xb) = (x = xa | xb = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2804
  by (import hollight REAL_EQ_MUL_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2805
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2806
lemma REAL_MUL_LINV_UNIQ: "real_mul x y = real_of_num 1 ==> real_inv y = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2807
  by (import hollight REAL_MUL_LINV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2808
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2809
lemma REAL_MUL_RINV_UNIQ: "real_mul x xa = real_of_num 1 ==> real_inv x = xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2810
  by (import hollight REAL_MUL_RINV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2811
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2812
lemma REAL_INV_INV: "real_inv (real_inv x) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2813
  by (import hollight REAL_INV_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2814
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2815
lemma REAL_EQ_INV2: "(real_inv x = real_inv y) = (x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2816
  by (import hollight REAL_EQ_INV2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2817
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2818
lemma REAL_INV_EQ_0: "(real_inv x = real_of_num 0) = (x = real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2819
  by (import hollight REAL_INV_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2820
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2821
lemma REAL_LT_INV: "real_lt (real_of_num 0) x ==> real_lt (real_of_num 0) (real_inv x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2822
  by (import hollight REAL_LT_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2823
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2824
lemma REAL_LT_INV_EQ: "real_lt (real_of_num 0) (real_inv x) = real_lt (real_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2825
  by (import hollight REAL_LT_INV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2826
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2827
lemma REAL_INV_NEG: "real_inv (real_neg x) = real_neg (real_inv x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2828
  by (import hollight REAL_INV_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2829
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2830
lemma REAL_LE_INV_EQ: "real_le (real_of_num 0) (real_inv x) = real_le (real_of_num 0) x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2831
  by (import hollight REAL_LE_INV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2832
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2833
lemma REAL_LE_INV: "real_le (real_of_num 0) x ==> real_le (real_of_num 0) (real_inv x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2834
  by (import hollight REAL_LE_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2835
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2836
lemma REAL_MUL_RINV: "x ~= real_of_num 0 ==> real_mul x (real_inv x) = real_of_num 1"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2837
  by (import hollight REAL_MUL_RINV)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2838
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2839
lemma REAL_INV_1: "real_inv (real_of_num 1) = real_of_num 1"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2840
  by (import hollight REAL_INV_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2841
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2842
lemma REAL_INV_EQ_1: "(real_inv x = real_of_num 1) = (x = real_of_num 1)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2843
  by (import hollight REAL_INV_EQ_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2844
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2845
lemma REAL_DIV_1: "real_div x (real_of_num 1) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2846
  by (import hollight REAL_DIV_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2847
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2848
lemma REAL_DIV_REFL: "x ~= real_of_num 0 ==> real_div x x = real_of_num 1"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2849
  by (import hollight REAL_DIV_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2850
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2851
lemma REAL_DIV_RMUL: "xa ~= real_of_num 0 ==> real_mul (real_div x xa) xa = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2852
  by (import hollight REAL_DIV_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2853
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2854
lemma REAL_DIV_LMUL: "xa ~= real_of_num 0 ==> real_mul xa (real_div x xa) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2855
  by (import hollight REAL_DIV_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2856
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2857
lemma REAL_ABS_INV: "real_abs (real_inv x) = real_inv (real_abs x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2858
  by (import hollight REAL_ABS_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2859
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2860
lemma REAL_ABS_DIV: "real_abs (real_div x xa) = real_div (real_abs x) (real_abs xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2861
  by (import hollight REAL_ABS_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2862
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2863
lemma REAL_INV_MUL: "real_inv (real_mul x y) = real_mul (real_inv x) (real_inv y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2864
  by (import hollight REAL_INV_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2865
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2866
lemma REAL_INV_DIV: "real_inv (real_div x xa) = real_div xa x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2867
  by (import hollight REAL_INV_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2868
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2869
lemma REAL_POW_MUL: "real_pow (real_mul x y) n = real_mul (real_pow x n) (real_pow y n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2870
  by (import hollight REAL_POW_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2871
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2872
lemma REAL_POW_INV: "real_pow (real_inv x) n = real_inv (real_pow x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2873
  by (import hollight REAL_POW_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2874
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2875
lemma REAL_INV_POW: "real_inv (real_pow x xa) = real_pow (real_inv x) xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2876
  by (import hollight REAL_INV_POW)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2877
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2878
lemma REAL_POW_DIV: "real_pow (real_div x xa) xb = real_div (real_pow x xb) (real_pow xa xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2879
  by (import hollight REAL_POW_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2880
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2881
lemma REAL_POW_ADD: "real_pow x (m + n) = real_mul (real_pow x m) (real_pow x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2882
  by (import hollight REAL_POW_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2883
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2884
lemma REAL_POW_NZ: "x ~= real_of_num 0 ==> real_pow x n ~= real_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2885
  by (import hollight REAL_POW_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2886
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2887
lemma REAL_POW_SUB: "x ~= real_of_num 0 & m <= n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2888
==> real_pow x (n - m) = real_div (real_pow x n) (real_pow x m)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2889
  by (import hollight REAL_POW_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2890
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2891
lemma REAL_LT_IMP_NZ: "real_lt (real_of_num 0) x ==> x ~= real_of_num 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2892
  by (import hollight REAL_LT_IMP_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2893
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2894
lemma REAL_LT_LCANCEL_IMP: "real_lt (real_of_num 0) x & real_lt (real_mul x y) (real_mul x z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2895
==> real_lt y z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2896
  by (import hollight REAL_LT_LCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2897
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2898
lemma REAL_LT_RCANCEL_IMP: "real_lt (real_of_num 0) xb & real_lt (real_mul x xb) (real_mul xa xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2899
==> real_lt x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2900
  by (import hollight REAL_LT_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2901
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2902
lemma REAL_LE_LCANCEL_IMP: "real_lt (real_of_num 0) x & real_le (real_mul x y) (real_mul x z)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2903
==> real_le y z"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2904
  by (import hollight REAL_LE_LCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2905
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2906
lemma REAL_LE_RCANCEL_IMP: "real_lt (real_of_num 0) xb & real_le (real_mul x xb) (real_mul xa xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2907
==> real_le x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2908
  by (import hollight REAL_LE_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2909
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2910
lemma REAL_LE_RMUL_EQ: "real_lt (real_of_num 0) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2911
==> real_le (real_mul x z) (real_mul y z) = real_le x y"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2912
  by (import hollight REAL_LE_RMUL_EQ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2913
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2914
lemma REAL_LE_LMUL_EQ: "real_lt (real_of_num 0) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2915
==> real_le (real_mul z x) (real_mul z y) = real_le x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2916
  by (import hollight REAL_LE_LMUL_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2917
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2918
lemma REAL_LT_RMUL_EQ: "real_lt (real_of_num 0) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2919
==> real_lt (real_mul x xb) (real_mul xa xb) = real_lt x xa"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2920
  by (import hollight REAL_LT_RMUL_EQ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2921
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2922
lemma REAL_LT_LMUL_EQ: "real_lt (real_of_num 0) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2923
==> real_lt (real_mul xb x) (real_mul xb xa) = real_lt x xa"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2924
  by (import hollight REAL_LT_LMUL_EQ)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  2925
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2926
lemma REAL_LE_MUL_EQ: "(ALL x y.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2927
    real_lt (real_of_num 0) x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2928
    real_le (real_of_num 0) (real_mul x y) = real_le (real_of_num 0) y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2929
(ALL x y.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2930
    real_lt (real_of_num 0) y -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2931
    real_le (real_of_num 0) (real_mul x y) = real_le (real_of_num 0) x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2932
  by (import hollight REAL_LE_MUL_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2933
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2934
lemma REAL_LT_MUL_EQ: "(ALL x y.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2935
    real_lt (real_of_num 0) x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2936
    real_lt (real_of_num 0) (real_mul x y) = real_lt (real_of_num 0) y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2937
(ALL x y.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2938
    real_lt (real_of_num 0) y -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2939
    real_lt (real_of_num 0) (real_mul x y) = real_lt (real_of_num 0) x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2940
  by (import hollight REAL_LT_MUL_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2941
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2942
lemma REAL_MUL_POS_LT: "real_lt (real_of_num 0) (real_mul x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2943
(real_lt (real_of_num 0) x & real_lt (real_of_num 0) y |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2944
 real_lt x (real_of_num 0) & real_lt y (real_of_num 0))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2945
  by (import hollight REAL_MUL_POS_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2946
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2947
lemma REAL_MUL_POS_LE: "real_le (real_of_num 0) (real_mul x xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2948
(x = real_of_num 0 |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2949
 xa = real_of_num 0 |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2950
 real_lt (real_of_num 0) x & real_lt (real_of_num 0) xa |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2951
 real_lt x (real_of_num 0) & real_lt xa (real_of_num 0))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2952
  by (import hollight REAL_MUL_POS_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2953
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2954
lemma REAL_LE_RDIV_EQ: "real_lt (real_of_num 0) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2955
==> real_le x (real_div y z) = real_le (real_mul x z) y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2956
  by (import hollight REAL_LE_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2957
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2958
lemma REAL_LE_LDIV_EQ: "real_lt (real_of_num 0) z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2959
==> real_le (real_div x z) y = real_le x (real_mul y z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2960
  by (import hollight REAL_LE_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2961
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2962
lemma REAL_LT_RDIV_EQ: "real_lt (real_of_num 0) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2963
==> real_lt x (real_div xa xb) = real_lt (real_mul x xb) xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2964
  by (import hollight REAL_LT_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2965
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2966
lemma REAL_LT_LDIV_EQ: "real_lt (real_of_num 0) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2967
==> real_lt (real_div x xb) xa = real_lt x (real_mul xa xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2968
  by (import hollight REAL_LT_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2969
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2970
lemma REAL_EQ_RDIV_EQ: "real_lt (real_of_num 0) xb ==> (x = real_div xa xb) = (real_mul x xb = xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2971
  by (import hollight REAL_EQ_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2972
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2973
lemma REAL_EQ_LDIV_EQ: "real_lt (real_of_num 0) xb ==> (real_div x xb = xa) = (x = real_mul xa xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2974
  by (import hollight REAL_EQ_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2975
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2976
lemma REAL_LT_DIV2_EQ: "real_lt (real_of_num 0) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2977
==> real_lt (real_div x xb) (real_div xa xb) = real_lt x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2978
  by (import hollight REAL_LT_DIV2_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2979
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2980
lemma REAL_LE_DIV2_EQ: "real_lt (real_of_num 0) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2981
==> real_le (real_div x xb) (real_div xa xb) = real_le x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2982
  by (import hollight REAL_LE_DIV2_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2983
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2984
lemma REAL_MUL_2: "real_mul (real_of_num 2) x = real_add x x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2985
  by (import hollight REAL_MUL_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2986
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2987
lemma REAL_POW_EQ_0: "(real_pow x n = real_of_num 0) = (x = real_of_num 0 & n ~= 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2988
  by (import hollight REAL_POW_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2989
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2990
lemma REAL_LE_MUL2: "real_le (real_of_num 0) w &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2991
real_le w x & real_le (real_of_num 0) y & real_le y z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2992
==> real_le (real_mul w y) (real_mul x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2993
  by (import hollight REAL_LE_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2994
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2995
lemma REAL_LT_MUL2: "real_le (real_of_num 0) w &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2996
real_lt w x & real_le (real_of_num 0) y & real_lt y z
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  2997
==> real_lt (real_mul w y) (real_mul x z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2998
  by (import hollight REAL_LT_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2999
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3000
lemma REAL_LT_SQUARE: "real_lt (real_of_num 0) (real_mul x x) = (x ~= real_of_num 0)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3001
  by (import hollight REAL_LT_SQUARE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3002
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3003
lemma REAL_POW_1: "real_pow x 1 = x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3004
  by (import hollight REAL_POW_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3005
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3006
lemma REAL_POW_ONE: "real_pow (real_of_num 1) n = real_of_num 1"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3007
  by (import hollight REAL_POW_ONE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3008
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3009
lemma REAL_LT_INV2: "real_lt (real_of_num 0) x & real_lt x y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3010
==> real_lt (real_inv y) (real_inv x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3011
  by (import hollight REAL_LT_INV2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3012
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3013
lemma REAL_LE_INV2: "real_lt (real_of_num 0) x & real_le x y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3014
==> real_le (real_inv y) (real_inv x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3015
  by (import hollight REAL_LE_INV2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3016
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3017
lemma REAL_LT_LINV: "real_lt (real_of_num 0) y & real_lt (real_inv y) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3018
==> real_lt (real_inv x) y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3019
  by (import hollight REAL_LT_LINV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3020
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3021
lemma REAL_LT_RINV: "real_lt (real_of_num 0) x & real_lt x (real_inv y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3022
==> real_lt y (real_inv x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3023
  by (import hollight REAL_LT_RINV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3024
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3025
lemma REAL_LE_LINV: "real_lt (real_of_num 0) y & real_le (real_inv y) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3026
==> real_le (real_inv x) y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3027
  by (import hollight REAL_LE_LINV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3028
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3029
lemma REAL_LE_RINV: "real_lt (real_of_num 0) x & real_le x (real_inv y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3030
==> real_le y (real_inv x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3031
  by (import hollight REAL_LE_RINV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3032
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3033
lemma REAL_INV_LE_1: "real_le (real_of_num 1) x ==> real_le (real_inv x) (real_of_num 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3034
  by (import hollight REAL_INV_LE_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3035
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3036
lemma REAL_INV_1_LE: "real_lt (real_of_num 0) x & real_le x (real_of_num 1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3037
==> real_le (real_of_num 1) (real_inv x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3038
  by (import hollight REAL_INV_1_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3039
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3040
lemma REAL_INV_LT_1: "real_lt (real_of_num 1) x ==> real_lt (real_inv x) (real_of_num 1)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3041
  by (import hollight REAL_INV_LT_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3042
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3043
lemma REAL_INV_1_LT: "real_lt (real_of_num 0) x & real_lt x (real_of_num 1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3044
==> real_lt (real_of_num 1) (real_inv x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3045
  by (import hollight REAL_INV_1_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3046
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3047
lemma REAL_SUB_INV: "x ~= real_of_num 0 & xa ~= real_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3048
==> real_sub (real_inv x) (real_inv xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3049
    real_div (real_sub xa x) (real_mul x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3050
  by (import hollight REAL_SUB_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3051
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3052
lemma REAL_DOWN: "real_lt (real_of_num 0) d ==> EX x. real_lt (real_of_num 0) x & real_lt x d"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3053
  by (import hollight REAL_DOWN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3054
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3055
lemma REAL_DOWN2: "real_lt (real_of_num 0) d1 & real_lt (real_of_num 0) d2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3056
==> EX e. real_lt (real_of_num 0) e & real_lt e d1 & real_lt e d2"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3057
  by (import hollight REAL_DOWN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3058
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3059
lemma REAL_POW_LE2: "real_le (real_of_num 0) x & real_le x y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3060
==> real_le (real_pow x n) (real_pow y n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3061
  by (import hollight REAL_POW_LE2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3062
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3063
lemma REAL_POW_LE_1: "real_le (real_of_num 1) x ==> real_le (real_of_num 1) (real_pow x n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3064
  by (import hollight REAL_POW_LE_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3065
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3066
lemma REAL_POW_1_LE: "real_le (real_of_num 0) x & real_le x (real_of_num 1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3067
==> real_le (real_pow x n) (real_of_num 1)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3068
  by (import hollight REAL_POW_1_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3069
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3070
lemma REAL_POW_MONO: "real_le (real_of_num 1) x & m <= n ==> real_le (real_pow x m) (real_pow x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3071
  by (import hollight REAL_POW_MONO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3072
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3073
lemma REAL_POW_LT2: "n ~= 0 & real_le (real_of_num 0) x & real_lt x y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3074
==> real_lt (real_pow x n) (real_pow y n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3075
  by (import hollight REAL_POW_LT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3076
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3077
lemma REAL_POW_LT_1: "n ~= 0 & real_lt (real_of_num 1) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3078
==> real_lt (real_of_num 1) (real_pow x n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3079
  by (import hollight REAL_POW_LT_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3080
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3081
lemma REAL_POW_1_LT: "n ~= 0 & real_le (real_of_num 0) x & real_lt x (real_of_num 1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3082
==> real_lt (real_pow x n) (real_of_num 1)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3083
  by (import hollight REAL_POW_1_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3084
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3085
lemma REAL_POW_MONO_LT: "real_lt (real_of_num 1) x & m < n ==> real_lt (real_pow x m) (real_pow x n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3086
  by (import hollight REAL_POW_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3087
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3088
lemma REAL_POW_POW: "real_pow (real_pow x m) n = real_pow x (m * n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3089
  by (import hollight REAL_POW_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3090
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3091
lemma REAL_EQ_RCANCEL_IMP: "z ~= real_of_num 0 & real_mul x z = real_mul y z ==> x = y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3092
  by (import hollight REAL_EQ_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3093
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3094
lemma REAL_EQ_LCANCEL_IMP: "xb ~= real_of_num 0 & real_mul xb x = real_mul xb xa ==> x = xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3095
  by (import hollight REAL_EQ_LCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3096
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3097
lemma REAL_LT_DIV: "real_lt (real_of_num 0) x & real_lt (real_of_num 0) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3098
==> real_lt (real_of_num 0) (real_div x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3099
  by (import hollight REAL_LT_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3100
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3101
lemma REAL_LE_DIV: "real_le (real_of_num 0) x & real_le (real_of_num 0) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3102
==> real_le (real_of_num 0) (real_div x xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3103
  by (import hollight REAL_LE_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3104
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3105
lemma REAL_DIV_POW2: "x ~= real_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3106
==> real_div (real_pow x m) (real_pow x n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3107
    (if n <= m then real_pow x (m - n) else real_inv (real_pow x (n - m)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3108
  by (import hollight REAL_DIV_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3109
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3110
lemma REAL_DIV_POW2_ALT: "x ~= real_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3111
==> real_div (real_pow x m) (real_pow x n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3112
    (if n < m then real_pow x (m - n) else real_inv (real_pow x (n - m)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3113
  by (import hollight REAL_DIV_POW2_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3114
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3115
lemma REAL_LT_POW2: "real_lt (real_of_num 0) (real_pow (real_of_num 2) x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3116
  by (import hollight REAL_LT_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3117
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3118
lemma REAL_LE_POW2: "real_le (real_of_num 1) (real_pow (real_of_num 2) n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3119
  by (import hollight REAL_LE_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3120
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3121
lemma REAL_POW2_ABS: "real_pow (real_abs x) 2 = real_pow x 2"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3122
  by (import hollight REAL_POW2_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3123
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3124
lemma REAL_LE_SQUARE_ABS: "real_le (real_abs x) (real_abs y) = real_le (real_pow x 2) (real_pow y 2)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3125
  by (import hollight REAL_LE_SQUARE_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3126
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3127
lemma REAL_LT_SQUARE_ABS: "real_lt (real_abs x) (real_abs xa) = real_lt (real_pow x 2) (real_pow xa 2)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3128
  by (import hollight REAL_LT_SQUARE_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3129
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3130
lemma REAL_EQ_SQUARE_ABS: "(real_abs x = real_abs xa) = (real_pow x 2 = real_pow xa 2)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3131
  by (import hollight REAL_EQ_SQUARE_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3132
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3133
lemma REAL_LE_POW_2: "real_le (real_of_num 0) (real_pow x 2)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3134
  by (import hollight REAL_LE_POW_2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3135
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3136
lemma REAL_SOS_EQ_0: "(real_add (real_pow x 2) (real_pow y 2) = real_of_num 0) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3137
(x = real_of_num 0 & y = real_of_num 0)"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  3138
  by (import hollight REAL_SOS_EQ_0)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  3139
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3140
lemma REAL_POW_ZERO: "real_pow (real_of_num 0) n =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3141
(if n = 0 then real_of_num 1 else real_of_num 0)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3142
  by (import hollight REAL_POW_ZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3143
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3144
lemma REAL_POW_MONO_INV: "real_le (real_of_num 0) x & real_le x (real_of_num 1) & n <= m
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3145
==> real_le (real_pow x m) (real_pow x n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3146
  by (import hollight REAL_POW_MONO_INV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3147
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3148
lemma REAL_POW_LE2_REV: "n ~= 0 & real_le (real_of_num 0) y & real_le (real_pow x n) (real_pow y n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3149
==> real_le x y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3150
  by (import hollight REAL_POW_LE2_REV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3151
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3152
lemma REAL_POW_LT2_REV: "real_le (real_of_num 0) y & real_lt (real_pow x n) (real_pow y n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3153
==> real_lt x y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3154
  by (import hollight REAL_POW_LT2_REV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3155
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3156
lemma REAL_POW_EQ: "x ~= 0 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3157
real_le (real_of_num 0) xa &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3158
real_le (real_of_num 0) xb & real_pow xa x = real_pow xb x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3159
==> xa = xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3160
  by (import hollight REAL_POW_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3161
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3162
lemma REAL_POW_EQ_ABS: "n ~= 0 & real_pow x n = real_pow y n ==> real_abs x = real_abs y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3163
  by (import hollight REAL_POW_EQ_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3164
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3165
lemma REAL_POW_EQ_1_IMP: "n ~= 0 & real_pow x n = real_of_num 1 ==> real_abs x = real_of_num 1"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3166
  by (import hollight REAL_POW_EQ_1_IMP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3167
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3168
lemma REAL_POW_EQ_1: "(real_pow x n = real_of_num 1) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3169
(real_abs x = real_of_num 1 & (real_lt x (real_of_num 0) --> even n) |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3170
 n = 0)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3171
  by (import hollight REAL_POW_EQ_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3172
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3173
lemma REAL_POW_LT2_ODD: "real_lt x y & odd n ==> real_lt (real_pow x n) (real_pow y n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3174
  by (import hollight REAL_POW_LT2_ODD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3175
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3176
lemma REAL_POW_LE2_ODD: "real_le xa xb & odd x ==> real_le (real_pow xa x) (real_pow xb x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3177
  by (import hollight REAL_POW_LE2_ODD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3178
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3179
lemma REAL_POW_LT2_ODD_EQ: "odd n ==> real_lt (real_pow x n) (real_pow y n) = real_lt x y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3180
  by (import hollight REAL_POW_LT2_ODD_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3181
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3182
lemma REAL_POW_LE2_ODD_EQ: "odd n ==> real_le (real_pow x n) (real_pow y n) = real_le x y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3183
  by (import hollight REAL_POW_LE2_ODD_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3184
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3185
lemma REAL_POW_EQ_ODD_EQ: "odd x ==> (real_pow xa x = real_pow xb x) = (xa = xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3186
  by (import hollight REAL_POW_EQ_ODD_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3187
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3188
lemma REAL_POW_EQ_ODD: "odd n & real_pow x n = real_pow y n ==> x = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3189
  by (import hollight REAL_POW_EQ_ODD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3190
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3191
lemma REAL_POW_EQ_EQ: "(real_pow x n = real_pow y n) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3192
(if even n then n = 0 | real_abs x = real_abs y else x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3193
  by (import hollight REAL_POW_EQ_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3194
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3195
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3196
  real_sgn :: "hollight.real => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3197
  "real_sgn ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3198
%u. if real_lt (real_of_num 0) u then real_of_num 1
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3199
    else if real_lt u (real_of_num 0) then real_neg (real_of_num 1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3200
         else real_of_num 0"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3201
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3202
lemma DEF_real_sgn: "real_sgn =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3203
(%u. if real_lt (real_of_num 0) u then real_of_num 1
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3204
     else if real_lt u (real_of_num 0) then real_neg (real_of_num 1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3205
          else real_of_num 0)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3206
  by (import hollight DEF_real_sgn)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3207
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3208
lemma REAL_SGN_0: "real_sgn (real_of_num 0) = real_of_num 0"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3209
  by (import hollight REAL_SGN_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3210
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3211
lemma REAL_SGN_NEG: "real_sgn (real_neg x) = real_neg (real_sgn x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3212
  by (import hollight REAL_SGN_NEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3213
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3214
lemma REAL_SGN_ABS: "real_mul (real_sgn x) (real_abs x) = x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3215
  by (import hollight REAL_SGN_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3216
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3217
lemma REAL_ABS_SGN: "real_abs (real_sgn x) = real_sgn (real_abs x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3218
  by (import hollight REAL_ABS_SGN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3219
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3220
lemma REAL_SGN: "real_sgn x = real_div x (real_abs x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3221
  by (import hollight REAL_SGN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3222
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3223
lemma REAL_SGN_MUL: "real_sgn (real_mul x xa) = real_mul (real_sgn x) (real_sgn xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3224
  by (import hollight REAL_SGN_MUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3225
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3226
lemma REAL_SGN_INV: "real_sgn (real_inv x) = real_sgn x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3227
  by (import hollight REAL_SGN_INV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3228
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3229
lemma REAL_SGN_DIV: "real_sgn (real_div x xa) = real_div (real_sgn x) (real_sgn xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3230
  by (import hollight REAL_SGN_DIV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3231
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3232
lemma REAL_WLOG_LE: "(ALL x y. P x y = P y x) & (ALL x y. real_le x y --> P x y) ==> P x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3233
  by (import hollight REAL_WLOG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3234
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3235
lemma REAL_WLOG_LT: "(ALL x. P x x) & (ALL x y. P x y = P y x) & (ALL x y. real_lt x y --> P x y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3236
==> P x xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3237
  by (import hollight REAL_WLOG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3238
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3239
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3240
  DECIMAL :: "nat => nat => hollight.real"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3241
  "DECIMAL == %u ua. real_div (real_of_num u) (real_of_num ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3242
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3243
lemma DEF_DECIMAL: "DECIMAL = (%u ua. real_div (real_of_num u) (real_of_num ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3244
  by (import hollight DEF_DECIMAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3245
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3246
lemma RAT_LEMMA1: "y1 ~= real_of_num 0 & y2 ~= real_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3247
==> real_add (real_div x1 y1) (real_div x2 y2) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3248
    real_mul (real_add (real_mul x1 y2) (real_mul x2 y1))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3249
     (real_mul (real_inv y1) (real_inv y2))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3250
  by (import hollight RAT_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3251
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3252
lemma RAT_LEMMA2: "real_lt (real_of_num 0) y1 & real_lt (real_of_num 0) y2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3253
==> real_add (real_div x1 y1) (real_div x2 y2) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3254
    real_mul (real_add (real_mul x1 y2) (real_mul x2 y1))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3255
     (real_mul (real_inv y1) (real_inv y2))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3256
  by (import hollight RAT_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3257
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3258
lemma RAT_LEMMA3: "real_lt (real_of_num 0) y1 & real_lt (real_of_num 0) y2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3259
==> real_sub (real_div x1 y1) (real_div x2 y2) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3260
    real_mul (real_sub (real_mul x1 y2) (real_mul x2 y1))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3261
     (real_mul (real_inv y1) (real_inv y2))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3262
  by (import hollight RAT_LEMMA3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3263
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3264
lemma RAT_LEMMA4: "real_lt (real_of_num 0) y1 & real_lt (real_of_num 0) y2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3265
==> real_le (real_div x1 y1) (real_div x2 y2) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3266
    real_le (real_mul x1 y2) (real_mul x2 y1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3267
  by (import hollight RAT_LEMMA4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3268
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3269
lemma RAT_LEMMA5: "real_lt (real_of_num 0) y1 & real_lt (real_of_num 0) y2
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3270
==> (real_div x1 y1 = real_div x2 y2) = (real_mul x1 y2 = real_mul x2 y1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3271
  by (import hollight RAT_LEMMA5)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3272
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3273
lemma REAL_INTEGRAL: "(ALL x. real_mul (real_of_num 0) x = real_of_num 0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3274
(ALL x y z. (real_add x y = real_add x z) = (y = z)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3275
(ALL w x y z.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3276
    (real_add (real_mul w y) (real_mul x z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3277
     real_add (real_mul w z) (real_mul x y)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3278
    (w = x | y = z))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3279
  by (import hollight REAL_INTEGRAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3280
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3281
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3282
  integer :: "hollight.real => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3283
  "integer == %u. EX n. real_abs u = real_of_num n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3284
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3285
lemma DEF_integer: "integer = (%u. EX n. real_abs u = real_of_num n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3286
  by (import hollight DEF_integer)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3287
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3288
lemma is_int: "integer x = (EX n. x = real_of_num n | x = real_neg (real_of_num n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3289
  by (import hollight is_int)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3290
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3291
typedef (open) int = "Collect integer"  morphisms "real_of_int" "int_of_real"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3292
  apply (rule light_ex_imp_nonempty[where t="Eps integer"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3293
  by (import hollight TYDEF_int)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3294
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3295
syntax
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3296
  real_of_int :: _ 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3297
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3298
syntax
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3299
  int_of_real :: _ 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3300
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3301
lemmas "TYDEF_int_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3302
  [where a="a :: hollight.int" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3303
   OF type_definition_int]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3304
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3305
lemma dest_int_rep: "EX n. hollight.real_of_int x = real_of_num n |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3306
      hollight.real_of_int x = real_neg (real_of_num n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3307
  by (import hollight dest_int_rep)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3308
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3309
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3310
  int_le :: "hollight.int => hollight.int => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3311
  "int_le == %u ua. real_le (hollight.real_of_int u) (hollight.real_of_int ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3312
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3313
lemma DEF_int_le: "int_le = (%u ua. real_le (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3314
  by (import hollight DEF_int_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3315
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3316
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3317
  int_lt :: "hollight.int => hollight.int => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3318
  "int_lt == %u ua. real_lt (hollight.real_of_int u) (hollight.real_of_int ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3319
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3320
lemma DEF_int_lt: "int_lt = (%u ua. real_lt (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3321
  by (import hollight DEF_int_lt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3322
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3323
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3324
  int_ge :: "hollight.int => hollight.int => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3325
  "int_ge == %u ua. real_ge (hollight.real_of_int u) (hollight.real_of_int ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3326
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3327
lemma DEF_int_ge: "int_ge = (%u ua. real_ge (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3328
  by (import hollight DEF_int_ge)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3329
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3330
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3331
  int_gt :: "hollight.int => hollight.int => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3332
  "int_gt == %u ua. real_gt (hollight.real_of_int u) (hollight.real_of_int ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3333
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3334
lemma DEF_int_gt: "int_gt = (%u ua. real_gt (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3335
  by (import hollight DEF_int_gt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3336
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3337
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3338
  int_of_num :: "nat => hollight.int"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3339
  "int_of_num == %u. int_of_real (real_of_num u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3340
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3341
lemma DEF_int_of_num: "int_of_num = (%u. int_of_real (real_of_num u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3342
  by (import hollight DEF_int_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3343
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3344
lemma int_of_num_th: "hollight.real_of_int (int_of_num x) = real_of_num x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3345
  by (import hollight int_of_num_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3346
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3347
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3348
  int_neg :: "hollight.int => hollight.int"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3349
  "int_neg == %u. int_of_real (real_neg (hollight.real_of_int u))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3350
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3351
lemma DEF_int_neg: "int_neg = (%u. int_of_real (real_neg (hollight.real_of_int u)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3352
  by (import hollight DEF_int_neg)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3353
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3354
lemma int_neg_th: "hollight.real_of_int (int_neg x) = real_neg (hollight.real_of_int x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3355
  by (import hollight int_neg_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3356
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3357
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3358
  int_add :: "hollight.int => hollight.int => hollight.int"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3359
  "int_add ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3360
%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3361
   int_of_real (real_add (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3362
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3363
lemma DEF_int_add: "int_add =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3364
(%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3365
    int_of_real
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3366
     (real_add (hollight.real_of_int u) (hollight.real_of_int ua)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3367
  by (import hollight DEF_int_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3368
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3369
lemma int_add_th: "hollight.real_of_int (int_add x xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3370
real_add (hollight.real_of_int x) (hollight.real_of_int xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3371
  by (import hollight int_add_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3372
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3373
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3374
  int_sub :: "hollight.int => hollight.int => hollight.int"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3375
  "int_sub ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3376
%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3377
   int_of_real (real_sub (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3378
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3379
lemma DEF_int_sub: "int_sub =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3380
(%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3381
    int_of_real
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3382
     (real_sub (hollight.real_of_int u) (hollight.real_of_int ua)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3383
  by (import hollight DEF_int_sub)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3384
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3385
lemma int_sub_th: "hollight.real_of_int (int_sub x xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3386
real_sub (hollight.real_of_int x) (hollight.real_of_int xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3387
  by (import hollight int_sub_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3388
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3389
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3390
  int_mul :: "hollight.int => hollight.int => hollight.int"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3391
  "int_mul ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3392
%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3393
   int_of_real (real_mul (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3394
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3395
lemma DEF_int_mul: "int_mul =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3396
(%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3397
    int_of_real
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3398
     (real_mul (hollight.real_of_int u) (hollight.real_of_int ua)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3399
  by (import hollight DEF_int_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3400
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3401
lemma int_mul_th: "hollight.real_of_int (int_mul x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3402
real_mul (hollight.real_of_int x) (hollight.real_of_int y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3403
  by (import hollight int_mul_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3404
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3405
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3406
  int_abs :: "hollight.int => hollight.int"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3407
  "int_abs == %u. int_of_real (real_abs (hollight.real_of_int u))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3408
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3409
lemma DEF_int_abs: "int_abs = (%u. int_of_real (real_abs (hollight.real_of_int u)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3410
  by (import hollight DEF_int_abs)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3411
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3412
lemma int_abs_th: "hollight.real_of_int (int_abs x) = real_abs (hollight.real_of_int x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3413
  by (import hollight int_abs_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3414
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3415
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3416
  int_sgn :: "hollight.int => hollight.int"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3417
  "int_sgn == %u. int_of_real (real_sgn (hollight.real_of_int u))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3418
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3419
lemma DEF_int_sgn: "int_sgn = (%u. int_of_real (real_sgn (hollight.real_of_int u)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3420
  by (import hollight DEF_int_sgn)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3421
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3422
lemma int_sgn_th: "hollight.real_of_int (int_sgn x) = real_sgn (hollight.real_of_int x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3423
  by (import hollight int_sgn_th)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3424
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3425
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3426
  int_max :: "hollight.int => hollight.int => hollight.int"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3427
  "int_max ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3428
%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3429
   int_of_real (real_max (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3430
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3431
lemma DEF_int_max: "int_max =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3432
(%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3433
    int_of_real
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3434
     (real_max (hollight.real_of_int u) (hollight.real_of_int ua)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3435
  by (import hollight DEF_int_max)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3436
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3437
lemma int_max_th: "hollight.real_of_int (int_max x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3438
real_max (hollight.real_of_int x) (hollight.real_of_int y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3439
  by (import hollight int_max_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3440
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3441
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3442
  int_min :: "hollight.int => hollight.int => hollight.int"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3443
  "int_min ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3444
%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3445
   int_of_real (real_min (hollight.real_of_int u) (hollight.real_of_int ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3446
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3447
lemma DEF_int_min: "int_min =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3448
(%u ua.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3449
    int_of_real
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3450
     (real_min (hollight.real_of_int u) (hollight.real_of_int ua)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3451
  by (import hollight DEF_int_min)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3452
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3453
lemma int_min_th: "hollight.real_of_int (int_min x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3454
real_min (hollight.real_of_int x) (hollight.real_of_int y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3455
  by (import hollight int_min_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3456
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3457
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3458
  int_pow :: "hollight.int => nat => hollight.int"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3459
  "int_pow == %u ua. int_of_real (real_pow (hollight.real_of_int u) ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3460
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3461
lemma DEF_int_pow: "int_pow = (%u ua. int_of_real (real_pow (hollight.real_of_int u) ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3462
  by (import hollight DEF_int_pow)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3463
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3464
lemma int_pow_th: "hollight.real_of_int (int_pow x xa) = real_pow (hollight.real_of_int x) xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3465
  by (import hollight int_pow_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3466
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3467
lemma INT_IMAGE: "(EX n. x = int_of_num n) | (EX n. x = int_neg (int_of_num n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3468
  by (import hollight INT_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3469
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3470
lemma INT_LT_DISCRETE: "int_lt x y = int_le (int_add x (int_of_num 1)) y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3471
  by (import hollight INT_LT_DISCRETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3472
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3473
lemma INT_GT_DISCRETE: "int_gt x xa = int_ge x (int_add xa (int_of_num 1))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3474
  by (import hollight INT_GT_DISCRETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3475
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3476
lemma INT_FORALL_POS: "(ALL n. P (int_of_num n)) = (ALL i. int_le (int_of_num 0) i --> P i)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3477
  by (import hollight INT_FORALL_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3478
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3479
lemma INT_EXISTS_POS: "(EX n. P (int_of_num n)) = (EX i. int_le (int_of_num 0) i & P i)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3480
  by (import hollight INT_EXISTS_POS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3481
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3482
lemma INT_FORALL_ABS: "(ALL n. x (int_of_num n)) = (ALL xa. x (int_abs xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3483
  by (import hollight INT_FORALL_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3484
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3485
lemma INT_EXISTS_ABS: "(EX n. P (int_of_num n)) = (EX x. P (int_abs x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3486
  by (import hollight INT_EXISTS_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3487
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3488
lemma INT_ABS_MUL_1: "(int_abs (int_mul x y) = int_of_num 1) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3489
(int_abs x = int_of_num 1 & int_abs y = int_of_num 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3490
  by (import hollight INT_ABS_MUL_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3491
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3492
lemma INT_WOP: "(EX x. int_le (int_of_num 0) x & P x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3493
(EX x. int_le (int_of_num 0) x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3494
       P x & (ALL y. int_le (int_of_num 0) y & P y --> int_le x y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3495
  by (import hollight INT_WOP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3496
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3497
lemma INT_POW: "int_pow x 0 = int_of_num 1 &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3498
(ALL xa. int_pow x (Suc xa) = int_mul x (int_pow x xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3499
  by (import hollight INT_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3500
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3501
lemma INT_ABS: "int_abs x = (if int_le (int_of_num 0) x then x else int_neg x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3502
  by (import hollight INT_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3503
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3504
lemma INT_GE: "int_ge x xa = int_le xa x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3505
  by (import hollight INT_GE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3506
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3507
lemma INT_GT: "int_gt x xa = int_lt xa x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3508
  by (import hollight INT_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3509
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3510
lemma INT_LT: "int_lt x xa = (~ int_le xa x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3511
  by (import hollight INT_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3512
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3513
lemma INT_ARCH: "d ~= int_of_num 0 ==> EX c. int_lt x (int_mul c d)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3514
  by (import hollight INT_ARCH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3515
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3516
lemma INT_DIVMOD_EXIST_0: "EX x xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3517
   if n = int_of_num 0 then x = int_of_num 0 & xa = m
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3518
   else int_le (int_of_num 0) xa &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3519
        int_lt xa (int_abs n) & m = int_add (int_mul x n) xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3520
  by (import hollight INT_DIVMOD_EXIST_0)
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3521
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3522
consts
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3523
  div :: "hollight.int => hollight.int => hollight.int" ("div")
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3524
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3525
defs
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3526
  div_def: "div ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3527
SOME q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3528
   EX r. ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3529
            if n = int_of_num 0 then q m n = int_of_num 0 & r m n = m
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3530
            else int_le (int_of_num 0) (r m n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3531
                 int_lt (r m n) (int_abs n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3532
                 m = int_add (int_mul (q m n) n) (r m n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3533
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3534
lemma DEF_div: "div =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3535
(SOME q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3536
    EX r. ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3537
             if n = int_of_num 0 then q m n = int_of_num 0 & r m n = m
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3538
             else int_le (int_of_num 0) (r m n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3539
                  int_lt (r m n) (int_abs n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3540
                  m = int_add (int_mul (q m n) n) (r m n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3541
  by (import hollight DEF_div)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3542
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3543
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3544
  rem :: "hollight.int => hollight.int => hollight.int"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3545
  "rem ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3546
SOME r.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3547
   ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3548
      if n = int_of_num 0 then div m n = int_of_num 0 & r m n = m
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3549
      else int_le (int_of_num 0) (r m n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3550
           int_lt (r m n) (int_abs n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3551
           m = int_add (int_mul (div m n) n) (r m n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3552
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3553
lemma DEF_rem: "rem =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3554
(SOME r.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3555
    ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3556
       if n = int_of_num 0 then div m n = int_of_num 0 & r m n = m
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3557
       else int_le (int_of_num 0) (r m n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3558
            int_lt (r m n) (int_abs n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3559
            m = int_add (int_mul (div m n) n) (r m n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3560
  by (import hollight DEF_rem)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3561
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3562
lemma INT_DIVISION: "n ~= int_of_num 0
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3563
==> m = int_add (int_mul (div m n) n) (rem m n) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3564
    int_le (int_of_num 0) (rem m n) & int_lt (rem m n) (int_abs n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3565
  by (import hollight INT_DIVISION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3566
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3567
lemma sth: "(ALL x y z. int_add x (int_add y z) = int_add (int_add x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3568
(ALL x y. int_add x y = int_add y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3569
(ALL x. int_add (int_of_num 0) x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3570
(ALL x y z. int_mul x (int_mul y z) = int_mul (int_mul x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3571
(ALL x y. int_mul x y = int_mul y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3572
(ALL x. int_mul (int_of_num 1) x = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3573
(ALL x. int_mul (int_of_num 0) x = int_of_num 0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3574
(ALL x y z. int_mul x (int_add y z) = int_add (int_mul x y) (int_mul x z)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3575
(ALL x. int_pow x 0 = int_of_num 1) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3576
(ALL x xa. int_pow x (Suc xa) = int_mul x (int_pow x xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3577
  by (import hollight sth)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3578
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3579
lemma INT_INTEGRAL: "(ALL x. int_mul (int_of_num 0) x = int_of_num 0) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3580
(ALL x y z. (int_add x y = int_add x z) = (y = z)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3581
(ALL w x y z.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3582
    (int_add (int_mul w y) (int_mul x z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3583
     int_add (int_mul w z) (int_mul x y)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3584
    (w = x | y = z))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3585
  by (import hollight INT_INTEGRAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3586
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3587
lemma INT_DIVMOD_UNIQ: "m = int_add (int_mul q n) r & int_le (int_of_num 0) r & int_lt r (int_abs n)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3588
==> div m n = q & rem m n = r"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3589
  by (import hollight INT_DIVMOD_UNIQ)
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3590
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3591
consts
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3592
  eqeq :: "'A => 'A => ('A => 'A => bool) => bool" 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3593
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3594
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3595
  eqeq_def: "hollight.eqeq == %(u::'A) (ua::'A) ub::'A => 'A => bool. ub u ua"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3596
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3597
lemma DEF__equal__equal_: "hollight.eqeq = (%(u::'A) (ua::'A) ub::'A => 'A => bool. ub u ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3598
  by (import hollight DEF__equal__equal_)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3599
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3600
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3601
  real_mod :: "hollight.real => hollight.real => hollight.real => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3602
  "real_mod == %u ua ub. EX q. integer q & real_sub ua ub = real_mul q u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3603
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3604
lemma DEF_real_mod: "real_mod = (%u ua ub. EX q. integer q & real_sub ua ub = real_mul q u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3605
  by (import hollight DEF_real_mod)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3606
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3607
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3608
  int_divides :: "hollight.int => hollight.int => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3609
  "int_divides == %u ua. EX x. ua = int_mul u x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3610
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3611
lemma DEF_int_divides: "int_divides = (%u ua. EX x. ua = int_mul u x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3612
  by (import hollight DEF_int_divides)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3613
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3614
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3615
  int_mod :: "hollight.int => hollight.int => hollight.int => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3616
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3617
defs
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3618
  int_mod_def: "hollight.int_mod == %u ua ub. int_divides u (int_sub ua ub)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3619
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3620
lemma DEF_int_mod: "hollight.int_mod = (%u ua ub. int_divides u (int_sub ua ub))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3621
  by (import hollight DEF_int_mod)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3622
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3623
lemma int_congruent: "hollight.eqeq x xa (hollight.int_mod xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3624
(EX d. int_sub x xa = int_mul xb d)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3625
  by (import hollight int_congruent)
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3626
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3627
consts
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3628
  int_coprime :: "hollight.int * hollight.int => bool" 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3629
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3630
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3631
  int_coprime_def: "hollight.int_coprime ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3632
%u. EX x y. int_add (int_mul (fst u) x) (int_mul (snd u) y) = int_of_num 1"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3633
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3634
lemma DEF_int_coprime: "hollight.int_coprime =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3635
(%u. EX x y. int_add (int_mul (fst u) x) (int_mul (snd u) y) = int_of_num 1)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3636
  by (import hollight DEF_int_coprime)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3637
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3638
lemma FORALL_UNCURRY: "All (P::('A => 'B => 'C) => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3639
(ALL f::'A * 'B => 'C. P (%(a::'A) b::'B. f (a, b)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3640
  by (import hollight FORALL_UNCURRY)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3641
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3642
lemma EXISTS_UNCURRY: "Ex (x::('A => 'B => 'C) => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3643
(EX f::'A * 'B => 'C. x (%(a::'A) b::'B. f (a, b)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3644
  by (import hollight EXISTS_UNCURRY)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3645
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3646
lemma WF_INT_MEASURE: "(ALL x::'A. int_le (int_of_num (0::nat)) ((m::'A => hollight.int) x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3647
(ALL x::'A. (ALL y::'A. int_lt (m y) (m x) --> (P::'A => bool) y) --> P x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3648
==> P (x::'A)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3649
  by (import hollight WF_INT_MEASURE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3650
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3651
lemma WF_INT_MEASURE_2: "(ALL (x::'A) y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3652
    int_le (int_of_num (0::nat)) ((m::'A => 'B => hollight.int) x y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3653
(ALL (x::'A) y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3654
    (ALL (x'::'A) y'::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3655
        int_lt (m x' y') (m x y) --> (P::'A => 'B => bool) x' y') -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3656
    P x y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3657
==> P (x::'A) (xa::'B)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3658
  by (import hollight WF_INT_MEASURE_2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3659
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3660
lemma INT_GCD_EXISTS: "EX d. int_divides d a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3661
      int_divides d b & (EX x y. d = int_add (int_mul a x) (int_mul b y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3662
  by (import hollight INT_GCD_EXISTS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3663
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3664
lemma INT_GCD_EXISTS_POS: "EX d. int_le (int_of_num 0) d &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3665
      int_divides d a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3666
      int_divides d b & (EX x y. d = int_add (int_mul a x) (int_mul b y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3667
  by (import hollight INT_GCD_EXISTS_POS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3668
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3669
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3670
  int_gcd :: "hollight.int * hollight.int => hollight.int" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3671
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3672
defs
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3673
  int_gcd_def: "hollight.int_gcd ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3674
SOME d.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3675
   ALL a b.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3676
      int_le (int_of_num 0) (d (a, b)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3677
      int_divides (d (a, b)) a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3678
      int_divides (d (a, b)) b &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3679
      (EX x y. d (a, b) = int_add (int_mul a x) (int_mul b y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3680
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3681
lemma DEF_int_gcd: "hollight.int_gcd =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3682
(SOME d.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3683
    ALL a b.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3684
       int_le (int_of_num 0) (d (a, b)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3685
       int_divides (d (a, b)) a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3686
       int_divides (d (a, b)) b &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3687
       (EX x y. d (a, b) = int_add (int_mul a x) (int_mul b y)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3688
  by (import hollight DEF_int_gcd)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3689
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3690
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3691
  num_of_int :: "hollight.int => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3692
  "num_of_int == %u. SOME n. int_of_num n = u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3693
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3694
lemma DEF_num_of_int: "num_of_int = (%u. SOME n. int_of_num n = u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3695
  by (import hollight DEF_num_of_int)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3696
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3697
lemma NUM_OF_INT_OF_NUM: "num_of_int (int_of_num x) = x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3698
  by (import hollight NUM_OF_INT_OF_NUM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3699
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3700
lemma INT_OF_NUM_OF_INT: "int_le (int_of_num 0) x ==> int_of_num (num_of_int x) = x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3701
  by (import hollight INT_OF_NUM_OF_INT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3702
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3703
lemma NUM_OF_INT: "int_le (int_of_num 0) x = (int_of_num (num_of_int x) = x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3704
  by (import hollight NUM_OF_INT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3705
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3706
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3707
  num_divides :: "nat => nat => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3708
  "num_divides == %u ua. int_divides (int_of_num u) (int_of_num ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3709
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3710
lemma DEF_num_divides: "num_divides = (%u ua. int_divides (int_of_num u) (int_of_num ua))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3711
  by (import hollight DEF_num_divides)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3712
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3713
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3714
  num_mod :: "nat => nat => nat => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3715
  "num_mod ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3716
%u ua ub. hollight.int_mod (int_of_num u) (int_of_num ua) (int_of_num ub)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3717
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3718
lemma DEF_num_mod: "num_mod =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3719
(%u ua ub. hollight.int_mod (int_of_num u) (int_of_num ua) (int_of_num ub))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3720
  by (import hollight DEF_num_mod)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3721
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3722
lemma num_congruent: "hollight.eqeq x xa (num_mod xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3723
hollight.eqeq (int_of_num x) (int_of_num xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3724
 (hollight.int_mod (int_of_num xb))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3725
  by (import hollight num_congruent)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3726
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3727
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3728
  num_coprime :: "nat * nat => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3729
  "num_coprime ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3730
%u. hollight.int_coprime (int_of_num (fst u), int_of_num (snd u))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3731
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3732
lemma DEF_num_coprime: "num_coprime =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3733
(%u. hollight.int_coprime (int_of_num (fst u), int_of_num (snd u)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3734
  by (import hollight DEF_num_coprime)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3735
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3736
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3737
  num_gcd :: "nat * nat => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3738
  "num_gcd ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3739
%u. num_of_int (hollight.int_gcd (int_of_num (fst u), int_of_num (snd u)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3740
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3741
lemma DEF_num_gcd: "num_gcd =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3742
(%u. num_of_int (hollight.int_gcd (int_of_num (fst u), int_of_num (snd u))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3743
  by (import hollight DEF_num_gcd)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3744
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3745
lemma NUM_GCD: "int_of_num (num_gcd (x, xa)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3746
hollight.int_gcd (int_of_num x, int_of_num xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3747
  by (import hollight NUM_GCD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3748
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3749
lemma IN_ELIM_THM: "(ALL (P::(bool => 'q_43295 => bool) => bool) x::'q_43295.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3750
    (x : {v::'q_43295. P (SETSPEC v)}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3751
    P (%(p::bool) t::'q_43295. p & x = t)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3752
(ALL (p::'q_43326 => bool) x::'q_43326.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3753
    (x : {v::'q_43326. EX y::'q_43326. p y & v = y}) = p x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3754
(ALL (P::(bool => 'q_43354 => bool) => bool) x::'q_43354.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3755
    {v::'q_43354. P (SETSPEC v)} x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3756
    P (%(p::bool) t::'q_43354. p & x = t)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3757
(ALL (p::'q_43383 => bool) x::'q_43383.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3758
    {v::'q_43383. EX y::'q_43383. p y & v = y} x = p x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3759
(ALL (p::'q_43400 => bool) x::'q_43400. (x : p) = p x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3760
  by (import hollight IN_ELIM_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3761
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3762
lemma INSERT: "insert (x::'A) (s::'A => bool) = {u::'A. EX y::'A. (y : s | y = x) & u = y}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3763
  by (import hollight INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3764
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3765
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3766
  SING :: "('A => bool) => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3767
  "SING == %u::'A => bool. EX x::'A. u = {x}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3768
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3769
lemma DEF_SING: "SING = (%u::'A => bool. EX x::'A. u = {x})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3770
  by (import hollight DEF_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3771
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3772
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3773
  INJ :: "('A => 'B) => ('A => bool) => ('B => bool) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3774
  "INJ ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3775
%(u::'A => 'B) (ua::'A => bool) ub::'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3776
   (ALL x::'A. x : ua --> u x : ub) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3777
   (ALL (x::'A) y::'A. x : ua & y : ua & u x = u y --> x = y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3778
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3779
lemma DEF_INJ: "INJ =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3780
(%(u::'A => 'B) (ua::'A => bool) ub::'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3781
    (ALL x::'A. x : ua --> u x : ub) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3782
    (ALL (x::'A) y::'A. x : ua & y : ua & u x = u y --> x = y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3783
  by (import hollight DEF_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3784
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3785
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3786
  SURJ :: "('A => 'B) => ('A => bool) => ('B => bool) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3787
  "SURJ ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3788
%(u::'A => 'B) (ua::'A => bool) ub::'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3789
   (ALL x::'A. x : ua --> u x : ub) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3790
   (ALL x::'B. x : ub --> (EX y::'A. y : ua & u y = x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3791
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3792
lemma DEF_SURJ: "SURJ =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3793
(%(u::'A => 'B) (ua::'A => bool) ub::'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3794
    (ALL x::'A. x : ua --> u x : ub) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3795
    (ALL x::'B. x : ub --> (EX y::'A. y : ua & u y = x)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3796
  by (import hollight DEF_SURJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3797
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3798
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3799
  BIJ :: "('A => 'B) => ('A => bool) => ('B => bool) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3800
  "BIJ ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3801
%(u::'A => 'B) (ua::'A => bool) ub::'B => bool. INJ u ua ub & SURJ u ua ub"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3802
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3803
lemma DEF_BIJ: "BIJ =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3804
(%(u::'A => 'B) (ua::'A => bool) ub::'B => bool. INJ u ua ub & SURJ u ua ub)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3805
  by (import hollight DEF_BIJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3806
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3807
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3808
  REST :: "('A => bool) => 'A => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3809
  "REST == %u::'A => bool. u - {Eps u}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3810
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3811
lemma DEF_REST: "REST = (%u::'A => bool. u - {Eps u})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3812
  by (import hollight DEF_REST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3813
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3814
lemma NOT_IN_EMPTY: "(x::'A) ~: {}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3815
  by (import hollight NOT_IN_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3816
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3817
lemma IN_UNIONS: "((xa::'A) : Union (x::('A => bool) => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3818
(EX t::'A => bool. t : x & xa : t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3819
  by (import hollight IN_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3820
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3821
lemma IN_INTERS: "((xa::'A) : Inter (x::('A => bool) => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3822
(ALL t::'A => bool. t : x --> xa : t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3823
  by (import hollight IN_INTERS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3824
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3825
lemma IN_DELETE: "((xa::'A) : (x::'A => bool) - {xb::'A}) = (xa : x & xa ~= xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3826
  by (import hollight IN_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3827
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3828
lemma IN_IMAGE: "((x::'B) : (xb::'A => 'B) ` (xa::'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3829
(EX xc::'A. x = xb xc & xc : xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3830
  by (import hollight IN_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3831
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3832
lemma IN_REST: "((x::'A) : REST (xa::'A => bool)) = (x : xa & x ~= Eps xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3833
  by (import hollight IN_REST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3834
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3835
lemma FORALL_IN_INSERT: "(ALL xc::'q_44214.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3836
    xc : insert (xa::'q_44214) (xb::'q_44214 => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3837
    (x::'q_44214 => bool) xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3838
(x xa & (ALL xa::'q_44214. xa : xb --> x xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3839
  by (import hollight FORALL_IN_INSERT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3840
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3841
lemma EXISTS_IN_INSERT: "(EX xc::'q_44255.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3842
    xc : insert (xa::'q_44255) (xb::'q_44255 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3843
    (x::'q_44255 => bool) xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3844
(x xa | (EX xa::'q_44255. xa : xb & x xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3845
  by (import hollight EXISTS_IN_INSERT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3846
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3847
lemma CHOICE_DEF: "(x::'A => bool) ~= {} ==> Eps x : x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3848
  by (import hollight CHOICE_DEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3849
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3850
lemma NOT_EQUAL_SETS: "((x::'A => bool) ~= (xa::'A => bool)) = (EX xb::'A. (xb : xa) = (xb ~: x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3851
  by (import hollight NOT_EQUAL_SETS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3852
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3853
lemma EMPTY_NOT_UNIV: "(op ~=::('A::type => bool) => ('A::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3854
 ({}::'A::type => bool) (UNIV::'A::type => bool)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3855
  by (import hollight EMPTY_NOT_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3856
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3857
lemma EQ_UNIV: "(ALL x::'A. x : (s::'A => bool)) = (s = UNIV)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3858
  by (import hollight EQ_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3859
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3860
lemma SING_SUBSET: "({xa::'q_44493} <= (x::'q_44493 => bool)) = (xa : x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3861
  by (import hollight SING_SUBSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3862
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3863
lemma PSUBSET_UNIV: "((x::'A => bool) < UNIV) = (EX xa::'A. xa ~: x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3864
  by (import hollight PSUBSET_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3865
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3866
lemma PSUBSET_ALT: "((x::'A => bool) < (xa::'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3867
(x <= xa & (EX a::'A. a : xa & a ~: x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3868
  by (import hollight PSUBSET_ALT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3869
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3870
lemma SUBSET_UNION: "(ALL (x::'A => bool) xa::'A => bool. x <= x Un xa) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3871
(ALL (x::'A => bool) xa::'A => bool. x <= xa Un x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3872
  by (import hollight SUBSET_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3873
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3874
lemma UNION_EMPTY: "(ALL x::'A => bool. {} Un x = x) & (ALL x::'A => bool. x Un {} = x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3875
  by (import hollight UNION_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3876
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3877
lemma UNION_UNIV: "(ALL x::'A => bool. UNIV Un x = UNIV) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3878
(ALL x::'A => bool. x Un UNIV = UNIV)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3879
  by (import hollight UNION_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3880
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3881
lemma INTER_SUBSET: "(ALL (x::'A => bool) xa::'A => bool. x Int xa <= x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3882
(ALL (x::'A => bool) xa::'A => bool. xa Int x <= x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3883
  by (import hollight INTER_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3884
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3885
lemma INTER_EMPTY: "(ALL x::'A => bool. {} Int x = {}) & (ALL x::'A => bool. x Int {} = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3886
  by (import hollight INTER_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3887
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3888
lemma INTER_UNIV: "(ALL x::'A => bool. UNIV Int x = x) & (ALL x::'A => bool. x Int UNIV = x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3889
  by (import hollight INTER_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3890
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3891
lemma IN_DISJOINT: "((x::'A => bool) Int (xa::'A => bool) = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3892
(~ (EX xb::'A. xb : x & xb : xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3893
  by (import hollight IN_DISJOINT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3894
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3895
lemma DISJOINT_SYM: "((x::'A => bool) Int (xa::'A => bool) = {}) = (xa Int x = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3896
  by (import hollight DISJOINT_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3897
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3898
lemma DISJOINT_EMPTY: "{} Int (x::'A => bool) = {} & x Int {} = {}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3899
  by (import hollight DISJOINT_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3900
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3901
lemma DISJOINT_EMPTY_REFL: "((x::'A => bool) = {}) = (x Int x = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3902
  by (import hollight DISJOINT_EMPTY_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3903
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3904
lemma DISJOINT_UNION: "(((x::'A => bool) Un (xa::'A => bool)) Int (xb::'A => bool) = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3905
(x Int xb = {} & xa Int xb = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3906
  by (import hollight DISJOINT_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3907
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3908
lemma DECOMPOSITION: "((x::'A) : (s::'A => bool)) = (EX t::'A => bool. s = insert x t & x ~: t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3909
  by (import hollight DECOMPOSITION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3910
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3911
lemma SET_CASES: "(s::'A => bool) = {} | (EX (x::'A) t::'A => bool. s = insert x t & x ~: t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3912
  by (import hollight SET_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3913
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3914
lemma ABSORPTION: "((x::'A) : (xa::'A => bool)) = (insert x xa = xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3915
  by (import hollight ABSORPTION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3916
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3917
lemma INSERT_UNIV: "insert (x::'A) UNIV = UNIV"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3918
  by (import hollight INSERT_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3919
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3920
lemma INSERT_UNION: "insert (x::'A) (s::'A => bool) Un (t::'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3921
(if x : t then s Un t else insert x (s Un t))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3922
  by (import hollight INSERT_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3923
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3924
lemma DISJOINT_INSERT: "(insert (x::'A) (xa::'A => bool) Int (xb::'A => bool) = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3925
(xa Int xb = {} & x ~: xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3926
  by (import hollight DISJOINT_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3927
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3928
lemma INSERT_AC: "insert (x::'q_45764) (insert (y::'q_45764) (s::'q_45764 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3929
insert y (insert x s) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3930
insert x (insert x s) = insert x s"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3931
  by (import hollight INSERT_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3932
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3933
lemma INTER_ACI: "(p::'q_45831 => bool) Int (q::'q_45831 => bool) = q Int p &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3934
p Int q Int (r::'q_45831 => bool) = p Int (q Int r) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3935
p Int (q Int r) = q Int (p Int r) & p Int p = p & p Int (p Int q) = p Int q"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3936
  by (import hollight INTER_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3937
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3938
lemma UNION_ACI: "(p::'q_45897 => bool) Un (q::'q_45897 => bool) = q Un p &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3939
p Un q Un (r::'q_45897 => bool) = p Un (q Un r) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3940
p Un (q Un r) = q Un (p Un r) & p Un p = p & p Un (p Un q) = p Un q"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3941
  by (import hollight UNION_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3942
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3943
lemma DELETE_NON_ELEMENT: "((x::'A) ~: (xa::'A => bool)) = (xa - {x} = xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3944
  by (import hollight DELETE_NON_ELEMENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3945
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3946
lemma IN_DELETE_EQ: "(((x::'A) : (s::'A => bool)) = ((x'::'A) : s)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3947
((x : s - {x'}) = (x' : s - {x}))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3948
  by (import hollight IN_DELETE_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3949
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3950
lemma EMPTY_DELETE: "{} - {x::'A} = {}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3951
  by (import hollight EMPTY_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3952
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3953
lemma DELETE_DELETE: "(xa::'A => bool) - {x::'A} - {x} = xa - {x}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3954
  by (import hollight DELETE_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3955
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3956
lemma DELETE_COMM: "(xb::'A => bool) - {x::'A} - {xa::'A} = xb - {xa} - {x}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3957
  by (import hollight DELETE_COMM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3958
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3959
lemma DELETE_SUBSET: "(xa::'A => bool) - {x::'A} <= xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3960
  by (import hollight DELETE_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3961
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3962
lemma SUBSET_DELETE: "((xa::'A => bool) <= (xb::'A => bool) - {x::'A}) = (x ~: xa & xa <= xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3963
  by (import hollight SUBSET_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3964
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3965
lemma SUBSET_INSERT_DELETE: "((xa::'A => bool) <= insert (x::'A) (xb::'A => bool)) = (xa - {x} <= xb)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3966
  by (import hollight SUBSET_INSERT_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3967
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3968
lemma PSUBSET_INSERT_SUBSET: "((x::'A => bool) < (xa::'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3969
(EX xb::'A. xb ~: x & insert xb x <= xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3970
  by (import hollight PSUBSET_INSERT_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3971
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3972
lemma PSUBSET_MEMBER: "((x::'A => bool) < (xa::'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3973
(x <= xa & (EX y::'A. y : xa & y ~: x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3974
  by (import hollight PSUBSET_MEMBER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3975
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3976
lemma DELETE_INSERT: "insert (x::'A) (s::'A => bool) - {y::'A} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3977
(if x = y then s - {y} else insert x (s - {y}))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3978
  by (import hollight DELETE_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3979
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3980
lemma DELETE_INTER: "((x::'A => bool) - {xb::'A}) Int (xa::'A => bool) = x Int xa - {xb}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3981
  by (import hollight DELETE_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3982
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3983
lemma DISJOINT_DELETE_SYM: "(((x::'A => bool) - {xb::'A}) Int (xa::'A => bool) = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3984
((xa - {xb}) Int x = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3985
  by (import hollight DISJOINT_DELETE_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3986
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3987
lemma FORALL_IN_UNIONS: "(ALL x::'q_46386.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3988
    x : Union (s::('q_46386 => bool) => bool) --> (P::'q_46386 => bool) x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3989
(ALL (t::'q_46386 => bool) x::'q_46386. t : s & x : t --> P x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3990
  by (import hollight FORALL_IN_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3991
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3992
lemma EXISTS_IN_UNIONS: "(EX x::'q_46428.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3993
    x : Union (s::('q_46428 => bool) => bool) & (P::'q_46428 => bool) x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3994
(EX (t::'q_46428 => bool) x::'q_46428. t : s & x : t & P x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3995
  by (import hollight EXISTS_IN_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3996
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3997
lemma EMPTY_UNIONS: "(Union (x::('q_46454 => bool) => bool) = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  3998
(ALL xa::'q_46454 => bool. xa : x --> xa = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3999
  by (import hollight EMPTY_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4000
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4001
lemma INTER_UNIONS: "(ALL (x::('q_46493 => bool) => bool) xa::'q_46493 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4002
    Union x Int xa =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4003
    Union
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4004
     {u::'q_46493 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4005
      EX xb::'q_46493 => bool. xb : x & u = xb Int xa}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4006
(ALL (x::('q_46529 => bool) => bool) xa::'q_46529 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4007
    xa Int Union x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4008
    Union
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4009
     {u::'q_46529 => bool. EX xb::'q_46529 => bool. xb : x & u = xa Int xb})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4010
  by (import hollight INTER_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4011
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4012
lemma UNIONS_SUBSET: "(Union (x::('q_46545 => bool) => bool) <= (xa::'q_46545 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4013
(ALL xb::'q_46545 => bool. xb : x --> xb <= xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4014
  by (import hollight UNIONS_SUBSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4015
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4016
lemma IMAGE_CLAUSES: "(f::'q_46676 => 'q_46680) ` {} = {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4017
f ` insert (x::'q_46676) (s::'q_46676 => bool) = insert (f x) (f ` s)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4018
  by (import hollight IMAGE_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4019
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4020
lemma IMAGE_INTER_INJ: "(!!(xa::'q_46846) y::'q_46846.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4021
    (x::'q_46846 => 'q_46857) xa = x y ==> xa = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4022
==> x ` ((xa::'q_46846 => bool) Int (xb::'q_46846 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4023
    x ` xa Int x ` xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4024
  by (import hollight IMAGE_INTER_INJ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4025
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4026
lemma IMAGE_DIFF_INJ: "(!!(xa::'q_46900) y::'q_46900.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4027
    (x::'q_46900 => 'q_46911) xa = x y ==> xa = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4028
==> x ` ((xa::'q_46900 => bool) - (xb::'q_46900 => bool)) = x ` xa - x ` xb"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4029
  by (import hollight IMAGE_DIFF_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4030
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4031
lemma IMAGE_DELETE_INJ: "(!!xa::'q_46958.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4032
    (x::'q_46958 => 'q_46957) xa = x (xb::'q_46958) ==> xa = xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4033
==> x ` ((xa::'q_46958 => bool) - {xb}) = x ` xa - {x xb}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4034
  by (import hollight IMAGE_DELETE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4035
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4036
lemma FORALL_IN_IMAGE: "(ALL xb::'q_47016.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4037
    xb : (x::'q_47017 => 'q_47016) ` (xa::'q_47017 => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4038
    (P::'q_47016 => bool) xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4039
(ALL xb::'q_47017. xb : xa --> P (x xb))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4040
  by (import hollight FORALL_IN_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4041
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4042
lemma EXISTS_IN_IMAGE: "(EX xb::'q_47052.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4043
    xb : (x::'q_47053 => 'q_47052) ` (xa::'q_47053 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4044
    (P::'q_47052 => bool) xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4045
(EX xb::'q_47053. xb : xa & P (x xb))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4046
  by (import hollight EXISTS_IN_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4047
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4048
lemma FORALL_SUBSET_IMAGE: "(ALL xc<=(xa::'q_47140 => 'q_47156) ` (xb::'q_47140 => bool).
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4049
    (x::('q_47156 => bool) => bool) xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4050
(ALL t<=xb. x (xa ` t))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4051
  by (import hollight FORALL_SUBSET_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4052
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4053
lemma EXISTS_SUBSET_IMAGE: "(EX xc<=(xa::'q_47183 => 'q_47199) ` (xb::'q_47183 => bool).
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4054
    (x::('q_47199 => bool) => bool) xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4055
(EX t<=xb. x (xa ` t))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4056
  by (import hollight EXISTS_SUBSET_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4057
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4058
lemma SIMPLE_IMAGE: "{u::'q_47262.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4059
 EX xb::'q_47258.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4060
    xb : (xa::'q_47258 => bool) & u = (x::'q_47258 => 'q_47262) xb} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4061
x ` xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4062
  by (import hollight SIMPLE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4063
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4064
lemma SIMPLE_IMAGE_GEN: "{u::'q_47292.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4065
 EX xa::'q_47305.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4066
    (P::'q_47305 => bool) xa & u = (x::'q_47305 => 'q_47292) xa} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4067
x ` {u::'q_47305. EX x::'q_47305. P x & u = x}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4068
  by (import hollight SIMPLE_IMAGE_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4069
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4070
lemma IMAGE_UNIONS: "(x::'q_47323 => 'q_47332) ` Union (xa::('q_47323 => bool) => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4071
Union (op ` x ` xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4072
  by (import hollight IMAGE_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4073
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4074
lemma SURJECTIVE_IMAGE_EQ: "(ALL y::'q_47396.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4075
    y : (xa::'q_47396 => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4076
    (EX x::'q_47400. (f::'q_47400 => 'q_47396) x = y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4077
(ALL xb::'q_47400. (f xb : xa) = (xb : (x::'q_47400 => bool)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4078
==> f ` x = xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4079
  by (import hollight SURJECTIVE_IMAGE_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4080
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4081
lemma EMPTY_GSPEC: "{u::'q_47425. Ex (SETSPEC u False)} = {}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4082
  by (import hollight EMPTY_GSPEC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4083
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4084
lemma SING_GSPEC: "(ALL x::'q_47454. {u::'q_47454. EX xa::'q_47454. xa = x & u = xa} = {x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4085
(ALL x::'q_47480. {u::'q_47480. EX xa::'q_47480. x = xa & u = xa} = {x})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4086
  by (import hollight SING_GSPEC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4087
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4088
lemma IN_ELIM_PAIR_THM: "((xa::'q_47526, xb::'q_47525)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4089
 : {xa::'q_47526 * 'q_47525.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4090
    EX (xb::'q_47526) y::'q_47525.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4091
       (x::'q_47526 => 'q_47525 => bool) xb y & xa = (xb, y)}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4092
x xa xb"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  4093
  by (import hollight IN_ELIM_PAIR_THM)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  4094
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4095
lemma SET_PAIR_THM: "{u::'q_47570 * 'q_47569.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4096
 EX p::'q_47570 * 'q_47569. (x::'q_47570 * 'q_47569 => bool) p & u = p} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4097
{u::'q_47570 * 'q_47569.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4098
 EX (a::'q_47570) b::'q_47569. x (a, b) & u = (a, b)}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4099
  by (import hollight SET_PAIR_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4100
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4101
lemma FORALL_IN_GSPEC: "(ALL (P::'q_47618 => bool) f::'q_47618 => 'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4102
    (ALL z::'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4103
        z : {u::'q_47739. EX x::'q_47618. P x & u = f x} -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4104
        (Q::'q_47739 => bool) z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4105
    (ALL x::'q_47618. P x --> Q (f x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4106
(ALL (P::'q_47675 => 'q_47674 => bool) f::'q_47675 => 'q_47674 => 'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4107
    (ALL z::'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4108
        z : {u::'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4109
             EX (x::'q_47675) y::'q_47674. P x y & u = f x y} -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4110
        Q z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4111
    (ALL (x::'q_47675) y::'q_47674. P x y --> Q (f x y))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4112
(ALL (P::'q_47742 => 'q_47741 => 'q_47740 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4113
    f::'q_47742 => 'q_47741 => 'q_47740 => 'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4114
    (ALL z::'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4115
        z : {u::'q_47739.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4116
             EX (w::'q_47742) (x::'q_47741) y::'q_47740.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4117
                P w x y & u = f w x y} -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4118
        Q z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4119
    (ALL (w::'q_47742) (x::'q_47741) y::'q_47740. P w x y --> Q (f w x y)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4120
  by (import hollight FORALL_IN_GSPEC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4121
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4122
lemma EXISTS_IN_GSPEC: "(ALL (P::'q_47788 => bool) f::'q_47788 => 'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4123
    (EX z::'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4124
        z : {u::'q_47909. EX x::'q_47788. P x & u = f x} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4125
        (Q::'q_47909 => bool) z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4126
    (EX x::'q_47788. P x & Q (f x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4127
(ALL (P::'q_47845 => 'q_47844 => bool) f::'q_47845 => 'q_47844 => 'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4128
    (EX z::'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4129
        z : {u::'q_47909. EX (x::'q_47845) y::'q_47844. P x y & u = f x y} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4130
        Q z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4131
    (EX (x::'q_47845) y::'q_47844. P x y & Q (f x y))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4132
(ALL (P::'q_47912 => 'q_47911 => 'q_47910 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4133
    f::'q_47912 => 'q_47911 => 'q_47910 => 'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4134
    (EX z::'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4135
        z : {u::'q_47909.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4136
             EX (w::'q_47912) (x::'q_47911) y::'q_47910.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4137
                P w x y & u = f w x y} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4138
        Q z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4139
    (EX (w::'q_47912) (x::'q_47911) y::'q_47910. P w x y & Q (f w x y)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4140
  by (import hollight EXISTS_IN_GSPEC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4141
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4142
lemma SET_PROVE_CASES: "(P::('A => bool) => bool) {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4143
(ALL (a::'A) s::'A => bool. a ~: s --> P (insert a s))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4144
==> P (x::'A => bool)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4145
  by (import hollight SET_PROVE_CASES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4146
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4147
lemma UNIONS_IMAGE: "Union ((f::'q_47989 => 'q_47973 => bool) ` (s::'q_47989 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4148
{u::'q_47973. EX y::'q_47973. (EX x::'q_47989. x : s & y : f x) & u = y}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4149
  by (import hollight UNIONS_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4150
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4151
lemma INTERS_IMAGE: "Inter ((f::'q_48032 => 'q_48016 => bool) ` (s::'q_48032 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4152
{u::'q_48016. EX y::'q_48016. (ALL x::'q_48032. x : s --> y : f x) & u = y}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4153
  by (import hollight INTERS_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4154
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4155
lemma UNIONS_GSPEC: "(ALL (P::'q_48085 => bool) f::'q_48085 => 'q_48071 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4156
    Union {u::'q_48071 => bool. EX x::'q_48085. P x & u = f x} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4157
    {u::'q_48071.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4158
     EX a::'q_48071. (EX x::'q_48085. P x & a : f x) & u = a}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4159
(ALL (P::'q_48149 => 'q_48148 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4160
    f::'q_48149 => 'q_48148 => 'q_48129 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4161
    Union
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4162
     {u::'q_48129 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4163
      EX (x::'q_48149) y::'q_48148. P x y & u = f x y} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4164
    {u::'q_48129.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4165
     EX a::'q_48129.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4166
        (EX (x::'q_48149) y::'q_48148. P x y & a : f x y) & u = a}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4167
(ALL (P::'q_48223 => 'q_48222 => 'q_48221 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4168
    f::'q_48223 => 'q_48222 => 'q_48221 => 'q_48197 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4169
    Union
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4170
     {u::'q_48197 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4171
      EX (x::'q_48223) (y::'q_48222) z::'q_48221. P x y z & u = f x y z} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4172
    {u::'q_48197.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4173
     EX a::'q_48197.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4174
        (EX (x::'q_48223) (y::'q_48222) z::'q_48221.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4175
            P x y z & a : f x y z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4176
        u = a})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4177
  by (import hollight UNIONS_GSPEC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4178
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4179
lemma INTERS_GSPEC: "(ALL (P::'q_48276 => bool) f::'q_48276 => 'q_48262 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4180
    Inter {u::'q_48262 => bool. EX x::'q_48276. P x & u = f x} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4181
    {u::'q_48262.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4182
     EX a::'q_48262. (ALL x::'q_48276. P x --> a : f x) & u = a}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4183
(ALL (P::'q_48340 => 'q_48339 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4184
    f::'q_48340 => 'q_48339 => 'q_48320 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4185
    Inter
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4186
     {u::'q_48320 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4187
      EX (x::'q_48340) y::'q_48339. P x y & u = f x y} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4188
    {u::'q_48320.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4189
     EX a::'q_48320.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4190
        (ALL (x::'q_48340) y::'q_48339. P x y --> a : f x y) & u = a}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4191
(ALL (P::'q_48414 => 'q_48413 => 'q_48412 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4192
    f::'q_48414 => 'q_48413 => 'q_48412 => 'q_48388 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4193
    Inter
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4194
     {u::'q_48388 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4195
      EX (x::'q_48414) (y::'q_48413) z::'q_48412. P x y z & u = f x y z} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4196
    {u::'q_48388.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4197
     EX a::'q_48388.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4198
        (ALL (x::'q_48414) (y::'q_48413) z::'q_48412.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4199
            P x y z --> a : f x y z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4200
        u = a})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4201
  by (import hollight INTERS_GSPEC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4202
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4203
lemma DIFF_INTERS: "(x::'q_48451 => bool) - Inter (xa::('q_48451 => bool) => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4204
Union {u::'q_48451 => bool. EX xb::'q_48451 => bool. xb : xa & u = x - xb}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4205
  by (import hollight DIFF_INTERS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4206
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4207
lemma INTERS_UNIONS: "Inter (x::('q_48486 => bool) => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4208
UNIV -
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4209
Union {u::'q_48486 => bool. EX t::'q_48486 => bool. t : x & u = UNIV - t}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4210
  by (import hollight INTERS_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4211
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4212
lemma UNIONS_INTERS: "Union (s::('q_48521 => bool) => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4213
UNIV -
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4214
Inter {u::'q_48521 => bool. EX t::'q_48521 => bool. t : s & u = UNIV - t}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4215
  by (import hollight UNIONS_INTERS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4216
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4217
lemma FINITE_SING: "finite {x::'q_48799}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4218
  by (import hollight FINITE_SING)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4219
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4220
lemma FINITE_DELETE_IMP: "finite (s::'A => bool) ==> finite (s - {x::'A})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4221
  by (import hollight FINITE_DELETE_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4222
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4223
lemma FINITE_DELETE: "finite ((s::'A => bool) - {x::'A}) = finite s"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4224
  by (import hollight FINITE_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4225
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4226
lemma FINITE_FINITE_UNIONS: "finite (s::('q_48871 => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4227
==> finite (Union s) = (ALL t::'q_48871 => bool. t : s --> finite t)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4228
  by (import hollight FINITE_FINITE_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4229
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4230
lemma FINITE_IMAGE_EXPAND: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4231
==> finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4232
     {u::'B. EX y::'B. (EX x::'A. x : s & y = (f::'A => 'B) x) & u = y}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4233
  by (import hollight FINITE_IMAGE_EXPAND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4234
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4235
lemma FINITE_IMAGE_INJ_GENERAL: "(ALL (x::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4236
    x : (s::'A => bool) & y : s & (f::'A => 'B) x = f y --> x = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4237
finite (x::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4238
==> finite {u::'A. EX xa::'A. (xa : s & f xa : x) & u = xa}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4239
  by (import hollight FINITE_IMAGE_INJ_GENERAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4240
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4241
lemma FINITE_FINITE_PREIMAGE_GENERAL: "finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4242
(ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4243
    y : t -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4244
    finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4245
     {u::'A. EX x::'A. (x : (s::'A => bool) & (f::'A => 'B) x = y) & u = x})
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4246
==> finite {u::'A. EX x::'A. (x : s & f x : t) & u = x}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4247
  by (import hollight FINITE_FINITE_PREIMAGE_GENERAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4248
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4249
lemma FINITE_FINITE_PREIMAGE: "finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4250
(ALL y::'B. y : t --> finite {u::'A. EX x::'A. (f::'A => 'B) x = y & u = x})
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4251
==> finite {u::'A. EX x::'A. f x : t & u = x}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4252
  by (import hollight FINITE_FINITE_PREIMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4253
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4254
lemma FINITE_IMAGE_INJ_EQ: "(!!(x::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4255
    x : (s::'A => bool) & y : s & (f::'A => 'B) x = f y ==> x = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4256
==> finite (f ` s) = finite s"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4257
  by (import hollight FINITE_IMAGE_INJ_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4258
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4259
lemma FINITE_IMAGE_INJ: "(ALL (x::'A) y::'A. (f::'A => 'B) x = f y --> x = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4260
finite (A::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4261
==> finite {u::'A. EX x::'A. f x : A & u = x}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4262
  by (import hollight FINITE_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4263
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4264
lemma INFINITE_IMAGE_INJ: "[| !!(x::'A) y::'A. (f::'A => 'B) x = f y ==> x = y;
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4265
   infinite (s::'A => bool) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4266
==> infinite (f ` s)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4267
  by (import hollight INFINITE_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4268
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4269
lemma FINITE_SUBSET_IMAGE: "(finite (t::'B => bool) & t <= (f::'A => 'B) ` (s::'A => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4270
(EX x::'A => bool. finite x & x <= s & t = f ` x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4271
  by (import hollight FINITE_SUBSET_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4272
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4273
lemma EXISTS_FINITE_SUBSET_IMAGE: "(EX xc::'q_49755 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4274
    finite xc &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4275
    xc <= (xa::'q_49735 => 'q_49755) ` (xb::'q_49735 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4276
    (x::('q_49755 => bool) => bool) xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4277
(EX xc::'q_49735 => bool. finite xc & xc <= xb & x (xa ` xc))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4278
  by (import hollight EXISTS_FINITE_SUBSET_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4279
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4280
lemma FINITE_SUBSET_IMAGE_IMP: "finite (t::'B => bool) & t <= (f::'A => 'B) ` (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4281
==> EX s'::'A => bool. finite s' & s' <= s & t <= f ` s'"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4282
  by (import hollight FINITE_SUBSET_IMAGE_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4283
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4284
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4285
  FINREC :: "('A => 'B => 'B) => 'B => ('A => bool) => 'B => nat => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4286
  "FINREC ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4287
SOME FINREC::('A => 'B => 'B) => 'B => ('A => bool) => 'B => nat => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4288
   (ALL (f::'A => 'B => 'B) (s::'A => bool) (a::'B) b::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4289
       FINREC f b s a (0::nat) = (s = {} & a = b)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4290
   (ALL (b::'B) (s::'A => bool) (n::nat) (a::'B) f::'A => 'B => 'B.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4291
       FINREC f b s a (Suc n) =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4292
       (EX (x::'A) c::'B. x : s & FINREC f b (s - {x}) c n & a = f x c))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4293
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4294
lemma DEF_FINREC: "FINREC =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4295
(SOME FINREC::('A => 'B => 'B) => 'B => ('A => bool) => 'B => nat => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4296
    (ALL (f::'A => 'B => 'B) (s::'A => bool) (a::'B) b::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4297
        FINREC f b s a (0::nat) = (s = {} & a = b)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4298
    (ALL (b::'B) (s::'A => bool) (n::nat) (a::'B) f::'A => 'B => 'B.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4299
        FINREC f b s a (Suc n) =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4300
        (EX (x::'A) c::'B. x : s & FINREC f b (s - {x}) c n & a = f x c)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4301
  by (import hollight DEF_FINREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4302
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4303
lemma FINREC_1_LEMMA: "FINREC (x::'q_49919 => 'q_49918 => 'q_49918) (xa::'q_49918)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4304
 (xb::'q_49919 => bool) (xc::'q_49918) (Suc (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4305
(EX xd::'q_49919. xb = {xd} & xc = x xd xa)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4306
  by (import hollight FINREC_1_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4307
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4308
lemma FINREC_SUC_LEMMA: "[| !!(x::'A) (y::'A) s::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4309
      x ~= y ==> (f::'A => 'B => 'B) x (f y s) = f y (f x s);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4310
   FINREC f (b::'B) (s::'A => bool) (z::'B) (Suc (n::nat)); (x::'A) : s |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4311
==> EX w::'B. FINREC f b (s - {x}) w n & z = f x w"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4312
  by (import hollight FINREC_SUC_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4313
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4314
lemma FINREC_UNIQUE_LEMMA: "[| !!(x::'A) (y::'A) s::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4315
      x ~= y ==> (f::'A => 'B => 'B) x (f y s) = f y (f x s);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4316
   FINREC f (b::'B) (s::'A => bool) (a1::'B) (n1::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4317
   FINREC f b s (a2::'B) (n2::nat) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4318
==> a1 = a2 & n1 = n2"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4319
  by (import hollight FINREC_UNIQUE_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4320
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4321
lemma FINREC_EXISTS_LEMMA: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4322
==> EX a::'B. Ex (FINREC (f::'A => 'B => 'B) (b::'B) s a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4323
  by (import hollight FINREC_EXISTS_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4324
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4325
lemma FINREC_FUN_LEMMA: "(ALL s::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4326
    (P::'A => bool) s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4327
    (EX a::'B. Ex ((R::'A => 'B => 'C => bool) s a))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4328
(ALL (n1::'C) (n2::'C) (s::'A) (a1::'B) a2::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4329
    R s a1 n1 & R s a2 n2 --> a1 = a2 & n1 = n2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4330
==> EX x::'A => 'B. ALL (s::'A) a::'B. P s --> Ex (R s a) = (x s = a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4331
  by (import hollight FINREC_FUN_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4332
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4333
lemma FINREC_FUN: "(!!(x::'A) (y::'A) s::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4334
    x ~= y ==> (f::'A => 'B => 'B) x (f y s) = f y (f x s))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4335
==> EX g::('A => bool) => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4336
       g {} = (b::'B) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4337
       (ALL (s::'A => bool) x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4338
           finite s & x : s --> g s = f x (g (s - {x})))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4339
  by (import hollight FINREC_FUN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4340
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4341
lemma SET_RECURSION_LEMMA: "(!!(x::'A) (y::'A) s::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4342
    x ~= y ==> (f::'A => 'B => 'B) x (f y s) = f y (f x s))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4343
==> EX g::('A => bool) => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4344
       g {} = (b::'B) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4345
       (ALL (x::'A) s::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4346
           finite s --> g (insert x s) = (if x : s then g s else f x (g s)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4347
  by (import hollight SET_RECURSION_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4348
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4349
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4350
  ITSET :: "('q_50575 => 'q_50574 => 'q_50574)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4351
=> ('q_50575 => bool) => 'q_50574 => 'q_50574"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4352
  "ITSET ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4353
%(u::'q_50575 => 'q_50574 => 'q_50574) (ua::'q_50575 => bool) ub::'q_50574.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4354
   (SOME g::('q_50575 => bool) => 'q_50574.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4355
       g {} = ub &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4356
       (ALL (x::'q_50575) s::'q_50575 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4357
           finite s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4358
           g (insert x s) = (if x : s then g s else u x (g s))))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4359
    ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4360
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4361
lemma DEF_ITSET: "ITSET =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4362
(%(u::'q_50575 => 'q_50574 => 'q_50574) (ua::'q_50575 => bool) ub::'q_50574.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4363
    (SOME g::('q_50575 => bool) => 'q_50574.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4364
        g {} = ub &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4365
        (ALL (x::'q_50575) s::'q_50575 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4366
            finite s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4367
            g (insert x s) = (if x : s then g s else u x (g s))))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4368
     ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4369
  by (import hollight DEF_ITSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4370
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4371
lemma FINITE_RECURSION: "(!!(x::'A) (y::'A) s::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4372
    x ~= y ==> (f::'A => 'B => 'B) x (f y s) = f y (f x s))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4373
==> ITSET f {} (b::'B) = b &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4374
    (ALL (x::'A) xa::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4375
        finite xa -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4376
        ITSET f (insert x xa) b =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4377
        (if x : xa then ITSET f xa b else f x (ITSET f xa b)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4378
  by (import hollight FINITE_RECURSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4379
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4380
lemma FINITE_RECURSION_DELETE: "(!!(x::'A) (y::'A) s::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4381
    x ~= y ==> (f::'A => 'B => 'B) x (f y s) = f y (f x s))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4382
==> ITSET f {} (b::'B) = b &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4383
    (ALL (x::'A) s::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4384
        finite s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4385
        ITSET f s b =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4386
        (if x : s then f x (ITSET f (s - {x}) b) else ITSET f (s - {x}) b))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4387
  by (import hollight FINITE_RECURSION_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4388
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4389
lemma ITSET_EQ: "finite (x::'q_50880 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4390
(ALL xc::'q_50880.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4391
    xc : x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4392
    (xa::'q_50880 => 'q_50881 => 'q_50881) xc =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4393
    (xb::'q_50880 => 'q_50881 => 'q_50881) xc) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4394
(ALL (x::'q_50880) (y::'q_50880) s::'q_50881.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4395
    x ~= y --> xa x (xa y s) = xa y (xa x s)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4396
(ALL (x::'q_50880) (y::'q_50880) s::'q_50881.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4397
    x ~= y --> xb x (xb y s) = xb y (xb x s))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4398
==> ITSET xa x (xc::'q_50881) = ITSET xb x xc"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4399
  by (import hollight ITSET_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4400
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4401
lemma SUBSET_RESTRICT: "{u::'q_50914.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4402
 EX xb::'q_50914.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4403
    (xb : (x::'q_50914 => bool) & (xa::'q_50914 => bool) xb) & u = xb}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4404
<= x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4405
  by (import hollight SUBSET_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4406
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4407
lemma FINITE_RESTRICT: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4408
==> finite {u::'A. EX x::'A. (x : s & (P::'A => bool) x) & u = x}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4409
  by (import hollight FINITE_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4410
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4411
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4412
  CARD :: "('q_50968 => bool) => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4413
  "CARD == %u::'q_50968 => bool. ITSET (%x::'q_50968. Suc) u (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4414
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4415
lemma DEF_CARD: "CARD = (%u::'q_50968 => bool. ITSET (%x::'q_50968. Suc) u (0::nat))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4416
  by (import hollight DEF_CARD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4417
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4418
lemma CARD_CLAUSES: "CARD {} = (0::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4419
(ALL (x::'A::type) s::'A::type => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4420
    finite s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4421
    CARD (insert x s) = (if x : s then CARD s else Suc (CARD s)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4422
  by (import hollight CARD_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4423
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4424
lemma CARD_UNION: "finite (x::'A => bool) & finite (xa::'A => bool) & x Int xa = {}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4425
==> CARD (x Un xa) = CARD x + CARD xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4426
  by (import hollight CARD_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4427
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4428
lemma CARD_DELETE: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4429
==> CARD (s - {x::'A}) = (if x : s then CARD s - (1::nat) else CARD s)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4430
  by (import hollight CARD_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4431
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4432
lemma CARD_UNION_EQ: "finite (u::'q_51213 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4433
(s::'q_51213 => bool) Int (t::'q_51213 => bool) = {} & s Un t = u
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4434
==> CARD s + CARD t = CARD u"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4435
  by (import hollight CARD_UNION_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4436
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4437
lemma CARD_DIFF: "finite (s::'q_51270 => bool) & (t::'q_51270 => bool) <= s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4438
==> CARD (s - t) = CARD s - CARD t"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4439
  by (import hollight CARD_DIFF)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4440
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4441
lemma CARD_EQ_0: "finite (s::'q_51308 => bool) ==> (CARD s = (0::nat)) = (s = {})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4442
  by (import hollight CARD_EQ_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4443
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4444
lemma FINITE_INDUCT_DELETE: "[| (P::('A => bool) => bool) {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4445
   (ALL s::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4446
       finite s & s ~= {} --> (EX x::'A. x : s & (P (s - {x}) --> P s)));
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4447
   finite (s::'A => bool) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4448
==> P s"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4449
  by (import hollight FINITE_INDUCT_DELETE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4450
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4451
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4452
  HAS_SIZE :: "('q_51427 => bool) => nat => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4453
  "HAS_SIZE == %(u::'q_51427 => bool) ua::nat. finite u & CARD u = ua"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4454
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4455
lemma DEF_HAS_SIZE: "HAS_SIZE = (%(u::'q_51427 => bool) ua::nat. finite u & CARD u = ua)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4456
  by (import hollight DEF_HAS_SIZE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4457
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4458
lemma HAS_SIZE_CARD: "HAS_SIZE (x::'q_51446 => bool) (xa::nat) ==> CARD x = xa"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4459
  by (import hollight HAS_SIZE_CARD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4460
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4461
lemma HAS_SIZE_0: "HAS_SIZE (s::'A => bool) (0::nat) = (s = {})"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4462
  by (import hollight HAS_SIZE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4463
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4464
lemma HAS_SIZE_SUC: "HAS_SIZE (s::'A => bool) (Suc (n::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4465
(s ~= {} & (ALL x::'A. x : s --> HAS_SIZE (s - {x}) n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4466
  by (import hollight HAS_SIZE_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4467
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4468
lemma HAS_SIZE_UNION: "HAS_SIZE (x::'q_51584 => bool) (xb::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4469
HAS_SIZE (xa::'q_51584 => bool) (xc::nat) & x Int xa = {}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4470
==> HAS_SIZE (x Un xa) (xb + xc)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4471
  by (import hollight HAS_SIZE_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4472
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4473
lemma HAS_SIZE_DIFF: "HAS_SIZE (x::'q_51620 => bool) (xb::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4474
HAS_SIZE (xa::'q_51620 => bool) (xc::nat) & xa <= x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4475
==> HAS_SIZE (x - xa) (xb - xc)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4476
  by (import hollight HAS_SIZE_DIFF)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4477
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4478
lemma HAS_SIZE_UNIONS: "HAS_SIZE (x::'A => bool) (xb::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4479
(ALL xb::'A. xb : x --> HAS_SIZE ((xa::'A => 'B => bool) xb) (xc::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4480
(ALL (xb::'A) y::'A. xb : x & y : x & xb ~= y --> xa xb Int xa y = {})
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4481
==> HAS_SIZE (Union {u::'B => bool. EX xb::'A. xb : x & u = xa xb})
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4482
     (xb * xc)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4483
  by (import hollight HAS_SIZE_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4484
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4485
lemma FINITE_HAS_SIZE: "finite (x::'q_51824 => bool) = HAS_SIZE x (CARD x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4486
  by (import hollight FINITE_HAS_SIZE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4487
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4488
lemma HAS_SIZE_CLAUSES: "HAS_SIZE (s::'q_51886 => bool) (0::nat) = (s = {}) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4489
HAS_SIZE s (Suc (n::nat)) =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4490
(EX (a::'q_51886) t::'q_51886 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4491
    HAS_SIZE t n & a ~: t & s = insert a t)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4492
  by (import hollight HAS_SIZE_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4493
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4494
lemma CARD_SUBSET_EQ: "finite (b::'A => bool) & (a::'A => bool) <= b & CARD a = CARD b ==> a = b"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4495
  by (import hollight CARD_SUBSET_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4496
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4497
lemma CARD_SUBSET: "(a::'A => bool) <= (b::'A => bool) & finite b ==> CARD a <= CARD b"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4498
  by (import hollight CARD_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4499
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4500
lemma CARD_SUBSET_LE: "finite (b::'A => bool) & (a::'A => bool) <= b & CARD b <= CARD a ==> a = b"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4501
  by (import hollight CARD_SUBSET_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4502
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4503
lemma SUBSET_CARD_EQ: "finite (t::'q_52197 => bool) & (s::'q_52197 => bool) <= t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4504
==> (CARD s = CARD t) = (s = t)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4505
  by (import hollight SUBSET_CARD_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4506
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4507
lemma CARD_PSUBSET: "(a::'A => bool) < (b::'A => bool) & finite b ==> CARD a < CARD b"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4508
  by (import hollight CARD_PSUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4509
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4510
lemma CARD_UNION_LE: "finite (s::'A => bool) & finite (t::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4511
==> CARD (s Un t) <= CARD s + CARD t"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4512
  by (import hollight CARD_UNION_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4513
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4514
lemma CARD_UNIONS_LE: "HAS_SIZE (x::'A => bool) (xb::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4515
(ALL xb::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4516
    xb : x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4517
    finite ((xa::'A => 'B => bool) xb) & CARD (xa xb) <= (xc::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4518
==> CARD (Union {u::'B => bool. EX xb::'A. xb : x & u = xa xb}) <= xb * xc"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4519
  by (import hollight CARD_UNIONS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4520
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4521
lemma CARD_UNION_GEN: "finite (s::'q_52620 => bool) & finite (t::'q_52620 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4522
==> CARD (s Un t) = CARD s + CARD t - CARD (s Int t)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4523
  by (import hollight CARD_UNION_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4524
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4525
lemma CARD_UNION_OVERLAP_EQ: "finite (s::'q_52701 => bool) & finite (t::'q_52701 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4526
==> (CARD (s Un t) = CARD s + CARD t) = (s Int t = {})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4527
  by (import hollight CARD_UNION_OVERLAP_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4528
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4529
lemma CARD_UNION_OVERLAP: "finite (x::'q_52743 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4530
finite (xa::'q_52743 => bool) & CARD (x Un xa) < CARD x + CARD xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4531
==> x Int xa ~= {}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4532
  by (import hollight CARD_UNION_OVERLAP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4533
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4534
lemma CARD_IMAGE_INJ: "(ALL (xa::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4535
    xa : (x::'A => bool) & y : x & (f::'A => 'B) xa = f y --> xa = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4536
finite x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4537
==> CARD (f ` x) = CARD x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4538
  by (import hollight CARD_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4539
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4540
lemma HAS_SIZE_IMAGE_INJ: "(ALL (xb::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4541
    xb : (xa::'A => bool) & y : xa & (x::'A => 'B) xb = x y --> xb = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4542
HAS_SIZE xa (xb::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4543
==> HAS_SIZE (x ` xa) xb"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4544
  by (import hollight HAS_SIZE_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4545
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4546
lemma CARD_IMAGE_LE: "finite (s::'A => bool) ==> CARD ((f::'A => 'B) ` s) <= CARD s"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4547
  by (import hollight CARD_IMAGE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4548
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4549
lemma CARD_IMAGE_INJ_EQ: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4550
(ALL x::'A. x : s --> (f::'A => 'B) x : (t::'B => bool)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4551
(ALL y::'B. y : t --> (EX! x::'A. x : s & f x = y))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4552
==> CARD t = CARD s"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4553
  by (import hollight CARD_IMAGE_INJ_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4554
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4555
lemma CARD_SUBSET_IMAGE: "finite (t::'q_52977 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4556
(s::'q_52984 => bool) <= (f::'q_52977 => 'q_52984) ` t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4557
==> CARD s <= CARD t"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4558
  by (import hollight CARD_SUBSET_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4559
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4560
lemma HAS_SIZE_IMAGE_INJ_EQ: "(!!(x::'q_53049) y::'q_53049.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4561
    x : (s::'q_53049 => bool) & y : s & (f::'q_53049 => 'q_53044) x = f y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4562
    ==> x = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4563
==> HAS_SIZE (f ` s) (n::nat) = HAS_SIZE s n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4564
  by (import hollight HAS_SIZE_IMAGE_INJ_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4565
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4566
lemma CHOOSE_SUBSET_STRONG: "(finite (s::'A => bool) ==> (n::nat) <= CARD s) ==> EX t<=s. HAS_SIZE t n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4567
  by (import hollight CHOOSE_SUBSET_STRONG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4568
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4569
lemma CHOOSE_SUBSET: "[| finite (s::'A => bool); (n::nat) <= CARD s |] ==> EX t<=s. HAS_SIZE t n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4570
  by (import hollight CHOOSE_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4571
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4572
lemma HAS_SIZE_PRODUCT_DEPENDENT: "HAS_SIZE (x::'A => bool) (xa::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4573
(ALL xa::'A. xa : x --> HAS_SIZE ((xb::'A => 'B => bool) xa) (xc::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4574
==> HAS_SIZE
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4575
     {u::'A * 'B. EX (xa::'A) y::'B. (xa : x & y : xb xa) & u = (xa, y)}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4576
     (xa * xc)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4577
  by (import hollight HAS_SIZE_PRODUCT_DEPENDENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4578
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4579
lemma FINITE_PRODUCT_DEPENDENT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4580
(ALL x::'A. x : s --> finite ((t::'A => 'B => bool) x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4581
==> finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4582
     {u::'C.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4583
      EX (x::'A) y::'B. (x : s & y : t x) & u = (f::'A => 'B => 'C) x y}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4584
  by (import hollight FINITE_PRODUCT_DEPENDENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4585
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4586
lemma FINITE_PRODUCT: "finite (x::'A => bool) & finite (xa::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4587
==> finite {u::'A * 'B. EX (xb::'A) y::'B. (xb : x & y : xa) & u = (xb, y)}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4588
  by (import hollight FINITE_PRODUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4589
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4590
lemma CARD_PRODUCT: "finite (s::'A => bool) & finite (t::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4591
==> CARD {u::'A * 'B. EX (x::'A) y::'B. (x : s & y : t) & u = (x, y)} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4592
    CARD s * CARD t"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4593
  by (import hollight CARD_PRODUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4594
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4595
lemma HAS_SIZE_PRODUCT: "HAS_SIZE (x::'A => bool) (xa::nat) & HAS_SIZE (xb::'B => bool) (xc::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4596
==> HAS_SIZE
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4597
     {u::'A * 'B. EX (xa::'A) y::'B. (xa : x & y : xb) & u = (xa, y)}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4598
     (xa * xc)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4599
  by (import hollight HAS_SIZE_PRODUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4600
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4601
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4602
  CROSS :: "('q_53759 => bool) => ('q_53758 => bool) => 'q_53759 * 'q_53758 => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4603
  "CROSS ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4604
%(u::'q_53759 => bool) ua::'q_53758 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4605
   {ub::'q_53759 * 'q_53758.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4606
    EX (x::'q_53759) y::'q_53758. (x : u & y : ua) & ub = (x, y)}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4607
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4608
lemma DEF_CROSS: "CROSS =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4609
(%(u::'q_53759 => bool) ua::'q_53758 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4610
    {ub::'q_53759 * 'q_53758.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4611
     EX (x::'q_53759) y::'q_53758. (x : u & y : ua) & ub = (x, y)})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4612
  by (import hollight DEF_CROSS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4613
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4614
lemma IN_CROSS: "((x::'q_53795, xa::'q_53798)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4615
 : CROSS (xb::'q_53795 => bool) (xc::'q_53798 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4616
(x : xb & xa : xc)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4617
  by (import hollight IN_CROSS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4618
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4619
lemma HAS_SIZE_CROSS: "HAS_SIZE (x::'q_53823 => bool) (xb::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4620
HAS_SIZE (xa::'q_53826 => bool) (xc::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4621
==> HAS_SIZE (CROSS x xa) (xb * xc)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4622
  by (import hollight HAS_SIZE_CROSS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4623
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4624
lemma FINITE_CROSS: "finite (x::'q_53851 => bool) & finite (xa::'q_53853 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4625
==> finite (CROSS x xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4626
  by (import hollight FINITE_CROSS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4627
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4628
lemma CARD_CROSS: "finite (x::'q_53874 => bool) & finite (xa::'q_53876 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4629
==> CARD (CROSS x xa) = CARD x * CARD xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4630
  by (import hollight CARD_CROSS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4631
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4632
lemma CROSS_EQ_EMPTY: "(CROSS (x::'q_53917 => bool) (xa::'q_53921 => bool) = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4633
(x = {} | xa = {})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4634
  by (import hollight CROSS_EQ_EMPTY)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4635
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4636
lemma HAS_SIZE_FUNSPACE: "HAS_SIZE (s::'A => bool) (m::nat) & HAS_SIZE (t::'B => bool) (n::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4637
==> HAS_SIZE
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4638
     {u::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4639
      EX f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4640
         ((ALL x::'A. x : s --> f x : t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4641
          (ALL x::'A. x ~: s --> f x = (d::'B))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4642
         u = f}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4643
     (n ^ m)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4644
  by (import hollight HAS_SIZE_FUNSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4645
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4646
lemma CARD_FUNSPACE: "finite (s::'q_54227 => bool) & finite (t::'q_54224 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4647
==> CARD
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4648
     {u::'q_54227 => 'q_54224.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4649
      EX f::'q_54227 => 'q_54224.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4650
         ((ALL x::'q_54227. x : s --> f x : t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4651
          (ALL x::'q_54227. x ~: s --> f x = (d::'q_54224))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4652
         u = f} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4653
    CARD t ^ CARD s"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4654
  by (import hollight CARD_FUNSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4655
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4656
lemma FINITE_FUNSPACE: "finite (s::'q_54293 => bool) & finite (t::'q_54290 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4657
==> finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4658
     {u::'q_54293 => 'q_54290.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4659
      EX f::'q_54293 => 'q_54290.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4660
         ((ALL x::'q_54293. x : s --> f x : t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4661
          (ALL x::'q_54293. x ~: s --> f x = (d::'q_54290))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4662
         u = f}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4663
  by (import hollight FINITE_FUNSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4664
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4665
lemma HAS_SIZE_POWERSET: "HAS_SIZE (s::'A => bool) (n::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4666
==> HAS_SIZE {u::'A => bool. EX t<=s. u = t} ((2::nat) ^ n)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4667
  by (import hollight HAS_SIZE_POWERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4668
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4669
lemma CARD_POWERSET: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4670
==> CARD {u::'A => bool. EX t<=s. u = t} = (2::nat) ^ CARD s"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4671
  by (import hollight CARD_POWERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4672
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4673
lemma FINITE_POWERSET: "finite (s::'A => bool) ==> finite {u::'A => bool. EX t<=s. u = t}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4674
  by (import hollight FINITE_POWERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4675
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4676
lemma FINITE_UNIONS: "finite (Union (s::('A => bool) => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4677
(finite s & (ALL t::'A => bool. t : s --> finite t))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4678
  by (import hollight FINITE_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4679
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4680
lemma POWERSET_CLAUSES: "{x::'q_54515 => bool. EX xa<={}. x = xa} = {{}} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4681
(ALL (x::'A) xa::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4682
    {xb::'A => bool. EX xc<=insert x xa. xb = xc} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4683
    {u::'A => bool. EX s<=xa. u = s} Un
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4684
    insert x ` {u::'A => bool. EX s<=xa. u = s})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4685
  by (import hollight POWERSET_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4686
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4687
lemma HAS_SIZE_NUMSEG_LT: "HAS_SIZE {u. EX m<n. u = m} n"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4688
  by (import hollight HAS_SIZE_NUMSEG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4689
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4690
lemma CARD_NUMSEG_LT: "CARD {u. EX m<x. u = m} = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4691
  by (import hollight CARD_NUMSEG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4692
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4693
lemma FINITE_NUMSEG_LT: "finite {u::nat. EX m<x::nat. u = m}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4694
  by (import hollight FINITE_NUMSEG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4695
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4696
lemma HAS_SIZE_NUMSEG_LE: "HAS_SIZE {xa. EX xb<=x. xa = xb} (x + 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4697
  by (import hollight HAS_SIZE_NUMSEG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4698
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4699
lemma FINITE_NUMSEG_LE: "finite {u::nat. EX m<=x::nat. u = m}"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4700
  by (import hollight FINITE_NUMSEG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4701
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4702
lemma CARD_NUMSEG_LE: "CARD {u. EX m<=x. u = m} = x + 1"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4703
  by (import hollight CARD_NUMSEG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4704
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4705
lemma num_FINITE: "finite (s::nat => bool) = (EX a::nat. ALL x::nat. x : s --> x <= a)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4706
  by (import hollight num_FINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4707
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4708
lemma num_FINITE_AVOID: "finite (s::nat => bool) ==> EX a::nat. a ~: s"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4709
  by (import hollight num_FINITE_AVOID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4710
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4711
lemma FINITE_REAL_INTERVAL: "(ALL a. infinite {u. EX x. real_lt a x & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4712
(ALL a. infinite {u. EX x. real_le a x & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4713
(ALL b. infinite {u. EX x. real_lt x b & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4714
(ALL b. infinite {u. EX x. real_le x b & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4715
(ALL x xa.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4716
    finite {u. EX xb. (real_lt x xb & real_lt xb xa) & u = xb} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4717
    real_le xa x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4718
(ALL a b.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4719
    finite {u. EX x. (real_le a x & real_lt x b) & u = x} = real_le b a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4720
(ALL a b.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4721
    finite {u. EX x. (real_lt a x & real_le x b) & u = x} = real_le b a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4722
(ALL a b.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4723
    finite {u. EX x. (real_le a x & real_le x b) & u = x} = real_le b a)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4724
  by (import hollight FINITE_REAL_INTERVAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4725
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4726
lemma real_INFINITE: "(infinite::(hollight.real => bool) => bool) (UNIV::hollight.real => bool)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4727
  by (import hollight real_INFINITE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4728
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4729
lemma HAS_SIZE_INDEX: "HAS_SIZE (x::'A => bool) (n::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4730
==> EX f::nat => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4731
       (ALL m<n. f m : x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4732
       (ALL xa::'A. xa : x --> (EX! m::nat. m < n & f m = xa))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4733
  by (import hollight HAS_SIZE_INDEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4734
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4735
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4736
  pairwise :: "('q_55938 => 'q_55938 => bool) => ('q_55938 => bool) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4737
  "pairwise ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4738
%(u::'q_55938 => 'q_55938 => bool) ua::'q_55938 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4739
   ALL (x::'q_55938) y::'q_55938. x : ua & y : ua & x ~= y --> u x y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4740
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4741
lemma DEF_pairwise: "pairwise =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4742
(%(u::'q_55938 => 'q_55938 => bool) ua::'q_55938 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4743
    ALL (x::'q_55938) y::'q_55938. x : ua & y : ua & x ~= y --> u x y)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4744
  by (import hollight DEF_pairwise)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4745
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4746
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4747
  PAIRWISE :: "('A => 'A => bool) => 'A list => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4748
  "PAIRWISE ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4749
SOME PAIRWISE::('A => 'A => bool) => 'A list => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4750
   (ALL r::'A => 'A => bool. PAIRWISE r [] = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4751
   (ALL (h::'A) (r::'A => 'A => bool) t::'A list.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4752
       PAIRWISE r (h # t) = (list_all (r h) t & PAIRWISE r t))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4753
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4754
lemma DEF_PAIRWISE: "PAIRWISE =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4755
(SOME PAIRWISE::('A => 'A => bool) => 'A list => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4756
    (ALL r::'A => 'A => bool. PAIRWISE r [] = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4757
    (ALL (h::'A) (r::'A => 'A => bool) t::'A list.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4758
        PAIRWISE r (h # t) = (list_all (r h) t & PAIRWISE r t)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4759
  by (import hollight DEF_PAIRWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4760
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4761
lemma PAIRWISE_EMPTY: "pairwise (x::'q_55973 => 'q_55973 => bool) {} = True"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4762
  by (import hollight PAIRWISE_EMPTY)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4763
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4764
lemma PAIRWISE_SING: "pairwise (x::'q_55991 => 'q_55991 => bool) {xa::'q_55991} = True"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4765
  by (import hollight PAIRWISE_SING)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4766
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4767
lemma PAIRWISE_MONO: "pairwise (x::'q_56011 => 'q_56011 => bool) (xa::'q_56011 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4768
(xb::'q_56011 => bool) <= xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4769
==> pairwise x xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4770
  by (import hollight PAIRWISE_MONO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4771
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4772
lemma SURJECTIVE_IFF_INJECTIVE_GEN: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4773
finite (t::'B => bool) & CARD s = CARD t & (f::'A => 'B) ` s <= t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4774
==> (ALL y::'B. y : t --> (EX x::'A. x : s & f x = y)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4775
    (ALL (x::'A) y::'A. x : s & y : s & f x = f y --> x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4776
  by (import hollight SURJECTIVE_IFF_INJECTIVE_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4777
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4778
lemma SURJECTIVE_IFF_INJECTIVE: "finite (x::'A => bool) & (xa::'A => 'A) ` x <= x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4779
==> (ALL y::'A. y : x --> (EX xb::'A. xb : x & xa xb = y)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4780
    (ALL (xb::'A) y::'A. xb : x & y : x & xa xb = xa y --> xb = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4781
  by (import hollight SURJECTIVE_IFF_INJECTIVE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4782
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4783
lemma IMAGE_IMP_INJECTIVE_GEN: "[| finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4784
   CARD s = CARD (t::'B => bool) & (f::'A => 'B) ` s = t;
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4785
   (x::'A) : s & (y::'A) : s & f x = f y |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4786
==> x = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4787
  by (import hollight IMAGE_IMP_INJECTIVE_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4788
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4789
lemma IMAGE_IMP_INJECTIVE: "[| finite (s::'q_56387 => bool) & (f::'q_56387 => 'q_56387) ` s = s;
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4790
   (x::'q_56387) : s & (y::'q_56387) : s & f x = f y |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4791
==> x = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4792
  by (import hollight IMAGE_IMP_INJECTIVE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4793
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4794
lemma CARD_LE_INJ: "finite (x::'A => bool) & finite (xa::'B => bool) & CARD x <= CARD xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4795
==> EX f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4796
       f ` x <= xa &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4797
       (ALL (xa::'A) y::'A. xa : x & y : x & f xa = f y --> xa = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4798
  by (import hollight CARD_LE_INJ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4799
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4800
lemma FORALL_IN_CLAUSES: "(ALL x::'q_56493 => bool. (ALL xa::'q_56493. xa : {} --> x xa) = True) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4801
(ALL (x::'q_56533 => bool) (xa::'q_56533) xb::'q_56533 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4802
    (ALL xc::'q_56533. xc : insert xa xb --> x xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4803
    (x xa & (ALL xa::'q_56533. xa : xb --> x xa)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4804
  by (import hollight FORALL_IN_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4805
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4806
lemma EXISTS_IN_CLAUSES: "(ALL x::'q_56553 => bool. (EX xa::'q_56553. xa : {} & x xa) = False) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4807
(ALL (x::'q_56593 => bool) (xa::'q_56593) xb::'q_56593 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4808
    (EX xc::'q_56593. xc : insert xa xb & x xc) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4809
    (x xa | (EX xa::'q_56593. xa : xb & x xa)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4810
  by (import hollight EXISTS_IN_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4811
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4812
lemma SURJECTIVE_ON_RIGHT_INVERSE: "(ALL xb::'q_56650.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4813
    xb : (xa::'q_56650 => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4814
    (EX xa::'q_56649.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4815
        xa : (s::'q_56649 => bool) & (x::'q_56649 => 'q_56650) xa = xb)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4816
(EX g::'q_56650 => 'q_56649.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4817
    ALL y::'q_56650. y : xa --> g y : s & x (g y) = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4818
  by (import hollight SURJECTIVE_ON_RIGHT_INVERSE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4819
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4820
lemma INJECTIVE_ON_LEFT_INVERSE: "(ALL (xb::'q_56743) y::'q_56743.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4821
    xb : (xa::'q_56743 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4822
    y : xa & (x::'q_56743 => 'q_56746) xb = x y -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4823
    xb = y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4824
(EX xb::'q_56746 => 'q_56743. ALL xc::'q_56743. xc : xa --> xb (x xc) = xc)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4825
  by (import hollight INJECTIVE_ON_LEFT_INVERSE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4826
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4827
lemma BIJECTIVE_ON_LEFT_RIGHT_INVERSE: "(!!x::'q_56878.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4828
    x : (s::'q_56878 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4829
    ==> (f::'q_56878 => 'q_56877) x : (t::'q_56877 => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4830
==> ((ALL (x::'q_56878) y::'q_56878. x : s & y : s & f x = f y --> x = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4831
     (ALL x::'q_56877. x : t --> (EX xa::'q_56878. xa : s & f xa = x))) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4832
    (EX g::'q_56877 => 'q_56878.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4833
        (ALL y::'q_56877. y : t --> g y : s) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4834
        (ALL y::'q_56877. y : t --> f (g y) = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4835
        (ALL x::'q_56878. x : s --> g (f x) = x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4836
  by (import hollight BIJECTIVE_ON_LEFT_RIGHT_INVERSE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4837
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4838
lemma SURJECTIVE_RIGHT_INVERSE: "(ALL y::'q_56902. EX x::'q_56905. (f::'q_56905 => 'q_56902) x = y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4839
(EX g::'q_56902 => 'q_56905. ALL y::'q_56902. f (g y) = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4840
  by (import hollight SURJECTIVE_RIGHT_INVERSE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4841
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4842
lemma INJECTIVE_LEFT_INVERSE: "(ALL (x::'q_56939) xa::'q_56939.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4843
    (f::'q_56939 => 'q_56942) x = f xa --> x = xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4844
(EX g::'q_56942 => 'q_56939. ALL x::'q_56939. g (f x) = x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4845
  by (import hollight INJECTIVE_LEFT_INVERSE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4846
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4847
lemma BIJECTIVE_LEFT_RIGHT_INVERSE: "((ALL (x::'A) y::'A. (f::'A => 'B) x = f y --> x = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4848
 (ALL y::'B. EX x::'A. f x = y)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4849
(EX g::'B => 'A. (ALL y::'B. f (g y) = y) & (ALL x::'A. g (f x) = x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4850
  by (import hollight BIJECTIVE_LEFT_RIGHT_INVERSE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4851
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4852
lemma FUNCTION_FACTORS_RIGHT: "(ALL xb::'q_57046.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4853
    EX y::'q_57034.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4854
       (xa::'q_57034 => 'q_57047) y = (x::'q_57046 => 'q_57047) xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4855
(EX xb::'q_57046 => 'q_57034. x = xa o xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4856
  by (import hollight FUNCTION_FACTORS_RIGHT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4857
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4858
lemma FUNCTION_FACTORS_LEFT: "(ALL (xb::'q_57119) y::'q_57119.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4859
    (xa::'q_57119 => 'q_57099) xb = xa y -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4860
    (x::'q_57119 => 'q_57120) xb = x y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4861
(EX xb::'q_57099 => 'q_57120. x = xb o xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4862
  by (import hollight FUNCTION_FACTORS_LEFT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4863
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4864
lemma SURJECTIVE_FORALL_THM: "(ALL y::'B. EX x::'A. (f::'A => 'B) x = y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4865
(ALL P::'B => bool. (ALL x::'A. P (f x)) = All P)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4866
  by (import hollight SURJECTIVE_FORALL_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4867
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4868
lemma SURJECTIVE_EXISTS_THM: "(ALL y::'B. EX x::'A. (f::'A => 'B) x = y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4869
(ALL P::'B => bool. (EX x::'A. P (f x)) = Ex P)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4870
  by (import hollight SURJECTIVE_EXISTS_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4871
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4872
lemma SURJECTIVE_IMAGE_THM: "(ALL y::'B. EX x::'A. (f::'A => 'B) x = y) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4873
(ALL x::'B => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4874
    f ` {u::'A. EX xa::'A. x (f xa) & u = xa} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4875
    {u::'B. EX xa::'B. x xa & u = xa})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4876
  by (import hollight SURJECTIVE_IMAGE_THM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4877
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4878
lemma IMAGE_INJECTIVE_IMAGE_OF_SUBSET: "EX x<=s::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4879
   (f::'A => 'B) ` s = f ` x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4880
   (ALL (xa::'A) y::'A. xa : x & y : x & f xa = f y --> xa = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4881
  by (import hollight IMAGE_INJECTIVE_IMAGE_OF_SUBSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4882
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4883
lemma INJECTIVE_ON_IMAGE: "(ALL (s::'A => bool) t::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4884
    s <= (u::'A => bool) & t <= u & (f::'A => 'B) ` s = f ` t --> s = t) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4885
(ALL (x::'A) y::'A. x : u & y : u & f x = f y --> x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4886
  by (import hollight INJECTIVE_ON_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4887
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4888
lemma INJECTIVE_IMAGE: "(ALL (s::'A => bool) t::'A => bool. (f::'A => 'B) ` s = f ` t --> s = t) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4889
(ALL (x::'A) y::'A. f x = f y --> x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4890
  by (import hollight INJECTIVE_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4891
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4892
lemma SURJECTIVE_ON_IMAGE: "(ALL t<=v::'B => bool. EX s<=u::'A => bool. (f::'A => 'B) ` s = t) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4893
(ALL y::'B. y : v --> (EX x::'A. x : u & f x = y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4894
  by (import hollight SURJECTIVE_ON_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4895
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4896
lemma SURJECTIVE_IMAGE: "(ALL t::'B => bool. EX s::'A => bool. (f::'A => 'B) ` s = t) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4897
(ALL y::'B. EX x::'A. f x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4898
  by (import hollight SURJECTIVE_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4899
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4900
lemma CARD_EQ_BIJECTION: "finite (s::'A => bool) & finite (t::'B => bool) & CARD s = CARD t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4901
==> EX f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4902
       (ALL x::'A. x : s --> f x : t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4903
       (ALL y::'B. y : t --> (EX x::'A. x : s & f x = y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4904
       (ALL (x::'A) y::'A. x : s & y : s & f x = f y --> x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4905
  by (import hollight CARD_EQ_BIJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4906
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4907
lemma CARD_EQ_BIJECTIONS: "finite (s::'A => bool) & finite (t::'B => bool) & CARD s = CARD t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4908
==> EX (f::'A => 'B) g::'B => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4909
       (ALL x::'A. x : s --> f x : t & g (f x) = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4910
       (ALL y::'B. y : t --> g y : s & f (g y) = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4911
  by (import hollight CARD_EQ_BIJECTIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4912
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4913
lemma BIJECTIONS_HAS_SIZE: "(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4914
    x : (s::'A => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4915
    (f::'A => 'B) x : (t::'B => bool) & (g::'B => 'A) (f x) = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4916
(ALL y::'B. y : t --> g y : s & f (g y) = y) & HAS_SIZE s (n::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4917
==> HAS_SIZE t n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4918
  by (import hollight BIJECTIONS_HAS_SIZE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4919
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4920
lemma BIJECTIONS_HAS_SIZE_EQ: "(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4921
    x : (s::'A => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4922
    (f::'A => 'B) x : (t::'B => bool) & (g::'B => 'A) (f x) = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4923
(ALL y::'B. y : t --> g y : s & f (g y) = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4924
==> HAS_SIZE s (n::nat) = HAS_SIZE t n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4925
  by (import hollight BIJECTIONS_HAS_SIZE_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4926
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4927
lemma BIJECTIONS_CARD_EQ: "(finite (s::'A => bool) | finite (t::'B => bool)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4928
(ALL x::'A. x : s --> (f::'A => 'B) x : t & (g::'B => 'A) (f x) = x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4929
(ALL y::'B. y : t --> g y : s & f (g y) = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4930
==> CARD s = CARD t"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4931
  by (import hollight BIJECTIONS_CARD_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4932
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4933
lemma WF_FINITE: "(ALL x::'A. ~ (u_556::'A => 'A => bool) x x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4934
(ALL (x::'A) (y::'A) z::'A. u_556 x y & u_556 y z --> u_556 x z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4935
(ALL x::'A. finite {u::'A. EX y::'A. u_556 y x & u = y})
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4936
==> wfP u_556"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4937
  by (import hollight WF_FINITE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4938
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4939
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4940
  "<=_c" :: "('q_58200 => bool) => ('q_58195 => bool) => bool" ("<='_c")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4941
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4942
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4943
  "<=_c_def": "<=_c ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4944
%(u::'q_58200 => bool) ua::'q_58195 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4945
   EX f::'q_58200 => 'q_58195.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4946
      (ALL x::'q_58200. x : u --> f x : ua) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4947
      (ALL (x::'q_58200) y::'q_58200. x : u & y : u & f x = f y --> x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4948
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4949
lemma DEF__lessthan__equal__c: "<=_c =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4950
(%(u::'q_58200 => bool) ua::'q_58195 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4951
    EX f::'q_58200 => 'q_58195.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4952
       (ALL x::'q_58200. x : u --> f x : ua) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4953
       (ALL (x::'q_58200) y::'q_58200. x : u & y : u & f x = f y --> x = y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4954
  by (import hollight DEF__lessthan__equal__c)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4955
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4956
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4957
  "<_c" :: "('q_58212 => bool) => ('q_58213 => bool) => bool" ("<'_c")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4958
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4959
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4960
  "<_c_def": "<_c == %(u::'q_58212 => bool) ua::'q_58213 => bool. <=_c u ua & ~ <=_c ua u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4961
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4962
lemma DEF__lessthan__c: "<_c = (%(u::'q_58212 => bool) ua::'q_58213 => bool. <=_c u ua & ~ <=_c ua u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4963
  by (import hollight DEF__lessthan__c)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4964
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4965
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4966
  "=_c" :: "('q_58264 => bool) => ('q_58261 => bool) => bool" ("='_c")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4967
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4968
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4969
  "=_c_def": "=_c ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4970
%(u::'q_58264 => bool) ua::'q_58261 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4971
   EX f::'q_58264 => 'q_58261.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4972
      (ALL x::'q_58264. x : u --> f x : ua) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4973
      (ALL y::'q_58261. y : ua --> (EX! x::'q_58264. x : u & f x = y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4974
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4975
lemma DEF__equal__c: "=_c =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4976
(%(u::'q_58264 => bool) ua::'q_58261 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4977
    EX f::'q_58264 => 'q_58261.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4978
       (ALL x::'q_58264. x : u --> f x : ua) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4979
       (ALL y::'q_58261. y : ua --> (EX! x::'q_58264. x : u & f x = y)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4980
  by (import hollight DEF__equal__c)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4981
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4982
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4983
  ">=_c" :: "('q_58273 => bool) => ('q_58272 => bool) => bool" (">='_c")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4984
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4985
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4986
  ">=_c_def": ">=_c == %(u::'q_58273 => bool) ua::'q_58272 => bool. <=_c ua u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4987
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4988
lemma DEF__greaterthan__equal__c: ">=_c = (%(u::'q_58273 => bool) ua::'q_58272 => bool. <=_c ua u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4989
  by (import hollight DEF__greaterthan__equal__c)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4990
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4991
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4992
  ">_c" :: "('q_58282 => bool) => ('q_58281 => bool) => bool" (">'_c")
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4993
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4994
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4995
  ">_c_def": ">_c == %(u::'q_58282 => bool) ua::'q_58281 => bool. <_c ua u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4996
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4997
lemma DEF__greaterthan__c: ">_c = (%(u::'q_58282 => bool) ua::'q_58281 => bool. <_c ua u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4998
  by (import hollight DEF__greaterthan__c)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  4999
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5000
lemma LE_C: "<=_c (x::'q_58320 => bool) (xa::'q_58323 => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5001
(EX xb::'q_58323 => 'q_58320.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5002
    ALL xc::'q_58320. xc : x --> (EX x::'q_58323. x : xa & xb x = xc))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5003
  by (import hollight LE_C)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5004
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5005
lemma GE_C: ">=_c (x::'q_58364 => bool) (xa::'q_58361 => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5006
(EX f::'q_58364 => 'q_58361.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5007
    ALL y::'q_58361. y : xa --> (EX xa::'q_58364. xa : x & y = f xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5008
  by (import hollight GE_C)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5009
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5010
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5011
  COUNTABLE :: "('q_58372 => bool) => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5012
  "(op ==::(('q_58372::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5013
        => (('q_58372::type => bool) => bool) => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5014
 (COUNTABLE::('q_58372::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5015
 ((>=_c::(nat => bool) => ('q_58372::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5016
   (UNIV::nat => bool))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5017
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5018
lemma DEF_COUNTABLE: "(op =::(('q_58372::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5019
       => (('q_58372::type => bool) => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5020
 (COUNTABLE::('q_58372::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5021
 ((>=_c::(nat => bool) => ('q_58372::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5022
   (UNIV::nat => bool))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5023
  by (import hollight DEF_COUNTABLE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5024
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5025
lemma NUMSEG_COMBINE_R: "(x::nat) <= (xa::nat) + (1::nat) & xa <= (xb::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5026
==> {x..xa} Un {xa + (1::nat)..xb} = {x..xb}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5027
  by (import hollight NUMSEG_COMBINE_R)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5028
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5029
lemma NUMSEG_COMBINE_L: "(x::nat) <= (xa::nat) & xa <= (xb::nat) + (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5030
==> {x..xa - (1::nat)} Un {xa..xb} = {x..xb}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5031
  by (import hollight NUMSEG_COMBINE_L)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5032
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5033
lemma NUMSEG_LREC: "(x::nat) <= (xa::nat) ==> insert x {x + (1::nat)..xa} = {x..xa}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5034
  by (import hollight NUMSEG_LREC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5035
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5036
lemma NUMSEG_RREC: "(x::nat) <= (xa::nat) ==> insert xa {x..xa - (1::nat)} = {x..xa}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5037
  by (import hollight NUMSEG_RREC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5038
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5039
lemma IN_NUMSEG_0: "((x::nat) : {0::nat..xa::nat}) = (x <= xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5040
  by (import hollight IN_NUMSEG_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5041
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5042
lemma NUMSEG_EMPTY: "({x::nat..xa::nat} = {}) = (xa < x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5043
  by (import hollight NUMSEG_EMPTY)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5044
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5045
lemma CARD_NUMSEG_LEMMA: "CARD {m..m + d} = d + 1"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5046
  by (import hollight CARD_NUMSEG_LEMMA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5047
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5048
lemma CARD_NUMSEG: "CARD {m..n} = n + 1 - m"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5049
  by (import hollight CARD_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5050
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5051
lemma HAS_SIZE_NUMSEG: "HAS_SIZE {x..xa} (xa + 1 - x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5052
  by (import hollight HAS_SIZE_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5053
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5054
lemma CARD_NUMSEG_1: "CARD {1..x} = x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5055
  by (import hollight CARD_NUMSEG_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5056
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5057
lemma HAS_SIZE_NUMSEG_1: "HAS_SIZE {1..x} x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5058
  by (import hollight HAS_SIZE_NUMSEG_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5059
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5060
lemma NUMSEG_CLAUSES: "(ALL m::nat. {m..0::nat} = (if m = (0::nat) then {0::nat} else {})) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5061
(ALL (m::nat) n::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5062
    {m..Suc n} = (if m <= Suc n then insert (Suc n) {m..n} else {m..n}))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5063
  by (import hollight NUMSEG_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5064
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5065
lemma FINITE_INDEX_NUMSEG: "finite (s::'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5066
(EX f::nat => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5067
    (ALL (i::nat) j::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5068
        i : {1::nat..CARD s} & j : {1::nat..CARD s} & f i = f j --> i = j) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5069
    s = f ` {1::nat..CARD s})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5070
  by (import hollight FINITE_INDEX_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5071
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5072
lemma FINITE_INDEX_NUMBERS: "finite (s::'A => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5073
(EX (k::nat => bool) f::nat => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5074
    (ALL (i::nat) j::nat. i : k & j : k & f i = f j --> i = j) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5075
    finite k & s = f ` k)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5076
  by (import hollight FINITE_INDEX_NUMBERS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5077
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5078
lemma DISJOINT_NUMSEG: "({x::nat..xa::nat} Int {xb::nat..xc::nat} = {}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5079
(xa < xb | xc < x | xa < x | xc < xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5080
  by (import hollight DISJOINT_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5081
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5082
lemma NUMSEG_ADD_SPLIT: "(x::nat) <= (xa::nat) + (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5083
==> {x..xa + (xb::nat)} = {x..xa} Un {xa + (1::nat)..xa + xb}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5084
  by (import hollight NUMSEG_ADD_SPLIT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5085
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5086
lemma SUBSET_NUMSEG: "({m::nat..n::nat} <= {p::nat..q::nat}) = (n < m | p <= m & n <= q)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5087
  by (import hollight SUBSET_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5088
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5089
lemma NUMSEG_LE: "{u::nat. EX xa<=x::nat. u = xa} = {0::nat..x}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5090
  by (import hollight NUMSEG_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5091
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5092
lemma NUMSEG_LT: "{u::nat. EX x<n::nat. u = x} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5093
(if n = (0::nat) then {} else {0::nat..n - (1::nat)})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5094
  by (import hollight NUMSEG_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5095
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5096
lemma TOPOLOGICAL_SORT: "[| (ALL (x::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5097
       (u_556::'A => 'A => bool) x y & u_556 y x --> x = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5098
   (ALL (x::'A) (y::'A) z::'A. u_556 x y & u_556 y z --> u_556 x z);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5099
   HAS_SIZE (s::'A => bool) (n::nat) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5100
==> EX f::nat => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5101
       s = f ` {1::nat..n} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5102
       (ALL (j::nat) k::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5103
           j : {1::nat..n} & k : {1::nat..n} & j < k -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5104
           ~ u_556 (f k) (f j))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5105
  by (import hollight TOPOLOGICAL_SORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5106
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5107
lemma FINITE_INTSEG: "(ALL l r. finite {u. EX x. (int_le l x & int_le x r) & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5108
(ALL l r. finite {u. EX x. (int_le l x & int_lt x r) & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5109
(ALL l r. finite {u. EX x. (int_lt l x & int_le x r) & u = x}) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5110
(ALL l r. finite {u. EX x. (int_lt l x & int_lt x r) & u = x})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5111
  by (import hollight FINITE_INTSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5112
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5113
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5114
  neutral :: "('q_59899 => 'q_59899 => 'q_59899) => 'q_59899"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5115
  "neutral ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5116
%u::'q_59899 => 'q_59899 => 'q_59899.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5117
   SOME x::'q_59899. ALL y::'q_59899. u x y = y & u y x = y"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5118
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5119
lemma DEF_neutral: "neutral =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5120
(%u::'q_59899 => 'q_59899 => 'q_59899.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5121
    SOME x::'q_59899. ALL y::'q_59899. u x y = y & u y x = y)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5122
  by (import hollight DEF_neutral)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5123
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5124
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5125
  monoidal :: "('A => 'A => 'A) => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5126
  "monoidal ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5127
%u::'A => 'A => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5128
   (ALL (x::'A) y::'A. u x y = u y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5129
   (ALL (x::'A) (y::'A) z::'A. u x (u y z) = u (u x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5130
   (ALL x::'A. u (neutral u) x = x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5131
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5132
lemma DEF_monoidal: "monoidal =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5133
(%u::'A => 'A => 'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5134
    (ALL (x::'A) y::'A. u x y = u y x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5135
    (ALL (x::'A) (y::'A) z::'A. u x (u y z) = u (u x y) z) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5136
    (ALL x::'A. u (neutral u) x = x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5137
  by (import hollight DEF_monoidal)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5138
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5139
lemma MONOIDAL_AC: "monoidal (x::'q_60055 => 'q_60055 => 'q_60055)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5140
==> (ALL a::'q_60055. x (neutral x) a = a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5141
    (ALL a::'q_60055. x a (neutral x) = a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5142
    (ALL (a::'q_60055) b::'q_60055. x a b = x b a) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5143
    (ALL (a::'q_60055) (b::'q_60055) c::'q_60055.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5144
        x (x a b) c = x a (x b c)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5145
    (ALL (a::'q_60055) (b::'q_60055) c::'q_60055. x a (x b c) = x b (x a c))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5146
  by (import hollight MONOIDAL_AC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5147
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5148
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5149
  support :: "('B => 'B => 'B) => ('A => 'B) => ('A => bool) => 'A => bool"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5150
  "support ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5151
%(u::'B => 'B => 'B) (ua::'A => 'B) ub::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5152
   {uc::'A. EX x::'A. (x : ub & ua x ~= neutral u) & uc = x}"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5153
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5154
lemma DEF_support: "support =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5155
(%(u::'B => 'B => 'B) (ua::'A => 'B) ub::'A => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5156
    {uc::'A. EX x::'A. (x : ub & ua x ~= neutral u) & uc = x})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5157
  by (import hollight DEF_support)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5158
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5159
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5160
  iterate :: "('q_60113 => 'q_60113 => 'q_60113)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5161
=> ('A => bool) => ('A => 'q_60113) => 'q_60113"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5162
  "iterate ==
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5163
%(u::'q_60113 => 'q_60113 => 'q_60113) (ua::'A => bool) ub::'A => 'q_60113.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5164
   if finite (support u ub ua)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5165
   then ITSET (%x::'A. u (ub x)) (support u ub ua) (neutral u)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5166
   else neutral u"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5167
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5168
lemma DEF_iterate: "iterate =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5169
(%(u::'q_60113 => 'q_60113 => 'q_60113) (ua::'A => bool) ub::'A => 'q_60113.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5170
    if finite (support u ub ua)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5171
    then ITSET (%x::'A. u (ub x)) (support u ub ua) (neutral u)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5172
    else neutral u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5173
  by (import hollight DEF_iterate)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5174
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5175
lemma IN_SUPPORT: "((xb::'q_60163)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5176
 : support (x::'q_60160 => 'q_60160 => 'q_60160) (xa::'q_60163 => 'q_60160)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5177
    (xc::'q_60163 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5178
(xb : xc & xa xb ~= neutral x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5179
  by (import hollight IN_SUPPORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5180
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5181
lemma SUPPORT_SUPPORT: "support (x::'q_60185 => 'q_60185 => 'q_60185) (xa::'q_60196 => 'q_60185)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5182
 (support x xa (xb::'q_60196 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5183
support x xa xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5184
  by (import hollight SUPPORT_SUPPORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5185
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5186
lemma SUPPORT_EMPTY: "(ALL xc::'q_60235.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5187
    xc : (xb::'q_60235 => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5188
    (xa::'q_60235 => 'q_60221) xc =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5189
    neutral (x::'q_60221 => 'q_60221 => 'q_60221)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5190
(support x xa xb = {})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5191
  by (import hollight SUPPORT_EMPTY)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5192
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5193
lemma SUPPORT_SUBSET: "support (x::'q_60255 => 'q_60255 => 'q_60255) (xa::'q_60256 => 'q_60255)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5194
 (xb::'q_60256 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5195
<= xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5196
  by (import hollight SUPPORT_SUBSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5197
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5198
lemma FINITE_SUPPORT: "finite (s::'q_60273 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5199
==> finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5200
     (support (u::'q_60279 => 'q_60279 => 'q_60279)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5201
       (f::'q_60273 => 'q_60279) s)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5202
  by (import hollight FINITE_SUPPORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5203
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5204
lemma SUPPORT_CLAUSES: "(ALL x::'q_60297 => 'q_60530.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5205
    support (u_4371::'q_60530 => 'q_60530 => 'q_60530) x {} = {}) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5206
(ALL (x::'q_60345 => 'q_60530) (xa::'q_60345) xb::'q_60345 => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5207
    support u_4371 x (insert xa xb) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5208
    (if x xa = neutral u_4371 then support u_4371 x xb
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5209
     else insert xa (support u_4371 x xb))) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5210
(ALL (x::'q_60378 => 'q_60530) (xa::'q_60378) xb::'q_60378 => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5211
    support u_4371 x (xb - {xa}) = support u_4371 x xb - {xa}) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5212
(ALL (x::'q_60416 => 'q_60530) (xa::'q_60416 => bool) xb::'q_60416 => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5213
    support u_4371 x (xa Un xb) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5214
    support u_4371 x xa Un support u_4371 x xb) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5215
(ALL (x::'q_60454 => 'q_60530) (xa::'q_60454 => bool) xb::'q_60454 => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5216
    support u_4371 x (xa Int xb) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5217
    support u_4371 x xa Int support u_4371 x xb) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5218
(ALL (x::'q_60492 => 'q_60530) (xa::'q_60492 => bool) xb::'q_60492 => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5219
    support u_4371 x (xa - xb) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5220
    support u_4371 x xa - support u_4371 x xb) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5221
(ALL (x::'q_60529 => 'q_60520) (xa::'q_60520 => 'q_60530)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5222
    xb::'q_60529 => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5223
    support u_4371 xa (x ` xb) = x ` support u_4371 (xa o x) xb)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5224
  by (import hollight SUPPORT_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5225
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5226
lemma SUPPORT_DELTA: "support (x::'q_60556 => 'q_60556 => 'q_60556)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5227
 (%xa::'q_60584.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5228
     if xa = (xc::'q_60584) then (xb::'q_60584 => 'q_60556) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5229
     else neutral x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5230
 (xa::'q_60584 => bool) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5231
(if xc : xa then support x xb {xc} else {})"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5232
  by (import hollight SUPPORT_DELTA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5233
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5234
lemma FINITE_SUPPORT_DELTA: "finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5235
 (support (x::'q_60605 => 'q_60605 => 'q_60605)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5236
   (%xc::'q_60614.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5237
       if xc = (xb::'q_60614) then (xa::'q_60614 => 'q_60605) xc
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5238
       else neutral x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5239
   (s::'q_60614 => bool))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5240
  by (import hollight FINITE_SUPPORT_DELTA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5241
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5242
lemma ITERATE_SUPPORT: "iterate (x::'q_60630 => 'q_60630 => 'q_60630)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5243
 (support x (xa::'q_60642 => 'q_60630) (xb::'q_60642 => bool)) xa =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5244
iterate x xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5245
  by (import hollight ITERATE_SUPPORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5246
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5247
lemma ITERATE_EXPAND_CASES: "iterate (x::'q_60661 => 'q_60661 => 'q_60661) (xb::'q_60667 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5248
 (xa::'q_60667 => 'q_60661) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5249
(if finite (support x xa xb) then iterate x (support x xa xb) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5250
 else neutral x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5251
  by (import hollight ITERATE_EXPAND_CASES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5252
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5253
lemma ITERATE_CLAUSES_GEN: "monoidal (u_4371::'B => 'B => 'B)
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5254
==> (ALL f::'A => 'B. iterate u_4371 {} f = neutral u_4371) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5255
    (ALL (f::'A => 'B) (x::'A) s::'A => bool.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5256
        monoidal u_4371 & finite (support u_4371 f s) -->
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5257
        iterate u_4371 (insert x s) f =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5258
        (if x : s then iterate u_4371 s f
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5259
         else u_4371 (f x) (iterate u_4371 s f)))"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5260
  by (import hollight ITERATE_CLAUSES_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5261
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5262
lemma ITERATE_CLAUSES: "monoidal (x::'q_60857 => 'q_60857 => 'q_60857)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5263
==> (ALL f::'q_60815 => 'q_60857. iterate x {} f = neutral x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5264
    (ALL (f::'q_60859 => 'q_60857) (xa::'q_60859) s::'q_60859 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5265
        finite s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5266
        iterate x (insert xa s) f =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5267
        (if xa : s then iterate x s f else x (f xa) (iterate x s f)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5268
  by (import hollight ITERATE_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5269
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5270
lemma ITERATE_UNION: "[| monoidal (u_4371::'q_60945 => 'q_60945 => 'q_60945);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5271
   finite (s::'q_60930 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5272
   finite (x::'q_60930 => bool) & s Int x = {} |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5273
==> iterate u_4371 (s Un x) (f::'q_60930 => 'q_60945) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5274
    u_4371 (iterate u_4371 s f) (iterate u_4371 x f)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5275
  by (import hollight ITERATE_UNION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5276
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5277
lemma ITERATE_UNION_GEN: "[| monoidal (x::'B => 'B => 'B);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5278
   finite (support x (xa::'A => 'B) (xb::'A => bool)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5279
   finite (support x xa (xc::'A => bool)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5280
   support x xa xb Int support x xa xc = {} |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5281
==> iterate x (xb Un xc) xa = x (iterate x xb xa) (iterate x xc xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5282
  by (import hollight ITERATE_UNION_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5283
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5284
lemma ITERATE_DIFF: "[| monoidal (u::'q_61087 => 'q_61087 => 'q_61087);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5285
   finite (s::'q_61083 => bool) & (t::'q_61083 => bool) <= s |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5286
==> u (iterate u (s - t) (f::'q_61083 => 'q_61087)) (iterate u t f) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5287
    iterate u s f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5288
  by (import hollight ITERATE_DIFF)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5289
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5290
lemma ITERATE_DIFF_GEN: "[| monoidal (x::'B => 'B => 'B);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5291
   finite (support x (xa::'A => 'B) (xb::'A => bool)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5292
   support x xa (xc::'A => bool) <= support x xa xb |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5293
==> x (iterate x (xb - xc) xa) (iterate x xc xa) = iterate x xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5294
  by (import hollight ITERATE_DIFF_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5295
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5296
lemma ITERATE_INCL_EXCL: "[| monoidal (u_4371::'q_61316 => 'q_61316 => 'q_61316);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5297
   finite (s::'q_61298 => bool) & finite (t::'q_61298 => bool) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5298
==> u_4371 (iterate u_4371 s (f::'q_61298 => 'q_61316))
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5299
     (iterate u_4371 t f) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5300
    u_4371 (iterate u_4371 (s Un t) f) (iterate u_4371 (s Int t) f)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5301
  by (import hollight ITERATE_INCL_EXCL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5302
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5303
lemma ITERATE_CLOSED: "[| monoidal (u_4371::'B => 'B => 'B);
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5304
   (P::'B => bool) (neutral u_4371) &
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5305
   (ALL (x::'B) y::'B. P x & P y --> P (u_4371 x y));
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5306
   !!x::'A.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5307
      x : (s::'A => bool) & (f::'A => 'B) x ~= neutral u_4371 ==> P (f x) |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5308
==> P (iterate u_4371 s f)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5309
  by (import hollight ITERATE_CLOSED)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5310
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5311
lemma ITERATE_RELATED: "[| monoidal (u_4371::'B => 'B => 'B);
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5312
   (R::'B => 'B => bool) (neutral u_4371) (neutral u_4371) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5313
   (ALL (x1::'B) (y1::'B) (x2::'B) y2::'B.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5314
       R x1 x2 & R y1 y2 --> R (u_4371 x1 y1) (u_4371 x2 y2));
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5315
   finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5316
   (ALL xa::'A. xa : x --> R ((f::'A => 'B) xa) ((g::'A => 'B) xa)) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5317
==> R (iterate u_4371 x f) (iterate u_4371 x g)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5318
  by (import hollight ITERATE_RELATED)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5319
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5320
lemma ITERATE_EQ_NEUTRAL: "[| monoidal (u_4371::'B => 'B => 'B);
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5321
   !!x::'A. x : (s::'A => bool) ==> (f::'A => 'B) x = neutral u_4371 |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5322
==> iterate u_4371 s f = neutral u_4371"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5323
  by (import hollight ITERATE_EQ_NEUTRAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5324
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5325
lemma ITERATE_SING: "monoidal (x::'B => 'B => 'B) ==> iterate x {xa::'A} (f::'A => 'B) = f xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5326
  by (import hollight ITERATE_SING)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5327
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5328
lemma ITERATE_DELETE: "[| monoidal (u::'B => 'B => 'B); finite (s::'A => bool) & (a::'A) : s |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5329
==> u ((f::'A => 'B) a) (iterate u (s - {a}) f) = iterate u s f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5330
  by (import hollight ITERATE_DELETE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5331
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5332
lemma ITERATE_DELTA: "monoidal (u_4371::'q_61672 => 'q_61672 => 'q_61672)
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5333
==> iterate u_4371 (xb::'q_61691 => bool)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5334
     (%xb::'q_61691.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5335
         if xb = (xa::'q_61691) then (x::'q_61691 => 'q_61672) xb
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5336
         else neutral u_4371) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5337
    (if xa : xb then x xa else neutral u_4371)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5338
  by (import hollight ITERATE_DELTA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5339
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5340
lemma ITERATE_IMAGE: "[| monoidal (u_4371::'C => 'C => 'C);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5341
   !!(x::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5342
      x : (s::'A => bool) & y : s & (f::'A => 'B) x = f y ==> x = y |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5343
==> iterate u_4371 (f ` s) (g::'B => 'C) = iterate u_4371 s (g o f)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5344
  by (import hollight ITERATE_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5345
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5346
lemma ITERATE_BIJECTION: "[| monoidal (u_4371::'B => 'B => 'B);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5347
   (ALL x::'A. x : (s::'A => bool) --> (p::'A => 'A) x : s) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5348
   (ALL y::'A. y : s --> (EX! x::'A. x : s & p x = y)) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5349
==> iterate u_4371 s (f::'A => 'B) = iterate u_4371 s (f o p)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5350
  by (import hollight ITERATE_BIJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5351
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5352
lemma ITERATE_ITERATE_PRODUCT: "[| monoidal (u_4371::'C => 'C => 'C);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5353
   finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5354
   (ALL i::'A. i : x --> finite ((xa::'A => 'B => bool) i)) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5355
==> iterate u_4371 x
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5356
     (%i::'A. iterate u_4371 (xa i) ((xb::'A => 'B => 'C) i)) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5357
    iterate u_4371
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5358
     {u::'A * 'B. EX (i::'A) j::'B. (i : x & j : xa i) & u = (i, j)}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5359
     (SOME f::'A * 'B => 'C. ALL (i::'A) j::'B. f (i, j) = xb i j)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5360
  by (import hollight ITERATE_ITERATE_PRODUCT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5361
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5362
lemma ITERATE_EQ: "[| monoidal (u_4371::'B => 'B => 'B);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5363
   !!x::'A. x : (s::'A => bool) ==> (f::'A => 'B) x = (g::'A => 'B) x |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5364
==> iterate u_4371 s f = iterate u_4371 s g"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5365
  by (import hollight ITERATE_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5366
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5367
lemma ITERATE_EQ_GENERAL: "[| monoidal (u_4371::'C => 'C => 'C);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5368
   (ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5369
       y : (t::'B => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5370
       (EX! x::'A. x : (s::'A => bool) & (h::'A => 'B) x = y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5371
   (ALL x::'A. x : s --> h x : t & (g::'B => 'C) (h x) = (f::'A => 'C) x) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5372
==> iterate u_4371 s f = iterate u_4371 t g"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5373
  by (import hollight ITERATE_EQ_GENERAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5374
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5375
lemma ITERATE_EQ_GENERAL_INVERSES: "[| monoidal (u_4371::'C => 'C => 'C);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5376
   (ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5377
       y : (t::'B => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5378
       (k::'B => 'A) y : (s::'A => bool) & (h::'A => 'B) (k y) = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5379
   (ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5380
       x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5381
       h x : t & k (h x) = x & (g::'B => 'C) (h x) = (f::'A => 'C) x) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5382
==> iterate u_4371 s f = iterate u_4371 t g"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5383
  by (import hollight ITERATE_EQ_GENERAL_INVERSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5384
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5385
lemma ITERATE_INJECTION: "[| monoidal (u_4371::'B => 'B => 'B);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5386
   finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5387
   (ALL x::'A. x : s --> (p::'A => 'A) x : s) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5388
   (ALL (x::'A) y::'A. x : s & y : s & p x = p y --> x = y) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5389
==> iterate u_4371 s ((f::'A => 'B) o p) = iterate u_4371 s f"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5390
  by (import hollight ITERATE_INJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5391
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5392
lemma ITERATE_UNION_NONZERO: "[| monoidal (u_4371::'B => 'B => 'B);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5393
   finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5394
   finite (t::'A => bool) &
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5395
   (ALL x::'A. x : s Int t --> (f::'A => 'B) x = neutral u_4371) |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5396
==> iterate u_4371 (s Un t) f =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5397
    u_4371 (iterate u_4371 s f) (iterate u_4371 t f)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5398
  by (import hollight ITERATE_UNION_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5399
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5400
lemma ITERATE_OP: "[| monoidal (u_4371::'q_62649 => 'q_62649 => 'q_62649);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5401
   finite (s::'q_62648 => bool) |]
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5402
==> iterate u_4371 s
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5403
     (%x::'q_62648.
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5404
         u_4371 ((f::'q_62648 => 'q_62649) x)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5405
          ((g::'q_62648 => 'q_62649) x)) =
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5406
    u_4371 (iterate u_4371 s f) (iterate u_4371 s g)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5407
  by (import hollight ITERATE_OP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5408
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5409
lemma ITERATE_SUPERSET: "[| monoidal (u_4371::'B => 'B => 'B);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5410
   (u::'A => bool) <= (v::'A => bool) &
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5411
   (ALL x::'A. x : v & x ~: u --> (f::'A => 'B) x = neutral u_4371) |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5412
==> iterate u_4371 v f = iterate u_4371 u f"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5413
  by (import hollight ITERATE_SUPERSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5414
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5415
lemma ITERATE_IMAGE_NONZERO: "[| monoidal (u_4371::'C => 'C => 'C);
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5416
   finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5417
   (ALL (xa::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5418
       xa : x & y : x & xa ~= y & (f::'A => 'B) xa = f y -->
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5419
       (g::'B => 'C) (f xa) = neutral u_4371) |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5420
==> iterate u_4371 (f ` x) g = iterate u_4371 x (g o f)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5421
  by (import hollight ITERATE_IMAGE_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5422
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5423
lemma ITERATE_CASES: "[| monoidal (u_4371::'B => 'B => 'B); finite (s::'A => bool) |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5424
==> iterate u_4371 s
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5425
     (%x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5426
         if (P::'A => bool) x then (f::'A => 'B) x else (g::'A => 'B) x) =
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5427
    u_4371 (iterate u_4371 {u::'A. EX x::'A. (x : s & P x) & u = x} f)
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5428
     (iterate u_4371 {u::'A. EX x::'A. (x : s & ~ P x) & u = x} g)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5429
  by (import hollight ITERATE_CASES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5430
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5431
lemma ITERATE_OP_GEN: "[| monoidal (u_4371::'B => 'B => 'B);
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5432
   finite (support u_4371 (f::'A => 'B) (s::'A => bool)) &
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5433
   finite (support u_4371 (g::'A => 'B) s) |]
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5434
==> iterate u_4371 s (%x::'A. u_4371 (f x) (g x)) =
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5435
    u_4371 (iterate u_4371 s f) (iterate u_4371 s g)"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5436
  by (import hollight ITERATE_OP_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5437
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5438
lemma ITERATE_CLAUSES_NUMSEG: "monoidal (x::'q_63246 => 'q_63246 => 'q_63246)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5439
==> (ALL xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5440
        iterate x {xa..0::nat} (f::nat => 'q_63246) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5441
        (if xa = (0::nat) then f (0::nat) else neutral x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5442
    (ALL (xa::nat) xb::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5443
        iterate x {xa..Suc xb} f =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5444
        (if xa <= Suc xb then x (iterate x {xa..xb} f) (f (Suc xb))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5445
         else iterate x {xa..xb} f))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5446
  by (import hollight ITERATE_CLAUSES_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5447
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5448
lemma ITERATE_PAIR: "monoidal (u_4371::'q_63421 => 'q_63421 => 'q_63421)
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5449
==> iterate u_4371 {(2::nat) * (m::nat)..(2::nat) * (n::nat) + (1::nat)}
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5450
     (f::nat => 'q_63421) =
43843
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5451
    iterate u_4371 {m..n}
16f2fd9103bd HOL/Import: Fix errors with _mk_list
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 43786
diff changeset
  5452
     (%i::nat. u_4371 (f ((2::nat) * i)) (f ((2::nat) * i + (1::nat))))"
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5453
  by (import hollight ITERATE_PAIR)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5454
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5455
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5456
  nsum :: "('q_63439 => bool) => ('q_63439 => nat) => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5457
  "(op ==::(('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5458
        => (('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5459
           => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5460
 (nsum::('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5461
 ((iterate::(nat => nat => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5462
            => ('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5463
   (op +::nat => nat => nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5464
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5465
lemma DEF_nsum: "(op =::(('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5466
       => (('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5467
          => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5468
 (nsum::('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5469
 ((iterate::(nat => nat => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5470
            => ('q_63439::type => bool) => ('q_63439::type => nat) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5471
   (op +::nat => nat => nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5472
  by (import hollight DEF_nsum)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5473
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5474
lemma NEUTRAL_ADD: "neutral op + = (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5475
  by (import hollight NEUTRAL_ADD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5476
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5477
lemma NEUTRAL_MUL: "neutral op * = (1::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5478
  by (import hollight NEUTRAL_MUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5479
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5480
lemma MONOIDAL_ADD: "(monoidal::(nat => nat => nat) => bool) (op +::nat => nat => nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5481
  by (import hollight MONOIDAL_ADD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5482
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5483
lemma MONOIDAL_MUL: "(monoidal::(nat => nat => nat) => bool) (op *::nat => nat => nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5484
  by (import hollight MONOIDAL_MUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5485
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5486
lemma NSUM_CLAUSES: "(ALL x::'q_63477 => nat. nsum {} x = (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5487
(ALL (x::'q_63516) (xa::'q_63516 => nat) xb::'q_63516 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5488
    finite xb -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5489
    nsum (insert x xb) xa =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5490
    (if x : xb then nsum xb xa else xa x + nsum xb xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5491
  by (import hollight NSUM_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5492
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5493
lemma NSUM_UNION: "finite (xa::'q_63542 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5494
finite (xb::'q_63542 => bool) & xa Int xb = {}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5495
==> nsum (xa Un xb) (x::'q_63542 => nat) = nsum xa x + nsum xb x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5496
  by (import hollight NSUM_UNION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5497
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5498
lemma NSUM_DIFF: "finite (s::'q_63597 => bool) & (t::'q_63597 => bool) <= s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5499
==> nsum (s - t) (f::'q_63597 => nat) = nsum s f - nsum t f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5500
  by (import hollight NSUM_DIFF)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5501
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5502
lemma NSUM_INCL_EXCL: "finite (x::'A => bool) & finite (xa::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5503
==> nsum x (xb::'A => nat) + nsum xa xb =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5504
    nsum (x Un xa) xb + nsum (x Int xa) xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5505
  by (import hollight NSUM_INCL_EXCL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5506
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5507
lemma NSUM_SUPPORT: "nsum (support op + (x::'q_63686 => nat) (xa::'q_63686 => bool)) x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5508
nsum xa x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5509
  by (import hollight NSUM_SUPPORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5510
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5511
lemma NSUM_ADD: "finite (xb::'q_63720 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5512
==> nsum xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5513
     (%xb::'q_63720. (x::'q_63720 => nat) xb + (xa::'q_63720 => nat) xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5514
    nsum xb x + nsum xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5515
  by (import hollight NSUM_ADD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5516
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5517
lemma NSUM_ADD_GEN: "finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5518
 {xa::'q_63807.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5519
  EX xc::'q_63807.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5520
     (xc : (xb::'q_63807 => bool) & (x::'q_63807 => nat) xc ~= (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5521
     xa = xc} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5522
finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5523
 {x::'q_63807.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5524
  EX xc::'q_63807.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5525
     (xc : xb & (xa::'q_63807 => nat) xc ~= (0::nat)) & x = xc}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5526
==> nsum xb (%xb::'q_63807. x xb + xa xb) = nsum xb x + nsum xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5527
  by (import hollight NSUM_ADD_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5528
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5529
lemma NSUM_EQ_0: "(!!xb::'A. xb : (xa::'A => bool) ==> (x::'A => nat) xb = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5530
==> nsum xa x = (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5531
  by (import hollight NSUM_EQ_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5532
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5533
lemma NSUM_0: "nsum (x::'A => bool) (%n::'A. 0::nat) = (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5534
  by (import hollight NSUM_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5535
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5536
lemma NSUM_LMUL: "nsum (s::'A => bool) (%x::'A. (c::nat) * (f::'A => nat) x) = c * nsum s f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5537
  by (import hollight NSUM_LMUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5538
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5539
lemma NSUM_RMUL: "nsum (xb::'A => bool) (%xb::'A. (x::'A => nat) xb * (xa::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5540
nsum xb x * xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5541
  by (import hollight NSUM_RMUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5542
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5543
lemma NSUM_LE: "finite (xb::'q_63997 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5544
(ALL xc::'q_63997.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5545
    xc : xb --> (x::'q_63997 => nat) xc <= (xa::'q_63997 => nat) xc)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5546
==> nsum xb x <= nsum xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5547
  by (import hollight NSUM_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5548
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5549
lemma NSUM_LT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5550
(ALL x::'A. x : s --> (f::'A => nat) x <= (g::'A => nat) x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5551
(EX x::'A. x : s & f x < g x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5552
==> nsum s f < nsum s g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5553
  by (import hollight NSUM_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5554
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5555
lemma NSUM_LT_ALL: "finite (s::'q_64119 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5556
s ~= {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5557
(ALL x::'q_64119. x : s --> (f::'q_64119 => nat) x < (g::'q_64119 => nat) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5558
==> nsum s f < nsum s g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5559
  by (import hollight NSUM_LT_ALL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5560
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5561
lemma NSUM_EQ: "(!!xc::'q_64157.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5562
    xc : (xb::'q_64157 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5563
    ==> (x::'q_64157 => nat) xc = (xa::'q_64157 => nat) xc)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5564
==> nsum xb x = nsum xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5565
  by (import hollight NSUM_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5566
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5567
lemma NSUM_CONST: "finite (s::'q_64187 => bool) ==> nsum s (%n::'q_64187. c::nat) = CARD s * c"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5568
  by (import hollight NSUM_CONST)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5569
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5570
lemma NSUM_POS_BOUND: "[| finite (x::'A => bool) & nsum x (f::'A => nat) <= (b::nat);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5571
   (xa::'A) : x |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5572
==> f xa <= b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5573
  by (import hollight NSUM_POS_BOUND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5574
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5575
lemma NSUM_EQ_0_IFF: "finite (s::'q_64296 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5576
==> (nsum s (f::'q_64296 => nat) = (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5577
    (ALL x::'q_64296. x : s --> f x = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5578
  by (import hollight NSUM_EQ_0_IFF)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5579
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5580
lemma NSUM_DELETE: "finite (xa::'q_64325 => bool) & (xb::'q_64325) : xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5581
==> (x::'q_64325 => nat) xb + nsum (xa - {xb}) x = nsum xa x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5582
  by (import hollight NSUM_DELETE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5583
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5584
lemma NSUM_SING: "nsum {xa::'q_64354} (x::'q_64354 => nat) = x xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5585
  by (import hollight NSUM_SING)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5586
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5587
lemma NSUM_DELTA: "nsum (x::'A => bool) (%x::'A. if x = (xa::'A) then b::nat else (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5588
(if xa : x then b else (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5589
  by (import hollight NSUM_DELTA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5590
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5591
lemma NSUM_SWAP: "finite (x::'A => bool) & finite (xa::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5592
==> nsum x (%i::'A. nsum xa ((f::'A => 'B => nat) i)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5593
    nsum xa (%j::'B. nsum x (%i::'A. f i j))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5594
  by (import hollight NSUM_SWAP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5595
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5596
lemma NSUM_IMAGE: "(!!(xa::'q_64490) y::'q_64490.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5597
    xa : (xb::'q_64490 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5598
    y : xb & (x::'q_64490 => 'q_64466) xa = x y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5599
    ==> xa = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5600
==> nsum (x ` xb) (xa::'q_64466 => nat) = nsum xb (xa o x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5601
  by (import hollight NSUM_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5602
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5603
lemma NSUM_SUPERSET: "(xa::'A => bool) <= (xb::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5604
(ALL xc::'A. xc : xb & xc ~: xa --> (x::'A => nat) xc = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5605
==> nsum xb x = nsum xa x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5606
  by (import hollight NSUM_SUPERSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5607
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5608
lemma NSUM_UNION_RZERO: "finite (u::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5609
(ALL x::'A. x : (v::'A => bool) & x ~: u --> (f::'A => nat) x = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5610
==> nsum (u Un v) f = nsum u f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5611
  by (import hollight NSUM_UNION_RZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5612
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5613
lemma NSUM_UNION_LZERO: "finite (v::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5614
(ALL x::'A. x : (u::'A => bool) & x ~: v --> (f::'A => nat) x = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5615
==> nsum (u Un v) f = nsum v f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5616
  by (import hollight NSUM_UNION_LZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5617
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5618
lemma NSUM_RESTRICT: "finite (s::'q_64681 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5619
==> nsum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5620
     (%x::'q_64681. if x : s then (f::'q_64681 => nat) x else (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5621
    nsum s f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5622
  by (import hollight NSUM_RESTRICT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5623
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5624
lemma NSUM_BOUND: "finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5625
(ALL xc::'A. xc : x --> (xa::'A => nat) xc <= (xb::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5626
==> nsum x xa <= CARD x * xb"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5627
  by (import hollight NSUM_BOUND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5628
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5629
lemma NSUM_BOUND_GEN: "finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5630
x ~= {} & (ALL xa::'A. xa : x --> (f::'A => nat) xa <= (b::nat) div CARD x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5631
==> nsum x f <= b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5632
  by (import hollight NSUM_BOUND_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5633
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5634
lemma NSUM_BOUND_LT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5635
(ALL x::'A. x : s --> (f::'A => nat) x <= (b::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5636
(EX x::'A. x : s & f x < b)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5637
==> nsum s f < CARD s * b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5638
  by (import hollight NSUM_BOUND_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5639
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5640
lemma NSUM_BOUND_LT_ALL: "finite (s::'q_64899 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5641
s ~= {} & (ALL x::'q_64899. x : s --> (f::'q_64899 => nat) x < (b::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5642
==> nsum s f < CARD s * b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5643
  by (import hollight NSUM_BOUND_LT_ALL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5644
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5645
lemma NSUM_BOUND_LT_GEN: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5646
s ~= {} & (ALL x::'A. x : s --> (f::'A => nat) x < (b::nat) div CARD s)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5647
==> nsum s f < b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5648
  by (import hollight NSUM_BOUND_LT_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5649
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5650
lemma NSUM_UNION_EQ: "finite (u::'q_65000 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5651
(s::'q_65000 => bool) Int (t::'q_65000 => bool) = {} & s Un t = u
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5652
==> nsum s (f::'q_65000 => nat) + nsum t f = nsum u f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5653
  by (import hollight NSUM_UNION_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5654
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5655
lemma NSUM_EQ_SUPERSET: "finite (t::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5656
t <= (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5657
(ALL x::'A. x : t --> (f::'A => nat) x = (g::'A => nat) x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5658
(ALL x::'A. x : s & x ~: t --> f x = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5659
==> nsum s f = nsum t g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5660
  by (import hollight NSUM_EQ_SUPERSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5661
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5662
lemma NSUM_RESTRICT_SET: "nsum
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5663
 {u::'A. EX xb::'A. (xb : (xa::'A => bool) & (x::'A => bool) xb) & u = xb}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5664
 (xb::'A => nat) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5665
nsum xa (%xa::'A. if x xa then xb xa else (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5666
  by (import hollight NSUM_RESTRICT_SET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5667
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5668
lemma NSUM_NSUM_RESTRICT: "finite (s::'q_65257 => bool) & finite (t::'q_65256 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5669
==> nsum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5670
     (%x::'q_65257.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5671
         nsum
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5672
          {u::'q_65256.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5673
           EX y::'q_65256.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5674
              (y : t & (R::'q_65257 => 'q_65256 => bool) x y) & u = y}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5675
          ((f::'q_65257 => 'q_65256 => nat) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5676
    nsum t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5677
     (%y::'q_65256.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5678
         nsum {u::'q_65257. EX x::'q_65257. (x : s & R x y) & u = x}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5679
          (%x::'q_65257. f x y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5680
  by (import hollight NSUM_NSUM_RESTRICT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5681
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5682
lemma CARD_EQ_NSUM: "finite (x::'q_65276 => bool) ==> CARD x = nsum x (%x::'q_65276. 1::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5683
  by (import hollight CARD_EQ_NSUM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5684
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5685
lemma NSUM_MULTICOUNT_GEN: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5686
finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5687
(ALL j::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5688
    j : t -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5689
    CARD {u::'A. EX i::'A. (i : s & (R::'A => 'B => bool) i j) & u = i} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5690
    (k::'B => nat) j)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5691
==> nsum s (%i::'A. CARD {u::'B. EX j::'B. (j : t & R i j) & u = j}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5692
    nsum t k"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5693
  by (import hollight NSUM_MULTICOUNT_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5694
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5695
lemma NSUM_MULTICOUNT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5696
finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5697
(ALL j::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5698
    j : t -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5699
    CARD {u::'A. EX i::'A. (i : s & (R::'A => 'B => bool) i j) & u = i} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5700
    (k::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5701
==> nsum s (%i::'A. CARD {u::'B. EX j::'B. (j : t & R i j) & u = j}) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5702
    k * CARD t"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5703
  by (import hollight NSUM_MULTICOUNT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5704
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5705
lemma NSUM_IMAGE_GEN: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5706
==> nsum s (g::'A => nat) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5707
    nsum ((f::'A => 'B) ` s)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5708
     (%y::'B. nsum {u::'A. EX x::'A. (x : s & f x = y) & u = x} g)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5709
  by (import hollight NSUM_IMAGE_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5710
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5711
lemma NSUM_GROUP: "finite (s::'A => bool) & (f::'A => 'B) ` s <= (t::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5712
==> nsum t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5713
     (%y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5714
         nsum {u::'A. EX x::'A. (x : s & f x = y) & u = x} (g::'A => nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5715
    nsum s g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5716
  by (import hollight NSUM_GROUP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5717
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5718
lemma NSUM_SUBSET: "finite (u::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5719
finite (v::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5720
(ALL x::'A. x : u - v --> (f::'A => nat) x = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5721
==> nsum u f <= nsum v f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5722
  by (import hollight NSUM_SUBSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5723
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5724
lemma NSUM_SUBSET_SIMPLE: "finite (v::'q_65804 => bool) & (u::'q_65804 => bool) <= v
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5725
==> nsum u (f::'q_65804 => nat) <= nsum v f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5726
  by (import hollight NSUM_SUBSET_SIMPLE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5727
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5728
lemma NSUM_IMAGE_NONZERO: "finite (xb::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5729
(ALL (xc::'A) xd::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5730
    xc : xb & xd : xb & xc ~= xd & (xa::'A => 'B) xc = xa xd -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5731
    (x::'B => nat) (xa xc) = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5732
==> nsum (xa ` xb) x = nsum xb (x o xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5733
  by (import hollight NSUM_IMAGE_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5734
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5735
lemma NSUM_BIJECTION: "(ALL x::'A. x : (xb::'A => bool) --> (xa::'A => 'A) x : xb) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5736
(ALL y::'A. y : xb --> (EX! x::'A. x : xb & xa x = y))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5737
==> nsum xb (x::'A => nat) = nsum xb (x o xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5738
  by (import hollight NSUM_BIJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5739
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5740
lemma NSUM_NSUM_PRODUCT: "finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5741
(ALL i::'A. i : x --> finite ((xa::'A => 'B => bool) i))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5742
==> nsum x (%x::'A. nsum (xa x) ((xb::'A => 'B => nat) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5743
    nsum {u::'A * 'B. EX (i::'A) j::'B. (i : x & j : xa i) & u = (i, j)}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5744
     (SOME f::'A * 'B => nat. ALL (i::'A) j::'B. f (i, j) = xb i j)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5745
  by (import hollight NSUM_NSUM_PRODUCT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5746
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5747
lemma NSUM_EQ_GENERAL: "(ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5748
    y : (xa::'B => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5749
    (EX! xa::'A. xa : (x::'A => bool) & (xd::'A => 'B) xa = y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5750
(ALL xe::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5751
    xe : x --> xd xe : xa & (xc::'B => nat) (xd xe) = (xb::'A => nat) xe)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5752
==> nsum x xb = nsum xa xc"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5753
  by (import hollight NSUM_EQ_GENERAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5754
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5755
lemma NSUM_EQ_GENERAL_INVERSES: "(ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5756
    y : (xa::'B => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5757
    (xe::'B => 'A) y : (x::'A => bool) & (xd::'A => 'B) (xe y) = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5758
(ALL xf::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5759
    xf : x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5760
    xd xf : xa &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5761
    xe (xd xf) = xf & (xc::'B => nat) (xd xf) = (xb::'A => nat) xf)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5762
==> nsum x xb = nsum xa xc"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5763
  by (import hollight NSUM_EQ_GENERAL_INVERSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5764
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5765
lemma NSUM_INJECTION: "finite (xb::'q_66274 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5766
(ALL x::'q_66274. x : xb --> (xa::'q_66274 => 'q_66274) x : xb) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5767
(ALL (x::'q_66274) y::'q_66274. x : xb & y : xb & xa x = xa y --> x = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5768
==> nsum xb ((x::'q_66274 => nat) o xa) = nsum xb x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5769
  by (import hollight NSUM_INJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5770
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5771
lemma NSUM_UNION_NONZERO: "finite (xa::'q_66317 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5772
finite (xb::'q_66317 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5773
(ALL xc::'q_66317. xc : xa Int xb --> (x::'q_66317 => nat) xc = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5774
==> nsum (xa Un xb) x = nsum xa x + nsum xb x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5775
  by (import hollight NSUM_UNION_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5776
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5777
lemma NSUM_UNIONS_NONZERO: "finite (x::('A => bool) => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5778
(ALL t::'A => bool. t : x --> finite t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5779
(ALL (t1::'A => bool) (t2::'A => bool) xa::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5780
    t1 : x & t2 : x & t1 ~= t2 & xa : t1 & xa : t2 -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5781
    (f::'A => nat) xa = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5782
==> nsum (Union x) f = nsum x (%t::'A => bool. nsum t f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5783
  by (import hollight NSUM_UNIONS_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5784
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5785
lemma NSUM_CASES: "finite (x::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5786
==> nsum x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5787
     (%x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5788
         if (xa::'A => bool) x then (xb::'A => nat) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5789
         else (xc::'A => nat) x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5790
    nsum {u::'A. EX xb::'A. (xb : x & xa xb) & u = xb} xb +
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5791
    nsum {u::'A. EX xb::'A. (xb : x & ~ xa xb) & u = xb} xc"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5792
  by (import hollight NSUM_CASES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5793
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5794
lemma NSUM_CLOSED: "(P::nat => bool) (0::nat) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5795
(ALL (x::nat) y::nat. P x & P y --> P (x + y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5796
(ALL a::'A. a : (s::'A => bool) --> P ((f::'A => nat) a))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5797
==> P (nsum s f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5798
  by (import hollight NSUM_CLOSED)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5799
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5800
lemma NSUM_ADD_NUMSEG: "nsum {xb::nat..xc::nat} (%i::nat. (x::nat => nat) i + (xa::nat => nat) i) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5801
nsum {xb..xc} x + nsum {xb..xc} xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5802
  by (import hollight NSUM_ADD_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5803
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5804
lemma NSUM_LE_NUMSEG: "(!!i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5805
    (xb::nat) <= i & i <= (xc::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5806
    ==> (x::nat => nat) i <= (xa::nat => nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5807
==> nsum {xb..xc} x <= nsum {xb..xc} xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5808
  by (import hollight NSUM_LE_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5809
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5810
lemma NSUM_EQ_NUMSEG: "(!!i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5811
    (m::nat) <= i & i <= (n::nat) ==> (f::nat => nat) i = (g::nat => nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5812
==> nsum {m..n} f = nsum {m..n} g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5813
  by (import hollight NSUM_EQ_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5814
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5815
lemma NSUM_CONST_NUMSEG: "nsum {xa..xb} (%n. x) = (xb + 1 - xa) * x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5816
  by (import hollight NSUM_CONST_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5817
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5818
lemma NSUM_EQ_0_NUMSEG: "(!!i::nat. (m::nat) <= i & i <= (n::nat) ==> (x::nat => nat) i = (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5819
==> nsum {m..n} x = (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5820
  by (import hollight NSUM_EQ_0_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5821
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5822
lemma NSUM_EQ_0_IFF_NUMSEG: "(nsum {xa::nat..xb::nat} (x::nat => nat) = (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5823
(ALL i::nat. xa <= i & i <= xb --> x i = (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5824
  by (import hollight NSUM_EQ_0_IFF_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5825
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5826
lemma NSUM_TRIV_NUMSEG: "(n::nat) < (m::nat) ==> nsum {m..n} (f::nat => nat) = (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5827
  by (import hollight NSUM_TRIV_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5828
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5829
lemma NSUM_SING_NUMSEG: "nsum {xa::nat..xa} (x::nat => nat) = x xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5830
  by (import hollight NSUM_SING_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5831
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5832
lemma NSUM_CLAUSES_NUMSEG: "(ALL m. nsum {m..0} f = (if m = 0 then f 0 else 0)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5833
(ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5834
    nsum {m..Suc n} f =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5835
    (if m <= Suc n then nsum {m..n} f + f (Suc n) else nsum {m..n} f))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5836
  by (import hollight NSUM_CLAUSES_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5837
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5838
lemma NSUM_SWAP_NUMSEG: "nsum {a::nat..b::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5839
 (%i::nat. nsum {c::nat..d::nat} ((f::nat => nat => nat) i)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5840
nsum {c..d} (%j::nat. nsum {a..b} (%i::nat. f i j))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5841
  by (import hollight NSUM_SWAP_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5842
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5843
lemma NSUM_ADD_SPLIT: "(xa::nat) <= (xb::nat) + (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5844
==> nsum {xa..xb + (xc::nat)} (x::nat => nat) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5845
    nsum {xa..xb} x + nsum {xb + (1::nat)..xb + xc} x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5846
  by (import hollight NSUM_ADD_SPLIT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5847
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5848
lemma NSUM_OFFSET: "nsum {(xb::nat) + (x::nat)..(xc::nat) + x} (xa::nat => nat) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5849
nsum {xb..xc} (%i::nat. xa (i + x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5850
  by (import hollight NSUM_OFFSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5851
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5852
lemma NSUM_OFFSET_0: "(xa::nat) <= (xb::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5853
==> nsum {xa..xb} (x::nat => nat) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5854
    nsum {0::nat..xb - xa} (%i::nat. x (i + xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5855
  by (import hollight NSUM_OFFSET_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5856
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5857
lemma NSUM_CLAUSES_LEFT: "(xa::nat) <= (xb::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5858
==> nsum {xa..xb} (x::nat => nat) = x xa + nsum {xa + (1::nat)..xb} x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5859
  by (import hollight NSUM_CLAUSES_LEFT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5860
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5861
lemma NSUM_CLAUSES_RIGHT: "(0::nat) < (n::nat) & (m::nat) <= n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5862
==> nsum {m..n} (f::nat => nat) = nsum {m..n - (1::nat)} f + f n"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5863
  by (import hollight NSUM_CLAUSES_RIGHT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5864
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5865
lemma NSUM_PAIR: "nsum {(2::nat) * (m::nat)..(2::nat) * (n::nat) + (1::nat)} (f::nat => nat) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5866
nsum {m..n} (%i::nat. f ((2::nat) * i) + f ((2::nat) * i + (1::nat)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5867
  by (import hollight NSUM_PAIR)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5868
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5869
lemma CARD_UNIONS: "finite (x::('A => bool) => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5870
(ALL t::'A => bool. t : x --> finite t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5871
(ALL (t::'A => bool) u::'A => bool. t : x & u : x & t ~= u --> t Int u = {})
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5872
==> CARD (Union x) = nsum x CARD"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5873
  by (import hollight CARD_UNIONS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5874
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5875
consts
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5876
  sum :: "('q_67488 => bool) => ('q_67488 => hollight.real) => hollight.real" 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5877
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5878
defs
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5879
  sum_def: "(op ==::(('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5880
         => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5881
        => (('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5882
            => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5883
           => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5884
 (hollight.sum::('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5885
                => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5886
 ((iterate::(hollight.real => hollight.real => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5887
            => ('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5888
               => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5889
   (real_add::hollight.real => hollight.real => hollight.real))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5890
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5891
lemma DEF_sum: "(op =::(('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5892
        => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5893
       => (('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5894
           => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5895
          => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5896
 (hollight.sum::('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5897
                => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5898
 ((iterate::(hollight.real => hollight.real => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5899
            => ('q_67488::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5900
               => ('q_67488::type => hollight.real) => hollight.real)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5901
   (real_add::hollight.real => hollight.real => hollight.real))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5902
  by (import hollight DEF_sum)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5903
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5904
lemma NEUTRAL_REAL_ADD: "neutral real_add = real_of_num 0"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5905
  by (import hollight NEUTRAL_REAL_ADD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5906
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5907
lemma NEUTRAL_REAL_MUL: "neutral real_mul = real_of_num 1"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5908
  by (import hollight NEUTRAL_REAL_MUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5909
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5910
lemma MONOIDAL_REAL_ADD: "monoidal real_add"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5911
  by (import hollight MONOIDAL_REAL_ADD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5912
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5913
lemma MONOIDAL_REAL_MUL: "monoidal real_mul"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5914
  by (import hollight MONOIDAL_REAL_MUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5915
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5916
lemma SUM_CLAUSES: "(ALL x::'q_67530 => hollight.real.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5917
    hollight.sum {} x = real_of_num (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5918
(ALL (x::'q_67571) (xa::'q_67571 => hollight.real) xb::'q_67571 => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5919
    finite xb -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5920
    hollight.sum (insert x xb) xa =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5921
    (if x : xb then hollight.sum xb xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5922
     else real_add (xa x) (hollight.sum xb xa)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5923
  by (import hollight SUM_CLAUSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5924
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5925
lemma SUM_UNION: "finite (xa::'q_67597 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5926
finite (xb::'q_67597 => bool) & xa Int xb = {}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5927
==> hollight.sum (xa Un xb) (x::'q_67597 => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5928
    real_add (hollight.sum xa x) (hollight.sum xb x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5929
  by (import hollight SUM_UNION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5930
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5931
lemma SUM_DIFF: "finite (xa::'q_67637 => bool) & (xb::'q_67637 => bool) <= xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5932
==> hollight.sum (xa - xb) (x::'q_67637 => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5933
    real_sub (hollight.sum xa x) (hollight.sum xb x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5934
  by (import hollight SUM_DIFF)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5935
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5936
lemma SUM_INCL_EXCL: "finite (x::'A => bool) & finite (xa::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5937
==> real_add (hollight.sum x (xb::'A => hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5938
     (hollight.sum xa xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5939
    real_add (hollight.sum (x Un xa) xb) (hollight.sum (x Int xa) xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5940
  by (import hollight SUM_INCL_EXCL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5941
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5942
lemma SUM_SUPPORT: "hollight.sum
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5943
 (support real_add (x::'q_67726 => hollight.real) (xa::'q_67726 => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5944
 x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5945
hollight.sum xa x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5946
  by (import hollight SUM_SUPPORT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5947
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5948
lemma SUM_ADD: "finite (xb::'q_67760 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5949
==> hollight.sum xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5950
     (%xb::'q_67760.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5951
         real_add ((x::'q_67760 => hollight.real) xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5952
          ((xa::'q_67760 => hollight.real) xb)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5953
    real_add (hollight.sum xb x) (hollight.sum xb xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5954
  by (import hollight SUM_ADD)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5955
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5956
lemma SUM_ADD_GEN: "finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5957
 {xa::'q_67851.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5958
  EX xc::'q_67851.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5959
     (xc : (xb::'q_67851 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5960
      (x::'q_67851 => hollight.real) xc ~= real_of_num (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5961
     xa = xc} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5962
finite
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5963
 {x::'q_67851.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5964
  EX xc::'q_67851.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5965
     (xc : xb &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5966
      (xa::'q_67851 => hollight.real) xc ~= real_of_num (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5967
     x = xc}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5968
==> hollight.sum xb (%xb::'q_67851. real_add (x xb) (xa xb)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5969
    real_add (hollight.sum xb x) (hollight.sum xb xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5970
  by (import hollight SUM_ADD_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5971
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5972
lemma SUM_EQ_0: "(!!xb::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5973
    xb : (xa::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5974
    ==> (x::'A => hollight.real) xb = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5975
==> hollight.sum xa x = real_of_num (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5976
  by (import hollight SUM_EQ_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5977
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5978
lemma SUM_0: "hollight.sum (x::'A => bool) (%n::'A. real_of_num (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5979
real_of_num (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5980
  by (import hollight SUM_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5981
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5982
lemma SUM_LMUL: "hollight.sum (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5983
 (%x::'A. real_mul (c::hollight.real) ((f::'A => hollight.real) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5984
real_mul c (hollight.sum s f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5985
  by (import hollight SUM_LMUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5986
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5987
lemma SUM_RMUL: "hollight.sum (xb::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5988
 (%xb::'A. real_mul ((x::'A => hollight.real) xb) (xa::hollight.real)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5989
real_mul (hollight.sum xb x) xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5990
  by (import hollight SUM_RMUL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5991
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5992
lemma SUM_NEG: "hollight.sum (xa::'q_68051 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5993
 (%xa::'q_68051. real_neg ((x::'q_68051 => hollight.real) xa)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5994
real_neg (hollight.sum xa x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5995
  by (import hollight SUM_NEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5996
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5997
lemma SUM_SUB: "finite (xb::'q_68086 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5998
==> hollight.sum xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  5999
     (%xb::'q_68086.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6000
         real_sub ((x::'q_68086 => hollight.real) xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6001
          ((xa::'q_68086 => hollight.real) xb)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6002
    real_sub (hollight.sum xb x) (hollight.sum xb xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6003
  by (import hollight SUM_SUB)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6004
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6005
lemma SUM_LE: "finite (xb::'q_68128 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6006
(ALL xc::'q_68128.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6007
    xc : xb -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6008
    real_le ((x::'q_68128 => hollight.real) xc)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6009
     ((xa::'q_68128 => hollight.real) xc))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6010
==> real_le (hollight.sum xb x) (hollight.sum xb xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6011
  by (import hollight SUM_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6012
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6013
lemma SUM_LT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6014
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6015
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6016
    real_le ((f::'A => hollight.real) x) ((g::'A => hollight.real) x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6017
(EX x::'A. x : s & real_lt (f x) (g x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6018
==> real_lt (hollight.sum s f) (hollight.sum s g)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6019
  by (import hollight SUM_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6020
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6021
lemma SUM_LT_ALL: "finite (s::'q_68250 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6022
s ~= {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6023
(ALL x::'q_68250.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6024
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6025
    real_lt ((f::'q_68250 => hollight.real) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6026
     ((g::'q_68250 => hollight.real) x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6027
==> real_lt (hollight.sum s f) (hollight.sum s g)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6028
  by (import hollight SUM_LT_ALL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6029
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6030
lemma SUM_EQ: "(!!xc::'q_68288.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6031
    xc : (xb::'q_68288 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6032
    ==> (x::'q_68288 => hollight.real) xc =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6033
        (xa::'q_68288 => hollight.real) xc)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6034
==> hollight.sum xb x = hollight.sum xb xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6035
  by (import hollight SUM_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6036
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6037
lemma SUM_ABS: "finite (s::'q_68347 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6038
==> real_le (real_abs (hollight.sum s (f::'q_68347 => hollight.real)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6039
     (hollight.sum s (%x::'q_68347. real_abs (f x)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6040
  by (import hollight SUM_ABS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6041
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6042
lemma SUM_ABS_LE: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6043
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6044
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6045
    real_le (real_abs ((f::'A => hollight.real) x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6046
     ((g::'A => hollight.real) x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6047
==> real_le (real_abs (hollight.sum s f)) (hollight.sum s g)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6048
  by (import hollight SUM_ABS_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6049
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6050
lemma SUM_CONST: "finite (s::'q_68423 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6051
==> hollight.sum s (%n::'q_68423. c::hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6052
    real_mul (real_of_num (CARD s)) c"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6053
  by (import hollight SUM_CONST)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6054
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6055
lemma SUM_POS_LE: "finite (xa::'q_68465 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6056
(ALL xb::'q_68465.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6057
    xb : xa -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6058
    real_le (real_of_num (0::nat)) ((x::'q_68465 => hollight.real) xb))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6059
==> real_le (real_of_num (0::nat)) (hollight.sum xa x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6060
  by (import hollight SUM_POS_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6061
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6062
lemma SUM_POS_BOUND: "[| finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6063
   (ALL xa::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6064
       xa : x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6065
       real_le (real_of_num (0::nat)) ((f::'A => hollight.real) xa)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6066
   real_le (hollight.sum x f) (b::hollight.real);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6067
   (xa::'A) : x |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6068
==> real_le (f xa) b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6069
  by (import hollight SUM_POS_BOUND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6070
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6071
lemma SUM_POS_EQ_0: "[| finite (xa::'q_68612 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6072
   (ALL xb::'q_68612.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6073
       xb : xa -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6074
       real_le (real_of_num (0::nat)) ((x::'q_68612 => hollight.real) xb)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6075
   hollight.sum xa x = real_of_num (0::nat);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6076
   (xb::'q_68612) : xa |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6077
==> x xb = real_of_num (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6078
  by (import hollight SUM_POS_EQ_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6079
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6080
lemma SUM_ZERO_EXISTS: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6081
hollight.sum s (u::'A => hollight.real) = real_of_num (0::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6082
==> (ALL i::'A. i : s --> u i = real_of_num (0::nat)) |
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6083
    (EX (j::'A) k::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6084
        j : s &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6085
        real_lt (u j) (real_of_num (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6086
        k : s & real_gt (u k) (real_of_num (0::nat)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6087
  by (import hollight SUM_ZERO_EXISTS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6088
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6089
lemma SUM_DELETE: "finite (xa::'q_68854 => bool) & (xb::'q_68854) : xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6090
==> hollight.sum (xa - {xb}) (x::'q_68854 => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6091
    real_sub (hollight.sum xa x) (x xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6092
  by (import hollight SUM_DELETE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6093
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6094
lemma SUM_DELETE_CASES: "finite (s::'q_68907 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6095
==> hollight.sum (s - {a::'q_68907}) (f::'q_68907 => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6096
    (if a : s then real_sub (hollight.sum s f) (f a) else hollight.sum s f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6097
  by (import hollight SUM_DELETE_CASES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6098
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6099
lemma SUM_SING: "hollight.sum {xa::'q_68930} (x::'q_68930 => hollight.real) = x xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6100
  by (import hollight SUM_SING)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6101
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6102
lemma SUM_DELTA: "hollight.sum (x::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6103
 (%x::'A. if x = (xa::'A) then b::hollight.real else real_of_num (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6104
(if xa : x then b else real_of_num (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6105
  by (import hollight SUM_DELTA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6106
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6107
lemma SUM_SWAP: "finite (x::'A => bool) & finite (xa::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6108
==> hollight.sum x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6109
     (%i::'A. hollight.sum xa ((f::'A => 'B => hollight.real) i)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6110
    hollight.sum xa (%j::'B. hollight.sum x (%i::'A. f i j))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6111
  by (import hollight SUM_SWAP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6112
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6113
lemma SUM_IMAGE: "(!!(xa::'q_69070) y::'q_69070.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6114
    xa : (xb::'q_69070 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6115
    y : xb & (x::'q_69070 => 'q_69046) xa = x y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6116
    ==> xa = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6117
==> hollight.sum (x ` xb) (xa::'q_69046 => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6118
    hollight.sum xb (xa o x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6119
  by (import hollight SUM_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6120
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6121
lemma SUM_SUPERSET: "(xa::'A => bool) <= (xb::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6122
(ALL xc::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6123
    xc : xb & xc ~: xa -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6124
    (x::'A => hollight.real) xc = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6125
==> hollight.sum xb x = hollight.sum xa x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6126
  by (import hollight SUM_SUPERSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6127
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6128
lemma SUM_UNION_RZERO: "finite (u::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6129
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6130
    x : (v::'A => bool) & x ~: u -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6131
    (f::'A => hollight.real) x = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6132
==> hollight.sum (u Un v) f = hollight.sum u f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6133
  by (import hollight SUM_UNION_RZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6134
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6135
lemma SUM_UNION_LZERO: "finite (v::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6136
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6137
    x : (u::'A => bool) & x ~: v -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6138
    (f::'A => hollight.real) x = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6139
==> hollight.sum (u Un v) f = hollight.sum v f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6140
  by (import hollight SUM_UNION_LZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6141
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6142
lemma SUM_RESTRICT: "finite (s::'q_69267 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6143
==> hollight.sum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6144
     (%x::'q_69267.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6145
         if x : s then (f::'q_69267 => hollight.real) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6146
         else real_of_num (0::nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6147
    hollight.sum s f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6148
  by (import hollight SUM_RESTRICT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6149
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6150
lemma SUM_BOUND: "finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6151
(ALL xc::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6152
    xc : x --> real_le ((xa::'A => hollight.real) xc) (xb::hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6153
==> real_le (hollight.sum x xa) (real_mul (real_of_num (CARD x)) xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6154
  by (import hollight SUM_BOUND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6155
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6156
lemma SUM_BOUND_GEN: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6157
s ~= {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6158
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6159
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6160
    real_le ((f::'A => hollight.real) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6161
     (real_div (b::hollight.real) (real_of_num (CARD s))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6162
==> real_le (hollight.sum s f) b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6163
  by (import hollight SUM_BOUND_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6164
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6165
lemma SUM_ABS_BOUND: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6166
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6167
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6168
    real_le (real_abs ((f::'A => hollight.real) x)) (b::hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6169
==> real_le (real_abs (hollight.sum s f))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6170
     (real_mul (real_of_num (CARD s)) b)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6171
  by (import hollight SUM_ABS_BOUND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6172
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6173
lemma SUM_BOUND_LT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6174
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6175
    x : s --> real_le ((f::'A => hollight.real) x) (b::hollight.real)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6176
(EX x::'A. x : s & real_lt (f x) b)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6177
==> real_lt (hollight.sum s f) (real_mul (real_of_num (CARD s)) b)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6178
  by (import hollight SUM_BOUND_LT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6179
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6180
lemma SUM_BOUND_LT_ALL: "finite (s::'q_69531 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6181
s ~= {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6182
(ALL x::'q_69531.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6183
    x : s --> real_lt ((f::'q_69531 => hollight.real) x) (b::hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6184
==> real_lt (hollight.sum s f) (real_mul (real_of_num (CARD s)) b)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6185
  by (import hollight SUM_BOUND_LT_ALL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6186
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6187
lemma SUM_BOUND_LT_GEN: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6188
s ~= {} &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6189
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6190
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6191
    real_lt ((f::'A => hollight.real) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6192
     (real_div (b::hollight.real) (real_of_num (CARD s))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6193
==> real_lt (hollight.sum s f) b"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6194
  by (import hollight SUM_BOUND_LT_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6195
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6196
lemma SUM_UNION_EQ: "finite (u::'q_69614 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6197
(s::'q_69614 => bool) Int (t::'q_69614 => bool) = {} & s Un t = u
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6198
==> real_add (hollight.sum s (f::'q_69614 => hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6199
     (hollight.sum t f) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6200
    hollight.sum u f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6201
  by (import hollight SUM_UNION_EQ)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6202
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6203
lemma SUM_EQ_SUPERSET: "finite (t::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6204
t <= (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6205
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6206
    x : t --> (f::'A => hollight.real) x = (g::'A => hollight.real) x) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6207
(ALL x::'A. x : s & x ~: t --> f x = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6208
==> hollight.sum s f = hollight.sum t g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6209
  by (import hollight SUM_EQ_SUPERSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6210
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6211
lemma SUM_RESTRICT_SET: "hollight.sum
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6212
 {u::'q_69783.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6213
  EX xb::'q_69783.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6214
     (xb : (xa::'q_69783 => bool) & (x::'q_69783 => bool) xb) & u = xb}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6215
 (xb::'q_69783 => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6216
hollight.sum xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6217
 (%xa::'q_69783. if x xa then xb xa else real_of_num (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6218
  by (import hollight SUM_RESTRICT_SET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6219
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6220
lemma SUM_SUM_RESTRICT: "finite (s::'q_69875 => bool) & finite (t::'q_69874 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6221
==> hollight.sum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6222
     (%x::'q_69875.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6223
         hollight.sum
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6224
          {u::'q_69874.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6225
           EX y::'q_69874.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6226
              (y : t & (R::'q_69875 => 'q_69874 => bool) x y) & u = y}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6227
          ((f::'q_69875 => 'q_69874 => hollight.real) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6228
    hollight.sum t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6229
     (%y::'q_69874.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6230
         hollight.sum {u::'q_69875. EX x::'q_69875. (x : s & R x y) & u = x}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6231
          (%x::'q_69875. f x y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6232
  by (import hollight SUM_SUM_RESTRICT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6233
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6234
lemma CARD_EQ_SUM: "finite (x::'q_69896 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6235
==> real_of_num (CARD x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6236
    hollight.sum x (%x::'q_69896. real_of_num (1::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6237
  by (import hollight CARD_EQ_SUM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6238
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6239
lemma SUM_MULTICOUNT_GEN: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6240
finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6241
(ALL j::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6242
    j : t -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6243
    CARD {u::'A. EX i::'A. (i : s & (R::'A => 'B => bool) i j) & u = i} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6244
    (k::'B => nat) j)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6245
==> hollight.sum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6246
     (%i::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6247
         real_of_num (CARD {u::'B. EX j::'B. (j : t & R i j) & u = j})) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6248
    hollight.sum t (%i::'B. real_of_num (k i))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6249
  by (import hollight SUM_MULTICOUNT_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6250
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6251
lemma SUM_MULTICOUNT: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6252
finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6253
(ALL j::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6254
    j : t -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6255
    CARD {u::'A. EX i::'A. (i : s & (R::'A => 'B => bool) i j) & u = i} =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6256
    (k::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6257
==> hollight.sum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6258
     (%i::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6259
         real_of_num (CARD {u::'B. EX j::'B. (j : t & R i j) & u = j})) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6260
    real_of_num (k * CARD t)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6261
  by (import hollight SUM_MULTICOUNT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6262
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6263
lemma SUM_IMAGE_GEN: "finite (s::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6264
==> hollight.sum s (g::'A => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6265
    hollight.sum ((f::'A => 'B) ` s)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6266
     (%y::'B. hollight.sum {u::'A. EX x::'A. (x : s & f x = y) & u = x} g)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6267
  by (import hollight SUM_IMAGE_GEN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6268
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6269
lemma SUM_GROUP: "finite (s::'A => bool) & (f::'A => 'B) ` s <= (t::'B => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6270
==> hollight.sum t
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6271
     (%y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6272
         hollight.sum {u::'A. EX x::'A. (x : s & f x = y) & u = x}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6273
          (g::'A => hollight.real)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6274
    hollight.sum s g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6275
  by (import hollight SUM_GROUP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6276
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6277
lemma REAL_OF_NUM_SUM: "finite (s::'q_70361 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6278
==> real_of_num (nsum s (f::'q_70361 => nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6279
    hollight.sum s (%x::'q_70361. real_of_num (f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6280
  by (import hollight REAL_OF_NUM_SUM)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6281
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6282
lemma SUM_SUBSET: "finite (u::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6283
finite (v::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6284
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6285
    x : u - v -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6286
    real_le ((f::'A => hollight.real) x) (real_of_num (0::nat))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6287
(ALL x::'A. x : v - u --> real_le (real_of_num (0::nat)) (f x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6288
==> real_le (hollight.sum u f) (hollight.sum v f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6289
  by (import hollight SUM_SUBSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6290
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6291
lemma SUM_SUBSET_SIMPLE: "finite (v::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6292
(u::'A => bool) <= v &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6293
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6294
    x : v - u -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6295
    real_le (real_of_num (0::nat)) ((f::'A => hollight.real) x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6296
==> real_le (hollight.sum u f) (hollight.sum v f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6297
  by (import hollight SUM_SUBSET_SIMPLE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6298
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6299
lemma SUM_IMAGE_NONZERO: "finite (xb::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6300
(ALL (xc::'A) xd::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6301
    xc : xb & xd : xb & xc ~= xd & (xa::'A => 'B) xc = xa xd -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6302
    (x::'B => hollight.real) (xa xc) = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6303
==> hollight.sum (xa ` xb) x = hollight.sum xb (x o xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6304
  by (import hollight SUM_IMAGE_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6305
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6306
lemma SUM_BIJECTION: "(ALL x::'A. x : (xb::'A => bool) --> (xa::'A => 'A) x : xb) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6307
(ALL y::'A. y : xb --> (EX! x::'A. x : xb & xa x = y))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6308
==> hollight.sum xb (x::'A => hollight.real) = hollight.sum xb (x o xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6309
  by (import hollight SUM_BIJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6310
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6311
lemma SUM_SUM_PRODUCT: "finite (x::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6312
(ALL i::'A. i : x --> finite ((xa::'A => 'B => bool) i))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6313
==> hollight.sum x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6314
     (%x::'A. hollight.sum (xa x) ((xb::'A => 'B => hollight.real) x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6315
    hollight.sum
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6316
     {u::'A * 'B. EX (i::'A) j::'B. (i : x & j : xa i) & u = (i, j)}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6317
     (SOME f::'A * 'B => hollight.real.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6318
         ALL (i::'A) j::'B. f (i, j) = xb i j)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6319
  by (import hollight SUM_SUM_PRODUCT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6320
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6321
lemma SUM_EQ_GENERAL: "(ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6322
    y : (xa::'B => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6323
    (EX! xa::'A. xa : (x::'A => bool) & (xd::'A => 'B) xa = y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6324
(ALL xe::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6325
    xe : x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6326
    xd xe : xa &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6327
    (xc::'B => hollight.real) (xd xe) = (xb::'A => hollight.real) xe)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6328
==> hollight.sum x xb = hollight.sum xa xc"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6329
  by (import hollight SUM_EQ_GENERAL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6330
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6331
lemma SUM_EQ_GENERAL_INVERSES: "(ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6332
    y : (xa::'B => bool) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6333
    (xe::'B => 'A) y : (x::'A => bool) & (xd::'A => 'B) (xe y) = y) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6334
(ALL xf::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6335
    xf : x -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6336
    xd xf : xa &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6337
    xe (xd xf) = xf &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6338
    (xc::'B => hollight.real) (xd xf) = (xb::'A => hollight.real) xf)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6339
==> hollight.sum x xb = hollight.sum xa xc"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6340
  by (import hollight SUM_EQ_GENERAL_INVERSES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6341
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6342
lemma SUM_INJECTION: "finite (xb::'q_71007 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6343
(ALL x::'q_71007. x : xb --> (xa::'q_71007 => 'q_71007) x : xb) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6344
(ALL (x::'q_71007) y::'q_71007. x : xb & y : xb & xa x = xa y --> x = y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6345
==> hollight.sum xb ((x::'q_71007 => hollight.real) o xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6346
    hollight.sum xb x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6347
  by (import hollight SUM_INJECTION)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6348
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6349
lemma SUM_UNION_NONZERO: "finite (xa::'q_71050 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6350
finite (xb::'q_71050 => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6351
(ALL xc::'q_71050.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6352
    xc : xa Int xb -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6353
    (x::'q_71050 => hollight.real) xc = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6354
==> hollight.sum (xa Un xb) x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6355
    real_add (hollight.sum xa x) (hollight.sum xb x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6356
  by (import hollight SUM_UNION_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6357
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6358
lemma SUM_UNIONS_NONZERO: "finite (x::('A => bool) => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6359
(ALL t::'A => bool. t : x --> finite t) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6360
(ALL (t1::'A => bool) (t2::'A => bool) xa::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6361
    t1 : x & t2 : x & t1 ~= t2 & xa : t1 & xa : t2 -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6362
    (f::'A => hollight.real) xa = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6363
==> hollight.sum (Union x) f =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6364
    hollight.sum x (%t::'A => bool. hollight.sum t f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6365
  by (import hollight SUM_UNIONS_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6366
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6367
lemma SUM_CASES: "finite (x::'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6368
==> hollight.sum x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6369
     (%x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6370
         if (xa::'A => bool) x then (xb::'A => hollight.real) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6371
         else (xc::'A => hollight.real) x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6372
    real_add (hollight.sum {u::'A. EX xb::'A. (xb : x & xa xb) & u = xb} xb)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6373
     (hollight.sum {u::'A. EX xb::'A. (xb : x & ~ xa xb) & u = xb} xc)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6374
  by (import hollight SUM_CASES)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6375
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6376
lemma SUM_CASES_1: "finite (s::'q_71319 => bool) & (a::'q_71319) : s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6377
==> hollight.sum s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6378
     (%x::'q_71319.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6379
         if x = a then y::hollight.real
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6380
         else (f::'q_71319 => hollight.real) x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6381
    real_add (hollight.sum s f) (real_sub y (f a))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6382
  by (import hollight SUM_CASES_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6383
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6384
lemma SUM_LE_INCLUDED: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6385
finite (t::'B => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6386
(ALL y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6387
    y : t --> real_le (real_of_num (0::nat)) ((g::'B => hollight.real) y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6388
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6389
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6390
    (EX y::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6391
        y : t &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6392
        (i::'B => 'A) y = x & real_le ((f::'A => hollight.real) x) (g y)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6393
==> real_le (hollight.sum s f) (hollight.sum t g)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6394
  by (import hollight SUM_LE_INCLUDED)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6395
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6396
lemma SUM_IMAGE_LE: "finite (s::'A => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6397
(ALL x::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6398
    x : s -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6399
    real_le (real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6400
     ((g::'B => hollight.real) ((f::'A => 'B) x)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6401
==> real_le (hollight.sum (f ` s) g) (hollight.sum s (g o f))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6402
  by (import hollight SUM_IMAGE_LE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6403
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6404
lemma SUM_CLOSED: "(P::hollight.real => bool) (real_of_num (0::nat)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6405
(ALL (x::hollight.real) y::hollight.real. P x & P y --> P (real_add x y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6406
(ALL a::'A. a : (s::'A => bool) --> P ((f::'A => hollight.real) a))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6407
==> P (hollight.sum s f)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6408
  by (import hollight SUM_CLOSED)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6409
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6410
lemma SUM_ADD_NUMSEG: "hollight.sum {xb::nat..xc::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6411
 (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6412
     real_add ((x::nat => hollight.real) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6413
      ((xa::nat => hollight.real) i)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6414
real_add (hollight.sum {xb..xc} x) (hollight.sum {xb..xc} xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6415
  by (import hollight SUM_ADD_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6416
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6417
lemma SUM_SUB_NUMSEG: "hollight.sum {xb::nat..xc::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6418
 (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6419
     real_sub ((x::nat => hollight.real) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6420
      ((xa::nat => hollight.real) i)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6421
real_sub (hollight.sum {xb..xc} x) (hollight.sum {xb..xc} xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6422
  by (import hollight SUM_SUB_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6423
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6424
lemma SUM_LE_NUMSEG: "(!!i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6425
    (xb::nat) <= i & i <= (xc::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6426
    ==> real_le ((x::nat => hollight.real) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6427
         ((xa::nat => hollight.real) i))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6428
==> real_le (hollight.sum {xb..xc} x) (hollight.sum {xb..xc} xa)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6429
  by (import hollight SUM_LE_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6430
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6431
lemma SUM_EQ_NUMSEG: "(!!i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6432
    (m::nat) <= i & i <= (n::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6433
    ==> (f::nat => hollight.real) i = (g::nat => hollight.real) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6434
==> hollight.sum {m..n} f = hollight.sum {m..n} g"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6435
  by (import hollight SUM_EQ_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6436
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6437
lemma SUM_ABS_NUMSEG: "real_le
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6438
 (real_abs (hollight.sum {xa::nat..xb::nat} (x::nat => hollight.real)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6439
 (hollight.sum {xa..xb} (%i::nat. real_abs (x i)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6440
  by (import hollight SUM_ABS_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6441
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6442
lemma SUM_CONST_NUMSEG: "hollight.sum {xa..xb} (%n. x) = real_mul (real_of_num (xb + 1 - xa)) x"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6443
  by (import hollight SUM_CONST_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6444
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6445
lemma SUM_EQ_0_NUMSEG: "(!!i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6446
    (m::nat) <= i & i <= (n::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6447
    ==> (x::nat => hollight.real) i = real_of_num (0::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6448
==> hollight.sum {m..n} x = real_of_num (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6449
  by (import hollight SUM_EQ_0_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6450
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6451
lemma SUM_TRIV_NUMSEG: "(n::nat) < (m::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6452
==> hollight.sum {m..n} (f::nat => hollight.real) = real_of_num (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6453
  by (import hollight SUM_TRIV_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6454
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6455
lemma SUM_POS_LE_NUMSEG: "(!!p::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6456
    (x::nat) <= p & p <= (xa::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6457
    ==> real_le (real_of_num (0::nat)) ((xb::nat => hollight.real) p))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6458
==> real_le (real_of_num (0::nat)) (hollight.sum {x..xa} xb)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6459
  by (import hollight SUM_POS_LE_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6460
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6461
lemma SUM_POS_EQ_0_NUMSEG: "[| (ALL p::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6462
       (m::nat) <= p & p <= (n::nat) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6463
       real_le (real_of_num (0::nat)) ((f::nat => hollight.real) p)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6464
   hollight.sum {m..n} f = real_of_num (0::nat);
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6465
   m <= (p::nat) & p <= n |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6466
==> f p = real_of_num (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6467
  by (import hollight SUM_POS_EQ_0_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6468
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6469
lemma SUM_SING_NUMSEG: "hollight.sum {xa::nat..xa} (x::nat => hollight.real) = x xa"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6470
  by (import hollight SUM_SING_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6471
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6472
lemma SUM_CLAUSES_NUMSEG: "(ALL m. hollight.sum {m..0} f = (if m = 0 then f 0 else real_of_num 0)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6473
(ALL m n.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6474
    hollight.sum {m..Suc n} f =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6475
    (if m <= Suc n then real_add (hollight.sum {m..n} f) (f (Suc n))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6476
     else hollight.sum {m..n} f))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6477
  by (import hollight SUM_CLAUSES_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6478
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6479
lemma SUM_SWAP_NUMSEG: "hollight.sum {a::nat..b::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6480
 (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6481
     hollight.sum {c::nat..d::nat} ((f::nat => nat => hollight.real) i)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6482
hollight.sum {c..d} (%j::nat. hollight.sum {a..b} (%i::nat. f i j))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6483
  by (import hollight SUM_SWAP_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6484
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6485
lemma SUM_ADD_SPLIT: "(xa::nat) <= (xb::nat) + (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6486
==> hollight.sum {xa..xb + (xc::nat)} (x::nat => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6487
    real_add (hollight.sum {xa..xb} x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6488
     (hollight.sum {xb + (1::nat)..xb + xc} x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6489
  by (import hollight SUM_ADD_SPLIT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6490
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6491
lemma SUM_OFFSET: "hollight.sum {(xb::nat) + (x::nat)..(xc::nat) + x}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6492
 (xa::nat => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6493
hollight.sum {xb..xc} (%i::nat. xa (i + x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6494
  by (import hollight SUM_OFFSET)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6495
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6496
lemma SUM_OFFSET_0: "(xa::nat) <= (xb::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6497
==> hollight.sum {xa..xb} (x::nat => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6498
    hollight.sum {0::nat..xb - xa} (%i::nat. x (i + xa))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6499
  by (import hollight SUM_OFFSET_0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6500
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6501
lemma SUM_CLAUSES_LEFT: "(xa::nat) <= (xb::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6502
==> hollight.sum {xa..xb} (x::nat => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6503
    real_add (x xa) (hollight.sum {xa + (1::nat)..xb} x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6504
  by (import hollight SUM_CLAUSES_LEFT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6505
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6506
lemma SUM_CLAUSES_RIGHT: "(0::nat) < (n::nat) & (m::nat) <= n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6507
==> hollight.sum {m..n} (f::nat => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6508
    real_add (hollight.sum {m..n - (1::nat)} f) (f n)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6509
  by (import hollight SUM_CLAUSES_RIGHT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6510
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6511
lemma SUM_PAIR: "hollight.sum {(2::nat) * (m::nat)..(2::nat) * (n::nat) + (1::nat)}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6512
 (f::nat => hollight.real) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6513
hollight.sum {m..n}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6514
 (%i::nat. real_add (f ((2::nat) * i)) (f ((2::nat) * i + (1::nat))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6515
  by (import hollight SUM_PAIR)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6516
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6517
lemma REAL_OF_NUM_SUM_NUMSEG: "real_of_num (nsum {xa::nat..xb::nat} (x::nat => nat)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6518
hollight.sum {xa..xb} (%i::nat. real_of_num (x i))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6519
  by (import hollight REAL_OF_NUM_SUM_NUMSEG)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6520
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6521
lemma SUM_PARTIAL_SUC: "hollight.sum {m::nat..n::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6522
 (%k::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6523
     real_mul ((f::nat => hollight.real) k)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6524
      (real_sub ((g::nat => hollight.real) (k + (1::nat))) (g k))) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6525
(if m <= n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6526
 then real_sub
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6527
       (real_sub (real_mul (f (n + (1::nat))) (g (n + (1::nat))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6528
         (real_mul (f m) (g m)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6529
       (hollight.sum {m..n}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6530
         (%k::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6531
             real_mul (g (k + (1::nat)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6532
              (real_sub (f (k + (1::nat))) (f k))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6533
 else real_of_num (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6534
  by (import hollight SUM_PARTIAL_SUC)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6535
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6536
lemma SUM_PARTIAL_PRE: "hollight.sum {m::nat..n::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6537
 (%k::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6538
     real_mul ((f::nat => hollight.real) k)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6539
      (real_sub ((g::nat => hollight.real) k) (g (k - (1::nat))))) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6540
(if m <= n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6541
 then real_sub
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6542
       (real_sub (real_mul (f (n + (1::nat))) (g n))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6543
         (real_mul (f m) (g (m - (1::nat)))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6544
       (hollight.sum {m..n}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6545
         (%k::nat. real_mul (g k) (real_sub (f (k + (1::nat))) (f k))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6546
 else real_of_num (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6547
  by (import hollight SUM_PARTIAL_PRE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6548
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6549
lemma SUM_DIFFS: "hollight.sum {x::nat..xa::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6550
 (%x::nat. real_sub ((f::nat => hollight.real) x) (f (x + (1::nat)))) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6551
(if x <= xa then real_sub (f x) (f (xa + (1::nat)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6552
 else real_of_num (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6553
  by (import hollight SUM_DIFFS)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6554
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6555
lemma SUM_DIFFS_ALT: "hollight.sum {m::nat..n::nat}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6556
 (%x::nat. real_sub ((f::nat => hollight.real) (x + (1::nat))) (f x)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6557
(if m <= n then real_sub (f (n + (1::nat))) (f m) else real_of_num (0::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6558
  by (import hollight SUM_DIFFS_ALT)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6559
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6560
lemma SUM_COMBINE_R: "(m::nat) <= (n::nat) + (1::nat) & n <= (p::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6561
==> real_add (hollight.sum {m..n} (f::nat => hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6562
     (hollight.sum {n + (1::nat)..p} f) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6563
    hollight.sum {m..p} f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6564
  by (import hollight SUM_COMBINE_R)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6565
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6566
lemma SUM_COMBINE_L: "(0::nat) < (n::nat) & (m::nat) <= n & n <= (p::nat) + (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6567
==> real_add (hollight.sum {m..n - (1::nat)} (f::nat => hollight.real))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6568
     (hollight.sum {n..p} f) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6569
    hollight.sum {m..p} f"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6570
  by (import hollight SUM_COMBINE_L)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6571
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6572
lemma REAL_SUB_POW: "1 <= xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6573
==> real_sub (real_pow x xb) (real_pow xa xb) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6574
    real_mul (real_sub x xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6575
     (hollight.sum {0..xb - 1}
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6576
       (%i. real_mul (real_pow x i) (real_pow xa (xb - 1 - i))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6577
  by (import hollight REAL_SUB_POW)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6578
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6579
lemma REAL_SUB_POW_R1: "1 <= n
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6580
==> real_sub (real_pow x n) (real_of_num 1) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6581
    real_mul (real_sub x (real_of_num 1))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6582
     (hollight.sum {0..n - 1} (real_pow x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6583
  by (import hollight REAL_SUB_POW_R1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6584
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6585
lemma REAL_SUB_POW_L1: "1 <= xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6586
==> real_sub (real_of_num 1) (real_pow x xa) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6587
    real_mul (real_sub (real_of_num 1) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6588
     (hollight.sum {0..xa - 1} (real_pow x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6589
  by (import hollight REAL_SUB_POW_L1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6590
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6591
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6592
  dimindex :: "('A => bool) => nat"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6593
  "(op ==::(('A::type => bool) => nat) => (('A::type => bool) => nat) => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6594
 (dimindex::('A::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6595
 (%u::'A::type => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6596
     (If::bool => nat => nat => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6597
      ((finite::('A::type => bool) => bool) (UNIV::'A::type => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6598
      ((CARD::('A::type => bool) => nat) (UNIV::'A::type => bool)) (1::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6599
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6600
lemma DEF_dimindex: "(op =::(('A::type => bool) => nat) => (('A::type => bool) => nat) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6601
 (dimindex::('A::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6602
 (%u::'A::type => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6603
     (If::bool => nat => nat => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6604
      ((finite::('A::type => bool) => bool) (UNIV::'A::type => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6605
      ((CARD::('A::type => bool) => nat) (UNIV::'A::type => bool)) (1::nat))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6606
  by (import hollight DEF_dimindex)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6607
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6608
lemma DIMINDEX_NONZERO: "dimindex (s::'A => bool) ~= (0::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6609
  by (import hollight DIMINDEX_NONZERO)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6610
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6611
lemma DIMINDEX_GE_1: "(1::nat) <= dimindex (x::'A => bool)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6612
  by (import hollight DIMINDEX_GE_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6613
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6614
lemma DIMINDEX_UNIV: "(op =::nat => nat => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6615
 ((dimindex::('A::type => bool) => nat) (x::'A::type => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6616
 ((dimindex::('A::type => bool) => nat) (UNIV::'A::type => bool))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6617
  by (import hollight DIMINDEX_UNIV)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6618
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6619
lemma DIMINDEX_UNIQUE: "(op ==>::prop => prop => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6620
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6621
   ((HAS_SIZE::('A::type => bool) => nat => bool) (UNIV::'A::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6622
     (n::nat)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6623
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6624
   ((op =::nat => nat => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6625
     ((dimindex::('A::type => bool) => nat) (UNIV::'A::type => bool)) n))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6626
  by (import hollight DIMINDEX_UNIQUE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6627
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6628
typedef (open) ('A) finite_image = "{x::nat. x : dotdot (NUMERAL (NUMERAL_BIT1 (0::nat))) (dimindex UNIV)}"  morphisms "dest_finite_image" "finite_index"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6629
  apply (rule light_ex_imp_nonempty[where t="SOME x::nat. x : dotdot (NUMERAL (NUMERAL_BIT1 (0::nat))) (dimindex UNIV)"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6630
  by (import hollight TYDEF_finite_image)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6631
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6632
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6633
  dest_finite_image :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6634
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6635
syntax
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6636
  finite_index :: _ 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6637
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6638
lemmas "TYDEF_finite_image_@intern" = typedef_hol2hollight 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  6639
  [where a="a :: 'A finite_image" and r=r ,
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6640
   OF type_definition_finite_image]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6641
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6642
lemma FINITE_IMAGE_IMAGE: "(op =::('A::type finite_image => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6643
       => ('A::type finite_image => bool) => bool)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6644
 (UNIV::'A::type finite_image => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6645
 ((op `::(nat => 'A::type finite_image)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6646
         => (nat => bool) => 'A::type finite_image => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6647
   (finite_index::nat => 'A::type finite_image)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6648
   ((atLeastAtMost::nat => nat => nat => bool) (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6649
     ((dimindex::('A::type => bool) => nat) (UNIV::'A::type => bool))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6650
  by (import hollight FINITE_IMAGE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6651
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6652
lemma HAS_SIZE_FINITE_IMAGE: "(HAS_SIZE::('A::type finite_image => bool) => nat => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6653
 (UNIV::'A::type finite_image => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6654
 ((dimindex::('A::type => bool) => nat) (s::'A::type => bool))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6655
  by (import hollight HAS_SIZE_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6656
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6657
lemma CARD_FINITE_IMAGE: "(op =::nat => nat => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6658
 ((CARD::('A::type finite_image => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6659
   (UNIV::'A::type finite_image => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6660
 ((dimindex::('A::type => bool) => nat) (s::'A::type => bool))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6661
  by (import hollight CARD_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6662
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6663
lemma FINITE_FINITE_IMAGE: "(finite::('A::type finite_image => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6664
 (UNIV::'A::type finite_image => bool)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6665
  by (import hollight FINITE_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6666
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6667
lemma DIMINDEX_FINITE_IMAGE: "dimindex (s::'A finite_image => bool) = dimindex (t::'A => bool)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6668
  by (import hollight DIMINDEX_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6669
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6670
lemma FINITE_INDEX_WORKS: "(Ex1::(nat => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6671
 (%xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6672
     (op &::bool => bool => bool) ((op <=::nat => nat => bool) (1::nat) xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6673
      ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6674
        ((op <=::nat => nat => bool) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6675
          ((dimindex::('A::type => bool) => nat) (UNIV::'A::type => bool)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6676
        ((op =::'A::type finite_image => 'A::type finite_image => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6677
          ((finite_index::nat => 'A::type finite_image) xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6678
          (x::'A::type finite_image))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6679
  by (import hollight FINITE_INDEX_WORKS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6680
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6681
lemma FINITE_INDEX_INJ: "(op ==>::prop => prop => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6682
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6683
   ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6684
     ((op <=::nat => nat => bool) (1::nat) (i::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6685
     ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6686
       ((op <=::nat => nat => bool) i
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6687
         ((dimindex::('A::type => bool) => nat) (UNIV::'A::type => bool)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6688
       ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6689
         ((op <=::nat => nat => bool) (1::nat) (j::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6690
         ((op <=::nat => nat => bool) j
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6691
           ((dimindex::('A::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6692
             (UNIV::'A::type => bool)))))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6693
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6694
   ((op =::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6695
     ((op =::'A::type finite_image => 'A::type finite_image => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6696
       ((finite_index::nat => 'A::type finite_image) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6697
       ((finite_index::nat => 'A::type finite_image) j))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6698
     ((op =::nat => nat => bool) i j)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6699
  by (import hollight FINITE_INDEX_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6700
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6701
lemma FORALL_FINITE_INDEX: "(op =::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6702
 ((All::('N::type finite_image => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6703
   (P::'N::type finite_image => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6704
 ((All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6705
   (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6706
       (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6707
        ((op &::bool => bool => bool)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6708
          ((op <=::nat => nat => bool) (1::nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6709
          ((op <=::nat => nat => bool) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6710
            ((dimindex::('N::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6711
              (UNIV::'N::type => bool))))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6712
        (P ((finite_index::nat => 'N::type finite_image) i))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6713
  by (import hollight FORALL_FINITE_INDEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6714
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6715
typedef (open) ('A, 'B) cart = "{f. True}"  morphisms "dest_cart" "mk_cart"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6716
  apply (rule light_ex_imp_nonempty[where t="SOME f. True"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6717
  by (import hollight TYDEF_cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6718
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6719
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6720
  dest_cart :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6721
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6722
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6723
  mk_cart :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6724
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6725
lemmas "TYDEF_cart_@intern" = typedef_hol2hollight 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  6726
  [where a="a :: ('A, 'B) cart" and r=r ,
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6727
   OF type_definition_cart]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6728
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6729
consts
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6730
  "$" :: "('q_73536, 'q_73546) cart => nat => 'q_73536" ("$")
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6731
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6732
defs
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6733
  "$_def": "$ == %(u::('q_73536, 'q_73546) cart) ua::nat. dest_cart u (finite_index ua)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6734
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6735
lemma "DEF_$": "$ = (%(u::('q_73536, 'q_73546) cart) ua::nat. dest_cart u (finite_index ua))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6736
  by (import hollight "DEF_$")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6737
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6738
lemma CART_EQ: "(op =::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6739
 ((op =::('A::type, 'B::type) cart => ('A::type, 'B::type) cart => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6740
   (x::('A::type, 'B::type) cart) (y::('A::type, 'B::type) cart))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6741
 ((All::(nat => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6742
   (%xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6743
       (op -->::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6744
        ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6745
          ((op <=::nat => nat => bool) (1::nat) xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6746
          ((op <=::nat => nat => bool) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6747
            ((dimindex::('B::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6748
              (UNIV::'B::type => bool))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6749
        ((op =::'A::type => 'A::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6750
          (($::('A::type, 'B::type) cart => nat => 'A::type) x xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6751
          (($::('A::type, 'B::type) cart => nat => 'A::type) y xa))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6752
  by (import hollight CART_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6753
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6754
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6755
  lambda :: "(nat => 'A) => ('A, 'B) cart"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6756
  "(op ==::((nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6757
        => ((nat => 'A::type) => ('A::type, 'B::type) cart) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6758
 (lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6759
 (%u::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6760
     (Eps::(('A::type, 'B::type) cart => bool) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6761
      (%f::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6762
          (All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6763
           (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6764
               (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6765
                ((op &::bool => bool => bool)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6766
                  ((op <=::nat => nat => bool) (1::nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6767
                  ((op <=::nat => nat => bool) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6768
                    ((dimindex::('B::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6769
                      (UNIV::'B::type => bool))))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6770
                ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6771
                  (($::('A::type, 'B::type) cart => nat => 'A::type) f i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6772
                  (u i)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6773
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6774
lemma DEF_lambda: "(op =::((nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6775
       => ((nat => 'A::type) => ('A::type, 'B::type) cart) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6776
 (lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6777
 (%u::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6778
     (Eps::(('A::type, 'B::type) cart => bool) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6779
      (%f::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6780
          (All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6781
           (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6782
               (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6783
                ((op &::bool => bool => bool)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6784
                  ((op <=::nat => nat => bool) (1::nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6785
                  ((op <=::nat => nat => bool) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6786
                    ((dimindex::('B::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6787
                      (UNIV::'B::type => bool))))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6788
                ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6789
                  (($::('A::type, 'B::type) cart => nat => 'A::type) f i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6790
                  (u i)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6791
  by (import hollight DEF_lambda)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6792
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6793
lemma LAMBDA_BETA: "(op ==>::prop => prop => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6794
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6795
   ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6796
     ((op <=::nat => nat => bool) (1::nat) (x::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6797
     ((op <=::nat => nat => bool) x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6798
       ((dimindex::('B::type => bool) => nat) (UNIV::'B::type => bool)))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6799
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6800
   ((op =::'A::type => 'A::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6801
     (($::('A::type, 'B::type) cart => nat => 'A::type)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6802
       ((lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6803
         (g::nat => 'A::type))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6804
       x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6805
     (g x)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6806
  by (import hollight LAMBDA_BETA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6807
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6808
lemma LAMBDA_UNIQUE: "(op =::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6809
 ((All::(nat => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6810
   (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6811
       (op -->::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6812
        ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6813
          ((op <=::nat => nat => bool) (1::nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6814
          ((op <=::nat => nat => bool) i
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6815
            ((dimindex::('B::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6816
              (UNIV::'B::type => bool))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6817
        ((op =::'A::type => 'A::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6818
          (($::('A::type, 'B::type) cart => nat => 'A::type)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6819
            (x::('A::type, 'B::type) cart) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6820
          ((xa::nat => 'A::type) i))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6821
 ((op =::('A::type, 'B::type) cart => ('A::type, 'B::type) cart => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6822
   ((lambda::(nat => 'A::type) => ('A::type, 'B::type) cart) xa) x)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6823
  by (import hollight LAMBDA_UNIQUE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6824
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6825
lemma LAMBDA_ETA: "lambda ($ (x::('q_73734, 'q_73738) cart)) = x"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6826
  by (import hollight LAMBDA_ETA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6827
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6828
lemma FINITE_INDEX_INRANGE: "(Ex::(nat => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6829
 (%xa::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6830
     (op &::bool => bool => bool) ((op <=::nat => nat => bool) (1::nat) xa)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6831
      ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6832
        ((op <=::nat => nat => bool) xa
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6833
          ((dimindex::('N::type => bool) => nat) (UNIV::'N::type => bool)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6834
        ((All::(('A::type, 'N::type) cart => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6835
          (%xb::('A::type, 'N::type) cart.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6836
              (op =::'A::type => 'A::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6837
               (($::('A::type, 'N::type) cart => nat => 'A::type) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6838
                 (x::nat))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6839
               (($::('A::type, 'N::type) cart => nat => 'A::type) xb xa)))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6840
  by (import hollight FINITE_INDEX_INRANGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6841
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6842
lemma CART_EQ_FULL: "((x::('A, 'N) cart) = (y::('A, 'N) cart)) = (ALL i::nat. $ x i = $ y i)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6843
  by (import hollight CART_EQ_FULL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6844
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6845
typedef (open) ('A, 'B) finite_sum = "{x::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6846
 x : dotdot (NUMERAL (NUMERAL_BIT1 (0::nat)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6847
      (dimindex UNIV + dimindex UNIV)}"  morphisms "dest_finite_sum" "mk_finite_sum"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6848
  apply (rule light_ex_imp_nonempty[where t="SOME x::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6849
   x : dotdot (NUMERAL (NUMERAL_BIT1 (0::nat)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6850
        (dimindex UNIV + dimindex UNIV)"])
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6851
  by (import hollight TYDEF_finite_sum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6852
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6853
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6854
  dest_finite_sum :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6855
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6856
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6857
  mk_finite_sum :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6858
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6859
lemmas "TYDEF_finite_sum_@intern" = typedef_hol2hollight 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  6860
  [where a="a :: ('A, 'B) finite_sum" and r=r ,
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6861
   OF type_definition_finite_sum]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6862
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6863
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6864
  pastecart :: "('A, 'M) cart => ('A, 'N) cart => ('A, ('M, 'N) finite_sum) cart"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6865
  "(op ==::(('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6866
         => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6867
            => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6868
        => (('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6869
            => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6870
               => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6871
           => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6872
 (pastecart::('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6873
             => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6874
                => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6875
 (%(u::('A::type, 'M::type) cart) ua::('A::type, 'N::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6876
     (lambda::(nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6877
              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6878
      (%i::nat.
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6879
          (If::bool => 'A::type => 'A::type => 'A::type)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6880
           ((op <=::nat => nat => bool) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6881
             ((dimindex::('M::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6882
               (UNIV::'M::type => bool)))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6883
           (($::('A::type, 'M::type) cart => nat => 'A::type) u i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6884
           (($::('A::type, 'N::type) cart => nat => 'A::type) ua
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6885
             ((op -::nat => nat => nat) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6886
               ((dimindex::('M::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6887
                 (UNIV::'M::type => bool))))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6888
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6889
lemma DEF_pastecart: "(op =::(('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6890
        => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6891
           => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6892
       => (('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6893
           => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6894
              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6895
          => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6896
 (pastecart::('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6897
             => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6898
                => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6899
 (%(u::('A::type, 'M::type) cart) ua::('A::type, 'N::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6900
     (lambda::(nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6901
              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6902
      (%i::nat.
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6903
          (If::bool => 'A::type => 'A::type => 'A::type)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6904
           ((op <=::nat => nat => bool) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6905
             ((dimindex::('M::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6906
               (UNIV::'M::type => bool)))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6907
           (($::('A::type, 'M::type) cart => nat => 'A::type) u i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6908
           (($::('A::type, 'N::type) cart => nat => 'A::type) ua
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6909
             ((op -::nat => nat => nat) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6910
               ((dimindex::('M::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6911
                 (UNIV::'M::type => bool))))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6912
  by (import hollight DEF_pastecart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6913
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6914
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6915
  fstcart :: "('A, ('M, 'N) finite_sum) cart => ('A, 'M) cart"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6916
  "fstcart == %u::('A, ('M, 'N) finite_sum) cart. lambda ($ u)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6917
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6918
lemma DEF_fstcart: "fstcart = (%u::('A, ('M, 'N) finite_sum) cart. lambda ($ u))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6919
  by (import hollight DEF_fstcart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6920
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6921
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6922
  sndcart :: "('A, ('M, 'N) finite_sum) cart => ('A, 'N) cart"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6923
  "(op ==::(('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6924
         => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6925
        => (('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6926
            => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6927
           => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6928
 (sndcart::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6929
           => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6930
 (%u::('A::type, ('M::type, 'N::type) finite_sum) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6931
     (lambda::(nat => 'A::type) => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6932
      (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6933
          ($::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6934
              => nat => 'A::type)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6935
           u ((op +::nat => nat => nat) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6936
               ((dimindex::('M::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6937
                 (UNIV::'M::type => bool)))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6938
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6939
lemma DEF_sndcart: "(op =::(('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6940
        => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6941
       => (('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6942
           => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6943
          => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6944
 (sndcart::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6945
           => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6946
 (%u::('A::type, ('M::type, 'N::type) finite_sum) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6947
     (lambda::(nat => 'A::type) => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6948
      (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6949
          ($::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6950
              => nat => 'A::type)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6951
           u ((op +::nat => nat => nat) i
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6952
               ((dimindex::('M::type => bool) => nat)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6953
                 (UNIV::'M::type => bool)))))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6954
  by (import hollight DEF_sndcart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6955
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6956
lemma FINITE_SUM_IMAGE: "(op =::(('A::type, 'B::type) finite_sum => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6957
       => (('A::type, 'B::type) finite_sum => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6958
 (UNIV::('A::type, 'B::type) finite_sum => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6959
 ((op `::(nat => ('A::type, 'B::type) finite_sum)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6960
         => (nat => bool) => ('A::type, 'B::type) finite_sum => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6961
   (mk_finite_sum::nat => ('A::type, 'B::type) finite_sum)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6962
   ((atLeastAtMost::nat => nat => nat => bool) (1::nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6963
     ((op +::nat => nat => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6964
       ((dimindex::('A::type => bool) => nat) (UNIV::'A::type => bool))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6965
       ((dimindex::('B::type => bool) => nat) (UNIV::'B::type => bool)))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6966
  by (import hollight FINITE_SUM_IMAGE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6967
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6968
lemma HAS_SIZE_1: "(HAS_SIZE::(unit => bool) => nat => bool) (UNIV::unit => bool) (1::nat)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6969
  by (import hollight HAS_SIZE_1)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6970
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6971
typedef (open) N_2 = "{x. x : dotdot (NUMERAL (NUMERAL_BIT1 0))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6972
         (NUMERAL (NUMERAL_BIT0 (NUMERAL_BIT1 0)))}"  morphisms "dest_auto_define_finite_type_2" "mk_auto_define_finite_type_2"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6973
  apply (rule light_ex_imp_nonempty[where t="SOME x.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6974
   x : dotdot (NUMERAL (NUMERAL_BIT1 0))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6975
        (NUMERAL (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"])
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6976
  by (import hollight TYDEF_2)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6977
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6978
syntax
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6979
  dest_auto_define_finite_type_2 :: _ 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6980
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6981
syntax
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6982
  mk_auto_define_finite_type_2 :: _ 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6983
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6984
lemmas "TYDEF_2_@intern" = typedef_hol2hollight 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6985
  [where a="a :: N_2" and r=r ,
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6986
   OF type_definition_N_2]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6987
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6988
typedef (open) N_3 = "{x. x : dotdot (NUMERAL (NUMERAL_BIT1 0))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6989
         (NUMERAL (NUMERAL_BIT1 (NUMERAL_BIT1 0)))}"  morphisms "dest_auto_define_finite_type_3" "mk_auto_define_finite_type_3"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6990
  apply (rule light_ex_imp_nonempty[where t="SOME x.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6991
   x : dotdot (NUMERAL (NUMERAL_BIT1 0))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6992
        (NUMERAL (NUMERAL_BIT1 (NUMERAL_BIT1 0)))"])
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6993
  by (import hollight TYDEF_3)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6994
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6995
syntax
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6996
  dest_auto_define_finite_type_3 :: _ 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6997
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6998
syntax
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  6999
  mk_auto_define_finite_type_3 :: _ 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7000
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7001
lemmas "TYDEF_3_@intern" = typedef_hol2hollight 
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7002
  [where a="a :: N_3" and r=r ,
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7003
   OF type_definition_N_3]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7004
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7005
lemma FINITE_CART: "(op ==>::prop => prop => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7006
 ((all::(nat => prop) => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7007
   (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7008
       (op ==>::prop => prop => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7009
        ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7010
          ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7011
            ((op <=::nat => nat => bool) (1::nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7012
            ((op <=::nat => nat => bool) i
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7013
              ((dimindex::('N::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7014
                (UNIV::'N::type => bool)))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7015
        ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7016
          ((finite::('A::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7017
            ((Collect::('A::type => bool) => 'A::type => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7018
              (%u::'A::type.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7019
                  (Ex::('A::type => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7020
                   (%x::'A::type.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7021
                       (op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7022
                        ((P::nat => 'A::type => bool) i x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7023
                        ((op =::'A::type => 'A::type => bool) u x))))))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7024
 ((Trueprop::bool => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7025
   ((finite::(('A::type, 'N::type) cart => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7026
     ((Collect::(('A::type, 'N::type) cart => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7027
                => ('A::type, 'N::type) cart => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7028
       (%u::('A::type, 'N::type) cart.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7029
           (Ex::(('A::type, 'N::type) cart => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7030
            (%v::('A::type, 'N::type) cart.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7031
                (op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7032
                 ((All::(nat => bool) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7033
                   (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7034
                       (op -->::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7035
                        ((op &::bool => bool => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7036
                          ((op <=::nat => nat => bool) (1::nat) i)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7037
                          ((op <=::nat => nat => bool) i
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7038
                            ((dimindex::('N::type => bool) => nat)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7039
                              (UNIV::'N::type => bool))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7040
                        (P i (($::('A::type, 'N::type) cart
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7041
                                  => nat => 'A::type)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7042
                               v i))))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7043
                 ((op =::('A::type, 'N::type) cart
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7044
                         => ('A::type, 'N::type) cart => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7045
                   u v))))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7046
  by (import hollight FINITE_CART)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7047
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7048
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7049
  vector :: "'A list => ('A, 'N) cart"  where
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7050
  "(op ==::('A::type list => ('A::type, 'N::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7051
        => ('A::type list => ('A::type, 'N::type) cart) => prop)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7052
 (vector::'A::type list => ('A::type, 'N::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7053
 (%u::'A::type list.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7054
     (lambda::(nat => 'A::type) => ('A::type, 'N::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7055
      (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7056
          (op !::'A::type list => nat => 'A::type) u
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7057
           ((op -::nat => nat => nat) i (1::nat))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7058
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7059
lemma DEF_vector: "(op =::('A::type list => ('A::type, 'N::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7060
       => ('A::type list => ('A::type, 'N::type) cart) => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7061
 (vector::'A::type list => ('A::type, 'N::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7062
 (%u::'A::type list.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7063
     (lambda::(nat => 'A::type) => ('A::type, 'N::type) cart)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7064
      (%i::nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7065
          (op !::'A::type list => nat => 'A::type) u
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7066
           ((op -::nat => nat => nat) i (1::nat))))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7067
  by (import hollight DEF_vector)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7068
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7069
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7070
  CASEWISE :: "(('q_74835 => 'q_74839) * ('q_74840 => 'q_74835 => 'q_74799)) list
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7071
=> 'q_74840 => 'q_74839 => 'q_74799"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7072
  "CASEWISE ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7073
SOME CASEWISE::(('q_74835 => 'q_74839) *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7074
                ('q_74840 => 'q_74835 => 'q_74799)) list
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7075
               => 'q_74840 => 'q_74839 => 'q_74799.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7076
   (ALL (f::'q_74840) x::'q_74839.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7077
       CASEWISE [] f x = (SOME y::'q_74799. True)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7078
   (ALL (h::('q_74835 => 'q_74839) * ('q_74840 => 'q_74835 => 'q_74799))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7079
       (t::(('q_74835 => 'q_74839) *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7080
            ('q_74840 => 'q_74835 => 'q_74799)) list)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7081
       (f::'q_74840) x::'q_74839.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7082
       CASEWISE (h # t) f x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7083
       (if EX y::'q_74835. fst h y = x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7084
        then snd h f (SOME y::'q_74835. fst h y = x) else CASEWISE t f x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7085
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7086
lemma DEF_CASEWISE: "CASEWISE =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7087
(SOME CASEWISE::(('q_74835 => 'q_74839) *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7088
                 ('q_74840 => 'q_74835 => 'q_74799)) list
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7089
                => 'q_74840 => 'q_74839 => 'q_74799.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7090
    (ALL (f::'q_74840) x::'q_74839.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7091
        CASEWISE [] f x = (SOME y::'q_74799. True)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7092
    (ALL (h::('q_74835 => 'q_74839) * ('q_74840 => 'q_74835 => 'q_74799))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7093
        (t::(('q_74835 => 'q_74839) *
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7094
             ('q_74840 => 'q_74835 => 'q_74799)) list)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7095
        (f::'q_74840) x::'q_74839.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7096
        CASEWISE (h # t) f x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7097
        (if EX y::'q_74835. fst h y = x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7098
         then snd h f (SOME y::'q_74835. fst h y = x) else CASEWISE t f x)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7099
  by (import hollight DEF_CASEWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7100
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7101
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7102
  admissible :: "('q_75137 => 'q_75130 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7103
=> (('q_75137 => 'q_75133) => 'q_75143 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7104
   => ('q_75143 => 'q_75130)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7105
      => (('q_75137 => 'q_75133) => 'q_75143 => 'q_75138) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7106
  "admissible ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7107
%(u::'q_75137 => 'q_75130 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7108
   (ua::('q_75137 => 'q_75133) => 'q_75143 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7109
   (ub::'q_75143 => 'q_75130)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7110
   uc::('q_75137 => 'q_75133) => 'q_75143 => 'q_75138.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7111
   ALL (f::'q_75137 => 'q_75133) (g::'q_75137 => 'q_75133) a::'q_75143.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7112
      ua f a & ua g a & (ALL z::'q_75137. u z (ub a) --> f z = g z) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7113
      uc f a = uc g a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7115
lemma DEF_admissible: "admissible =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7116
(%(u::'q_75137 => 'q_75130 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7117
    (ua::('q_75137 => 'q_75133) => 'q_75143 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7118
    (ub::'q_75143 => 'q_75130)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7119
    uc::('q_75137 => 'q_75133) => 'q_75143 => 'q_75138.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7120
    ALL (f::'q_75137 => 'q_75133) (g::'q_75137 => 'q_75133) a::'q_75143.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7121
       ua f a & ua g a & (ALL z::'q_75137. u z (ub a) --> f z = g z) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7122
       uc f a = uc g a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7123
  by (import hollight DEF_admissible)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7124
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7125
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7126
  tailadmissible :: "('A => 'A => bool)
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  7127
=> (('A => 'B) => 'P => bool)
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7128
   => ('P => 'A) => (('A => 'B) => 'P => 'B) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7129
  "tailadmissible ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7130
%(u::'A => 'A => bool) (ua::('A => 'B) => 'P => bool) (ub::'P => 'A)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7131
   uc::('A => 'B) => 'P => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7132
   EX (P::('A => 'B) => 'P => bool) (G::('A => 'B) => 'P => 'A)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7133
      H::('A => 'B) => 'P => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7134
      (ALL (f::'A => 'B) (a::'P) y::'A.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7135
          P f a & u y (G f a) --> u y (ub a)) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7136
      (ALL (f::'A => 'B) (g::'A => 'B) a::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7137
          (ALL z::'A. u z (ub a) --> f z = g z) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7138
          P f a = P g a & G f a = G g a & H f a = H g a) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7139
      (ALL (f::'A => 'B) a::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7140
          ua f a --> uc f a = (if P f a then f (G f a) else H f a))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7141
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7142
lemma DEF_tailadmissible: "tailadmissible =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7143
(%(u::'A => 'A => bool) (ua::('A => 'B) => 'P => bool) (ub::'P => 'A)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7144
    uc::('A => 'B) => 'P => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7145
    EX (P::('A => 'B) => 'P => bool) (G::('A => 'B) => 'P => 'A)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7146
       H::('A => 'B) => 'P => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7147
       (ALL (f::'A => 'B) (a::'P) y::'A.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7148
           P f a & u y (G f a) --> u y (ub a)) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7149
       (ALL (f::'A => 'B) (g::'A => 'B) a::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7150
           (ALL z::'A. u z (ub a) --> f z = g z) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7151
           P f a = P g a & G f a = G g a & H f a = H g a) &
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7152
       (ALL (f::'A => 'B) a::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7153
           ua f a --> uc f a = (if P f a then f (G f a) else H f a)))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7154
  by (import hollight DEF_tailadmissible)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7155
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7156
definition
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7157
  superadmissible :: "('q_75287 => 'q_75287 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7158
=> (('q_75287 => 'q_75289) => 'q_75295 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7159
   => ('q_75295 => 'q_75287)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7160
      => (('q_75287 => 'q_75289) => 'q_75295 => 'q_75289) => bool"  where
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7161
  "superadmissible ==
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7162
%(u::'q_75287 => 'q_75287 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7163
   (ua::('q_75287 => 'q_75289) => 'q_75295 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7164
   (ub::'q_75295 => 'q_75287)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7165
   uc::('q_75287 => 'q_75289) => 'q_75295 => 'q_75289.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7166
   admissible u (%(f::'q_75287 => 'q_75289) a::'q_75295. True) ub ua -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7167
   tailadmissible u ua ub uc"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7168
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7169
lemma DEF_superadmissible: "superadmissible =
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7170
(%(u::'q_75287 => 'q_75287 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7171
    (ua::('q_75287 => 'q_75289) => 'q_75295 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7172
    (ub::'q_75295 => 'q_75287)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7173
    uc::('q_75287 => 'q_75289) => 'q_75295 => 'q_75289.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7174
    admissible u (%(f::'q_75287 => 'q_75289) a::'q_75295. True) ub ua -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7175
    tailadmissible u ua ub uc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7176
  by (import hollight DEF_superadmissible)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7177
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7178
lemma MATCH_SEQPATTERN: "_MATCH (x::'q_75330)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7179
 (_SEQPATTERN (r::'q_75330 => 'q_75323 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7180
   (s::'q_75330 => 'q_75323 => bool)) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7181
(if Ex (r x) then _MATCH x r else _MATCH x s)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7182
  by (import hollight MATCH_SEQPATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7183
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7184
lemma ADMISSIBLE_CONST: "admissible (u_556::'q_75351 => 'q_75350 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7185
 (x::('q_75351 => 'q_75352) => 'q_75353 => bool) (xa::'q_75353 => 'q_75350)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7186
 (%f::'q_75351 => 'q_75352. xb::'q_75353 => 'q_75354)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7187
  by (import hollight ADMISSIBLE_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7188
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7189
lemma ADMISSIBLE_BASE: "(!!(f::'A => 'B) a::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7190
    (xa::('A => 'B) => 'P => bool) f a
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7191
    ==> (x::'A => 'A => bool) ((xc::'P => 'A) a) ((xb::'P => 'A) a))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7192
==> admissible x xa xb (%(f::'A => 'B) x::'P. f (xc x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7193
  by (import hollight ADMISSIBLE_BASE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7194
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7195
lemma ADMISSIBLE_COMB: "admissible (x::'A => 'A => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7196
 (xb::'P => 'A) (xc::('A => 'B) => 'P => 'C => 'D) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7197
admissible x xa xb (xd::('A => 'B) => 'P => 'C)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7198
==> admissible x xa xb (%(f::'A => 'B) x::'P. xc f x (xd f x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7199
  by (import hollight ADMISSIBLE_COMB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7200
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7201
lemma ADMISSIBLE_RAND: "admissible (x::'A => 'A => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7202
 (xb::'P => 'A) (xd::('A => 'B) => 'P => 'C)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7203
==> admissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7204
     (%(f::'A => 'B) x::'P. (xc::'P => 'C => 'D) x (xd f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7205
  by (import hollight ADMISSIBLE_RAND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7206
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7207
lemma ADMISSIBLE_LAMBDA: "admissible (x::'A => 'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7208
 (%f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7209
     SOME fa::'C * 'P => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7210
        ALL (u::'C) x::'P. fa (u, x) = (xa::('A => 'B) => 'P => bool) f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7211
 (SOME f::'C * 'P => 'A. ALL (u::'C) x::'P. f (u, x) = (xb::'P => 'A) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7212
 (%f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7213
     SOME fa::'C * 'P => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7214
        ALL (u::'C) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7215
           fa (u, x) = (xc::('A => 'B) => 'C => 'P => bool) f u x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7216
==> admissible x xa xb (%(f::'A => 'B) (x::'P) u::'C. xc f u x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7217
  by (import hollight ADMISSIBLE_LAMBDA)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7218
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7219
lemma ADMISSIBLE_NEST: "admissible (x::'A => 'A => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7220
 (xb::'P => 'A) (xc::('A => 'B) => 'P => 'A) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7221
(ALL (f::'A => 'B) a::'P. xa f a --> x (xc f a) (xb a))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7222
==> admissible x xa xb (%(f::'A => 'B) x::'P. f (xc f x))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7223
  by (import hollight ADMISSIBLE_NEST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7224
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7225
lemma ADMISSIBLE_COND: "admissible (u_556::'q_75688 => 'q_75687 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7226
 (p::('q_75688 => 'q_75719) => 'P => bool) (s::'P => 'q_75687)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7227
 (P::('q_75688 => 'q_75719) => 'P => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7228
admissible u_556 (%(f::'q_75688 => 'q_75719) x::'P. p f x & P f x) s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7229
 (h::('q_75688 => 'q_75719) => 'P => 'q_75744) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7230
admissible u_556 (%(f::'q_75688 => 'q_75719) x::'P. p f x & ~ P f x) s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7231
 (k::('q_75688 => 'q_75719) => 'P => 'q_75744)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7232
==> admissible u_556 p s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7233
     (%(f::'q_75688 => 'q_75719) x::'P. if P f x then h f x else k f x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7234
  by (import hollight ADMISSIBLE_COND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7235
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7236
lemma ADMISSIBLE_MATCH: "admissible (x::'q_75790 => 'q_75789 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7237
 (xa::('q_75790 => 'q_75791) => 'P => bool) (xb::'P => 'q_75789)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7238
 (xc::('q_75790 => 'q_75791) => 'P => 'q_75826) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7239
admissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7240
 (%(f::'q_75790 => 'q_75791) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7241
     (c::('q_75790 => 'q_75791) => 'P => 'q_75826 => 'q_75823 => bool) f x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7242
      (xc f x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7243
==> admissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7244
     (%(f::'q_75790 => 'q_75791) x::'P. _MATCH (xc f x) (c f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7245
  by (import hollight ADMISSIBLE_MATCH)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7246
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7247
lemma ADMISSIBLE_SEQPATTERN: "admissible (x::'q_75867 => 'q_75866 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7248
 (xa::('q_75867 => 'q_75929) => 'P => bool) (xb::'P => 'q_75866)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7249
 (%(f::'q_75867 => 'q_75929) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7250
     Ex ((xc::('q_75867 => 'q_75929) => 'P => 'q_75955 => 'q_75945 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7251
          f x ((xe::('q_75867 => 'q_75929) => 'P => 'q_75955) f x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7252
admissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7253
 (%(f::'q_75867 => 'q_75929) x::'P. xa f x & Ex (xc f x (xe f x))) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7254
 (%(f::'q_75867 => 'q_75929) x::'P. xc f x (xe f x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7255
admissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7256
 (%(f::'q_75867 => 'q_75929) x::'P. xa f x & ~ Ex (xc f x (xe f x))) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7257
 (%(f::'q_75867 => 'q_75929) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7258
     (xd::('q_75867 => 'q_75929) => 'P => 'q_75955 => 'q_75945 => bool) f x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7259
      (xe f x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7260
==> admissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7261
     (%(f::'q_75867 => 'q_75929) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7262
         _SEQPATTERN (xc f x) (xd f x) (xe f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7263
  by (import hollight ADMISSIBLE_SEQPATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7264
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7265
lemma ADMISSIBLE_UNGUARDED_PATTERN: "admissible (u_556::'q_76041 => 'q_76040 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7266
 (p::('q_76041 => 'q_76088) => 'P => bool) (s::'P => 'q_76040)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7267
 (pat::('q_76041 => 'q_76088) => 'P => 'q_76121) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7268
admissible u_556 p s (e::('q_76041 => 'q_76088) => 'P => 'q_76121) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7269
admissible u_556 (%(f::'q_76041 => 'q_76088) x::'P. p f x & pat f x = e f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7270
 s (t::('q_76041 => 'q_76088) => 'P => 'q_76128) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7271
admissible u_556 (%(f::'q_76041 => 'q_76088) x::'P. p f x & pat f x = e f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7272
 s (y::('q_76041 => 'q_76088) => 'P => 'q_76128)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7273
==> admissible u_556 p s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7274
     (%(f::'q_76041 => 'q_76088) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7275
         _UNGUARDED_PATTERN (pat f x = e f x) (t f x = y f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7276
  by (import hollight ADMISSIBLE_UNGUARDED_PATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7277
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7278
lemma ADMISSIBLE_GUARDED_PATTERN: "admissible (u_556::'q_76215 => 'q_76214 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7279
 (p::('q_76215 => 'q_76292) => 'P => bool) (s::'P => 'q_76214)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7280
 (pat::('q_76215 => 'q_76292) => 'P => 'q_76330) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7281
admissible u_556 p s (e::('q_76215 => 'q_76292) => 'P => 'q_76330) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7282
admissible u_556
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7283
 (%(f::'q_76215 => 'q_76292) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7284
     p f x &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7285
     pat f x = e f x & (q::('q_76215 => 'q_76292) => 'P => bool) f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7286
 s (t::('q_76215 => 'q_76292) => 'P => 'q_76339) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7287
admissible u_556 (%(f::'q_76215 => 'q_76292) x::'P. p f x & pat f x = e f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7288
 s q &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7289
admissible u_556
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7290
 (%(f::'q_76215 => 'q_76292) x::'P. p f x & pat f x = e f x & q f x) s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7291
 (y::('q_76215 => 'q_76292) => 'P => 'q_76339)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7292
==> admissible u_556 p s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7293
     (%(f::'q_76215 => 'q_76292) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7294
         _GUARDED_PATTERN (pat f x = e f x) (q f x) (t f x = y f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7295
  by (import hollight ADMISSIBLE_GUARDED_PATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7296
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7297
lemma ADMISSIBLE_NSUM: "admissible (x::'B => 'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7298
 (%f::'B => 'C.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7299
     SOME fa::nat * 'P => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7300
        ALL (k::nat) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7301
           fa (k, x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7302
           ((xd::'P => nat) x <= k &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7303
            k <= (xe::'P => nat) x & (xa::('B => 'C) => 'P => bool) f x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7304
 (SOME f::nat * 'P => 'A. ALL (k::nat) x::'P. f (k, x) = (xb::'P => 'A) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7305
 (%f::'B => 'C.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7306
     SOME fa::nat * 'P => nat.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7307
        ALL (k::nat) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7308
           fa (k, x) = (xc::('B => 'C) => 'P => nat => nat) f x k)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7309
==> admissible x xa xb (%(f::'B => 'C) x::'P. nsum {xd x..xe x} (xc f x))"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  7310
  by (import hollight ADMISSIBLE_NSUM)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  7311
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7312
lemma ADMISSIBLE_SUM: "admissible (x::'B => 'A => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7313
 (%f::'B => 'C.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7314
     SOME fa::nat * 'P => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7315
        ALL (k::nat) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7316
           fa (k, x) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7317
           ((xd::'P => nat) x <= k &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7318
            k <= (xe::'P => nat) x & (xa::('B => 'C) => 'P => bool) f x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7319
 (SOME f::nat * 'P => 'A. ALL (k::nat) x::'P. f (k, x) = (xb::'P => 'A) x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7320
 (%f::'B => 'C.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7321
     SOME fa::nat * 'P => hollight.real.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7322
        ALL (k::nat) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7323
           fa (k, x) = (xc::('B => 'C) => 'P => nat => hollight.real) f x k)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7324
==> admissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7325
     (%(f::'B => 'C) x::'P. hollight.sum {xd x..xe x} (xc f x))"
19093
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  7326
  by (import hollight ADMISSIBLE_SUM)
6d584f9d2021 use monomorphic sequences / scanners
obua
parents: 17915
diff changeset
  7327
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7328
lemma ADMISSIBLE_MAP: "admissible (x::'A => 'q_76632 => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7329
 (xb::'P => 'q_76632) (xd::('A => 'B) => 'P => 'q_76647 list) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7330
admissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7331
 (%f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7332
     SOME fa::'q_76647 * 'P => bool.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7333
        ALL (y::'q_76647) x::'P. fa (y, x) = (xa f x & y : set (xd f x)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7334
 (SOME f::'q_76647 * 'P => 'q_76632.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7335
     ALL (y::'q_76647) x::'P. f (y, x) = xb x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7336
 (%f::'A => 'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7337
     SOME fa::'q_76647 * 'P => 'q_76641.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7338
        ALL (y::'q_76647) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7339
           fa (y, x) = (xc::('A => 'B) => 'P => 'q_76647 => 'q_76641) f x y)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7340
==> admissible x xa xb (%(f::'A => 'B) x::'P. map (xc f x) (xd f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7341
  by (import hollight ADMISSIBLE_MAP)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7342
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7343
lemma ADMISSIBLE_MATCH_SEQPATTERN: "admissible (x::'q_76705 => 'q_76704 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7344
 (xa::('q_76705 => 'q_76770) => 'P => bool) (xb::'P => 'q_76704)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7345
 (%(f::'q_76705 => 'q_76770) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7346
     Ex ((xc::('q_76705 => 'q_76770) => 'P => 'q_76825 => 'q_76794 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7347
          f x ((xe::('q_76705 => 'q_76770) => 'P => 'q_76825) f x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7348
admissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7349
 (%(f::'q_76705 => 'q_76770) x::'P. xa f x & Ex (xc f x (xe f x))) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7350
 (%(f::'q_76705 => 'q_76770) x::'P. _MATCH (xe f x) (xc f x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7351
admissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7352
 (%(f::'q_76705 => 'q_76770) x::'P. xa f x & ~ Ex (xc f x (xe f x))) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7353
 (%(f::'q_76705 => 'q_76770) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7354
     _MATCH (xe f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7355
      ((xd::('q_76705 => 'q_76770) => 'P => 'q_76825 => 'q_76794 => bool) f
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7356
        x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7357
==> admissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7358
     (%(x::'q_76705 => 'q_76770) xa::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7359
         _MATCH (xe x xa) (_SEQPATTERN (xc x xa) (xd x xa)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7360
  by (import hollight ADMISSIBLE_MATCH_SEQPATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7361
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7362
lemma ADMISSIBLE_IMP_SUPERADMISSIBLE: "admissible (x::'A => 'A => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7363
 (xb::'P => 'A) (xc::('A => 'B) => 'P => 'B)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7364
==> superadmissible x xa xb xc"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7365
  by (import hollight ADMISSIBLE_IMP_SUPERADMISSIBLE)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7366
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7367
lemma SUPERADMISSIBLE_CONST: "superadmissible (u_556::'q_76904 => 'q_76904 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7368
 (p::('q_76904 => 'q_76906) => 'q_76905 => bool) (s::'q_76905 => 'q_76904)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7369
 (%f::'q_76904 => 'q_76906. c::'q_76905 => 'q_76906)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7370
  by (import hollight SUPERADMISSIBLE_CONST)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7371
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7372
lemma SUPERADMISSIBLE_TAIL: "admissible (x::'A => 'A => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7373
 (xb::'P => 'A) (xc::('A => 'B) => 'P => 'A) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7374
(ALL (f::'A => 'B) a::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7375
    xa f a --> (ALL y::'A. x y (xc f a) --> x y (xb a)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7376
==> superadmissible x xa xb (%(f::'A => 'B) x::'P. f (xc f x))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7377
  by (import hollight SUPERADMISSIBLE_TAIL)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7378
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7379
lemma SUPERADMISSIBLE_COND: "admissible (x::'A => 'A => bool) (xa::('A => 'B) => 'P => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7380
 (xc::'P => 'A) (xb::('A => 'B) => 'P => bool) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7381
superadmissible x (%(f::'A => 'B) x::'P. xa f x & xb f x) xc
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7382
 (xd::('A => 'B) => 'P => 'B) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7383
superadmissible x (%(f::'A => 'B) x::'P. xa f x & ~ xb f x) xc
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7384
 (xe::('A => 'B) => 'P => 'B)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7385
==> superadmissible x xa xc
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7386
     (%(f::'A => 'B) x::'P. if xb f x then xd f x else xe f x)"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7387
  by (import hollight SUPERADMISSIBLE_COND)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7388
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7389
lemma SUPERADMISSIBLE_MATCH_SEQPATTERN: "admissible (x::'q_77225 => 'q_77225 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7390
 (xa::('q_77225 => 'q_77341) => 'P => bool) (xb::'P => 'q_77225)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7391
 (%(f::'q_77225 => 'q_77341) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7392
     Ex ((xc::('q_77225 => 'q_77341) => 'P => 'q_77340 => 'q_77341 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7393
          f x ((xe::('q_77225 => 'q_77341) => 'P => 'q_77340) f x))) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7394
superadmissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7395
 (%(f::'q_77225 => 'q_77341) x::'P. xa f x & Ex (xc f x (xe f x))) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7396
 (%(f::'q_77225 => 'q_77341) x::'P. _MATCH (xe f x) (xc f x)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7397
superadmissible x
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7398
 (%(f::'q_77225 => 'q_77341) x::'P. xa f x & ~ Ex (xc f x (xe f x))) xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7399
 (%(f::'q_77225 => 'q_77341) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7400
     _MATCH (xe f x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7401
      ((xd::('q_77225 => 'q_77341) => 'P => 'q_77340 => 'q_77341 => bool) f
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7402
        x))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7403
==> superadmissible x xa xb
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7404
     (%(x::'q_77225 => 'q_77341) xa::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7405
         _MATCH (xe x xa) (_SEQPATTERN (xc x xa) (xd x xa)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7406
  by (import hollight SUPERADMISSIBLE_MATCH_SEQPATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7407
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7408
lemma SUPERADMISSIBLE_MATCH_UNGUARDED_PATTERN: "(ALL (f::'A => 'B) (a::'P) (t::'Q) u::'Q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7409
    (p::('A => 'B) => 'P => bool) f a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7410
    (pat::'Q => 'D) t = (e::'P => 'D) a & pat u = e a -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7411
    (arg::'P => 'Q => 'A) a t = arg a u) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7412
(ALL (f::'A => 'B) (a::'P) t::'Q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7413
    p f a & pat t = e a -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7414
    (ALL y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7415
        (u_556::'A => 'A => bool) y (arg a t) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7416
        u_556 y ((s::'P => 'A) a)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7417
==> superadmissible u_556 p s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7418
     (%(f::'A => 'B) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7419
         _MATCH (e x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7420
          (%(u::'D) v::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7421
              EX t::'Q. _UNGUARDED_PATTERN (pat t = u) (f (arg x t) = v)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7422
  by (import hollight SUPERADMISSIBLE_MATCH_UNGUARDED_PATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7423
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7424
lemma SUPERADMISSIBLE_MATCH_GUARDED_PATTERN: "(ALL (f::'A => 'B) (a::'P) (t::'Q) u::'Q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7425
    (p::('A => 'B) => 'P => bool) f a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7426
    (pat::'Q => 'D) t = (e::'P => 'D) a &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7427
    (q::'P => 'Q => bool) a t & pat u = e a & q a u -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7428
    (arg::'P => 'Q => 'A) a t = arg a u) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7429
(ALL (f::'A => 'B) (a::'P) t::'Q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7430
    p f a & q a t & pat t = e a -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7431
    (ALL y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7432
        (u_556::'A => 'A => bool) y (arg a t) -->
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7433
        u_556 y ((s::'P => 'A) a)))
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7434
==> superadmissible u_556 p s
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7435
     (%(f::'A => 'B) x::'P.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7436
         _MATCH (e x)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7437
          (%(u::'D) v::'B.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7438
              EX t::'Q.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7439
                 _GUARDED_PATTERN (pat t = u) (q x t) (f (arg x t) = v)))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7440
  by (import hollight SUPERADMISSIBLE_MATCH_GUARDED_PATTERN)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7441
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7442
lemma cth: "[| !!(c::'q_78547) (x::'A) y::'A.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7443
      (p1::'A => 'q_78536) x = (p1'::'A => 'q_78536) y
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7444
      ==> (p2::'q_78547 => 'A => 'q_78541) c x =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7445
          (p2'::'q_78547 => 'A => 'q_78541) c y;
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7446
   p1' (x::'A) = p1 (y::'A) |]
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7447
==> p2' (c::'q_78547) x = p2 c y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7448
  by (import hollight cth)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7449
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7450
lemma SUPERADMISSIBLE_T: "superadmissible (u_556::'q_78694 => 'q_78694 => bool)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7451
 (%(f::'q_78694 => 'q_78696) x::'q_78700. True) (s::'q_78700 => 'q_78694)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7452
 (t::('q_78694 => 'q_78696) => 'q_78700 => 'q_78696) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7453
tailadmissible u_556 (%(f::'q_78694 => 'q_78696) x::'q_78700. True) s t"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7454
  by (import hollight SUPERADMISSIBLE_T)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7455
43786
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7456
lemma elemma0: "(ALL z::'q_78985 * 'q_78984.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7457
    (f::'q_78985 * 'q_78984 => 'q_78975) z =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7458
    (g::'q_78985 * 'q_78984 => 'q_78975) z) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7459
(ALL (x::'q_78985) y::'q_78984. f (x, y) = g (x, y)) &
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7460
(P::'q_79002 * 'q_79001 => 'q_78994) =
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7461
(SOME f::'q_79002 * 'q_79001 => 'q_78994.
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7462
    ALL (x::'q_79002) y::'q_79001. f (x, y) = P (x, y))"
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7463
  by (import hollight elemma0)
fea3ed6951e3 Update files generated in HOL/Import/HOLLight
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 35416
diff changeset
  7464
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7465
;end_setup
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7466
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7467
end
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7468