AUTO2, a saturation-based heuristic prover for higher-order logic
Bohua Zhan
Massachusetts Institute of Technology bzhan@mit.edu
August 23, 2016
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 1 / 27
AUTO2, a saturation-based heuristic prover for higher-order logic - - PowerPoint PPT Presentation
AUTO2, a saturation-based heuristic prover for higher-order logic Bohua Zhan Massachusetts Institute of Technology bzhan@mit.edu August 23, 2016 Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 1 / 27 Table of
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 1 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 2 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 3 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 3 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 3 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 4 / 27
◮ Incorporate heuristics that humans use when proving theorems. ◮ Make it easy for users to add new heuristics while maintaining
◮ Work with higher order logic and (simple) types. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 4 / 27
◮ Incorporate heuristics that humans use when proving theorems. ◮ Make it easy for users to add new heuristics while maintaining
◮ Work with higher order logic and (simple) types.
◮ Have a robust search mechanism. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 4 / 27
◮ Incorporate heuristics that humans use when proving theorems. ◮ Make it easy for users to add new heuristics while maintaining
◮ Work with higher order logic and (simple) types.
◮ Have a robust search mechanism.
◮ Be fully automatic. ◮ Have good completeness properties. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 4 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 5 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 6 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 6 / 27
◮ Instead they are encoded into set of allowed actions. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 6 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 7 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 7 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 7 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 7 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 8 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 8 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 9 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 10 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 11 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 12 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 12 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 12 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 13 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 13 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 13 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 13 / 27
◮ Case splits are generated by proof steps, which produce them based on
◮ Case splits are not necessarily in sequential order. ◮ Derivation in different subcases proceed in parallel. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 14 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z). Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z).
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z).
◮ S = {y = f (x), z = g(y)}, p = g(f (?a)), t = z. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z).
◮ S = {y = f (x), z = g(y)}, p = g(f (?a)), t = z.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z).
◮ S = {y = f (x), z = g(y)}, p = g(f (?a)), t = z.
◮ S = {x = y, z = f (y)}, p = f (x), t = z. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z).
◮ S = {y = f (x), z = g(y)}, p = g(f (?a)), t = z.
◮ S = {x = y, z = f (y)}, p = f (x), t = z.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
◮ S = {x(y + z) = xy + xz}, p =?a+?b, t = x(y + z).
◮ S = {y = f (x), z = g(y)}, p = g(f (?a)), t = z.
◮ S = {x = y, z = f (y)}, p = f (x), t = z.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 15 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 16 / 27
◮ Perform E-matching on two facts against patterns A and B. ◮ For each match, output the instantiated C. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 16 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 17 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 17 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 17 / 27
◮ OBTAIN P: prove P, then add P to the set of derived items. ◮ CASE P: prove a contradiction from P, then add ¬P to the set of
◮ CHOOSE x, P(x): prove ∃x.P(x), then obtain new variable x satisfying
◮ C1 THEN C2: perform C1, then perform C2 after C1 is finished. ◮ C1 WITH C2: perform C1, and perform C2 as a part of proving the goal
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 18 / 27
◮ OBTAIN P: prove P, then add P to the set of derived items. ◮ CASE P: prove a contradiction from P, then add ¬P to the set of
◮ CHOOSE x, P(x): prove ∃x.P(x), then obtain new variable x satisfying
◮ C1 THEN C2: perform C1, then perform C2 after C1 is finished. ◮ C1 WITH C2: perform C1, and perform C2 as a part of proving the goal
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 18 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 19 / 27
◮ Elementary theory of prime numbers, up to infinitude of prime numbers
◮ Functional data structures, including red-black trees. ◮ Parts of Hoare logic. ◮ Verification of imperative programs (based on Imperative/HOL,
◮ Construction of real numbers using Cauchy sequences. ◮ Arrow’s impossibility theorem. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 20 / 27
◮ Elementary theory of prime numbers, up to infinitude of prime numbers
◮ Functional data structures, including red-black trees. ◮ Parts of Hoare logic. ◮ Verification of imperative programs (based on Imperative/HOL,
◮ Construction of real numbers using Cauchy sequences. ◮ Arrow’s impossibility theorem.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 20 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 21 / 27
i∈N i =
i∈N i THEN
i∈M′ i dvd i∈N′ i THEN
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 22 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 23 / 27
◮ Arrays: reverse, quicksort. ◮ Linked list: insert, remove, reverse, merge. ◮ Binary trees: insert, delete-min. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 23 / 27
◮ Arrays: reverse, quicksort. ◮ Linked list: insert, remove, reverse, merge. ◮ Binary trees: insert, delete-min.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 23 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 24 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 24 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 24 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 25 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 26 / 27
◮ Equality and inequality reasoning on natural numbers, integers,
◮ Reasoning about sets and partial functions. Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 26 / 27
◮ Equality and inequality reasoning on natural numbers, integers,
◮ Reasoning about sets and partial functions.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 26 / 27
◮ Equality and inequality reasoning on natural numbers, integers,
◮ Reasoning about sets and partial functions.
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 26 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 27 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 27 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 27 / 27
Bohua Zhan (MIT) AUTO2, a saturation-based heuristic prover August 23, 2016 27 / 27