15
OTTER (Organized Techniques for Theorem-proving and Effective Research) Heuristics computing 2014/12/01 9:25 – 11:00 Keio University, SFC

Otter 2014-12-01-01-slideshare-2

Embed Size (px)

Citation preview

Page 1: Otter 2014-12-01-01-slideshare-2

OTTER

(Organized Techniques

for Theorem-proving and

Effective Research)

Heuristics computing

2014/12/01 9:25 – 11:00

Keio University, SFC

Page 2: Otter 2014-12-01-01-slideshare-2

OTTER

(Organized Techniques

for Theorem-proving and Effective Research)

■ OTTER is a resolution-style theorem-proving program for first-order

logic with equality.

■ OTTER adopts a heuristic of atom-electron model. quantum mechanics

■ Basic representation is First-Order Logic of Horn Logic.

Argonne National Laboratory the largest national laboratory by size and scope in the Midwest. Argonne

was initially formed to carry out Enrico Fermi's work on nuclear reactors as part of the Manhattan

Project. Today it maintains a broad portfolio in basic science research, energy storage and renewable

energy, environmental sustainability, SuperComputing, and national security.

http://en.m.wikipedia.org/wiki/Argonne_National_Laboratory

Larry Wos is a mathematician, a researcher in the

Mathematics and Computer Science Division of

Argonne National Laboratories.

Wos studied at the University of Chicago, receiving a

bachelor's degree in 1950 and a master's in

mathematics in 1954, and went on for doctoral studies

at the University of Illinois at Urbana-Champaign. He

joined Argonne in 1957, and began using computers to

prove mathematical theorems in 1963.[

http://en.m.wikipedia.org/wiki/Larry_Wos

http://www.mcs.anl.gov/research/projects/A

R/otter/dist33/

量子力学:quantum mechanics

Page 3: Otter 2014-12-01-01-slideshare-2

imperative

declarative

compiler

Interpreter

(scripting)

Lamda calculator

Prover

C, C++

Java

Python

ruby

perl

Haskell

Ocaml

PrologIsabelle

scala

proverif

Involves Assembly

Intermediate representation

NOT Assembly

Immutable variables

Resolution, SAT computation

-< x { -< y { x.call(y) } } OTTER

clock

Immutable tape

Boost

Template

Two streams of computing paradigm: Imperative vs Declarative

(language classification)

Page 4: Otter 2014-12-01-01-slideshare-2

Languages on Turing machine

algorithm device language

Turing machine Turing tape Computer

Recursive function Kleene Loop C language

lambda calculus Church recursion Haskell

National deduction Gentzen Mathematical recursion Proof

Mathematical recursion

Based on natural number. We can

invoke recursive functions endlessly.

Proof

A chain of clauses logically

connected from Axioms.

Proof Theory

Hilbert System

Gentzen System

Sequent calculus

Tableau Calculus

Resolution Principle Applied to

computationOTTER is resolution style theorem prover.

Page 5: Otter 2014-12-01-01-slideshare-2

Four interactions and OTTER

+

+ +-

-

-

+-

Gravitational interaction

(weighting)weight_list(pick_and_purge).

weight(P(rew($(0),$(0)),$(1)), 99)

Electromagnetic interaction (resolution)-father(x,y) | -mother(x,z) | grandmother(x,z)

Strong interaction (modulation)(a=b) | (c=d).

P(a) | Q(n, f(c,g(d))).

Page 6: Otter 2014-12-01-01-slideshare-2

Main loop of

OTTER

+

-

+

+

+

+

-

-

+

+

++

-

+ -+

+

+

+ -

clash

+-+

clash

+-

pick up pick up

Search stopped

because sos

empty.

Rules (usable)

Set of support (facts)

Page 7: Otter 2014-12-01-01-slideshare-2

Clash (resolve.c)

225 |static void clash(struct clash_nd *c_start,

226 | struct context *nuc_subst,

227 | struct literal *nuc_lits,

228 | struct clause *nuc,

229 | struct context *giv_subst,

230 | struct literal *giv_lits,

231 | struct clause *giv_sat,

232 | int (*sat_proc)(struct clause *c),

233 | int inf_clock,

234 | int nuc_pos,

235 | int ur_box)

Page 8: Otter 2014-12-01-01-slideshare-2

Hyper resolution: atom electron model

+

-+

+

+

+- +

+

+

+

+

+

1 |set(hyper_res).

2 |assign(stats_level,1).

3 |

4 |list(usable).

5 | -Sibling(x,y) | Brother(x,y) |

Sister(x,y).

6 |end_of_list.

7 |

8 |list(sos).

9 | Sibling(pat, ray) | Cousin(pat, ray).

10 |end_of_list.

clash

Set of Support

Pick up

Set of Support

++

yielded state

(clause sets)

Hyperresolution focuses on two or

more clauses, requiring that one of

the clauses (the nucleus) contain

at least one negative literal and

the remaining (the satellites) contain

no negative literals.

Page 9: Otter 2014-12-01-01-slideshare-2

proof and satisfiability

Always true Always false

satisfiable

unsatisfiable

unsatisfiablesatisfiable

AB

C

A ∩ B → empty set

B∪¬A → not Ф

Page 10: Otter 2014-12-01-01-slideshare-2

Syntax “-A | B”: proof by contradiction

A

B

C

A ⊃ B

B → A

There exists Ai where

B∪¬A → Ф

1 [] -Greek(x)|Person(x).

2 [] -Person(x)|Mortal(x).

3 [] Greek(socrates).

4 [] -Mortal(socrates).

5 [hyper,3,1] Person(socrates).

6 [hyper,5,2] Mortal(socrates).

7 [binary,6.1,4.1] $F.

3 |list(usable).

4 | -Greek(x) | Person(x).

5 | -Person(x) | Mortal(x).

6 |end_of_list.

8 |list(sos).

9 | Greek(socrates).

10 |end_of_list.

12 |list(passive).

13 | -Mortal(socrates).

14 |end_of_list.

Page 11: Otter 2014-12-01-01-slideshare-2

Syntax “A | B”

(exclusive, fermi particle model)

AB

C

a

A ∩ B → empty set

B∪¬A → not Ф

b

c

fermi particle model bose particle model

X

Y

Z

X

Y

Z

a

ab

c

c

a

X(a) | Y(b)

either, exclusive

electron, proton

X(a) or Y(b)

inclusive

photon

Page 12: Otter 2014-12-01-01-slideshare-2

Main loop of OTTER clause.c3384 |struct clause *extract_given_clause(void)

3385 |{

3386 | struct clause *giv_cl;

3387 |

3388 | CLOCK_START(PICK_GIVEN_TIME);

3389 | giv_cl = find_given_clause();

3390 | if (giv_cl) {

3391 | rem_from_list(giv_cl);

3392 | }

3393 | CLOCK_STOP(PICK_GIVEN_TIME);

3394 | return(giv_cl);

3395 |} /* extract_given_clause */3334 |struct clause *find_given_clause(void)

3335 |{

3336 | struct clause *giv_cl;

3343 | if (Flags[SOS_QUEUE].val)

3344 | giv_cl = find_first_cl(Sos);

3345 |

3346 | else if (Flags[SOS_STACK].val)

3347 | giv_cl = find_last_cl(Sos);

3348 |

3368 | else

3369 | giv_cl = find_lightest_cl(Sos);

3370 | }

There are three kinds of

searching state space

1)Stack

