10.07.2015 Views

1 Frequently Used Auxiliary Lemmas - Isabelle

1 Frequently Used Auxiliary Lemmas - Isabelle

1 Frequently Used Auxiliary Lemmas - Isabelle

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

∀ x. ∀ y. ∀ z. P n p q r s t u v w x y zlemma notin-union-E:x /∈ (A ∪ B) = ((x /∈ A) ∧ (x /∈ B))lemma notin-subset:[ x /∈ A; B ⊆ A ] =⇒ x /∈ Blemma notin-Union-iff :A /∈ ( ⋃ S) = (∀ X ∈S. A /∈ X )lemma refl-True:(t = t) = Truelemma refl-Some:(Some x = Some y) = (x = y)lemma elem-set-append-cases:∀ x l1 l2 . x ∈ set (l1 @l2 ) = (x ∈ set l1 ) ∨ (x ∈ set l2 )lemma suc-minus-swap:[ a


constdefsdelL:: ′ a ⇒ ′ a list ⇒ ′ a listdelL a xs == [x∈xs. x ≠ a]lemma delL-length:∧ a. a ∈ set xs =⇒ length (delL a xs) < length xslemma delL-setdiff : set (delL x xs) = (set xs) − {x}lemma setdiff-notin:x /∈ B =⇒ (x /∈ (A − B)) = (x /∈ A)lemma delL-subset:∧ x. set (delL x xs) ⊆ set xslemma eqSOME: ∀ x. P x = Q x =⇒ ((SOME x. P x) = (SOME y. Q y))lemma not-Some-eq-pairs:∀ a b. x ≠ Some (a,b) =⇒ x = Nonelemma tl-drop:tl L = drop (Suc 0 ) Llemma remdups ′ -termination:∀ x xs. length [x ′ ∈xs . x ′ ≠ x] < Suc (length xs)consts remdups ′ :: ′ a list ⇒ ′ a listrecdef remdups ′ measure (λ xs. length xs)remdups ′ [] = []remdups ′ (x#xs) = x#(remdups ′ [x ′ ∈xs. x ′ ≠ x])(hints simp: remdups ′ -termination)lemma set-remdups ′ :∧ xs. set (remdups ′ xs) = set xslemma distinct-remdups ′ :∧ xs. distinct (remdups ′ xs)lemma filter-eq:∀ x ∈ set xs. P x = Q x =⇒ [x∈ xs. P x] = [x ∈ xs. Q x]lemma remdups ′ -append:3


∧ as bs. remdups ′ (as @ bs) = remdups ′ as @ [b∈ remdups ′ bs. b /∈ set as]lemma remdups ′ -append-fst:a /∈ set as =⇒ remdups ′ (as@[a]@as ′ ) = remdups ′ as @ [a] @ ([a ′ ∈ (remdups ′ as ′ ). a ′ /∈ set (as @[a])])lemma in-remdups ′ -split:x ∈ set (remdups ′ xs) =⇒ ∃ as bs. (remdups ′ xs) = as @ (x#bs) ∧ x /∈ set as ∧ x /∈ set bslemma in-set-remdups ′ :x ∈ set xs =⇒ x ∈ set (remdups ′ xs)lemma in-rd-sp:x ∈ set xs =⇒ ∃ as bs. (remdups ′ xs) = as @ (x#bs) ∧ x /∈ set as ∧ x /∈ set bslemma remdups ′ -empty [simp]:(remdups ′ l = []) = (l = [])lemma length-remdups-set:length (remdups ′ xs) ≤ Suc 0 = (∀ x y. x ∈ set xs ∧ y ∈ set xs −→ x = y)lemma in-set-conv-decomp-fst ′ :(x ∈ set xs) = (∃ ys zs. (xs = ys @ x # zs) ∧ x /∈ set ys)lemma in-set-conv-decomp-fst:(x ∈ set xs) =⇒ (∃ ys zs. (xs = ys @ x # zs) ∧ x /∈ set ys)lemma in-set-conv-decomp-last:(x ∈ set xs) =⇒ (∃ ys zs. (xs = ys @ x # zs) ∧ x /∈ set zs)lemma map-parts:∧ ys ys ′ . map f xs = ys@ys ′ =⇒ ∃ xs ′ xs ′′ . xs = xs ′ @ xs ′′ ∧ ys = map f xs ′ ∧ ys ′ = map f xs ′′lemma option-neq: (Some x = None) = Falselemma option-neq2 :(None = Some x) = Falselemma append-eq:(xs@xs ′ = xs@xs ′′ ) = (xs ′ = xs ′′ )lemma list-set-pred:(∃ xs x xs ′ . ys = xs @ x # xs ′ ∧ P x) = (∃ x ∈ set ys. P x)lemma in-set-conv-decomp-2 :[ x ∈ set s; y ∈ set s; x ≠ y ] =⇒ ∃ s ′ s ′′ s ′′′ . s = s ′ @ x # s ′′ @ y # s ′′′ ∨ s = s ′ @ y # s ′′ @ x# s ′′′lemma list-prefix-eq: ∧ as bs. [ as @ x # as ′ = bs @ x # bs ′ ; x /∈ set as; x /∈ set bs ]4


=⇒ as = bslemma distinct-list-match:[ as@[x]@as ′ = bs@[x]@bs ′ ; distinct (as@[x]@as ′ ); distinct (bs@[x]@bs ′ ) ] =⇒ as = bs ∧ as ′ = bs ′lemma renSnd:x = x ′ =⇒ ∀ em. P em x = P em x ′lemma allE2 :[ ∀ x y. P x y; P x y =⇒ R ] =⇒ Rlemma rev-take-nth: ∧ x y. [ x < length s; y < x ] =⇒ s ! (x − Suc y) = rev (take x s) ! ylemma split-if-False: if B then A else False =⇒ B ∧ Alemma forall-expand: (∀ x < Suc y. P x) = (P 0 ∧ (∀ x < y. P (Suc x)))lemma not-Nil-case:x ≠ [] =⇒ (case x of [] ⇒ a | l#ls ⇒ b l ls) = b (hd x) (tl x)lemma hd-arb:hd [] = arbitrarylemma prod-simp:(a,b) = (a ′ ,b ′ ) = (a = a ′ ∧ b = b ′ )lemma length-filter-less:aa mem S =⇒ length [a ∈ S. a ≠ aa] < length Slemma insert-union-right:insert p (A ∪ B) = A ∪ (insert p B)lemma insert-set-filter:(insert p {x. x ∈ set S ∧ x ≠ p}) = (insert p (set S))lemma intersect-mono:set V ∩ {x. x ∈ set S ∧ x ≠ p} ⊆ set V ∩ set Slemma Un-real-subset-iff :(X ∪ Y ) ⊂ Z = (X ⊂ Z ∧ Y ⊂ Z ∧ X ∪ Y ≠ Z )lemma map-fst-tuple :map fst (map (λx. (x,f x)) L) = Llemma image-fst-tuple: fst ‘ (λp. (p, f p)) ‘ S = S5


lemma list-length-split:∧ n. n < length L =⇒ ∃ ls l ls ′ . L = ls@l#ls ′ ∧ length ls = nlemma un-subset-drop:(X ∪ (Y ∪ Z )) ⊂ W =⇒ (X ∪ Y ) ⊂ Wby blastlemma un-subset-drop ′ :(X ∪ (Y ∪ (Z ∪ (U ∪ V )))) ⊂ W =⇒ (X ∪ (Z ∪ U )) ⊂ Wlemma ListEq:(a#al = b#bl) = (a=b ∧ al=bl)lemma seteq-simp:(∀ x. (x ∈ A) = (x ∈ B)) =⇒ A = Blemma map-simp2 :(∀ x. x ∈ set l −→ f x = f ′ x) −→ map f l = map f ′ llemma map-simp:[ l = l ′ ; (∀ x. x∈ set l −→ (f x) = (f ′ x)) ] =⇒ (map f l) = (map f ′ l ′ )lemma notin-simp:[ pc ′ /∈ set l ] =⇒ pc ′ /∈ set [x∈l. x≠ pc]lemma neg-notin-simp:[ pc≠pc ′ ; ¬ pc ′ /∈ set l ] =⇒ ¬ pc ′ /∈ set [x∈l. x≠ pc]lemma option-case-simp:[ x ≠ None ] =⇒ ∃ a. x = Some alemma filter-list-simp:[ pc /∈ set l ] =⇒ [x∈l. x≠pc ∧ x≠pc ′ ] = [a∈l. a≠pc ′ ]lemma list-abr-simp:[x∈S. x≠pc ∧ x≠pc ′ ] = [x∈[a∈S. a ≠ pc]. x≠pc ′ ]lemma if-then-else-False:(if (A::bool) then (B::bool) else False) = (A ∧ B)lemma map-of-append ′ :[ x /∈ set (map fst xs) ] =⇒ (map-of (xs @ ys)) x = (map-of ys) xlemma triple-simp:(fst x, fst (snd x), snd (snd x)) = x6


end7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!