~/ learn/ comp-456/ cards/ Inference rules: modus ponens, modus tollens, instantiation; sound & complete
1 of 4

Build a modus-ponens engine: apply MP to a fact set + rules repeatedly until no new fact appears (fixpoint), printing each derivation. Derive mortal(socrates).

Build a modus-ponens engine: apply MP to a fact set + rules repeatedly until no new fact appears (fixpoint), printing each derivation. Derive mortal(socrates).

Answer

def modus_ponens(facts, rules): facts = set(facts) while True: new = set() for antecedent, consequent in rules: if antecedent in facts and consequent not in facts: new.add(consequent) if not new: print('no new facts') return facts for f in sorted(new): print(f'derived: {f}') facts |= new facts = {'man(socrates)'} rules = [('man(socrates)', 'mortal(socrates)')] modus_ponens(facts, rules)

space flip · ← → navigate · esc to exit
NORMAL ~/memra/library/c8dd5aa7-e75b-4340-94ab-fa9d3e6eb4e1/flashcard utf-8 LF