src/HOL/Matrix/cplex/MatrixLP.thy
author paulson
Wed, 04 Jul 2007 13:56:26 +0200
changeset 23563 42f2f90b51a6
parent 23174 3913451b0418
child 23665 825bea0266db
permissions -rw-r--r--
simplified a proof
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16873
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     1
(*  Title:      HOL/Matrix/cplex/MatrixLP.thy
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     2
    ID:         $Id$
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     3
    Author:     Steven Obua
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     4
*)
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     5
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     6
theory MatrixLP 
23174
3913451b0418 moved Compute_Oracle from Pure/Tools to Tools;
wenzelm
parents: 20782
diff changeset
     7
imports Cplex "~~/src/Tools/Compute_Oracle/Compute_Oracle"
20782
18abee32d1b6 proper use of matrixlp.ML;
wenzelm
parents: 16873
diff changeset
     8
uses ("matrixlp.ML")
16873
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
     9
begin
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    10
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    11
constdefs
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    12
  list_case_compute :: "'b list \<Rightarrow> 'a \<Rightarrow> ('b \<Rightarrow> 'b list \<Rightarrow> 'a) \<Rightarrow> 'a"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    13
  "list_case_compute l a f == list_case a f l"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    14
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    15
lemma list_case_compute: "list_case = (\<lambda> (a::'a) f (l::'b list). list_case_compute l a f)"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    16
  apply (rule ext)+
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    17
  apply (simp add: list_case_compute_def)
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    18
  done
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    19
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    20
lemma list_case_compute_empty: "list_case_compute ([]::'b list) = (\<lambda> (a::'a) f. a)"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    21
  apply (rule ext)+
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    22
  apply (simp add: list_case_compute_def)
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    23
  done
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    24
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    25
lemma list_case_compute_cons: "list_case_compute (u#v) = (\<lambda> (a::'a) f. (f (u::'b) v))"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    26
  apply (rule ext)+
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    27
  apply (simp add: list_case_compute_def)
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    28
  done
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    29
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    30
lemma If_True: "(If True) = (\<lambda> x y. x)"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    31
  apply (rule ext)+
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    32
  apply auto
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    33
  done
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    34
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    35
lemma If_False: "(If False) = (\<lambda> x y. y)"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    36
  apply (rule ext)+
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    37
  apply auto
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    38
  done
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    39
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    40
lemma Let_compute: "Let (x::'a) f = ((f x)::'b)"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    41
  by (simp add: Let_def)
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    42
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    43
lemma fst_compute: "fst (a::'a, b::'b) = a"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    44
  by auto
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    45
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    46
lemma snd_compute: "snd (a::'a, b::'b) = b"
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    47
  by auto
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    48
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    49
lemma bool1: "(\<not> True) = False"  by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    50
lemma bool2: "(\<not> False) = True"  by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    51
lemma bool3: "((P\<Colon>bool) \<and> True) = P" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    52
lemma bool4: "(True \<and> (P\<Colon>bool)) = P" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    53
lemma bool5: "((P\<Colon>bool) \<and> False) = False" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    54
lemma bool6: "(False \<and> (P\<Colon>bool)) = False" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    55
lemma bool7: "((P\<Colon>bool) \<or> True) = True" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    56
lemma bool8: "(True \<or> (P\<Colon>bool)) = True" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    57
lemma bool9: "((P\<Colon>bool) \<or> False) = P" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    58
lemma bool10: "(False \<or> (P\<Colon>bool)) = P" by blast
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    59
lemmas boolarith = bool1 bool2 bool3 bool4 bool5 bool6 bool7 bool8 bool9 bool10
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    60
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    61
lemmas float_arith = Float.arith
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    62
lemmas sparse_row_matrix_arith_simps = SparseMatrix.sparse_row_matrix_arith_simps
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    63
lemmas sorted_sp_simps = SparseMatrix.sorted_sp_simps
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    64
lemmas fst_snd_conv = Product_Type.fst_conv Product_Type.snd_conv
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    65
20782
18abee32d1b6 proper use of matrixlp.ML;
wenzelm
parents: 16873
diff changeset
    66
use "matrixlp.ML"
18abee32d1b6 proper use of matrixlp.ML;
wenzelm
parents: 16873
diff changeset
    67
16873
9ed940a1bebb proving bounds for real linear programs
obua
parents:
diff changeset
    68
end