Download Logic Programming

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Applications
[email protected]
http://www.knoesis.org/tkprasad/
cs774 (Prasad)
L13Applications
1
VHDL-Parser Pretty-Printer
System
[email protected]
http://www.knoesis.org/tkprasad/
cs774 (Prasad)
L13Applications
2
URLs
• Online Parser Documentation
– http://www.cs.wright.edu/~tkprasad/VHDL/VH
DL-AMS/START.html
• Public Distribution
– http://www.cs.wright.edu/~tkprasad/VHDL/VH
DL-AMS.zip
cs774 (Prasad)
L13Applications
3
A Meta-Interpreter for circuit
Extraction
[email protected]
http://www.knoesis.org/tkprasad/
cs774 (Prasad)
L13Applications
4
Outline
• Formal Description of Digital Circuits
• Design Verification
• Motivation for Applying Metaprogramming Techniques
• Implementation and Correctness
Considerations
• Conclusions
cs774 (Prasad)
L13Applications
5
Hierarchical Description of Circuit Design
Full-Adder
Component
Half-Adder
Sub-Components
Abstraction
Gate-level Description
CMOS
Transistors
Transistor Netlist
cs774 (Prasad)
AND-OR-NAND
Gates
L13Applications
6
Declarative Specification
of the Structure: Inverter and Netlist
GND
cs774 (Prasad)
Single Inverter:
inv(In,Out,X,Y) :pt(In,vdd,Out,X,Y),
nt(In,gnd,Out,_,_).
Netlist:
pt(in1,vdd,out1,50,50).
nt(in1,gnd,out1,50,40).
pt(out1,vdd,out2,100,50).
nt(out1,gnd,out2,100,40).
L13Applications
7
Problem and Solution Strategy
• Verify structural correctness of a
component layout by reverse engineering
the top-level design.
• Use automatically generated Prolog
extraction rules
– Prolog specifications are executable and can be
used to simulate the circuit or check for faults
by designing suitable queries
cs774 (Prasad)
L13Applications
8
Circuit Extraction
MAGIC (CAD Tool) Layout
TRANSLATE
Netlist : Prolog Facts
EXTRACT
Higher-level Components
cs774 (Prasad)
L13Applications
9
Extraction Rules in Prolog
extract_inverter :pt(In,vdd,Out,X,Y),
nt(In,gnd,Out,_,_),
remove_pt(In,vdd,Out),
remove_nt(In,gnd,Out),
asserta(inverter(In,Out,X,Y)).
cs774 (Prasad)
L13Applications
10
Finer Points
• Retracts not undone on backtracking =>
Identify complete component before
retracting
• Retract all occurrences of a component =>
Use “fail” appropriately.
cs774 (Prasad)
L13Applications
11
Spec vs Extraction Template
component :subcomponent_1
subcomponent_2.
cs774 (Prasad)
extract_component :subcomponent_1
subcomponent_2,
retract(subcomponent_1),
retract(subcomponent_2),
assert(component),
fail.
L13Applications
12
Problem and Our Solution
• Requires generation of customized
extraction rules (for each component)
explicitly (which causes duplication of
information).
• Use meta-programming techniques to
perform extraction “on-the-fly” using
declarative specification of the structure of
the component.
cs774 (Prasad)
L13Applications
13
• Advantage: Avoids explicit creation and
storing of extraction rules
• Disadvantage: Meta-interpretation is slower
than using customized extraction rules
• Pragmatically: Explicit rules are good for
extracting low-level components, while
meta-interpreter is good for extracting highlevel component extraction
cs774 (Prasad)
L13Applications
14
Meta-Rule
extract(Comp) :clause(Comp, Sub_Comps),
Sub_Comps \== true,
call(Sub_Comps),
remove_primitive(Sub_Comps),
asserta(Comp), fail.
extract(_).
cs774 (Prasad)
L13Applications
15
remove_primitive((C1,C2)) :!, remove_primitive(C1),
remove_primitive(C2).
remove_primitive(C) :clause(C,true), !,
retract(C).
remove_primitive(C) :clause(Comp,Sub_Comps),
remove_primitive(Sub_Comps).
cs774 (Prasad)
L13Applications
16
(cont’d)
• The interpreter does not work properly if
the definition also contains ordinary
predicates, written to capture connectivity
constraints, position calculations, etc.
• Introduce special meta-predicate constraint
as follows:
constraint(Test) : - call(Test).
remove_primitive(constraint(_)):-!.
cs774 (Prasad)
L13Applications
17
Example
invZ(P,N,I,O,X,Y) :pt(I,vdd,Q,X1,Y1), pt(P,Q,O,X2,Y2),
nt(N,O,R,X3,Y3), nt(I,R,gnd,X4,Y4),
constraint( \+
connected([Q,R,vdd,gnd])
),
constraint( X is (X1+X2+X3+X4)/4,
Y is (Y1+Y2+Y3+Y4)/4
).
cs774 (Prasad)
L13Applications
18
Correctness Issue
• Facts and rule-heads are disjoint. The
lowest-level is represented as facts.
Retraction of facts is sufficient.
• Each fact contributes to just one rule.
Subcomponents are not shared.
Retraction of a fact does not interfere with
the extraction of other components.
(Stratification of sorts)
cs774 (Prasad)
L13Applications
19
Conclusion
• Meta-interpreter approach uses the
declarative specification of a design
directly, to perform extraction.
• This approach is flexible, for higher-level
components. The trade-off is that it is
inefficient for lower-level components.
cs774 (Prasad)
L13Applications
20
Meta-Interpreters
Ref: Yoav Shoham’s AI Techniques
in Prolog
cs774 (Prasad)
L13Applications
21
Types
Extensions
• Backward Chaining (Topdown)
• Expert systems
• Mycin
– Depth-first
• Prolog
– Breadth-first
• Abductive Reasoning
• Diagnosis
• Forward Chaining (Bottomup)
• Production Systems
cs774 (Prasad)
• Annotated Logic
Programming
L13Applications
22
Representing forward chaining rules
op(1000, xfy, ‘,’).
op(1150, xfx, ‘-:’).
p -: q.
r,s -: p.
q -: t.
• Forward chaining adds new conclusions
using rules in response to facts of the
database and the newly asserted
conclusions.
cs774 (Prasad)
L13Applications
23
Membership in and-list
amember(X, (A,B)) :!, ( X = A; amember(X,B)).
amember(A,A).
• Recall
op(_, xfy, ‘,’).
cs774 (Prasad)
L13Applications
24
Propagating the effect of facts
• Forward chaining interpreter recursively
determines the conclusions forced by the
facts and the rules, and asserts them
explicitly.
– Given the set of rules, each fact is asserted one
by one (using the code shown on the next slide)
and the conclusions implied by them are
determined.
• Specifically, the head of a rule is asserted after all
the literals in the body of the rule have been
asserted.
cs774 (Prasad)
L13Applications
25
Propagating the effects of facts
update(X) :- clause(X, true),!.
update(X) :assert(X),
( If -: Then ),
amember(X, If),
\+ ((amember(Y, If),
\+(clause(Y, true)))),
update(Then), fail.
cs774 (Prasad)
L13Applications
26
Propagating the effect of facts
• Complexity of update()
• O( number of rules * number of body literals)
• Can be optimized and extended to include
negative literals, deletion, and maintaining
justifications.
• Reference: Chapter 4 of Yoav Shoham’s AI
Techniques in Prolog
cs774 (Prasad)
L13Applications
27
Pooling of Evidence :
The Mycin approach
Ref: Yoav Shoham’s AI Techniques
in Prolog
cs774 (Prasad)
L13Applications
28
Introducing Certainty Factor
• Facts => CF = 1
• Rules => CF in [0,1]
high_fever. (1)
malaria :- high_fever,
recently_in_jungle. (0.8)
malaria :- …
cs774 (Prasad)
L13Applications
29
Mycin Interpreter
cert(true, 1).
cert( (A,B), C) :- !,
cert(A , C1), cert(B, C2),
comb_fn_serial(C1, C2, C).
cert( A, C) :- !,
findall(CC,
(clause(A,B,CF),
cert(B , CC)), CLst),
comb_fn_parallel(CLst, C).
cs774 (Prasad)
L13Applications
30
Other Static Analysis Tools
• Type Checking/Inference
append(list(X), list(X), list(X)).
fact(int, int).
• Mode Inference
append(+,+,_)
cs774 (Prasad)
L13Applications
31
Related documents