Constructive Lemmas |
T!h t. REVERSE (CONS h t) = APPEND (REVERSE t) [h]!h t. LENGTH (CONS h t) = SUC (LENGTH t)!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!t. F ==> t <=> T!t. T ==> t <=> t!t. t ==> 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. foldr f b [] = b!f b l. foldl f b l = foldr (C f) b (REVERSE l)!p. p [] /\ (!h t. p t ==> p (CONS h t)) ==> (!l. p l)!p. p _0 /\ (!n. p n ==> p (SUC n)) ==> (!n. p n)!l h t. APPEND (CONS h t) l = CONS h (APPEND t l)!l1 l2. LENGTH (APPEND l1 l2) = LENGTH l1 + LENGTH l2!l k. foldr (\x n. SUC n) k l = LENGTH l + k!l. APPEND [] l = l!l. LENGTH (REVERSE l) = LENGTH l!m n. m + SUC n = SUC (m + n)!m n. SUC m + n = SUC (m + n)!m. m + 0 = m!n. 0 + n = nF <=> (!p. p)T <=> (\p. p) = (\p. p)(~) = (\p. p ==> F)(/\) = (\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)NUMERAL = (\n. n)REVERSE [] = []LENGTH [] = 0 |