src/HOL/Multivariate_Analysis/normarith.ML
changeset 40721 e5089e903e39
parent 40718 4d7211968607
child 42361 23f352990944
equal deleted inserted replaced
40720:b770df486e5c 40721:e5089e903e39
   236 | _ => apply_pth1 ct
   236 | _ => apply_pth1 ct
   237 
   237 
   238 fun norm_canon_conv ct = case term_of ct of
   238 fun norm_canon_conv ct = case term_of ct of
   239   Const(@{const_name norm},_)$_ => arg_conv vector_canon_conv ct
   239   Const(@{const_name norm},_)$_ => arg_conv vector_canon_conv ct
   240  | _ => raise CTERM ("norm_canon_conv", [ct])
   240  | _ => raise CTERM ("norm_canon_conv", [ct])
   241 
       
   242 fun fold_rev2 f [] [] z = z
       
   243  | fold_rev2 f (x::xs) (y::ys) z = f x y (fold_rev2 f xs ys z)
       
   244  | fold_rev2 f _ _ _ = raise UnequalLengths;
       
   245 
   241 
   246 fun int_flip v eq =
   242 fun int_flip v eq =
   247   if FuncUtil.Intfunc.defined eq v
   243   if FuncUtil.Intfunc.defined eq v
   248   then FuncUtil.Intfunc.update (v, Rat.neg (FuncUtil.Intfunc.apply eq v)) eq else eq;
   244   then FuncUtil.Intfunc.update (v, Rat.neg (FuncUtil.Intfunc.apply eq v)) eq else eq;
   249 
   245