src/Provers/Arith/fast_lin_arith.ML
changeset 6110 15c2b571225b
parent 6102 b985e2184868
child 6128 2acc5d36610c
equal deleted inserted replaced
6109:82b50115564c 6110:15c2b571225b
    23 sig
    23 sig
    24   val conjI:		thm
    24   val conjI:		thm
    25   val ccontr:           thm (* (~ P ==> False) ==> P *)
    25   val ccontr:           thm (* (~ P ==> False) ==> P *)
    26   val neqE:             thm (* [| m ~= n; m < n ==> P; n < m ==> P |] ==> P *)
    26   val neqE:             thm (* [| m ~= n; m < n ==> P; n < m ==> P |] ==> P *)
    27   val notI:             thm (* (P ==> False) ==> ~ P *)
    27   val notI:             thm (* (P ==> False) ==> ~ P *)
       
    28   val not_lessD:        thm (* ~(m < n) ==> n <= m *)
    28   val sym:		thm (* x = y ==> y = x *)
    29   val sym:		thm (* x = y ==> y = x *)
    29   val mk_Eq: thm -> thm
    30   val mk_Eq: thm -> thm
    30   val mk_Trueprop: term -> term
    31   val mk_Trueprop: term -> term
    31   val neg_prop: term -> term
    32   val neg_prop: term -> term
    32   val is_False: thm -> bool
    33   val is_False: thm -> bool
    45 sig
    46 sig
    46   val add_mono_thms:    thm list
    47   val add_mono_thms:    thm list
    47                             (* [| i rel1 j; m rel2 n |] ==> i + m rel3 j + n *)
    48                             (* [| i rel1 j; m rel2 n |] ==> i + m rel3 j + n *)
    48   val lessD:            thm (* m < n ==> Suc m <= n *)
    49   val lessD:            thm (* m < n ==> Suc m <= n *)
    49   val not_leD:          thm (* ~(m <= n) ==> Suc n <= m *)
    50   val not_leD:          thm (* ~(m <= n) ==> Suc n <= m *)
    50   val not_lessD:        thm (* ~(m < n) ==> n < m *)
       
    51   val decomp: term ->
    51   val decomp: term ->
    52              ((term * int)list * int * string * (term * int)list * int)option
    52              ((term * int)list * int * string * (term * int)list * int)option
    53   val simp: thm -> thm
    53   val simp: thm -> thm
    54   val is_nat: typ list * term -> bool
    54   val is_nat: typ list * term -> bool
    55   val mk_nat_thm: Sign.sg -> term -> thm
    55   val mk_nat_thm: Sign.sg -> term -> thm
   287         val just = Asm k
   287         val just = Asm k
   288     in case rel of
   288     in case rel of
   289         "<="   => Some(Lineq(c,Le,diff,just))
   289         "<="   => Some(Lineq(c,Le,diff,just))
   290        | "~<=" => Some(Lineq(1-c,Le,map (op ~) diff,Fwd(just,LA_Data.not_leD)))
   290        | "~<=" => Some(Lineq(1-c,Le,map (op ~) diff,Fwd(just,LA_Data.not_leD)))
   291        | "<"   => Some(Lineq(c+1,Le,diff,Fwd(just,LA_Data.lessD)))
   291        | "<"   => Some(Lineq(c+1,Le,diff,Fwd(just,LA_Data.lessD)))
   292        | "~<"  => Some(Lineq(~c,Le,map (op~) diff,Fwd(just,LA_Data.not_lessD)))
   292        | "~<"  => Some(Lineq(~c,Le,map (op~) diff,Fwd(just,LA_Logic.not_lessD)))
   293        | "="   => Some(Lineq(c,Eq,diff,just))
   293        | "="   => Some(Lineq(c,Eq,diff,just))
   294        | "~="  => None
   294        | "~="  => None
   295        | _     => sys_error("mklineq" ^ rel)   
   295        | _     => sys_error("mklineq" ^ rel)   
   296     end
   296     end
   297   end;
   297   end;