Meta-Programming - PowerPoint PPT Presentation

About This Presentation
Title:

Meta-Programming

Description:

Meta-Programming t.k.prasad_at_wright.edu http://www.knoesis.org/tkprasad/ cs7120 (Prasad) L22-MetaPgm * – PowerPoint PPT presentation

Number of Views:126
Avg rating:3.0/5.0
Slides: 24
Provided by: TK19
Learn more at: http://cecs.wright.edu
Category:

less

Transcript and Presenter's Notes

Title: Meta-Programming


1
Meta-Programming
  • t.k.prasad_at_wright.edu
  • http//www.knoesis.org/tkprasad/

2
Meta-Programs Program manipulating Programs
  • Extend Prolog
  • introduce new search strategy or modify existing
    search strategy
  • add expressive logical connective
  • extend/modify syntax/semantics
  • Enable Debugger
  • Support Theorem Provers and Rule-based Systems

3
Basic Meta-Interpreter
  • prove( true ) - !.
  • prove( (G1, G2) ) - !,
  • prove(G1), prove(G2).
  • prove( G ) -
  • system(G), !, G.
  • prove( G ) -
  • clause(G,B), prove(B).
  • System-predicate holds of built-ins.

4
Upgrading the Meta-Interpreter
  • Adding an or-operator
  • prove( (G1 G2) ) -
  • prove(G1).
  • prove( (G1 G2) ) -
  • prove(G2).
  • Changing the order of evaluation from right to
    left
  • prove( (G1, G2) ) - !,
  • prove(G2), prove(G1).

5
Tracing Basic Meta-Interpreter
  • tracep( Goal ) -
  • tracep(Goal, 0).
  • tracep( true, Dpth ) - !.
  • tracep((G1, G2),Dpth )-!,
  • tracep(G1, Dpth), tracep(G2, Dpth).

6
(contd)
  • tracep( G, D ) -
  • display(Call, G, D),
  • clause(G,B),
  • D1 is D1,
  • tracep(B, D1),
  • display(Exit, G, D),
  • display_redo(G, D).
  • tracep( G, D ) -
  • display(Fail, G, D), fail.

7
(contd)
  • display( Msg, G, D ) -
  • tab(D), write(Msg),
  • write(G), nl.
  • display_redo( G, D ) -
  • true
  • display(Redo, G, D), fail.

8
(Trace Output)
  • 4 ?- tracep(member(5,1,5,3)).
  • Callmember(5, 1, 5, 3)
  • Callmember(5, 5, 3)
  • Exitmember(5, 5, 3)
  • Exitmember(5, 1, 5, 3)
  • true
  • Redomember(5, 1, 5, 3)
  • Redomember(5, 5, 3)
  • Callmember(5, 3)
  • Callmember(5, )
  • Failmember(5, )
  • Failmember(5, 3)
  • Failmember(5, 5, 3)
  • Failmember(5, 1, 5, 3)
  • false.

9
Other AI Applications
  • Forward chaining or Bottom-up computation
  • From facts to all conclusions
  • Heuristic search (incl. breadth-first search)
  • Diagnosis Explanation generation
  • Determine the set of facts, which when assumed,
    proves the goal
  • Abductive reasoning

10
Meta-level Definition
  • not(A) - call(A), !, fail.
  • not(A).
  • Meta-variables range over terms encoding a goal.
  • ?-setof(X, G, L).
  • X and L are object variables, while G is
    meta-variable.

11
Program Manipulation Example
  • Write a meta-program to collect all variables in
    a formula A.
  • constant(A) -
  • atom(A) integer(A) float(A).
  • collect_var(A,Q-Q) -
  • constant(A).
  • collect_var(A,AQ-Q) -
  • var(A).

12
(contd)
  • collect_var(A,Q) -
  • A .. PAs,
  • collect_vars(As,Q).
  • collect_vars(,Q-Q) - !.
  • collect_vars(AAs, Q-Qt) -
  • collect_var(A, Q-Qs),
  • collect_vars(As, Qs-Qt).
  • ?-collect_var(p(X,Y), L).
  • L X,Y _1-_1
  • Difference lists for efficient append

