Entry Value
Name foldl_append_assoc
Conclusion !g f b l1 l2. (!s. g s b = s) /\ (!s1 s2 x. g s1 (f s2 x) = f (g s1 s2) x) ==> foldl f b (APPEND l1 l2) = g (foldl f b l1) (foldl f b l2)
Constructive Proof Yes
Axiom
N|A
Classical Lemmas N|A
Constructive Lemmas
  • T
  • !h t. REVERSE (CONS h t) = APPEND (REVERSE t) [h]
  • !x. x = x
  • !p1 p2 q1 q2. (p1 ==> p2) /\ (q1 ==> q2) ==> p1 /\ q1 ==> p2 /\ q2
  • !p1 p2 q1 q2. (p1 ==> p2) /\ (q1 ==> q2) ==> p1 \/ q1 ==> p2 \/ q2
  • !t. (!x. t) <=> t
  • !t. F /\ t <=> F
  • !t. T /\ t <=> t
  • !t. t /\ F <=> F
  • !t. t /\ T <=> t
  • !t. t /\ t <=> t
  • !f y. (\x. f x) y = f y
  • !p q. (!x. p x ==> q x) ==> (?x. p x) ==> (?x. q x)
  • !f b h t. foldr f b (CONS h t) = f h (foldr f b t)
  • !f b l1 l2. foldr f b (APPEND l1 l2) = foldr f (foldr f b l2) l1
  • !f b. foldr f b [] = b
  • !f x y. C f x y = f y x
  • !f b l. foldl f b l = foldr (C f) b (REVERSE l)
  • !g f b l1 l2. (!s. g b s = s) /\ (!x s1 s2. g (f x s1) s2 = f x (g s1 s2)) ==> foldr f b (APPEND l1 l2) = g (foldr f b l1) (foldr f b l2)
  • !p. p [] /\ (!h t. p t ==> p (CONS h t)) ==> (!l. p l)
  • !l h t. APPEND (CONS h t) l = CONS h (APPEND t l)
  • !l1 l2 l3. APPEND l1 (APPEND l2 l3) = APPEND (APPEND l1 l2) l3
  • !l1 l2. REVERSE (APPEND l1 l2) = APPEND (REVERSE l2) (REVERSE l1)
  • !l. APPEND [] l = l
  • !l. APPEND l [] = l
  • F <=> (!p. p)
  • T <=> (\p. p) = (\p. p)
  • (/\) = (\p q. (\f. f p q) = (\f. f T T))
  • (==>) = (\p q. p /\ q <=> p)
  • (\/) = (\p q. !r. (p ==> r) ==> (q ==> r) ==> r)
  • (!) = (\p. p = (\x. T))
  • (?) = (\p. !q. (!x. p x ==> q) ==> q)
  • C = (\f x y. f y x)
  • REVERSE [] = []
  • Contained Package list-fold-thm
    Comment Standard HOL library retrieved from OpenTheory
    Back to main package pageBack to contained package page