2)Queue

3)weghting

If there is no clause found in

set of support,

reasoning process is

terminated.

Page 13: Otter 2014-12-01-01-slideshare-2

OTTER’s basic methodology

resolution

modulation

Binary resolutionModus potens, one by one

Hyper resolutionNucleus and satellite, All at one

DemoulationTerm rewriting

ParamodulationEquational reasoning

list(usable).

(a=b) | (c=d).

end_of_list.

list(sos).

P(a) | Q(n, f(c,g(d))).

end_of_list.

list(usable).

-Greek(x) | Person(x).

-Person(x) | Mortal(x).

end_of_list.

list(sos).

Greek(sorates).

end_of_list.

list(usable).

-A(x,y) | A(x, S(y)).

end_of_list.

list(demodulators).

S(S(x)) = x.

end_of_list.

|list(usable).

-Sibling(x,y) | Brother(x,y) | Sister(x,y).

end_of_list.

list(sos).

Sibling(pat, ray) | Cousin(pat, ray).

end_of_list.

Page 14: Otter 2014-12-01-01-slideshare-2

Clause Sets (節集合構成)

SoS

(Set of Support)

Demodulators

Usable

Passive

Term

rewriting

Resolution

Detect

Page 15: Otter 2014-12-01-01-slideshare-2

paramodulation

1 |set(para_into).

4 |assign(stats_level,1).

5 |

6 |list(usable).

7 | a1 = b1.

8 | a2 = b2.

9 |end_of_list.

10 |

11 |list(sos).

12 | P(a1,a2).

13 |end_of_list.

Clauses

are generated

according to

line 7 and 8.