13
Theorem Proving Applications and others
  • Proving equivalence of boolean expressions,
    arithmetic expressions, etc
  • Normalization of expressions
  • Refutation theorem proving
  • Goal reordering based on binding information for
    efficient execution of query
  • Pretty Printing

14
Equational Reasoning Example
  • Prove two terms are equivalent given that the
    operators satisfy certain equality constraints.
  • Associativity
  • (a b) c a (b c)
  • (a b) c a (b c)
  • Commutativity
  • (a b) (b a)
  • (a b) (b a)

15
(contd)
  • Identity
  • (a 0) a (0 a)
  • (a 1) a (1 a)
  • Zero
  • (a 0) 0 (0 a)
  • Distributive Law
  • (a b) c (a c b c)

16
Digression Normal Form
  • Equality constraints induce an equivalence
    relation on terms (e.g., arithmetic expressions)
  • An equivalence relation partitions the set of
    terms into equivalence classes
  • A normal form of a term is the representative of
    the equivalence class to which the term belongs.

17
Normalization Procedure
  • Associative operation Ignore nestings
  • collapse term trees to lists
  • Commutative operation Ignore order
  • sort
  • Zeros and Identities
  • simplify delete elements
  • Distributivity
  • sum of products form or product of sums form

18
Application
  • Evaluation of a variable-free/constant
    arithmetic expression is normalization.
  • 2 3 gt 5
  • (1 (1 2) 1) gt 5
  • Equality constraints given by axioms are used as
    rewrite rules for normalization.
  • Definition of primitive operations
  • Relationship among operations

19
An Interpreter for Object-Oriented Programs
  • Class Definition
  • object(Object, Methods)
  • E.g.,
  • object(rectangle(Len,Wid), (area(A) - A is Len
    Wid) ).

class-name instance variables
message
method
20
(contd)
  • object/instance
  • rectangle(5,10)
  • passing a message
  • send(Object-instance, Message)
  • E.g.,
  • send(rectangle(5,10),area(A)).
  • specifying class-subclass hierarchy
  • E.g.,
  • isa(square(SD),rectangle(SD,SD)).

21
Interpreter Code
  • send( Object, Message) - get_methods( Object,
    Methods),
  • process( Message, Methods).
  • Find Object's methods
  • Execute corresponding method
  • get_methods( Object, Methods) - object( Object,
    Methods).
  • Private methods
  • get_methods( Object, Methods) - isa( Object,
    Super),
  • get_methods( Super, Methods).
  • Inherited methods

22
(contd)
  • process( Msg, Msg _).
  • Use a fact
  • process( Msg, (Msg - Body) _) - call(
    Body).
  • Use a rule
  • process( Msg, _ Methods) -
  • process( Msg, Methods).

23
  • ?- trace, send(square(4), area(A)).
  • Call (7) send(square(4), area(_G414)) ? creep
  • Call (8) get_methods(square(4), _G551) ?
    creep
  • Call (9) object(square(4), _G551) ? creep
  • Fail (9) object(square(4), _G551) ? creep
  • Redo (8) get_methods(square(4), _G551) ?
    creep
  • Call (9) isa(square(4), _G551) ? creep
  • Exit (9) isa(square(4), rectangle(4, 4)) ?
    creep
  • Call (9) get_methods(rectangle(4, 4), _G554)
    ? creep
  • Call (10) object(rectangle(4, 4), _G554) ?
    creep
  • Exit (10) object(rectangle(4, 4),
    (area(_G555)-_G555 is 44)) ? creep
  • Exit (9) get_methods(rectangle(4, 4),
    (area(_G555)-_G555 is 44)) ? creep
  • Exit (8) get_methods(square(4),
    (area(_G555)-_G555 is 44)) ? creep
  • Call (8) process(area(_G414),
    (area(_G555)-_G555 is 44)) ? creep
  • Call (9) _G414 is 44 ? creep
  • Exit (9) 16 is 44 ? creep
  • Exit (8) process(area(16), (area(16)-16 is
    44)) ? creep
  • Exit (7) send(square(4), area(16)) ? creep
  • A 16 .
Write a Comment
User Comments (0)
About PowerShow.com